Les langages typés dynamiques méritent-ils toutes les critiques? [fermé]

35

J'ai lu quelques articles sur Internet sur le choix du langage de programmation dans l'entreprise. Récemment, de nombreux langages typés dynamiques ont été populaires, à savoir Ruby, Python, PHP et Erlang. Mais de nombreuses entreprises conservent encore des langages à typage statique tels que C, C ++, C # et Java.

Et oui, l'un des avantages des langages à typage statique est que les erreurs de programmation sont détectées plus tôt, au moment de la compilation, plutôt qu'au moment de l'exécution. Mais il existe également des avantages avec les langages typés dynamiques. ( plus sur Wikipedia )

La raison principale pour laquelle les entreprises ne commencent pas à utiliser des langages comme Erlang, Ruby et Python semble être le fait qu’elles sont typées de manière dynamique. Cela semble également être la raison principale pour laquelle les utilisateurs de StackOverflow se sont opposés à Erlang. Voir Pourquoi avez-vous décidé "contre" Erlang .

Cependant, il semble que le typage dynamique dans les entreprises suscite de vives critiques, mais je ne comprends pas vraiment pourquoi il est si fort.

Pourquoi vraiment y a-t-il tant de critiques à l’encontre du typage dynamique dans les entreprises? Cela affecte-t-il vraiment le coût des projets ou quoi? Mais peut-être que je me trompe.

Jonas
la source
3
Je pense que la dactylographie statique avec inférence de type et la dactylographie possible sont la meilleure façon de faire les choses. C'est aussi très compliqué
Casebash
2
Je viens de jeter un coup d'œil à la frappe de canard de C # (je n'utilise pas le langage) et, bien que cela semble compléter la définition de la frappe de canard, la verbosité requise semble aller à l'encontre du but recherché. Cela ne veut pas dire que ce n'est pas parfois utile cependant.
Chinmay Kanchi
3
Est-ce juste moi ou y a-t-il plus de critiques de langages à typage statique que de langages à typage dynamique? De plus, selon mon expérience, les choix linguistiques / technologiques des grandes "entreprises" semblent être dictés par les tendances actuelles / des choix sûrs plutôt que par un réel mérite technique.
MAK
2
@ChinmayKanchi: Verbosité? Vous venez de déclarer quelque chose comme dynamicet commencer à l'utiliser. Ce n'est pas plus bavard que les appels de méthode normaux ou les surcharges d'opérateurs.
Joey
4
Je ne peux pas compter le nombre d'heures que j'ai consacrées à des erreurs de débogage dans le code Groovy sur Grails de mon entreprise actuelle, que le compilateur aurait détectées immédiatement si nous avions utilisé Java.
WKS

Réponses:

46

Oui, je crois qu'ils font.

Il y a quelques raisons qui doivent être prises en compte dans le choix d'une langue pour un nouveau projet:

  • Vitesse d'exécution. Comparé à C / C ++ / Fortran, Perl et Python sont si lents que c’est drôle.
  • Vitesse d'initialisation. Comparé aux langages rapides ci-dessus, Java tombe et pleure car la JVM ne cesse de charger et de charger while(1)....
  • Prototype-capacité. Exécuter de manière exhaustive le travail de déclaration / définition requis pour C ++ ou Java augmente le niveau de la LOC, qui est la seule mesure connue qui soit corrélée de manière fiable avec les comptes de bogues. Cela prend aussi beaucoup de temps. Cela nécessite également un peu plus de réflexion sur les types et les connexions.
  • Fiddlability interne. Il est bon de bricoler dynamiquement avec vos internes jusqu'à ce que vous commenciez à déboguer votre code à modification automatique . (Python, Lisp, Perl)
  • Vérification de la correction. Un compilateur peut fournir un passage rapide d'une demi-correction de votre code en C ++, et cela peut être très agréable.
  • Détails de l'analyse statique. C et Java ont une très bonne analyse statique. Perl n’est pas complètement analysable statiquement au niveau théorique (peut-être aussi en Python). Je suis raisonnablement sûr que Lisp n'est pas non plus.
  • Les plateformes étranges ne prennent que C, en général.
  • Chaîne de soutien. Si vous pouvez avoir un contrat sur lequel vous allez examiner et corriger vos bugs, c'est énorme .

