Remarque: ceci est principalement subjectif et basé sur mes expériences et impressions.
Les langues à typage dynamique sont très différentes des langues à typage statique. Ces différences deviennent probablement plus importantes dans les logiciels d'entreprise lourds que dans la plupart des autres applications.
Les langues à typage statique ont tendance à être très normatives. Une méthode ne prendra que des entrées qui correspondent exactement à sa signature. Les niveaux d'accès tendent à être très importants et les interfaces sont définies explicitement, avec des restrictions explicites mais sans ambiguïté en place pour appliquer ces définitions.
Les langages à typage dynamique, d’autre part, sont très pragmatiques. Les conversions de types se produisent souvent de manière implicite, les fonctions peuvent même jouer si vous fournissez le mauvais type d'entrée, à condition que le comportement soit suffisamment similaire. Dans des langages comme Python, même les niveaux d’accès seront basés sur des contrats plutôt que sur des restrictions techniques (c’est-à-dire queprivate
parce qu’on vous dit de ne pas l’utiliser et qu’il porte un nom amusant).
Beaucoup de programmeurs préfèrent les langages dynamiques car ils permettent (sans doute) le prototypage rapide. Le code finit souvent par être plus court (ne serait-ce qu'en raison de l'absence de déclaration de type) et si vous voulez violer le protocole approprié parce que vous avez besoin d'une solution rapide et sale ou que vous voulez tester quelque chose, c'est facilement possible.
Or, la raison pour laquelle les entreprises «entreprises» préfèrent souvent les langages statiquement typés est précisément parce qu’elles sont plus restrictives et plus explicites à propos de ces restrictions. Même si dans la pratique même un code typé statiquement peut être cassé par des idiots avec un compilateur, de nombreux problèmes seront beaucoup plus visibles bien plus tôt dans le processus (c'est-à-dire avant l'exécution). Cela signifie que même si la base de code est volumineuse, monolithique et complexe, de nombreuses erreurs peuvent être facilement détectées, sans avoir à exécuter le code ni à l'envoyer au service d'assurance qualité.
La raison pour laquelle les avantages ne compensent pas les inconvénients pour de nombreux programmeurs extérieurs à cet environnement est que ce sont des erreurs qui seront souvent facilement détectées par une inspection minutieuse du code ou même par une tentative d'exécution. En particulier lorsque vous suivez une méthodologie basée sur des tests, ces erreurs deviennent souvent faciles à identifier et faciles à corriger. En outre, compte tenu du cycle de publication beaucoup plus court de ces entreprises, la productivité est souvent plus importante que la rigidité et de nombreux tests (de base) sont effectués par les développeurs eux-mêmes.
L'autre raison pour laquelle les entreprises n'utilisent pas beaucoup de langages à typage dynamique est le code hérité. Aussi stupide que cela puisse paraître à notre avis, les grandes entreprises vont souvent s'en tenir aux solutions qui fonctionnent, même si elles ont déjà dépassé leur durée de vie. C'est pourquoi tant de grandes entreprises appliquent Internet Explorer 6 et mettent tellement de temps à mettre à niveau leurs systèmes d'exploitation. C’est aussi la raison pour laquelle ils écrivent souvent du nouveau code dans de "vieux" langages (par exemple, les anciennes versions de Java): il est beaucoup plus facile d’ajouter quelques lignes de code à un logiciel inexploité que de faire approuver une réécriture complète dans un nouveau logiciel. la langue.
tl; dr: les langages statiques ressemblent davantage à de la bureaucratie, donc les gestionnaires d'entreprise les aiment mieux.