Pourquoi y a-t-il tant de langages de programmation? Pourquoi de nouvelles langues sont-elles encore créées? [fermé]


51

Pourquoi y a-t-il tant de langages de programmation?

Et qu'est-ce qui pousse quelqu'un à créer un langage de programmation en dépit du fait que d'autres langages existent déjà?


une vidéo divertissante sur ce sujet est "Le dernier langage de programmation" de l'oncle Bob Martin ( skillsmatter.com/podcast/agile-testing/bobs-last-language )
mikera

Parce que les programmeurs aiment les outils.
Hayem


2

Il est difficile de justifier cela. Je suppose que chaque langue a une histoire. La plupart des langues n’ont pas beaucoup profité à ma connaissance. La plupart des langages tournent autour des mêmes concepts et résolvent rarement de vrais problèmes ou offrent de bons environnements. Je pense qu'au moment où ils le créent, ils se sentent fatigués et peuvent voir comment ils ont gâché leur vie ... Pensez à ksh ou à JavaScript ..... Des outils tout simplement horribles et nuisibles.
NoChance

Réponses:


36

Les langages de programmation évoluent

Les nouveaux langages de programmation apprennent souvent des langages existants et ajoutent, suppriment et combinent des fonctionnalités d'une nouvelle manière. Il existe quelques paradigmes différents, comme orienté objet et fonctionnel, et de nombreux langages modernes essaient de mélanger des fonctionnalités à la fois.

De nouveaux problèmes doivent également être résolus, tels que l’augmentation du nombre de processeurs multicœurs. La solution la plus courante consiste à utiliser des threads, mais certains langages de programmation essaient de résoudre le problème de concurrence de manière différente, par exemple le modèle d'acteur. Voir Erlang - Logiciel pour un monde concurrent


10
Ce qui est intéressant à propos d’Erlang, c’est qu’il s’agit d’une «réinvention en salle blanche» du modèle Actor. Quand Armstrong et ses amis ont développé Erlang, ils n'étaient pas au courant du travail de Hewitt et al sur le modèle Actor!
Frank Shearar le

@ Frank: C'est intéressant. Je ne savais pas ça, merci.
Jonas

2
+1 pour l'évolution. Une question analogue pourrait être "Pourquoi y a-t-il tant d'espèces d'animaux et de plantes? Pourquoi de nouvelles espèces apparaissent-elles encore?"
Gyan aka Gary Buyn le

1
@GaryBuyn, ce n'est qu'un "+1 pour l'évolution" si vous vous abonnez à ce point de vue. Pour beaucoup, l'analogie avec les animaux va un peu trop loin.
Darknight

@GaryBuyn, Uhm ... c'est aussi analogue que "hameau" signifie "hamster".
Pacerier

22

C'est un cycle. Vous commencez une nouvelle langue et vous êtes libre de vous défaire de la mauvaise syntaxe et des mauvais choix de vos prédécesseurs. Dans la version 1, le langage est beau parce qu'il ne contient pas ce bagage et qu'il fait le travail. Ensuite, dans les versions les plus récentes, vous commencez à expérimenter des fonctionnalités qui risquent de ne pas fonctionner, ou vous apportez des fonctionnalités d'autres langages plus récents qui rendent votre syntaxe un peu kludgey. Après quelques versions supplémentaires, vous vous rendez compte que votre langue est désormais aussi compliquée que celle que vous avez remplacée, avec des problèmes de syntaxe stupides et des bagages hérités. Et tout à coup, vous vous rendez compte que si vous créez un nouveau langage, vous pourrez réparer tout ça ...


2
Ceci est certainement vrai pour les bibliothèques, les frameworks et les logiciels, mais personnellement, je ne connais pas de langage auquel cela s'applique. Avez-vous des exemples?
back2dos

16
Eh bien, je pense que C # et Java ont été introduits au moins en partie pour résoudre les complexités du C ++. Et maintenant, si vous examinez ces deux langues plusieurs versions plus tard, leur syntaxe et leurs ensembles de fonctionnalités deviennent assez complexes, et les gens commencent à parler d’eux «au-dessus de la colline». Juste mon point de vue, même si je ne peux rien prouver. :-)
RationalGeek le

2
C'est un bon point, mais je pense qu'un autre fait est en jeu avec C # - c'est un produit commercial qui n'existe pas pour des raisons caritatives et pour être accepté par le marché / garder les produits de vos clients doivent être "améliorés" pour les nouvelles versions etc.
gf

