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

Commentaires

  • Avoir une syntaxe similaire à c n’est pas la même chose qu’être basé sur c.
  • De plus, TIOBE est un index indésirable.
  • Puis-je plutôt demander pourquoi les langages de programmation basés sur C sont plus populaires?
  • Parce que C est un descendant dALGOL, et ALGOL est à portée de bloc laboratoire impératif ce que Ab raham est pour les chrétiens, les juifs et les musulmans.
  • Vos citations sur PHP et Python don ' t disent en fait quils ' est influencé par C – et, alors que PHP lest, Python ne semble pas ' être.

Réponse

Avec lessor dUNIX dans les années 1970, son langage de programmation standard C est rapidement devenu la lingua franca du monde de la programmation. Pendant un certain temps, C était pratiquement obligatoire pour chaque programmeur. En tant que tel, le fait que C ait influencé presque tous les langages de programmation qui lont suivi dune manière ou dune autre nest guère surprenant, pour deux raisons:

  • Lors de la conception dun nouveau langage, il est logique de baser sa syntaxe, si possible, sur une langue existante populaire qui peut être considérée comme une connaissance commune.
  • Une nouvelle langue a plus de chances de réussir si la courbe dapprentissage est superficielle et une syntaxe qui ressemble à une langue déjà connue est généralement plus facile à apprendre (sauf sil se comporte radicalement différemment malgré les similitudes apparentes). Ainsi, les langages qui empruntent la syntaxe à C gagnent généralement du terrain plus rapidement que ceux qui nen ont pas.

Mais dautres langages existaient, et ils le font encore, certains dentre eux même antérieurs au C – la famille LISP (CL, Clojure et Scheme étant les dialectes modernes les plus populaires), la famille ML (avec plusieurs dialectes modernes), il ya « toute une armée de 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 quaucun de ces langages (à lexception de Python) ne soit dans votre top 10, beaucoup dentre eux ont une base dutilisateurs stable et une communauté active; ils ne vont certainement pas disparaître.

