Qu'est-ce qui motive l'adoption ou non de nouveaux langages de programmation? [fermé]


12

J'aimerais vraiment me concentrer sur les raisons pour lesquelles certains nouveaux langages de programmation sont adoptés dans le courant dominant, et d'autres restent relativement niches. Je voudrais en savoir plus sur des choses comme des cas d'utilisation spécifiques, la compatibilité descendante ou certaines nouvelles fonctionnalités, des difficultés d'implémentation simples ou complexes. Des exemples spécifiques seraient appréciés, mais ne nous attardons pas sur la définition exacte de «grand public» ou de «niche» ici.



2
Le hasard et le soutien des entreprises sont un facteur important. steve-yegge.blogspot.com/2007/02/next-big-language.html
Job

3
Pas une question appropriée pour ce forum
Ryan

Eh bien, pour un, ce n'est pas un forum. Et pour deux, je pense que cela répond assez bien aux directives pour une question subjective.
DeadMG

1
L'adoption d'un langage de programmation est inversement liée à la quantité de hipsters qui l'utilisent.

Réponses:


18

Si quelqu'un savait vraiment, ce serait des gens très riches.

Cela dit, voici ma supposition:

Disponibilité

BASIC est un petit langage affreux fourni avec (tous?) Les PC lors de leur première sortie. L'Apple II (l'ordinateur par défaut de nombreuses écoles secondaires) et l'ATARI 400/800 (le premier ordinateur domestique super bon marché) sont tous deux fournis avec BASIC.

Si vous aviez une machine UNIX (AT&T system V ou Berkeley's), vous aviez C. Si vous vouliez programmer la machine, c'est ce que vous deviez utiliser.

EDIT : Avec l'avènement et l'omniprésence du «net», cette exigence se transforme en:

  1. Combien de distributions Linux emballent une copie récente et dans quelle mesure la tiennent-elles à jour? Des bibliothèques tierces sont-elles également disponibles pour l'installation?
  2. Est-il facile à installer sous Windows (XP | Vista | 7,8 ...)?
  3. Les plates-formes Mac / iOS sont-elles couvertes?
  4. Peut-il être installé sans nuisance sur Unix hérité?
  5. Et une fois installé, est-il facile d'accéder à des bibliothèques tierces et peut-il être mis à niveau facilement?

Facilité de transition

Java est un bon exemple ici. Si vous connaissiez la programmation C, Java n'était pas un pas en avant très important, et pourtant il offrait de nombreuses fonctionnalités qui manquaient à C et que C ++ n'a pas pu fournir proprement.

C ++ pour des raisons évidentes était un pas en avant facile par rapport à C, et il était facile de le vendre à la direction en tant que C. «amélioré». C ++ avait l'avantage supplémentaire d'être rétrocompatible avec une grande partie de la base de code C existante.

Perl était une fusion de C, awk, sed et d'autres utilitaires Unix dans un seul paquet. Avant son apparition, la plupart de l'administration du système se faisait par le biais de scripts shell collant tout ensemble de manière insatisfaisante. Rassembler tout sous un même processus avec les structures de données et le contrôle d'un langage de type C était une aubaine.

Répond à un besoin

C a décollé car il vous a permis de produire des rendements proches de l'assemblage sans vous enliser dans le monde de l'assemblage spécifique à la machine, difficile à maintenir.

FORTRAN a décollé car il a permis de traduire facilement des idées mathématiques en code sans avoir à se perdre dans les détails de la machine.

De même pour LISP et la manipulation symbolique.

Python est né du besoin d'un "meilleur" Perl. (Je suis biaisé ici, donc je n'en dirai pas plus.)

PHP était essentiellement le BASIC pour le Web - il était installé par défaut sur de nombreux serveurs Web, et il était facile de pirater rapidement quelque chose d'utile.

Plaidoyer, base d'utilisateurs, code contributif

Avouons-le, Haskell ne serait nulle part aussi populaire qu'il l'est pour un langage non en cours de production sans le plaidoyer infatigable de ses développeurs et de sa base d'utilisateurs.

De nombreuses langues ont un culte de la personnalité derrière le (s) créateur (s) de la langue, et nous savons tous qui elles sont.