1
C'est vrai. La volonté d'ajouter de nouvelles fonctionnalités afin d'obtenir plus d'argent du marché ne peut certainement pas être ignorée. Cependant, c'est une épée à double tranchant. Vous pouvez vous attendre à de nouvelles fonctionnalités d'un produit commercialement sauvegardé pour cette raison exacte. Mais à partir d’un produit open source, vous n’obtenez de nouvelles fonctionnalités que tant que l’armée de volontaires reste intéressée et qu’il ya une personne habile à la barre pour diriger les chats.
RationalGeek

C # a beaucoup de fonctionnalités, mais c'est toujours un langage plus propre que C ++. Des ajouts plus récents, tels que LINQ, vous permettent de faire des choses clairement, ce que vous ne pouvez pas faire facilement en C ++. Je pense qu’il est plus probable qu’il existe deux types de conservation de la complexité: l’une dans laquelle une certaine complexité est inhérente à un problème, et l’autre dans la mesure où vous éliminez une sorte de complexité redondante de vos programmes, les exigences deviennent plus complexes: la complexité, comme les données, etc. se développe pour remplir "l'espace" disponible.
Steve314

11

Pour la même raison, il existe des marteaux, des tournevis, des scies à main, des scies à ruban, des marteaux-piqueurs, des barres de fer et de nombreux autres outils: toutes les langues ne sont pas parfaites pour chaque tâche. Certaines langues sont ciblées sur des domaines problématiques spécifiques: R convient particulièrement à l'analyse statistique, C est particulièrement utile à l'écriture de noyaux de systèmes d'exploitation, Haskell convient particulièrement aux calculs lourds en mathématiques ou financiers, Erlang est particulièrement performant en programmation simultanée, etc.

De plus, pour la même raison, les chemises sont de couleurs différentes: certaines personnes aiment le "style" d'une langue plutôt qu'une autre.

Et, bien sûr, beaucoup de programmeurs trouvent amusant d’inventer un nouveau langage, juste pour voir ce qui se passe, ou peut-être parce qu’ils ont des connaissances en langues et qu’ils veulent se gratter ou essayer quelques idées.


Non seulement il existe tous ces outils de construction, mais il existe même de nombreux types de marteaux et de marteaux qui se ressemblent mais qui ont des facteurs de conception spécifiques qui les rendent meilleurs pour différents emplois ou utilisateurs.
Barry Brown

+1 Pour convenir aux domaines problématiques. Les universitaires qui étudient les outils en général disent qu'un outil très général est moins puissant qu'un outil spécifique pour une tâche spécifique. Pensez à une clé à molette par rapport à une clé à taille fixe
MarkJ

8

Parce qu'ils sont tous nuls (d'une manière ou d'une autre).

À l'heure actuelle, nous avons créé environ 5000 langues pour décrire les problèmes naturels et aucune d'entre elles n'est disponible pour écrire des programmes (un exemple serait "anglais").

Jusqu'à ce que quelqu'un trouve un moyen de créer un langage de programmation capable d'exprimer ce que vous pouvez exprimer dans une phrase en langage naturel, ils continueront à venir.


15
Même alors, ils continueront à venir. Seules les langues mortes sont écrites dans la pierre, pardonnez le jeu de mots. Il y a une raison pour laquelle les langues vivantes changent constamment.
R. Martinho Fernandes le

1
Certains prétendent que le langage naturel pour exprimer des problèmes est les mathématiques. Cela soulève la question de savoir pourquoi les gens continuent d'ajouter du sucre syntaxique aux langages fonctionnels plutôt que d'utiliser le calcul lambda pur. Je pense que les problèmes que nous devons résoudre régulièrement ne sont souvent pas faciles à exprimer ni en anglais ni en mathématiques.
Steve314

5
D'accord. C'est tellement difficile d'exprimer "j'ai faim" en utilisant des mathématiques pures.
Aaron Digulla

1
@AaronDigulla: faim = somme (ventre / nourriture) sûrement :)
gbjbaanb

@AaronDigulla c'est un bon exemple, vous voulez souvent exprimer un calcul. Nous prenons donc un scénario tel que: j'ai faim, mange maintenant -> bien, mange maintenant -> affamé. Construire des systèmes capables de négocier ou d’élargir le contexte, je pense que c’est l’objectif de l’IA. Les langues de programmation normales n'expriment que ce que les gens leur disent de faire, ce qui est généralement plus spécifique que général. Mais puisque la plupart des problèmes sont eux-mêmes spécifiques, vous pouvez voir le problème ici.
AndreasScheinert

6

De toute évidence, une motivation importante pour créer une nouvelle langue consiste à obtenir quelque chose de mieux que les langues existantes. Et comme il y a toujours place à l'amélioration, il y aura toujours de nouvelles langues.

Les intérêts commerciaux sont une autre grande raison. Je pense qu'il est important, par exemple, que Microsoft puisse proposer un langage adapté à chaque besoin, de sorte que les entreprises et les développeurs préfèrent leurs plates-formes.


6

Code hérité. Si vous commencez une nouvelle langue, vous n'avez pas à écouter / prendre en compte toutes les plaintes lorsque vous changez une ancienne langue. Même si tout le monde convient que la nouvelle mise en œuvre est meilleure, elle ne peut pas casser l'ancien code. Et il y a beaucoup de vieux code là-bas.


3
Existe-t-il un cas documenté de langage conçu pour éviter le code hérité? Cette affirmation semble hautement improbable. Je peux voir le cas où vous voulez recommencer à zéro (.net me vient à l’esprit), mais ce n’est pas tant pour éviter le code hérité que pour mieux activer le code futur.
Bryan Oakley

Je ne crois pas que cela soit correct. Il est (généralement) possible de créer une implémentation open source d’une langue existante.
alternative

@BryanOakley - À l'origine, .NET était destiné à conserver une compatibilité ascendante avec VB6, mais ils ont décidé que le problème était trop difficile. .NET reposait toujours sur beaucoup de WRT Java / J ++ hérités sur lesquels il était basé. Je pense que D est un exemple de langage conçu contre le code existant.
gbjbaanb

4

parce que c'est amusant de créer de nouvelles langues même si elles n'ont pas de véritable utilité

Un langage de programmation ésotérique (parfois abrégé en esolang) est un langage de programmation conçu pour tester les limites de la conception d'un langage de programmation informatique, comme preuve de concept ou comme plaisanterie.


1
Pour ceux qui n'ont pas compris les notes de bas de page dans l'article de Wikipédia, le wiki des langues ésotériques est très amusant: esoteric.voxelperfect.net/wiki/Main_Page
David Winslow

cela vous dérangerait-il d'expliquer davantage ce qu'il fait et pourquoi le recommandez-vous comme réponse à la question posée? « Link-ne répond » ne sont pas tout à fait la bienvenue à Stack Echange
moucheron

1
@gnat Je pense honnêtement que le texte original n'est pas une réponse en lien uniquement, il s'agirait d'une réponse courte mais parfaitement valide sans lien. Mais étant donné que le lien ajoute de la saveur, j'ai inclus une courte citation.
jk.

3

Créer un langage de programmation est plutôt amusant. C'est presque du travail créatif pur, puisque vous n'êtes pas limité aux exigences précédentes. Ce n’est plus aussi difficile à implémenter, car vous pouvez toujours compiler en C et compiler le code C pour obtenir des performances adéquates si vous écrivez un compilateur.

Bien sûr, la plupart d’entre nous ont moins de bonnes idées que nous le pensons, elles finissent donc souvent par être décevantes ou par ne plus être aimées par personne autre que le designer original.

Pensez à n'importe quel langage de programmation que vous connaissez. Vous pouvez facilement trouver plusieurs choses que vous n'aimez pas à ce sujet, non? Vous avez probablement des idées pour résoudre ces problèmes. Avec un peu plus d’élan, en supposant que vous en savez beaucoup sur la compilation (et beaucoup de gens), vous pourriez commencer à concevoir et même à mettre en œuvre votre propre.


2

Réponse courte rapide

Réinventer la roue ... Quelle est la tendance actuelle ...

Réponse longue ennuyeuse

Beaucoup de gens oublient qu '"un nouveau nouveau langage similaire pour les anciens programmeurs" est "un nouveau langage clair pour les nouveaux programmeurs".

Qu'est-ce que je veux dire pour ça?

Eh bien, pour les programmeurs "plusieurs années", Java ou C # peut être un langage de programmation supplémentaire à Cobol existant, (OO / Procedural) Basic, C / C ++, tandis que pour les "nouveaux" programmeurs, Java ou C # sont de nouveaux langages, tandis que Cobol, (OO / Procedural) Basic, le C / C ++ n’existant pas pour eux, il est donc courant de réinventer la roue ...

Et, s’il ya une nouvelle tendance technologique, les gens peuvent créer un nouveau langage de programmation basé sur cette tendance, comme ecmascript / javascript pour le Web et la programmation fonctionnelle ...

À votre santé.