Si vous pouvez présumer que l’organisation avec laquelle vous travaillez a un principe d’avenir (il existe un terme comptable), et ne décide pas simplement de ne pas travailler avec le logiciel, alors vous avez un bien meilleur cas pour en utilisant le logiciel. Puisqu'il n'y a pas de vente majeure (impliquant de prendre la responsabilité de la maintenir) Python / Perl / $ dynamic_language, cela réduit considérablement les risques.

D'après mon expérience, les responsables open source ont souvent du mal à assumer pleinement la responsabilité des corrections de bogues et à publier les mises à jour. "C'est gratuit, VOUS y travaillez!" n’est pas une réponse acceptable pour la plupart des entreprises (pas leurs compétences principales, entre autres).

Bien sûr, je ne parle pas du monde des webapp / startups, qui a tendance à jouer avec des règles de risque / récompense élevées et à rester très ouvert pour rester à la pointe de la technologie.

Paul Nathan
la source
16
"C'est gratuit, VOUS y travaillez!" <- Plus gros problème avec F / OSS en général, je ferais +1 mais je suis à court de votes :(
Billy ONeal le
4
Beau résumé. Je vais m'attacher à ce que les types bien construits véhiculent un sens sémantique (je peux regarder un type et comprendre ce qu'il fait, comment il peut être utilisé) et peut être utilisé pour imposer l'exactitude (je peux construire un type qui accepte uniquement les inpus sous contrainte ), et je ne reçois pas d'erreurs stupides de fautes de frappe (je déteste la déclaration auto-variable)
smithco
4
Vous pouvez obtenir un support commercial pour tout projet open-source majeur. Les grandes entreprises utilisent des PL de types dynamiques pour les grosses pièces (celles qui conviennent bien), Facebook utilise PHP (interface utilisateur) et Erlang (chat), Twitter utilise Ruby (interface utilisateur), Google utilise Python (je ne sais pas pour quoi) et Lisp et Python sont être utilisé dans de nombreux projets de recherche sophistiqués. Remarque: je suis un développeur C #. Je n'ai (presque) jamais utilisé de langage à typage dynamique. pourtant, ces points ne sont pas valables dans une mesure considérable.
Kaveh Shahbazian
4
J'aime votre réponse mais Java n'est pas typé dynamiquement ...
Mehrdad
2
@PaulNathan: Vous réfléchissez trop. La question portait sur les langages à typage dynamique, et cette réponse mentionne Java comme s'il était typé de manière dynamique.
Mehrdad
24

Vous accordez trop de crédit technique aux décideurs d'entreprise. Un vieil adage dit: "Personne n’a été congédié pour avoir acheté IBM." Si vous prenez un itinéraire différent et que les choses se gâtent (comme toujours), personne ne veut risquer d'être blâmé. Respectez les normes et blâmez quelqu'un d'autre.

Beaucoup d'entreprises plus jeunes deviendront éventuellement les entreprises de demain et utiliseront ces langues.

Et n'oublions pas les milliards de lignes de code écrites en VBA!

JeffO
la source
1
+1 pour "... les entreprises de demain [et] utiliseront ces langues."
rdmueller
6
"De nombreuses entreprises plus jeunes deviendront éventuellement les entreprises de demain et utiliseront ces langages.": Vous semblez dire que les langages dynamiques sont plutôt nouveaux et ont besoin de temps pour être adoptés par davantage d'entreprises. Par contre, les langages dynamiques existent déjà depuis longtemps.
Giorgio
17