En outre, il convient de noter que la quantité dinfluence C dans ces langages diffère énormément, allant des langages presque 100% C ++ et Objective-C compatibles, jusquà Python (qui abandonne délibérément de nombreuses fonctionnalités de syntaxe de C). Et ce nest que la syntaxe: en termes de sémantique, la plupart des langages de cette liste nont pas grand chose en commun avec C. Lécrasante majorité a la gestion de la mémoire intégrée au langage, et par conséquent, copie la sémantique, le passage darguments, 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, fonde sa syntaxe de bits et de morceaux sur C, mais pas sa sémantique). Dautres différences (à lexception de C ++ et Objective-C, qui sont pour la plupart rétrocompatibles avec C) incluent la gestion des erreurs, les règles de portée, les bibliothèques standard, linclusion de code externe (#include), et le fait que beaucoup de ces langages soient « virtualisés », cest-à-dire quils fonctionnent sur un interpréteur, un compilateur JIT ou une machine virtuelle.

Python, dailleurs, a une certaine influence sur le C, mais il nest certainement pas « basé sur » C. La syntaxe et la sémantique diffèrent radicalement de C, et cest par conception. Python nemprunte des fonctionnalités à C que là où dautres alternatives sont tout aussi « bonnes » (selon le « Zen of Python » – tapez import this dans un interpréteur python).

Quant à lavenir de la programmation; les prévisions varient. Linfluence de C ne disparaît pas, mais les développements récents du matériel (machines multi-cœurs devenant monnaie courante, GPU puissants, CPU cessant dêtre le goulot détranglement typique des performances, connexions réseau rapides et fiables, etc.) appellent des approches radicalement différentes à 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 éliminent la plupart des problèmes typiques et offrent une approche plus abstraite et plus structurée des solutions distribuées, simultanées et traitement parallèle (la pureté étant un concept important dans ce contexte). Les nouveaux langages de programmation (par exemple C # ou D) incluent déjà de nombreuses fonctionnalités pour supporter un tel idiome. En tout cas, ni le fort impact de C sur la programmation, ni les langues non-C vont disparaître.

Commentaires

  • Bonne réponse, mais " CPU cesser dêtre le goulot détranglement typique des performances "? Daprès mon expérience, les problèmes de performances abondent – CPU, E / S, etc. très efficace.
  • @MikeDunlavey: Habituellement, les goulots détranglement que je rencontre sont causés par les E / S, n fonctionnement, performances du cache CPU, débit de bus et communication interprocessus (inefficace). À lépoque, le processeur était presque inévitablement le goulot détranglement; cela nest plus ' t vrai.

Réponse

Cest un peu comme demander pourquoi langlais est la langue dominante aux États-Unis. Pourquoi pas espagnol ou français? Ils contrôlaient plus 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 quil puisse y avoir une » réponse « à cela.

Cependant, la chronologie de » Computer Languages History « ( http://www.levenez.com/lang/ ) fournit toute la réponse quil peut éventuellement y avoir.

Commentaires

  • Parce que la Grande-Bretagne du 1600 -1880 était à peu près la première puissance industrielle et financière du monde, suivi par les États-Unis de 1880 à aujourdhui (< – discutable). Il est devenu la langue des affaires internationales et est parlé couramment par plus de 2 milliards de personnes dans le monde. Personne ne veut parler espagnol ou néerlandais 🙂
  • @maple_shaft – " personne ne veut parler espagnol "?! … savez-vous même dans combien de pays il est parlé? en.wikipedia.org/wiki/Spanish_language
  • @ S.Lott: Vous voulez dire la partie où lEmpire britannique était le plus grand empire jamais existé, et occupait 25% de lent ire world ' s surface? Ce genre de " pas puissant "?
  • @DeadMG: I ' m ne parle pas du monde. Je ' m parle des États-Unis dans les années 1700 ', où les Français ont encerclé les Britanniques dans une petite zone le long de la côte. Je ' m parle du fait que les Britanniques perdent des engagements militaires dans ce théâtre uniquement. Les Français contrôlaient clairement la plupart de ce qui est devenu les États-Unis. Encore. Les États-Unis ont fini par parler anglais. Pas français. La même analyse sapplique à C. Il ' est une histoire complexe avec de nombreux facteurs dinfluence. Il ny a ' pas de réponse triviale.
  • @ S.Lott Les Français nont ' gagner aucun gain rencontrer. En regardant simplement lAmérique du Nord, ils ont remporté la majorité; mais la perte de 4 des 5 batailles majeures de NA en 1559/60 a entraîné une défaite écrasante dans le théâtre. Les prises des forts Ticonderoga et Niagara, les plaines dAbraham et la bataille de Restigouche étaient toutes des victoires britanniques. En coupant ravitaillement / renfort, ce dernier a rendu inutile la victoire française à Sainte-Foy.

Réponse

Si vous créez un nouveau langage de programmation, avoir une syntaxe similaire à celle des langages existants populaires facilite lapprentissage pour vos nouveaux utilisateurs. Surtout si de nombreux concepts sont similaires entre les langages.

Je pense aussi que la syntaxe de style C est relativement facile à lire. Pour comparer avec Pascal, lutilisation 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 inclure des espaces dans la syntaxe ouvre un nouvel ensemble de problèmes dédition. Un autre exemple: Lisp et JavaScript partagent quelques idées, mais quand la même chose est écrite dans une syntaxe de style C, cest moins obscur.

Je suis sûr que beaucoup de gens seraient en désaccord avec le deuxième paragraphe, car tout le monde a leur 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 cela montre aussi en partie que les auteurs de C ont pris quelques bonnes décisions.

Réponse

Les langages de programmation évoluent avec le temps tout comme les langages naturels, certains langages plus anciens influençant cette évolution de manière plus forte que dautres , tandis que dautres disparaissent dans lobscurité et que leur influence est plus difficile à retracer au niveau de la surface, cest-à-dire la syntaxe.

Linfluence de C provient de nombreuses sources – cest de bas niveau, répandu, soutenu par les cercles Unix et Microsoft. Cest aussi la survie du problème le plus approprié – il est facile de voir la syntaxe laconique de type C avait plus dattrait que la syntaxe verbeuse dérivée dAlgol de Pascal et dautres concurrents de C dans les années 1970 et 1980. Par conséquent, il a été largement adopté par les langages qui lont suivi.

Avec la croissance actuelle de limportance de la programmation multithread et des langages fonctionnels particulièrement bien adaptés, je dirais que nous verrons leur influence grandir en lavenir. Exemple concret: Python, qui a même fait cette liste dans le post de question.

Une belle chronologie de lhistoire de la langue sur laquelle réfléchir

Commentaires

  • Vous vous êtes trompé. PASCAL et C sont tous deux des descendants dALGOL.
  • Vrai, mais Algol lui-même est descendant de Fortran et a choisi certaines des constructions auxquelles je faisais référence (programme, fin, sous-programme par rapport à c ' s crochets). Pourtant, ce que javais à lesprit était en fait une syntaxe semblable à Algol. Modifié.
  • la syntaxe laconique de type C avait plus dattrait que la syntaxe verbeuse dérivée dAlgol de Pascal et dautres concurrents de C dans les 70 ' s et 80 ' s +1 pour cela. begin les programmeurs sont aussi des humains end begin ceux qui ont cru que cela ' est pratique pour associer les signes de ponctuation à des mots comme début-fin a perdu sa bataille en accolades fin de lhistoire
  • Je ne vois aucune preuve que la syntaxe C est moins obscure, sauf dans le sens où la plupart des développeurs connaissent C ou une sorte de langage lié au C, et donc cela semble plus familier. AFAICT, C a conquis Pascal en raison de sa structure et du fait que les implémentations navaient pas ' à rouler leur propre lien, pas leur syntaxe.
  • @ David- Daprès ce dont je me souviens, lune des raisons pour lesquelles C a gagné sur les autres langages était la facilité relative daccès à la mémoire en C (cest-à-dire les pointeurs). Je sais quils sont désolés maintenant, mais à lépoque où 1 Ko de RAM représentait beaucoup de mémoire, cétait une fonctionnalité très puissante du langage. Je connais d’autres langues qui ont fourni des fonctionnalités de pointeur, mais aucune aussi facilement que C.

Réponse

La plupart des les langues que vous listez nont pratiquement rien à voir avec C à part des similitudes syntaxiques non pertinentes. Les deux seuls dérivés C réels sont Objective-C et C ++.

Commentaires

  • Si nous ne considérons pas la syntaxe, alors les seules différences entre les langages sont la disponibilité de constructions générales du langage (boucles, conditionnelles, variables, abstractions de celles-ci comme les classes et les fermetures, etc …) et quelles correspondent toutes au comportement du code machine. Toutes les langues de bas niveau sont similaires les unes aux autres et toutes les langues de haut niveau sont extrêmement similaires les unes aux autres à ce stade.
  • Vous ne devriez pas ' penser à un langue comme fonctionnalité dont il dispose, mais comment il communique le comportement des applications. Votre code source est votre plus bas niveau de documentation et on écrit le code source pour personnes et PAS pour machines . Si nous écrivions du code strictement pour les machines, nous coderions tous en assemblage.
  • @maple_shaft: Cest tout à fait vrai! On ma demandé dans une interview dexpliquer la différence entre le langage machine (assembleur) et le langage de programmation. Ma réponse a été: " Le langage machine est pour les machines, le langage de programmation est pour les programmeurs. "
  • @maple_shaft: La syntaxe nest pas pertinente quant à la communication de ' avec personnes . Si je remplaçais un mot anglais par une orthographe différente, langlais serait toujours la même langue. La forme syntaxique nest pas pertinente, ce que ' est communicatif est la sémantique du langage.
  • @DeadMG: Mais la question est sur la syntaxe. Vous pouvez considérer les similitudes syntaxiques comme non pertinentes, mais la personne qui pose la question veut savoir pourquoi ces similitudes non pertinentes existent .

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *