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à?
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à?
Réponses:
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
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 ...
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.
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.
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.
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.
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.
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.
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é.
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.
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.
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.
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.
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.
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!