Pourquoi C a-t-il prévalu sur Pascal? [fermé]

68

D'après ce que j'ai compris, dans les années 1980, et peut-être aussi dans les années 1990, Pascal et C étaient quasiment frontaux en tant que langages de production.

La disparition ultime de Pascal est-elle uniquement due à la négligence de Borland envers Delphes ? Ou y en avait-il d’autres, comme la malchance ou peut-être quelque chose qui ne va pas de manière inhérente avec Pascal (un espoir pour son réveil?).

Je suis intéressé par les faits historiques et les observations que l’on peut sauvegarder, plutôt que d’aimer ou de ne pas aimer.

Konrad Morawski
la source
10
Si vous n'avez en gros qu'une seule entreprise en faillite qui prend en charge la langue dans laquelle vous travaillez, cela ne vous aidera certainement pas (je parle du site pré-.Net Borland).
Let_Me_Be
48
Réponse en un mot: Unix.
SK-logic
4
Huh. C'est quoi C?
Lieven Keersmaekers
8
finalement pascal perdu car il utilise des chaînes basées sur 1.
Pieter B
7
@jk: Sans oublier qu'en ISO Pascal, les chaînes peuvent avoir n'importe quelle longueur, mais les chaînes de longueurs différentes ont des types différents. Pour mettre n'importe quelle chaîne en majuscule, il vous faudrait 256 fonctions. Pour ajouter deux chaînes aléatoires, il vous faudrait des milliers!
MSalters

Réponses:

43

Pascal a perdu la bataille principalement à cause de:

  • Verbosité ( if ... then begin ... end, var A: array[0..15] of Integer)
  • Dialectes mutuellement incompréhensibles et norme officielle
  • Extensions moins qu'impressionnantes orientées objet
  • Le dialecte le plus abouti et le plus pratique - Turbo Pascal - n’a jamais été porté sur des plateformes autres que DOS / Windows. De plus, Borland n’a jamais ouvert les sources du compilateur.
  • Le "dernier espoir" de Pascal - Delphi - a été positionné par Borland en tant que plate-forme de développement de base de données destinée aux environnements d’entreprise. C’était un malheur au marketing (je suppose que les spécialistes du marketing l’avaient fait), car les ingénieurs créatifs détestaient les bases de données et les environnements d’entreprise. Puis l’échec de Delphi pour Linux, Kylix.
  • Apple est passé en C puis à Objective-C et a donc tué Pascal en tant que langage OS
Mojuba
la source
19
Le passage d'Apple à Objective-C s'est fait attendre longtemps après avoir cessé d'utiliser Pascal. Le système d'exploitation et les bibliothèques Macintosh d'origine ont été écrits à l'aide de Pascal, mais Apple offrait un bon support pour le C peu après l'introduction du Mac et était passé au C au début des années 90. Apple a adopté Objective-C lors de l’acquisition de NeXT, ce qui est arrivé après le retour de Steve Jobs à la fin des années 90.
Caleb
36
Je ne pense pas que la verbosité soit un argument pertinent. Comme le code est lu plus que la verbosité écrite a des avantages.
johannes
14
La verbosité n'est-elle pas exactement ce que préconisent les langages actuels (python ou perl)?
Rook
7
Je ne pense pas que la verbosité était une cause, au contraire, c'est l'un des points forts de Pascal.
9
Ceci est une erreur. Le Turbo Pascal a eu beaucoup de succès. Le problème majeur est que vous pouvez seulement l' utiliser sous DOS / Windows.
44

C est la base de Unix. Dans les années 80 et 90, Unix attirait de plus en plus l'attention. Aujourd'hui, un peu de saveur d'Unix est dans votre smartphone.

mouviciel
la source
16
Pas seulement UNIX. Windows et ses noyaux ont été écrits principalement en C. Sans parler du C ++ à venir, ce qui a également rendu le C un peu plus populaire.
Yam Marcovic
2
@ SK-logic Il est sorti en 1984. Je ne dirais pas que C avait conquis le monde à ce moment-là. Vous avez eu Smalltalk, Pascal et d'autres utilisés un peu partout (sans parler de COBOL).
Yam Marcovic
3
@Yam: Unix et C étaient déjà largement répandus dans les années 80. Quand j’ai étudié à l’Université (au début des années 90), Unix et C étaient "la plate-forme" sur laquelle tout développeur sérieux aurait aimé travailler. Unix a été implémenté en C, il n'y aurait donc pas d'Unix sans C. Smalltalk, Pascal et COBOL n'ont pas joué un rôle aussi important.
Giorgio
2
@Giorgio En effet, après que Dennis Ritche et Brian Kernighan aient rendu C stable, ils ont ré-écrit UNIX en C, facilitant ainsi grandement le portage vers d'autres types de machines.
Yam Marcovic
2
@ Steve314 Bons points. Cependant, autant que je sache, les noyaux Windows antérieurs ont également été développés avec Assembler. Dans Assembly, une convention d’appel n’est par définition appliquée en aucune manière (d’où le mot "convention"). Il semble donc que le fait qu'il ait reçu le nom de "convention d'appel Pascal" ne signifie pas nécessairement qu'il a été inventé par l'inventeur du langage de programmation Pascal ou que Windows a été développé en Pascal. EDIT: Je viens de lire votre commentaire récent. Je suppose que nous n'avons rien d'intelligent à ajouter ici pour le moment. :)
Yam Marcovic
35

L'essai Pourquoi Pascal n'est pas ma langue préférée par Brian W. Kernighan couvre les principaux points critiques.

C est beaucoup plus polyvalent et extensible. Certaines personnes ont même découvert comment faire (une sorte de) programmation orientée objet avec C ! En outre, l'assembleur en ligne et d'autres fonctionnalités de bas niveau en faisaient un langage important pour la programmation système.

Felix Dombek
la source
9
Si je me souviens bien, Turbo Pascal (mon premier langage de programmation, d'ailleurs) supportait l'assembleur en ligne. J'ai déjà vu l'essai de Kernighan. Mais ses critiques ne sont-elles pas dépassées?
Konrad Morawski
2
@ Morawski, TP vient des années 80, C des années 70. Il est arrivé plus de dix ans en retard.
SK-logic
9
@ Morawski: De plus, Turbo Pascal n'était qu'une implémentation de Pascal. La norme décrivant un langage qui n'était pas particulièrement utile, les développeurs devaient donc intégrer leurs propres petites extensions pour que les utilisateurs puissent écrire des programmes utiles. La fragmentation était probablement un problème ici.
David Thornley
@ SK-logic, PASCAL a été défini pour la première fois en 1970 et les premiers compilateurs étaient alors disponibles. Turbo Pascal a montré ca. En 1984, après la faillite de Jim Tyson, la demande de JRT Pascal FAR devança sa capacité à livrer le produit. Le Turbo Pascal a d'abord été considéré avec beaucoup de suspicion parce que tout le monde se souvenait de JRT Pascal et que BEAUCOUP de personnes en avaient été brûlées.
John R. Strohm
@ JohnR.Strohm, j'ai répondu au commentaire de Konrad concernant l'assembleur en ligne dans TP.
SK-logic
23

Bien que ce ne soit pas l'usage exclusif, Pascal a été conçu pour l'enseignement de la programmation et ne doit pas être utilisé comme langue principale.

Delphi et Object Pascal ont changé cela. Mais à cette époque, il était déjà trop tard.

Laisse-moi tranquille
la source
4
Cependant, BASIC n'a pas été conçu à des fins professionnelles non plus, mais il est vivant
Konrad Morawski
11
@ Morawski: Vraiment? En dehors de VB?
5
@ Let_Me_Be Je me souviens de quelques applications Windows écrites en Borland (Object) Pascal ou Delphi. C'était beaucoup plus facile que de les écrire en C / C ++. Je pense que C # et Java servent ce domaine maintenant.
quant_dev
11
Pascal est rapidement devenu un véritable langage généraliste. Personne n'a dû attendre Delphi. Je ne vois pas comment enseigner (ou être capable d'enseigner) à un langage de programmation beaucoup de gens quand il est jeune entraîne sa disparition ultime. Plutôt l'inverse.
Yam Marcovic
10
@Morawski La seule raison pour laquelle BASIC (enfin, VB) fait encore parler et est utilisée aujourd'hui, c'est que le premier produit de Microsoft était un interpréteur BASIC (il était quasiment sûr que ce n'était pas un compilateur) et qu'il n'arrêtait pas de nous le fourrer. S'ils avaient choisi Pascal à la place, nous parlerions de VP.Net. Le monde serait aussi moins sucer.
MetalMikester
18

Je ne pense pas que C ait vaincu Pascal. Pour la majorité des programmeurs, Java a prévalu sur Pascal. La catégorie de programmeurs qui programmait auparavant en Pascal choisirait maintenant Java (ou C #) pour le même travail. Ceux qui avaient l'habitude de programmer en C collaient avec C (et C ++).

La disparition de Pascal est à mon humble avis provoquée principalement par le fait que Borland s’en tenait à sa méthode de travail graphique, alors que ses clients passaient sur le Web. Borland n’a jamais eu d’offre vraiment intéressante pour le développement côté serveur. C’est seulement au cours des dernières années, avec la mort de Delphi à toutes fins pratiques, que ceux qui ont collé avec Delphi sont passés à C #. Le C / C ++ a toujours été une foule différente de celle de Pascal / Java / C #, je pense, les types C (++) étant beaucoup plus techniques / de bas niveau.

Jaap
la source
19
La disparition de Borland était bien antérieure au besoin de développement Web. Leur erreur était simple: ils ont tout d'abord oublié ce qui en faisait un leader (compilateurs bon marché, rapides et efficaces à la disposition des masses) et se sont lancés dans des outils d'entreprise coûteux (où Microsoft et d'autres avaient déjà une bonne longueur d'avance.) Borland's foule traditionnelle devait passer à autre chose.
MetalMikester
@ MetalMikester, c'est un peu la vérité A ici. Ils ont jeté à l'écart les petits développeurs indépendants tout en poursuivant le «gros gain» dans les ventes aux entreprises. Et malheureusement, il en reste encore, même avec de nouveaux propriétaires.
GrandmasterB
Cela dit, ils ont dû gérer en même temps l'absence d'une bonne option pour le développement d'applications Web (découlant de la longue insistance sur le client / serveur pour tout ce qui se trouvait dans leur gamme de produits).
Jwenting
2
Java et C # ont une syntaxe C et sont très semblables avec C, plutôt que Pascal ... aussi Java a été adressé aux programmeurs C ++.
m3th0dman
11

Pour résumer: C est un assembleur portable, PASCAL est un langage éducatif.

Cette section sur le Wikipédia couvre bien en fait.

edit:
Il semblerait que certains ici comprennent mal ma réponse. Ou plutôt plutôt la question.
Cette question concerne la popularité. Et la raison pour laquelle C est finalement plus populaire que PASCAL, c’est que l’un a été conçu et commercialisé comme un langage portable proche du métal, tandis que l’autre a été conçu et commercialisé comme un langage éducatif, garantissant beaucoup de sécurité et de clarté.
En fin de compte, peu importe la situation, que l’une des langues échoue ou que des objectifs inattendus soient atteints. Et quiconque tente de déduire la différence de popularité de la supériorité de C sur PASCAL est tout simplement faux.
La clé de cette question réside dans l'histoire et l'hystérie impliquée.

back2dos
la source
2
Mais même l’entrée Wiki à laquelle vous vous connectez admet quemany major development efforts in the 1980s, such as for the Apple Lisa and Macintosh, heavily depended on Pascal (to the point where the C interface for the Macintosh operating system API had to deal in Pascal data types).
Konrad Morawski
@ Morawski: Malgré le fait qu'Apple ait peut-être déjà fait d'énormes efforts de développement et créé des produits largement en avance sur ses concurrents, leur part de marché était colossale. Ni Apple, ni PASCAL n'est mauvais (en fait, PASCAL était ma langue maternelle et je l'aime toujours). Mais les deux n'ont pas réussi à répondre aux besoins de la réalité de l'industrie.
back2dos
4
@ S.Lott Génial, il s'agit donc d'un assembleur portable PDP-11. Quelle est la pertinence maintenant? Pourquoi devrais-je me soucier de PDP-11 en 2011? C n’est en aucun cas un assembleur portable x86.
quant_dev
1
Et Lisp est un langage pour la recherche sur l'IA, et alors?
Mojuba
1
@mojuba: "le but initial d'une langue peut ne pas être pertinent" - c'est une chose avec laquelle je suis tout à fait d'accord. Mon point était que dans ce cas, il était pertinent . ;)
back2dos
5

Au cours des années 70 et au début des années 80, les compilateurs C étaient relativement faciles à obtenir pour les ordinateurs personnels, bien que la plupart d'entre eux n'utilisaient qu'un sous-ensemble de C (c'est pourquoi vous verrez autant de publicités de compilateurs "minuscules" dans les magazines plus anciens. ). Pascal était une langue plus large et plus lourde à l'époque où seuls les amateurs d'ordinateur les plus riches disposaient d'un disque dur (un disque dur de 5 méga coûtait plusieurs centaines de dollars). Pour Apple 2 (mon premier ordinateur, et ce n'était même pas un "plus"), pour exécuter Pascal, il fallait acheter une carte mémoire supplémentaire (il lui fallait 64k de RAM!) Et il fallait plusieurs disquettes pour se charger, tandis que "minuscule C" les compilateurs tiennent sur une seule disquette (et peuvent se débrouiller avec 16 ko de RAM).

Pascal enseignait dans les programmes d’informatique, tandis que C était essentiellement autodidacte (parfois enseigné dans les programmes de génie électrique). Pascal a acquis la réputation parmi les codeurs cow-boys d’être un «langage de servitude et de discipline», ce qui, à mon avis, n’était pas mérité car ils n’ont jamais rencontré ADA .

Les principaux moteurs de Pascal dans les années 80 étaient Apple (parce que les API utilisaient les normes d’appel Pascal) et Borland. Les compilateurs "Turbo" de Borland étaient probablement les meilleurs disponibles sur le marché, et la licence "comme un livre" les rendait beaucoup plus populaires que les entreprises avec des licences plus vicieuses.

Borland a perdu son avance sur le marché du développement lorsque Microsoft a embauché ses principaux développeurs et chefs de projet (tels que Hejlsberg, Gross et plus de 35 autres), pour développer par la suite .NET et Visual Studio. Borland et Microsoft ont réglé le procès quelques années plus tard, mais Borland ne s’est jamais remis de la perte. À mon avis, Delphi a commencé à dépérir à cette époque (alors que les personnes qui lui donnaient le focus et le lecteur étaient embauchés), et le changement de PDG en même temps a amené Borland à quitter la société de compilateur pour devenir une société ALM (gestion du cycle de vie des applications). , changeant leur nom pour Inprise quelques années plus tard. Les cendres de Borland appartiennent maintenant à Micro Focus.

Tangurena
la source
Micro Focus? Quand est-ce arrivé? Je pensais que cela appartenait à Embarcadero (qui que ce soit), depuis au moins quelques années. Si Delphi appartient à une entreprise qui est "célèbre" pour ses outils COBOL ...
Steve314
@ Steve314, la division "codegear" a été vendue à Embarcadero en 2008 et Micro Focus a acheté le reste de Borland en 2009. en.wikipedia.org/wiki/Borland#Later_Borland_years
Tangurena
1
OK, mais Borland a mis au point des compilateurs, des bibliothèques et des IDE (Delphi, les constructeurs) et développé quelques bla bla bla dont personne ne se souciait. Êtes-vous en train de me dire que quelqu'un se souciait suffisamment du bla bla bla pour l'incinérer?
Steve314
5

Holy Smokes, il s’agit d’une charge à sens unique, où sont tous ceux qui ont commencé sur ce site et qui avaient Delphi comme langue préférée?