FORTRAN possède d'énormes ensembles de codes mathématiques établis et approuvés; idem pour Java et les systèmes web / intégration de systèmes / MVC; idem pour Perl et CPAN; idem pour T E X et la gestion des documents; etc.

Le Il facteur

Pour une raison quelconque, certaines langues semblent simplement avoir la bonne quantité de nouvelles , avec suffisamment de clin d'œil à l' ancienne , avec une manière qui semble facile ou nécessaire. Autrement dit, il fait son propre cas. Et qui sait exactement comment cela se produit?


Quoi qu'il en soit, c'est ma meilleure estimation de la raison pour laquelle certains le font. Quant à savoir pourquoi certains ne le font pas ... eh bien, s'ils ne répondent pas aux critères ci-dessus, c'est probablement pourquoi ils ont échoué.


1
Le facteur déterminant dans la plupart de vos critères est le soutien des entreprises . Java a peut-être marqué pour, par exemple, la facilité de la transition, mais sans que quelqu'un ne veuille en souffler des millions, année après année, dans le cadre de son plan de domination mondiale, il n'est pas clair quelle différence cela aurait fait. Donc, vous avez raison, les très riches connaissent la réponse à cette question :-)
jaybee

4
@jaybee - pas sûr que le soutien de l'entreprise par les créateurs de langue ait nécessairement aidé. Fortran et C n'ont pas été particulièrement aidés en venant d'IBM / ATT. Le lien Oracle semble nuire activement à Java. Basic, Perl, Python, Ruby, etc. n'avaient pas d'entreprise derrière eux. Le support du corp interne chez l'utilisateur / client est important mais cela suit longtemps après qu'il soit omniprésent.
Martin Beckett

1
@Martin Beckett: vous avez peut-être un point. Je pense cependant que même si toutes sortes de planètes doivent être alignées pour qu'une langue atteigne la masse critique, la manière "moderne" de aligner ces planètes semble être de brûler de l'argent. Par exemple, Mark utilise Haskell comme exemple - il peut avoir une grande base d'utilisateurs vocaux mais GHC gagne beaucoup d'arguments pour eux. Les compilateurs comme GHC coûtent de l'argent.
jaybee

@jaybee - il y a beaucoup de chance. Mais pour les nouveaux langages web sympas, c'est peut-être la compétence marketing du créateur / adopteur précoce qui compte.
Martin Beckett

11

Les langues deviennent populaires car elles ont un avantage sur les langues existantes dans un domaine qui est nécessaire.

Java

  • Gestion automatique de la mémoire (comparer avec C ++ et C)
  • Langage / API intégré au Threading
  • Fonctionne sur une machine virtuelle (cela signifie que les développeurs peuvent utiliser Windows sur des machines de développement pour tester et déployer l'application sans modification sur Linux / Unix).
  • La programmation réseau est beaucoup plus facile que dans les langages qui étaient les plus populaires auparavant (C ++ et C) et Java a été publié lorsque Internet a commencé à être populaire.

PHP

  • Développement Web simplifié
  • Prise en charge intégrée pour la connexion aux bases de données MySQL
  • Aucune compilation nécessaire et il était facile d'inclure les scripts directement dans vos fichiers HTML.

Javascript

  • La seule langue pour les navigateurs Web.
  • Les navigateurs Web sont de plus en plus utilisés comme clients légers (applications Web).
  • Code mobile - facile à déployer et sans installation

Objectif c

  • La langue pour l'environnement Mac OS X et iPhone. Et l'iPhone a été un énorme succès.

Rubis

  • Avec Ruby on Rails - un framework web, a facilité le développement web à grande échelle avec MVC.

C #

  • La langue pour les environnements Windows des dix dernières années. Presque toutes les API Microsoft sont faciles à utiliser avec C #, par exemple Winforms et WPF et WCF.

ActionScript

  • Le seul langage pour Addobe Flash / Flex, qui a eu un énorme succès pour le contenu multimédia sur Internet et les choses que JavaScript ne pouvait pas gérer.

Erlang

  • Concurrence et tolérance aux pannes - Erlang avait un modèle unique pour faire de la concurrence et des frameworks tolérants aux pannes. A commencé à être utile pour l'industrie des télécommunications, puis à source ouverte et a suscité l'intérêt de grandes sociétés Internet qui avaient également besoin d'une tolérance aux pannes.

1
Le modèle de simultanéité d'Erlang n'est pas unique, il est juste différent de celui utilisé par les langages laids impératifs :). Scala a le même type. De même, Clojure et Haskell se spécialisent en STM.
alternative

