Pourquoi y a-t-il tant de langages de programmation?
Et qu'est-ce qui incite quelqu'un à créer un langage de programmation malgré le fait que d'autres langages existent déjà?
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 différents paradigmes comme orienté objet et fonctionnel et de nombreux modernes les langues essaient de mélanger les fonctionnalités des deux.
De nouveaux problèmes doivent également être résolus, par exemple l'augmentation des processeurs multicœurs. La solution la plus courante a été les threads, mais certains langages de programmation tentent de résoudre le problème de concurrence d'une manière différente, par exemple le modèle d'acteur. Voir Erlang - Software for a Concurrent World
C'est un cycle. Vous commencez une nouvelle langue et vous êtes libre de vous éloigner de toutes les mauvaises syntaxes et mauvais choix de vos prédécesseurs. Dans la version 1, le langage a fière allure car il n'a aucun de ces bagages et il fait le travail. Ensuite, dans les versions plus récentes, vous commencez à expérimenter avec des fonctionnalités qui peuvent ne pas fonctionner, ou vous importez des fonctionnalités d'autres langages plus récents qui rendent votre syntaxe un peu délicate. Et voilà, après quelques versions supplémentaires, vous vous rendez compte que votre langage est maintenant aussi compliqué que celui que vous avez remplacé, avec des problèmes de syntaxe stupides et des bagages hérités. Et soudain, vous vous rendez compte que si vous créez un nouvea langage, vous pouvez 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 crowbars et une multitude d'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 est particulièrement bon pour l'analyse statistique, C est particulièrement bon pour l'écriture de noyaux de système d'exploitation, Haskell est particulièrement bon pour les calculs lourds en mathématiques ou financiers, Erlang est particulièrement bon pour la programmation simultanée, etc.
De plus, pour la même raison que les chemises sont de couleurs différentes: certaines personnes aiment le "style" d'une langue par rapport à 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 une certaine connaissance des langages et veulent gratter une démangeaison, ou essayer quelques idées.
Parce qu'ils sucent tous (dans un sens ou dans l'autre).
À l'heure actuelle, nous avons créé environ 5 000 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 qui puisse exprimer ce que vous pouvez exprimer dans une phrase dans un langage naturel, il continuera de venir.
De toute évidence, une motivation importante pour créer une nouvelle langue est de réaliser quelque chose de mieux que les langues déjà existantes. Et comme il y a toujours place à 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, pour Microsoft, de pouvoir proposer un langage pour chaque besoin, afin que les entreprises et les développeurs préfèrent leurs plateformes.
Code hérité. Si vous commencez une nouvelle langue, vous n'avez pas à écouter/considérer toutes les plaintes lorsque vous changez une ancienne langue. Même si tout le monde convient que la nouvelle implémentation 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 vraiment d'utilisation
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 pur travail créatif, car vous n'êtes pas limité aux exigences précédentes. Ce n'est plus si difficile à implémenter, car vous pouvez toujours compiler en C et compiler le code C pour des performances adéquates si vous écrivez un compilateur en premier lieu.
Bien sûr, la plupart d'entre nous ont moins de bonnes idées que nous ne le pensons, donc elles finissent souvent par être décevantes ou ne pas être aimées par quelqu'un d'autre que le créateur d'origine.
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 sans doute des idées sur la façon de les corriger. Avec juste un peu plus d'impulsion, en supposant que vous en savez beaucoup sur la construction de compilateurs (et beaucoup de gens le savent), vous pourriez commencer à concevoir et même à implémenter le vôtre.
Réponse courte rapide
Réinventer la roue ... Quelle est la tendance actuelle ...
Réponse longue ennuyeuse
Beaucoup de gens oublient qu '"un autre nouveau langage similaire pour les anciens programmeurs" est "un nouveau langage simple pour les nouveaux programmeurs".
Qu'est-ce que je veux dire pour ça?
Eh bien, pour les programmeurs "de plusieurs années", Java ou C # peut être un langage de programmation supplémentaire au Cobol existant, (OO/Procédural) Basic, C/C++, tandis que pour les "nouveaux" programmeurs, = Java ou C # sont de nouveaux langages, tandis que Cobol, (OO/Procedural) Basic, C/C++ n'existe pas pour eux, donc réinventer la roue devient chose courante ...
Et, s'il y a 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é.
de nouveaux langages de programmation sont construits pour de nombreuses raisons différentes, principalement parce qu'il existe un nouveau paradigme de programmation, ou en raison des progrès du matériel, les gens créent un nouveau langage pour tirer parti des nouvelles fonctionnalités matérielles comme le multitâche, etc.
dans mon cas, je construis généralement de petits compilateurs (avec un nouveau langage de programmation), pour des raisons de spécialité. si je fais beaucoup de jeux, et je crois qu'un langage de programmation spécialement conçu pour le développement de jeux se traduira par un code plus petit 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 gens qui créent des langages de programmation ont un objectif spécifique en tête, il y a ceux qui les créent à des fins générales depuis le début. mais la plupart ne le sont pas.
Soit dit en passant, je pense qu'il y a beaucoup trop de langages de programmation, mais des centaines de nouveaux sortiront toujours. certains par plaisir, certains par but de niche, comme projet d'école, ou pour des centaines d'autres raisons. et tôt ou tard, un nouveau deviendra populaire. Ça ne finira jamais.
Il y a plusieurs raisons, la plupart 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 y a un argument solide selon lequel la question de savoir comment concevoir le langage parfait n'est pas encore résolue (et ne le sera peut-être jamais). Aussi longtemps que les gens auront de nouvelles idées sur ce qui ferait une bonne langue, les gens continueront d'essayer. Certains de ces essais traceront de nouveaux espaces sympas comme Erlang et d'autres floperont, mais tant que quelque chose est appris du flop, ça va aussi.
Pour la même raison, il y a tellement de <n'importe quoi> et nous continuons à créer de nouveaux <peu importe>
Il y a une douzaine PHP frameworks MVC, par exemple, mais les gens en créeront toujours de nouveaux pour répondre à des besoins spécifiques, pour éviter de devenir dépendant d'une autre équipe, ou tout simplement pour essayer de créer quelque chose de mieux. 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 contribuent beaucoup de langages de programmation, tout comme les très grandes entreprises comme Ericsson (Erlang = langage Ericsson), Bell Labs (langages B et C), Google (langage Go depuis quelques mois auparavant). Beaucoup de ceux qui ont été écrits dans le cadre de la recherche universitaire ne sont pas beaucoup utilisés. Il existe cependant quelques exceptions notables. Je suppose qu'écrire votre propre langage/compilateur est un bon sujet pour les thèses de doctorat des personnes étudiant la théorie CS ou des disciplines connexes. Il me semble que Python est l'une des premières langues nées de l'effort collaboratif en ligne de divers programmeurs autour d'une même idée.