La raison pour laquelle les entreprises utilisent C, C ++, C # et Java ne l’est pas parce qu’elles sont typées statiquement (du moins pas directement). Les décideurs d'entreprise ne font pas ce genre de choix sur la base d'une comparaison objective des systèmes de types, je vous assure.

Les entreprises font attention sur:

  • Frais d'entretien à long terme : pouvez-vous raisonnablement vous attendre à ce que les choses continuent à bien fonctionner dans 10 ans? C'est en fait une bonne chose si l'évolution du langage est conservatrice et rétrocompatible (comme avec Java). Le typage statique est utile ici car il détecte un type majeur de bogues au moment de la compilation avant d’être intégrés dans vos systèmes de production .....
  • Disponibilité des talents - serez-vous capable de trouver des développeurs pour maintenir votre nouveau système? Et si le développeur d'origine part, tout le monde comprendra-t-il le code? Cela constitue un obstacle important à l’introduction de tout «nouveau» langage (surtout s’il crée également de nouvelles exigences en matière de déploiement, de construction de systèmes, de support opérationnel, etc.). Cela donne un avantage énorme aux langages largement utilisés (C, C ++, C # et Java)
  • Coûts d'intégration : est-il facile de se connecter / intégrer avec d'autres technologies que vous avez déjà ou que vous êtes susceptible d'acquérir? Si vous avez déjà une pile de systèmes J2EE hérités, vous devez les intégrer. Une nouvelle solution Java EE sera probablement beaucoup plus pratique pour cela que, par exemple, Python.
  • Prédiction / faible risque : la plate-forme / langue est-elle éprouvée et puis-je être sûr que cela fonctionnera? Ceci est généralement plus important que la simple productivité. Il est beaucoup plus facile pour un responsable de persuader son supérieur de lui donner un gros budget pour la construction d’un nouveau système que pour lui de revenir plus tard et de dire que cela n’a pas fonctionné .....
  • Soutien / soutien aux entreprises - Les grandes organisations internationales sont-elles déterminées à soutenir le langage et la plate-forme? Signeront-ils un contrat pour me soutenir afin que je puisse avoir quelqu'un à qui faire appel en cas de problème?
  • Neutralité du fournisseur / indépendance de la plate-forme - vais-je rester bloqué chez un seul fournisseur? Ou ai-je un large éventail de futures options de fournisseurs / chemins de transition disponibles? Vous ne voulez pas être coincé dans une impasse architecturale, incapable de progresser pendant que vos concurrents mangent votre déjeuner. Si vous faites votre travail correctement en tant qu’architecte d’entreprise, vous devez penser à au moins 5 à 10 ans à l’avenir.

Personnellement, je pense que si vous souhaitez utiliser des langages dynamiques dans l'entreprise, votre meilleure chance est de loin d'utiliser quelque chose qui se greffe sur un écosystème d'entreprise existant. Les plus remarquables sont les nouveaux langages dynamiques de JVM: par exemple, JRuby, Groovy, Clojure. En ce qui concerne la gestion informatique, il s’agit de choix de langage dynamique «sûrs», car ils fonctionnent bien avec le reste de l’écosystème d’entreprise Java.

Mikera
la source
1
Je n'arrive pas à croire que personne n'ait encore voté pour votre réponse.
Sébastien N.
11

La raison principale pour laquelle les entreprises ne commencent pas à utiliser des langages comme Erlang, Ruby et Python semble être le fait qu’elles sont typées de manière dynamique.

Je pense que ce n'est que leur principale excuse. La vraie raison est que les entreprises ne les prennent pas vraiment au sérieux et ont le sentiment d'être peut-être un peu trop amateurs. Java et .NET sont des «noms de grandes entreprises», ont un bon marketing commercial, un support client commercial, et sont donc pris très au sérieux.