+1 pour souligner l'aspect réinventant la roue. C'est souvent fait pour des raisons de marketing: toute entreprise ou organisation assez grosse doit avoir son propre langage de programmation.
Giorgio

1

Les nouveaux langages de programmation sont construits pour de nombreuses raisons différentes, principalement en raison du nouveau paradigme de la programmation, ou en raison des avancées matérielles, les utilisateurs créent un nouveau langage pour tirer parti des nouvelles fonctionnalités matérielles telles que le multitâche, etc.

dans mon cas, je construis généralement de petits compilateurs (avec un nouveau langage de programmation), pour des raisons spécialisées. si je crée beaucoup de jeux et que je pense qu'un langage de programmation spécialement conçu pour le développement de jeux donnera un code plus petit et plus rapide et un développement plus rapide, alors je le construis. et à la fin, il s'avère qu’il peut également être utilisé pour d’autres programmes à usage général.

Je pense que la plupart des personnes qui créent des langages de programmation ont un objectif spécifique à l’esprit, il ya ceux qui les créent à des fins générales dès le début. mais la plupart ne le sont pas.

En passant, je pense qu'il y a beaucoup trop de langages de programmation, mais des centaines de nouveaux langages apparaîtront toujours. certains par plaisir, d'autres par niche, comme projet d'école ou pour des centaines d'autres raisons. et tôt ou tard un nouveau deviendra populaire. Sa ne finira jamais.


0

Pour la même raison, il y en a tellement <que ce soit> et nous continuons à créer de nouveaux <que>

Il existe par exemple une douzaine de frameworks PHP MVC, mais les utilisateurs en créeront toujours de nouveaux pour répondre à des besoins spécifiques, éviter de devenir dépendants d'une autre équipe ou simplement essayer de créer quelque chose de meilleur. Il en va de même pour pratiquement tous les types d’outils ou d’applications.

C'est une très bonne chose, à peu près gagnant-gagnant pour tout le monde à mon avis.


Syndrome NIH = généralement pas utile pour l'industrie informatique.
gbjbaanb

0

Les universités utilisent de nombreux langages de programmation, tout comme les très grandes entreprises telles que Ericsson (Erlang = langage Ericsson), Bell Labs (langages B et C), Google (langage Go quelques mois auparavant). Beaucoup de ceux qui ont été écrits dans le cadre de la recherche universitaire ne sont pas beaucoup utilisés. Il y a cependant quelques exceptions notables. Je suppose que l'écriture de votre propre langage / compilateur est un bon sujet pour les thèses de doctorat d'étudiants en théorie du CS ou dans des disciplines connexes. Il me semble que Python est l’une des premières langues à être née de l’effort de collaboration en ligne de divers programmeurs autour d’une même idée.


python-history.blogspot.com/2009/01/… décrit la naissance de Python en détail
Andy Dent le

0

Il y a plusieurs raisons, principalement parce que les gens pensent que ce qui existe ne facilite pas la résolution de certains problèmes. Certains sont juste pour le plaisir ou pour un intérêt académique.

Je pense qu'il existe un argument solide selon lequel la question de savoir comment concevoir le langage parfait n'est pas encore résolue (et pourrait ne jamais l'être). Donc, tant que les gens auront de nouvelles idées sur ce qui ferait un bon langage, ils continueront à essayer. Certains de ces essais traceront un nouvel espace cool comme Erlang et d'autres échoueront, mais tant que le flop vous apprendra quelque chose, ce sera bien aussi.


-1

Comme indiqué précédemment, les langues tentent de cibler certaines tâches spécifiques et les nouvelles langues peuvent cibler un nouveau domaine. Ces langues peuvent utiliser des fonctionnalités d'autres langues actuellement disponibles.

Une autre raison des nouvelles langues est d’essayer d’incorporer de nombreuses tâches différentes et d’être la langue de choix pour de nombreux besoins différents. Certaines de ces langues essaient de comprendre toutes les langues que vous utiliseriez toujours, quel que soit le besoin que vous ayez.


-1

J'ai appris dans ma classe de langages de programmation que la plupart des langages ont été inventés pour se gratter. La plupart des langages ont été inventés pour pouvoir mieux exprimer un ensemble d'algorithmes. Par exemple, les langages fonctionnels ont été inventés pour donner aux algorithmes récursifs un espace beaucoup plus expressif.

Demander pourquoi il y a tant de langues revient à demander pourquoi C ++ 0x? :)

De plus, plus vous connaissez de langues, plus vous pouvez devenir expressif - cela est vrai à la fois en programmation et en langues naturelles!

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.