Presque tout le monde mentionne Borland et les deux tiers des personnes interrogées considèrent que Delphi a été un grand coup. Désolé, Embarcadero a acheté l'unité CodeGear de Borland il y a quelques années (pour de l'argent, pas de la charité) et elle a fait des choses assez étonnantes, en fusionnant des outils assez étonnants dans leur IDE assez impressionnant et en créant une plate-forme vraiment incroyable. pour le développement multi-plateforme IN OBJECT PASCAL. Sans oublier Lazarus et FreePascal du côté open source.

Donc, si c’est une question historique pourquoi C l’a emporté sur Pascal, alors OK, c’est une revendication acceptable de poser une question. Cependant, le nombre de créateurs de code dans Object Pascal augmente, je ne sais pas si l’ indice TIOBE signifie beaucoup pour lui, mais il devrait être clair que les gens écrivent toujours du code dans Object Pascal et que les intérêts augmentent lorsque Embarcadero publie de nouveaux outils, Par conséquent, Delphi est intéressé par l’écriture de nouveaux codes (pas seulement par le maintien d’anciens codes).

Je ne suis pas sûr que vous puissiez en dire autant pour tout ce qui a trait à C.

Peter Turner
la source
3
Ça devrait être mort. Les seules personnes qui ont encore une raison de l'utiliser sont celles qui, comme moi, sont coincées à cause de nombreuses applications VCL existantes. L’intégralité de l’EDI Delphi / C ++ Builder est passée de l’état de la technique à un gâchis de bêtises au cours des cinq dernières années. Les fichiers d'aide et la documentation sont inexistants. Le débogueur est gênant. Si vous mettez l'EDI de côté, il n'y a vraiment aucune raison d'utiliser la version d'Object Pascal sur C ++, à moins que vous n'ayez besoin d'une compatibilité ascendante. Dans ce cas, le principal avantage du C ++ est qu'il vous permettra de porter votre code pour échapper à l'IDE de merde.
1
En ce qui concerne le langage C, il s’agit tout d’abord de la langue dominante dans l’ensemble du secteur de l’incorporation et tous les nouveaux outils qui y sont développés sont conçus pour le langage C. Windows et Linux sont tous des codes C. Tous les codes de téléphones intelligents sont écrits en couleurs C. C ou C ++ domine dans presque tous les domaines d’application où la programmation est utilisée. La norme C ++ fait l’objet d’une mise à jour majeure. Les nouveaux sous-ensembles sécurisés MISRA de C et C ++ ont du succès pour les applications intégrées, les anciennes devenant de facto les normes de l’industrie. Donc non ... il n'y a pas de pics d'intérêt, il y a un intérêt toujours élevé.
2
@Lundin, tu plaisantes, j'utilise Delphi 7 depuis 4 ans, enfin mis à jour en 2009 et également en XE2. Enfin, je n'ai pas besoin de redémarrer l'IDE toutes les 5 ou 6 versions pour conserver mes points d'arrêt. De plus, Embarcadero a créé un moyen d’utiliser Delphi Code pour les programmes Android et iOS, ce qui est nouveau, mais assez cool. L’avantage est qu’il est entièrement géré par une société privée, de sorte que les améliorations le rendent réellement entre les mains des développeurs. .
Peter Turner
1
Bien que je ne sois pas vraiment un programmeur PC, j'utilise Builder dans les deux sens depuis le milieu des années 90. Il s'améliorait progressivement jusqu'à ce que Codegear se transforme, puis un engin s'est apparemment cassé, car il est pire aujourd'hui qu'il ne l'était il y a 10 ans. Quoi qu'il en soit, cela est hors sujet, car Delphi / Builder a commencé à disparaître bien avant le fiasco Codegear / Embarcadero.
1

Mon point de vue est que C et les principaux langages qui en dérivent, C ++, Java et C #, ont été adoptés par les plus grands éditeurs de logiciels, tels que Microsoft et Sun / Oracle, et à travers les différentes piles de développement. En conséquence, il est devenu la «langue maternelle» de Windows, Apple OS et Unix.

