Nota: isso é principalmente subjetivo e baseado em minhas experiências e impressões.
Os idiomas de tipo dinâmico são muito diferentes dos idiomas de tipo estaticamente. Essas diferenças provavelmente se tornam mais importantes no software corporativo pesado do que na maioria dos outros aplicativos.
Linguagens de tipo estático tendem a ser muito prescritivas. Um método aceita apenas entradas que correspondem exatamente à sua assinatura. Os níveis de acesso tendem a ser muito importantes e as interfaces são definidas explicitamente, com restrições detalhadas mas inequívocas para impor essas definições.
Línguas dinamicamente tipadas, por outro lado, são muito pragmáticas. As conversões de tipo geralmente acontecem implicitamente, as funções podem ser reproduzidas se você fornecer o tipo errado de entrada, desde que se comporte de maneira semelhante. Em linguagens como Python, mesmo os níveis de acesso serão baseados em contrato e não em restrições técnicas (ou seja, é apenasprivate
porque você disse para não usá-lo e ele tem um nome engraçado).
Muitos programadores preferem linguagens dinâmicas porque (indiscutivelmente) permitem prototipagem rápida. O código geralmente acaba mais curto (mesmo que por causa da falta de declarações de tipo) e se você deseja violar o protocolo adequado porque precisa de uma solução rápida e suja ou deseja testar algo, isso é facilmente possível.
Agora, a razão pela qual as empresas "empreendedoras" geralmente preferem linguagens estaticamente tipificadas é exatamente o fato de serem mais restritivas e mais explícitas sobre essas restrições. Embora na prática, mesmo o código estaticamente digitado possa ser quebrado por idiotas com um compilador, muitos problemas serão muito mais visíveis muito antes no processo (ou seja, antes do tempo de execução). Isso significa que, mesmo que a base de código seja grande, monolítica e complexa, muitos erros podem ser detectados facilmente, sem a necessidade de executar o código ou enviá-lo para o departamento de controle de qualidade.
A razão pela qual esse benefício não supera as desvantagens de muitos programadores fora desse ambiente é que esses são erros que geralmente são facilmente detectados por uma inspeção completa do código ou mesmo pela tentativa de executá-lo. Especialmente ao seguir uma metodologia orientada a testes, esses erros geralmente se tornam triviais de capturar e fáceis de corrigir. Além disso, com muitas dessas empresas tendo um ciclo de lançamento muito mais curto, a produtividade geralmente é mais importante que a rigidez e muitos testes (básicos) estão sendo feitos pelos próprios desenvolvedores.
A outra razão pela qual as empresas corporativas não usam muito as linguagens dinamicamente digitadas é o código legado. Por mais tolo que possa parecer para os nerds, as grandes corporações costumam aderir a soluções que funcionam, mesmo que tenham passado o prazo de validade. É por isso que muitas empresas importantes aplicam o Internet Explorer 6 e demoram a atualizar seus sistemas operacionais. É também por isso que eles costumam escrever um novo código em linguagens "antigas" (por exemplo, versões antigas do Java): é muito mais fácil adicionar algumas linhas de código a um pedaço inexistente de software do que obter aprovação para uma reescrita completa em um novo língua.
tl; dr: as linguagens estáticas parecem mais com a burocracia, por isso os gerentes corporativos gostam mais deles.