web-dev-qa-db-fra.com

Pourquoi plusieurs langages de programmation populaires sont-ils influencés par C?

Les 10 meilleurs langages de programmation, selon le indice TIOBE semblent être fortement influencés par C:

1. Java

Le langage dérive une grande partie de sa syntaxe de C et C++ mais a un modèle d'objet plus simple et moins d'installations de bas niveau. - wikipedia.org

2. C

C est l'un des langages de programmation les plus utilisés de tous les temps et il existe très peu d'architectures informatiques pour lesquelles un compilateur C n'existe pas. - wikipedia.org

3. C #

Au cours du développement de .NET Framework, les bibliothèques de classes ont été initialement écrites à l'aide d'un système de compilateur de code managé appelé Simple Managed C (SMC). En janvier 1999, Anders Hejlsberg a formé une équipe pour construire à l’époque un nouveau langage appelé Cool, qui signifie "C-like Object Oriented Language". - wikipedia.org

4. C++

Il a été développé par Bjarne Stroustrup à partir de 1979 aux Bell Labs comme une amélioration du langage C. - wikipedia.org

5. Objectif-C

Objective-C est un langage de programmation réfléchissant et orienté objet qui ajoute une messagerie de style Smalltalk au langage de programmation C. - wikipedia.org

6. PHP

Il a réécrit ces scripts sous forme de binaires CGI (Common Gateway Interface) du langage de programmation C, en les étendant pour ajouter la possibilité de travailler avec des formulaires Web et de communiquer avec des bases de données et a appelé cette implémentation "Personal Home Page/Forms Interpreter" ou PHP/FI. - wikipedia.org

8. Python

Python a été conçu à la fin des années 1980 et sa mise en œuvre a été lancée en décembre 1989 par Guido van Rossum à CWI aux Pays-Bas en tant que successeur du langage de programmation ABC (lui-même inspiré de SETL) capable de gérer des exceptions et de s'interfacer avec le système d'exploitation Amoeba. - wikipedia.org

ABC (langage de programmation) Ses concepteurs affirment que les programmes ABC sont généralement environ un quart de la taille des programmes Pascal ou C équivalents, et plus lisibles. - wikipedia.org

9. Perl

Perl emprunte des fonctionnalités à d'autres langages de programmation, notamment C, les scripts Shell (sh), AWK et sed. - wikipedia.org

10. JavaScript

JavaScript utilise une syntaxe influencée par celle de C. - wikipedia.org

Il semble que la plupart d'entre eux empruntent leur syntaxe à C et/ou sont fortement influencés de plusieurs autres manières, au moins à leurs débuts. Pourquoi?

24
John Isaiah Carmona

Avec l'essor d'UNIX dans les années 1970, son langage de programmation de systèmes standard C est rapidement devenu la lingua franca du monde de la programmation. Pendant un bon moment, C était pratiquement obligatoire pour chaque programmeur. En tant que tel, le fait que C ait influencé presque tous les langages de programmation qui l'ont suivi d'une manière ou d'une autre n'est pas surprenant, pour deux raisons:

  • Lors de la conception d'un nouveau langage, il est logique de baser sa syntaxe, dans la mesure du possible, sur un langage existant populaire qui peut être supposé de notoriété publique.
  • Une nouvelle langue a plus de chances de réussir si la courbe d'apprentissage est peu profonde, et une syntaxe qui ressemble à une langue déjà connue est généralement plus facile à apprendre (à moins qu'elle ne se comporte radicalement différemment malgré les similitudes apparentes). Ainsi, les langages qui empruntent la syntaxe à C gagnent généralement en vitesse plus rapidement que ceux qui ne le font pas.

Mais d'autres langues existaient, et elles existent toujours, certaines d'entre elles sont même antérieures au C - il y a la famille LISP (CL, Clojure et Scheme étant les dialectes modernes les plus populaires), la famille ML (avec plusieurs dialectes modernes), il y a toute une armée de Les dialectes BASIC (VB.NET et VBA sont des implémentations modernes), il y a Pascal et ses parents (Delphi étant le plus connu) et de nombreuses langues `` bizarres '' qui ont pris des influences de nombreuses autres langues et ont inventé quelques choses elles-mêmes; les exemples incluent Go, Python, Lua, Haskell (et son prédécesseur, Miranda), Prolog et Erlang. Bien qu'aucun de ces langages (sauf Python) ne figure dans votre top 10, beaucoup d'entre eux ont une base d'utilisateurs stable et une communauté active; ils ne s'en vont certainement pas.

