Nota: questo è per lo più soggettivo e basato sulle mie esperienze e impressioni.
Le lingue digitate dinamicamente sono molto diverse dalle lingue tipizzate staticamente. Queste differenze probabilmente diventano più importanti nei software aziendali pesanti che nella maggior parte delle altre applicazioni.
Le lingue tipizzate staticamente tendono ad essere molto prescrittive. Un metodo prenderà solo input che corrispondono esattamente alla sua firma. I livelli di accesso tendono ad essere molto importanti e le interfacce sono definite esplicitamente, con restrizioni verbose ma non ambigue per applicare tali definizioni.
Le lingue digitate dinamicamente sono molto pragmatiche. Le conversioni di tipo spesso avvengono implicitamente, le funzioni possono persino funzionare se si fornisce il tipo di input errato purché si comporti in modo sufficientemente simile. In linguaggi come Python, anche i livelli di accesso saranno basati sul contratto piuttosto che sulle restrizioni tecniche (ad esempio, è solo private
perché ti viene detto di non usarlo e ha un nome divertente).
Molti programmatori preferiscono le lingue dinamiche perché (probabilmente) consentono la prototipazione rapida. Il codice spesso finisce più corto (se non altro per mancanza di dichiarazioni di tipo) e se vuoi violare il protocollo corretto perché hai bisogno di una soluzione rapida e sporca o vuoi testare qualcosa, è facilmente possibile.
Ora, la ragione per cui le aziende "intraprendenti" spesso preferiscono le lingue tipizzate staticamente è esattamente che esse sono più restrittive e più esplicite riguardo a tali restrizioni. Sebbene nella pratica anche il codice tipizzato staticamente possa essere rotto da idioti con un compilatore, molti problemi saranno molto più visibili molto prima nel processo (cioè prima del runtime). Ciò significa che anche se il codebase è grande, monolitico e complesso, molti errori possono essere catturati facilmente, senza dover eseguire il codice o inviarlo al dipartimento QA.
La ragione per cui il vantaggio non supera gli svantaggi di molti programmatori esterni a quell'ambiente è che si tratta di errori che possono essere facilmente rilevati da un'attenta ispezione del codice o anche dal tentativo di eseguirlo. Soprattutto quando si segue una metodologia basata sui test, questi errori diventano spesso banali da catturare e facili da risolvere. Inoltre, con molte di queste aziende che hanno un ciclo di rilascio molto più breve, la produttività è spesso più importante della rigidità e molti sviluppatori (di base) vengono fatti dagli stessi sviluppatori.
L'altro motivo per cui le aziende di livello enterprise non utilizzano linguaggi tipizzati dinamicamente è molto importante. Per quanto possano sembrare sciocchi a noi nerd, le grandi aziende si attaccheranno spesso a soluzioni che funzionano, anche se sono ben oltre la loro shelf-life. Questo è il motivo per cui così tante grandi aziende applicano Internet Explorer 6 e sono così lenti ad aggiornare i propri sistemi operativi. Questo è anche il motivo per cui spesso scriveranno un nuovo codice in "vecchi" linguaggi (ad es. Versioni antiche di Java): è molto più semplice aggiungere poche righe di codice a un pezzo di software non vivente piuttosto che ottenere l'approvazione per una completa riscrittura in un nuovo lingua.
tl; dr: i linguaggi statici sono più simili alla burocrazia, quindi i manager più esperti come loro sono migliori.