Pascal, malgré les efforts optimaux et souvent peu judicieux de Borland, n'a pas atteint ce niveau de pénétration du marché.

jfrankcarr
la source
3
Cela semble poser la question: pourquoi C a-t-il pris le relais dans les plus grandes entreprises? MacOS a commencé avec Pascal et est devenu plus favorable au C. Quelle était la raison de cela?
David Thornley
1
@DavidThornley - Je pense que le recrutement de programmeurs expérimentés de haut niveau était en grande partie essentiel. C, mélangé avec assemblage, était la langue de choix pour les applications grand public à partir du milieu des années 1980. En adoptant une base C, il a été beaucoup plus facile et moins coûteux d’embaucher des programmeurs qualifiés (pas de recyclage, etc.).
Jfrankcarr
3
Mais vous venez de repousser la question d'une couche. Pourquoi les programmeurs les plus expérimentés ont-ils changé? Pourquoi C était la langue de choix? Knuth a fait ses premiers pas en programmation alphabète en Pascal, puis est passé en C. Pourquoi? Il peut être utile de savoir exactement qui a dirigé le basculement, mais la question demande des raisons.
David Thornley
Dans les années 80, je travaillais dans deux sociétés de logiciels, non pas comme programmeur, mais comme support. D'après mes souvenirs, je soupçonne que la transition de MASM à C était plus facile pour ceux qui sont déjà profondément impliqués dans la programmation MASM. Je me souviens d'une répugnance pour le Turbo Pascal, que les programmeurs avec qui je travaillais a appelé un langage de jouet, et vous ne vouliez pas les lancer avec QuickBasic. J'ai appris le MASM et le C d'abord à cause de la pression de mes pairs. Cela pourrait aussi être un facteur, bien que cela n’arrive pas à sa genèse.
Jfrankcarr
À la fin des années 80 et au début des années 90, C était déjà très populaire. Vous pouvez trouver un compilateur en tant que module standard dans toute implémentation UNIX (et UNIX était LE système d'exploitation sur lequel la plupart des programmeurs souhaitaient travailler). Je ne dis pas que c'était plus populaire que Pascal, mais c'était très populaire. Donc, C ++, Java et C # sont populaires parce que C était, et non l'inverse.
Giorgio
0

Pascal n'est devenu populaire que dans un environnement PC / DOS plutôt limité.

Même à cette époque, autant d’applications MicroFocus COBOL fonctionnant sur des PC que d’applications Pascal.

C était la base du système d'exploitation UNIX et de tous les systèmes d'exploitation MS / Windows.

La combinaison d'une exécution efficace sur un matériel limité et d'un accès natif au système d'exploitation sous-jacent et aux bibliothèques d'interface graphique était probablement la principale raison du succès de C. Pascal ne l'a jamais vraiment piraté sous Windows, et Delphi est arrivé trop tard pour faire la différence.

James Anderson
la source
Je pense que votre commentaire ".. et tous les systèmes d'exploitation MS / Windows" est peut-être incorrect. Windows a été initialement conçu et codé en PASCAL. De fr.wikipedia.org/wiki/Talk:X86_calling_conventions : "Je pensais juste que je pouvais peser ici. J'ai cherché le mot clé __pascal dans le Guide de l'utilisateur Watcom C / C ++, et il est clair que: La convention d'appel __pascal a été utilisée pour OS / 2 1.x et API Microsoft Windows 3.x "
John R. Strohm Le
@ JohnR.Strohm Les conventions d'appel et les langages de mise en œuvre ne sont pas nécessairement identiques. Microsoft utilisait probablement le C depuis quelque temps déjà en 1993 (Windows 3.1 est sorti en 1992). Source d'un genre
un CVn
Au début des années 80, l’IIRC a beaucoup utilisé Xenix en interne et a probablement commencé à utiliser le C de cette manière. Et, après tout, (Turbo) Pascal était le produit phare d’un dangereux concurrent, Borland. À l'époque, la différence de taille entre Microsoft et d'autres grands éditeurs de logiciels tels que Lotus, Borland ... n'était pas encore énorme.
Wazoox