Зауважте: це здебільшого суб’єктивно і ґрунтується на моїх переживаннях та враженнях.
Мови, що динамічно вводяться, сильно відрізняються від мов, які набираються статично. Ці відмінності, ймовірно, стають більш важливими у великій вазі корпоративного програмного забезпечення, ніж у більшості інших програм.
Статично типізовані мови, як правило, є дуже розпорядчими. Метод прийме лише ті дані, які точно відповідають його підпису. Рівні доступу, як правило, є дуже важливими, і інтерфейси визначені чітко, маючи багатослівні, але однозначні обмеження для виконання цих визначень.
З іншого боку, динамічно набрані мови дуже прагматичні. Перетворення типів часто відбувається неявно; функції можуть навіть відтворюватися, якщо ви надаєте неправильний тип введення, якщо він веде себе досить схожим. У таких мовах, як Python, навіть рівні доступу базуватимуться на контракті, а не на технічних обмеженнях (тобто це лише private
тому, що вам сказано не використовувати його та має смішне ім'я).
Багато програмістів віддають перевагу динамічним мовам, оскільки вони (можливо) дозволяють швидко прототипувати. Код часто закінчується коротше (хоча б через відсутність декларацій типу), і якщо ви хочете порушити належний протокол, тому що вам потрібно швидке і брудне рішення або хочете щось перевірити, це легко можливо.
Тепер, причина того, що "підприємницькі" компанії часто віддають перевагу статично типовим мовам, полягає саме в тому, що вони є більш обмежувальними та більш чіткими щодо цих обмежень. Хоча на практиці навіть статично набраний код може бути зламаний ідіотів за допомогою компілятора, багато проблем будуть набагато помітніші набагато раніше процесу (тобто до початку виконання). Це означає, що навіть якщо база даних коду велика, монолітна і складна, багато помилок можна легко зрозуміти, не запускаючи код або надсилаючи його до відділу контролю якості.
Причина того, що користь не переважає недоліків для багатьох програмістів поза цим середовищем, полягає в тому, що це помилки, які часто можуть бути легко виявлені ретельним оглядом коду чи навіть спробою його запуску. Особливо, якщо дотримуватися методології тестування, ці помилки часто стають тривіальними для їх вилучення та легко виправити. Крім того, для багатьох таких компаній, які мають значно коротший цикл випуску, продуктивність часто важливіша за жорсткість, і багато (базові) тестування проводяться самими розробниками.
Інша причина, що корпорації підприємств не використовують сильно динамічно набрані мови - це застарілий код. Як би нерозумно нам не здалося, великі корпорації часто дотримуються рішень, які працюють, навіть якщо вони вже минули термін їх зберігання. Ось чому так багато великих компаній застосовують Internet Explorer 6 і так повільно модернізують свої ОС. Ось чому вони часто пишуть новий код "старими" мовами (наприклад, старовинні версії Java): набагато простіше додати кілька рядків коду до неживого програмного забезпечення, ніж отримати схвалення на повне перезапис у новій мова.
tl; dr: статичні мови більше схожі на бюрократію, тому підприємливі менеджери їм подобаються краще.