4
@mathepic: C'est vrai, mais toutes ces langues sont plus récentes qu'Erlang. C'était donc unique pour Erlang au début - comme pour presque toutes les fonctionnalités de laguage que j'ai énumérées. Les bonnes idées valent le détour.
Jonas

1
C # est le langage .net. Je pensais que Windows était en fait écrit en c ++. Ai-je tort là-dessus. Je dirais que C # est devenu populaire en exploitant un langage que les gens connaissaient déjà (C) avec un nouveau cadre qui facilitait le développement d'applications puissantes avec un outil d'édition puissant, facile à utiliser et qui tenait compte des besoins des développeurs et de leur utilisation réelle.
SoylentGray

1
@Chad C # n'a rien à voir avec C
alternative

1
@mathepic - J'ai travaillé sur la programmation C, C ++ et C #. Je peux dire que C # conserve toujours ses racines c en ce qui concerne la nomeclature. Certes, il est allé au-delà de C, cela ne signifie pas qu'il ne tire pas parti du langage.
SoylentGray

5

Je serai un cynique: l' argent et le marketing.

Ce n'est pas un hasard si C # est pris en charge par Microsoft, Java par Oracle et Objective C par Apple. Seul Google's Go n'a pas encore vraiment disparu.

Bien sûr, l'argent n'est pas la seule raison, mais avoir des poches profondes aide à mettre votre langue sur le marché.


Je dois accepter et étendre: mots à la mode, attrait managérial, grands noms, fonctionnalités à consonance excitante Si vous n'êtes pas d'accord, je vais juste vous donner un nom: COBOL.
SF.

1
C # et Obj-C ne sont pas tant supportés que "mandatés" par. Il est difficile de programmer des applications Windows en c ++ avec uniquement des API fournies par MSFT, et AFAIK uniquement obj-C est autorisé sur au moins les plates-formes mobiles Apple. D'un autre côté, la poursuite d'Oracle contre les fabricants d'Android pourrait nuire à Java
Martin Beckett

1
@Martin - Vous avez largement raison WRT Obj-C. Techniquement, vous pouvez utiliser des choses comme Appcelerator Ttanium pour utiliser d'autres langues pour écrire les applications, mais il est toujours converti en Obj-C pour le déploiement (et c'était un combat pour eux d'obtenir même cela). Apple interdira à peu près tout le reste (même PhoneGap a parcouru une ligne fine).
Shauna

3

D'une part, c'est le marketing, plus précisément les présentations, les blogs, etc. Il est important d'avoir des fonctionnalités auxquelles les programmeurs traditionnels peuvent se rapporter et voir des avantages par rapport à ce qu'ils savent (Java vs C ++ - garbage collector vs. Le dernier, mais non le moindre, est d'avoir une faible barrière à l'entrée - exemples, bonnes documentations, installation transparente, bonne communauté et support, développement dynamique.


1

Presque toutes les langues avaient des programmes de résolution de problèmes réels et non triviaux écrits en les utilisant très tôt dans leur vie.

Unix a été écrit en C, tout comme les outils sur Unix, quand C était très jeune et évolutif.

Anaconda (le programme d'installation de RedHat) a été écrit en Python quand Python était jeune et n'avait pas la popularité d'aujourd'hui.

Voilà ce dont je me souviens d'avoir été remis. Cette liste pourrait toucher chacune des langues qui ont survécu à ses années de formation.

Ensuite, l'adoption à grande échelle dans les universités peut contribuer à la longévité d'une langue. Java est très populaire dans les universités comme langue d'enseignement. Dans une certaine mesure, le lisp et les dialectes du lisp jouissent également de ce statut.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.