En outre, il convient de noter que la quantité d'influence C dans ces langages diffère énormément, allant des langages compatibles à presque 100% C C++ et Objective-C, jusqu'à Python (qui abandonne délibérément de nombreux Et ce n'est que la syntaxe: en termes de sémantique, la plupart des langages de cette liste n'ont pas grand-chose en commun avec C. La grande majorité a une gestion de la mémoire intégrée au langage, et par conséquent, copie de la sémantique , le passage d'arguments, etc., sont très différents. JavaScript, par exemple, a de fortes influences sémantiques de Scheme, tandis que sa syntaxe a été conçue pour ressembler à Java (qui, à son tour, base ses bits et -pièces syntaxe sur C, mais pas sa sémantique). D'autres différences (à l'exception de C++ et Objective-C, qui sont principalement rétrocompatibles avec C) incluent la gestion des erreurs, les règles de portée, les bibliothèques standard, l'inclusion de code externe (#include), et le fait que beaucoup de ces langages sont "virtualisés", c'est-à-dire qu'ils s'exécutent sur un interpréteur, un compilateur JIT ou une machine virtuelle.

Python, en passant, a une certaine influence C, mais il n'est certainement pas "basé sur" C. La syntaxe et la sémantique diffèrent assez radicalement de C, et c'est par conception. Python emprunte uniquement les fonctionnalités de C où les autres alternatives sont également "bonnes" (selon le "Zen de Python" - tapez import this dans un python).

Quant à l'avenir de la programmation; les prévisions varient. L'influence de C ne disparaît pas, mais les développements récents du matériel (machines multicœurs devenant monnaie courante, GPU puissants, le CPU cessant d'être le goulot d'étranglement typique des performances, connexions réseau rapides et fiables, etc.) appellent des approches radicalement différentes de la programmation en général. Quiconque a déjà écrit une application distribuée multithread dans un langage impératif peut dire que c'est incroyablement difficile, tandis que des langages comme Haskell ont des fonctionnalités qui suppriment la plupart des problèmes typiques et offrent une approche plus abstraite et plus structurée du traitement distribué, simultané et parallèle. (la pureté étant un concept important dans ce contexte). Les langages de programmation plus récents (par exemple C # ou D) incluent déjà de nombreuses fonctionnalités pour prendre en charge un tel idiome. En tout cas, ni le fort impact que C a eu sur la programmation, ni l'existence de langages non-C ne disparaissent.

41
tdammers

C'est un peu comme demander pourquoi l'anglais est la langue dominante aux États-Unis. Pourquoi pas espagnol ou français? Ils contrôlaient davantage le territoire américain que les colonies anglaises. Pourquoi pas le néerlandais? La première capitale américaine se trouvait dans une ancienne colonie néerlandaise. Je ne suis pas sûr qu'il puisse y avoir une "réponse" à cela.

Cependant, la chronologie "Historique des langages informatiques" ( http://www.levenez.com/lang/ ) fournit toutes les réponses possibles.

1
S.Lott

Si vous créez un nouveau langage de programmation, le fait d'avoir une syntaxe similaire aux langages existants populaires facilite l'apprentissage de vos nouveaux utilisateurs. Surtout si de nombreux concepts sont similaires entre les langues.

Je pense également que la syntaxe de style C est relativement facile à lire. Pour comparer avec Pascal, l'utilisation des symboles "{" et "}" pour les blocs de code est plus lisible que "begin" et "end", qui sont optiquement très similaires aux identifiants. Python est encore plus lisible, mais l'inclusion d'espaces dans la syntaxe ouvre un nouvel ensemble de problèmes avec l'édition. Un autre exemple: LISP et JavaScript partagent quelques idées, mais quand la même chose est écrite en C- syntaxe de style, elle est moins obscure.

Je suis sûr que beaucoup de gens seraient en désaccord avec le deuxième paragraphe, parce que tout le monde a son propre langage préféré, mais je pense que la popularité de la syntaxe de style C est en partie une coïncidence historique, mais en partie cela montre également que les auteurs de C ont fait quelques bons les décisions.

0
Viliam Búr