Il est regrettable qu’il n’existe pratiquement aucun langage à typage statique aussi populaire que les grandes entreprises. Pourquoi les environnements de programmation open-source / logiciels libres sont-ils presque toujours typés de manière dynamique? Cela pourrait indiquer qu’un langage à typage statique n’est en fait pas si facile à créer et que le typage dynamique est un «hack man's hack». Si tel est le cas, les entreprises qui décident de ne pas utiliser des langages à typage dynamique pourraient avoir un intérêt.

Timwi
la source
8
Vraiment? Aux dernières nouvelles, Google avait consacré beaucoup de poids et un effort de développement considérable derrière Python, notamment en embauchant le créateur de Python et en lui permettant de passer 50% de son temps à travailler sur le langage. Google apporte également une bonne quantité de code à Python, en particulier maintenant que la commande unladen-swallow a été fusionnée dans l’arborescence de Python 3. Cela fait de Python un "nom de grande entreprise" pour moi.
Chinmay Kanchi
13
@Chinmay Kanchi: Comment tirez-vous votre conclusion d'une statistique avec une taille d'échantillon de 1.
Timwi
6
Touché. Cependant, certaines de vos conclusions sont également erronées. Implémenter correctement un langage dynamique est beaucoup plus difficile que d'implémenter un langage à typage statique. La frappe dynamique n’est certainement pas un "piratage de paresseux" comme vous le dites. Cela permet aux développeurs d'être paresseux, mais pas à la personne qui écrit le compilateur / interprète. En fait, l'optimisation d'un langage à typage dynamique est si difficile que je ne peux penser qu'à un langage qui a récemment reçu ce traitement de manière intensive (JavaScript), bien qu'il existe des projets d'optimisation / JITting pour d'autres langages (Python, PHP).
Chinmay Kanchi
2
De même, si vous pensez que les langages à typage dynamique sont les plus couramment utilisés dans les environnements open source, cela est loin d'être clair. Selon la métrique que vous choisissez, cela peut être vrai, mais ce n'est souvent pas le cas. En mesurant les lignes de code, C l'emporte de loin. Si vous mesurez quels langages sont utilisés dans les projets open source, y compris ceux multilingues, les langages les plus populaires sont JavaScript, C, C ++ et PHP dans cet ordre. Si vous ne mesurez que la langue principale, les langues les plus populaires sont Perl, Java, C # et JavaScript. bit.ly/C6xTB
Chinmay Kanchi
7
Bien sûr, écrire un optimiseur pour les langages à typage dynamique est difficile, mais ce n’est pas un interprète : vous pouvez supprimer toutes les vérifications, et le reste est identique. Aucun fabricant de langues amateur ne songe à écrire un optimiseur. - En ce qui concerne le dernier bit, je ne voulais pas dire que la plupart des logiciels open source sont écrits dans un langage de programmation à typage dynamique, mais plutôt dans la plupart des langages de programmation open source (j'ai dit «environnements» car je parle de compilateurs / interprètes, IDE, etc.) sont dynamiquement typés.
Timwi
9
  • Les langues à typage dynamique ont tendance à être plus lentes que leurs cousins ​​à typage statique.
  • Les erreurs sont plus difficiles à détecter et peuvent être plus difficiles à déboguer
  • Le compilateur / interprète a tendance à être beaucoup moins fastidieux quant à ce que vous pouvez et ne pouvez pas faire. c'est-à-dire que vous ne détectez pratiquement que les erreurs de syntaxe au stade de la compilation
  • Si vous n'êtes pas très prudent avec la conception d'un langage typé dynamiquement, vous vous retrouvez avec Javascript, qui est le langage de code-odeurs

EDIT: Je dois mentionner que mon principal langage de programmation actuellement est Python, qui est typé de manière dynamique. Personnellement, j'aime la liberté qui découle du fait de ne pas avoir à pré-déclarer les variables, mais il serait parfois utile de spécifier (par exemple) le type de paramètres qu'une fonction prend pour détecter les erreurs plus tôt que tard.

Chinmay Kanchi
la source
1
Bien qu'il soit vrai que le compilateur n'est pas fastidieux, l'interprète l'est généralement. La plupart du temps, l'interprète détecte les situations problématiques et signale des erreurs.
Winston Ewert
17
J'adore la dactylographie dynamique, mais je déteste ne pas avoir à prédéclarer les variables! Trop souvent, je finis par introduire une nouvelle variable par accident parce que j'ai mal orthographié un nom de variable.
Frank Shearar le
1
@Frank: Je unprintably amour que Perl a un paramètre pour forcer la déclaration variable. C'est l'un des avantages de Perl, à mon avis.
Paul Nathan le
8

Les langages typés dynamiquement sont perçus (par certains programmeurs / responsables) pour produire un code qui ne fonctionne pas aussi bien. Le fait qu'un programme à typage dynamique compile vous en dit très peu sur son exactitude. Le fait qu'un langage à typage statique compile en dit beaucoup plus. (D'un autre côté, il y a encore beaucoup de chemin à faire entre compiler et faire la bonne chose, donc cela pourrait être moins significatif alors il semble)

Les langages à typage dynamique sont perçus comme des langages de script. Vous n'écririez jamais une application en bash ou dans un fichier de commandes. Tous les langages à typage dynamique ont tendance à être inclus dans cette catégorie (injustement).

Les langues à typage dynamique sont plus lentes que les langues à typage statique. (Mais nous verrons à quel point le travail sur les changements JIT fonctionne bien)

Winston Ewert
la source
2
"Sont perçus par" certains programmeurs. Quand j'ai des discussions avec des programmeurs sur le typage dynamique, ils finissent généralement par admettre qu'ils n'ont jamais utilisé ce genre de langage.
Frank Shearar
1
@ Frank, dites-vous que les personnes qui plaident pour l'infériorité du typage dynamique ne l'ont généralement pas utilisé?
Winston Ewert
2
@ Frank: J'ai utilisé ce genre de langage, et la plupart du temps, le résultat a été un gâchis impossible à maintenir. (Pour être juste, c'était PHP, et PHP a d'autres problèmes que le typage dynamique)
Billy ONeal
@Billy: Je pense que c'est courant. Pendant des années, j’ai eu du mal à taper du texte dynamique en raison de mon expérience avec VB. Quand j’ai finalement réalisé que cette terrible implémentation schizophrénique du typage dynamique n’était pas typique, mon opinion a changé radicalement.
Shog9
@ Winston: je dis que les gens avec qui j'ai discuté ne l'ont pas fait. Cela a été un cas, pour moi, "le typage dynamique ne peut pas fonctionner" ... mais ils utiliseront volontiers de nombreuses techniques développées à l'origine dans, par et pour les langages dynamiques (IDE, refactoring, par coeur). De plus, des questions comme celle-ci: stackoverflow.com/questions/2317579 indiquent que, même s’il n’est probablement pas universel, mon cas de dispute avec it-ne-fonctionne-pas-mais-je-n’ai pas essayé les programmeurs n’est pas isolé. (Moi, je pense que les deux approches ont de la valeur.)
Frank Shearar
8

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.

Alan Plum
la source
3
Les langues avec des règles de dactylographie souples créent de nombreuses opportunités pour les choses qui ne fonctionnent pas correctement. En JavaScript, par exemple, passer un nombre à un code qui suppose une chaîne se comportera souvent comme si on avait passé une représentation sous forme de chaîne de ce nombre, mais pas toujours. Si vous essayez, par exemple, d'ajouter 456 à 123, vous obtiendrez 123456, mais 579. À moins d'indiquer clairement qui est responsable de la conversion de numéro en chaîne, cette opération peut être effectuée de manière redondante ou ne pas l'être du tout.
Supercat
1
@supercat, je pense que PHP et JavaScript sont de bons exemples des deux manières de traiter ce problème (en ce qui concerne les opérateurs): en PHP, les opérateurs sont sans équivoque - +prend des chiffres et les ajoute, si vous voulez une concaténation, vous devez l'utiliser .; dans JS, les deux opérations partagent le même opérateur - si vous ne savez pas comment vos valeurs se comporteront, vous devez les convertir explicitement. Bien sûr, cela concerne également le typage en vrac vs le typage strict (Python est encore plus strict), mais vous devez fondamentalement vous assurer que vos valeurs ont le bon type ou que vos opérations appliquent les types attendus.
Alan Plum
1
Je ne connais pas très bien PHP, mais on dirait qu'il utilise ce que j'appellerais la "bonne" approche. Le Javascript est IMHO abominable à bien des égards, mais je pense que le comportement de "+" est l'un des pires. En fait, je ne suis pas convaincu que le typage dynamique sobre aurait un avantage considérable par rapport à un système de type plus puissant qui permettrait à une interface de déclarer que les éléments d'un autre type de classe ou d'interface doivent être considérés comme implémentant ou dérivant de celui-ci, avec des règles spécifiques. sur la façon dont les revendications seraient priorisées. La grande limite que je connaisse avec les frameworks structurellement typés actuels est que ...
Supercat
1
... si deux personnes développent indépendamment des interfaces similaires, il est impossible pour un tiers d'écrire du code pouvant les utiliser de manière interchangeable. Si un tiers pouvait définir une nouvelle interface et déclarer que les implémentations de l'une ou des deux interfaces existantes devraient automatiquement implémenter la nouvelle (en utilisant les wrappers fournis dans la nouvelle interface si nécessaire), je pense que cela permettrait de gérer 99% de ce qui est sémantiquement bien sur la frappe dynamique.
Supercat
3

Non, je ne pense pas que les langues à typage dynamique méritent toutes les critiques. (Ou si vous préférez, ils méritent autant de critiques que les langages statiques).

D'après mon expérience (et je ne tente pas de généraliser cette affirmation), les programmeurs qui critiquent les langages dynamiques ne les ont pas utilisés. La conversation se passe généralement "mais avec une saisie statique, le compilateur intercepte tant d’erreurs!" et je dis "bien, ce n'est pas un problème, d'après mon expérience". (Habituellement, les autres programmeurs sont issus de Java, de Delphi ou d'un contexte similaire; je ne connais aucun programmeur Haskell ou ML.)

La seule chose qui m'a vraiment ronchonne est quand revendications quelqu'un que la technique Foo ne peut peut - être fait (ou peut - être très difficile à faire) dans un langage typé dynamiquement ... quand cette technique a été inventée en, par et pour un typage dynamique la langue. Des IDE? Smalltalk. Refactoring automatique? Smalltalk. Appelants-de / réalisateurs-de? Smalltalk.

Frank Shearar
la source
Je ne voulais pas encombrer ma réponse avec ma position personnelle, qui est la suivante: le bon outil pour le bon travail. Quel que soit le type de langue que vous utilisez, il convient mieux à certaines tâches et moins bien à d’autres, qu’un autre type de langue.
Frank Shearar le
6
Quand l'autre programmeur vient de Haskell, il / elle sait déjà que c'est le langage supérieur au langage Java et au langage dynamique;)
Andres F.
0

Les entreprises n'adoptent tout simplement pas assez rapidement les nouveaux langages et outils, et il y a de bonnes raisons pour cela. Mais, lorsque l'un des outils grand public, tel que C #, implémente certaines de ces fonctionnalités, ils se retrouvent alors dans les entreprises classiques ....

aggietech
la source
Je ne sais pas pourquoi cela a été réduit, mais c'est une déclaration perspicace. Les entreprises sont lentes et conservatrices. Les utilisateurs préfèrent également les changements progressifs (comme le mot clé dynamique en C #, qui vous permet d’utiliser occasionnellement la frappe dynamique dans un langage de type statique) aux changements soudains (comme Ruby).
Vaddadi Kartick