bonjour à toutes, à tous
j'hésite encore à publier ces quelques lignes sur soit un journal (pédagogie) ou sur le forum (aide et support), donc je reste dans l'indécision, mais bref.
en cette douce soirée etoilée, avec des pensées qui viennent à flot entre courants et marées un peu comme le vendée globe, je m'interrogeais, par rapport notamment à la succession de deux décès de pontes du monde de l'informatique, que sont Mrs Jobs et Ritchie, en cette mouvementée année 2011, il y a donc une longue décennie de cela.
La grande réflexion qui s'est posée est donc :
si dennis ritchie et ken' thompson n'avaient pas inventé le C (ni même le B?), à mon sens et ma petite "connaissance" de l'histoire de l'informatique, seul le langage assembleur (utilisé dans os/2warp je crois, en plus des bios) semblerait donc avoir la place.
l'interrogation est donc :
sans le C, point de C++ j'imagine, mais quid des autres langages, comme les anciens fortan, cobol, delphi, perl etc, ou les plus "modernes", aka java, html, js, python et autres .net ?
est ce que le C est à la source de création de tous les autres langages, ou sont ils partis d'une arborescence distincte systématiquement?
j'imagine que comme windows, mac, linux et autres bsd sont écrits en C avec du C++ pour les interfaces graphiques, si le C n'avait pas existé.. où en serions nous?
est ce que l'heure de nos appareils électroménagers pourraient tout de meme s'afficher?
est ce qu'il existait des "logiciels" écrits avant les années 80, dans les premiers appareils électroniques?
j'avais lu qu'ibm avait basé son os2 sur l'assembleur : est ce le seul os (et langage) à se dispenser du C?
je vous remercie de vos réponses :)
# history
Posté par jemore . Évalué à 3.
Salut.
Je te laisse chercher dans ton moteur de recherche préféré une "programming language history map"
https://www.researchgate.net/profile/Ali-Mili-2/publication/3248243/figure/fig1/AS:339190895136774@1457880819623/A-brief-history-of-high-level-programming-languages-from-1956-to-2004.png
Heureusement le Pascal, Ada auraient existés permettant la création de systèmes d'exploitation.
# 2G
Posté par vmagnin (site web personnel) . Évalué à 4.
Voir :
- https://commons.wikimedia.org/wiki/File:Algol%26Fortran_family-by-Borkowski.svg?uselang=fr
- https://fr.wikipedia.org/wiki/C_(langage)
Le C est plutôt un langage de deuxième génération, si on appelle première génération les FORTRAN, COBOL, Lisp… Mais son intimité avec le fonctionnement de la machine en fait un super assembleur générant un code ultra-rapide et les compilateurs des autres langages (y compris ceux de première génération) sont donc actuellement écrits la plupart du temps en C ou C++. Par exemple le compilateur GFortran est essentiellement écrit en C.
Quant aux appareils électroniques des années 70, ils devaient contenir des circuits intégrés. Les microprocesseurs (circuits programmables) ont été inventés au début des années 70 et coûtaient trop cher pour mettre dans un réveil, à mon avis.
[^] # Re: 2G
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 3. Dernière modification le 30 novembre 2022 à 20:33.
Héhé, en lisant la question initiale, j'ai pensé à : ForTran, CoBOL, LisP et à AlgoL :) me demande où classer Forth.
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: 2G
Posté par vmagnin (site web personnel) . Évalué à 3.
Voir : https://www.forth.com/resources/forth-programming-language/
Apparemment, on pourrait aussi le compter comme langage évolué de première génération, étant donné que son auteur a commencé à travailler à son propre interpréteur dès la fin des années 50, jusqu'à ce que ça devienne Forth. Ce qui explique sa syntaxe particulière, apparemment peu influencée par d'autres langages.
J'ai gardé le livre "Programmer en Forth" (éditions du P.S.I.) de mon père, qui affectionnait ce langage :
https://casio.ledudu.com/images/pockets/docs/psi/zoom/ProgrammerenFORTH.jpg
Personnellement je n'y ai jamais vraiment touché, probablement perturbé à l'époque par la notation polonaise inverse… Faut dire qu'il avait une calculatrice HP avant de passer au CASIO FX-702P programmable en BASIC (1 ko de RAM).
[^] # Re: 2G
Posté par PR . Évalué à -1.
Non non. Le Fortran était réputé plus rapide que le C, le Cobol en toute vraisemblance doit être plus performant. Quant au Lisp j’ai cru comprendre que certaines machines manœuvraient nativement les opérations primitives sur des listes…
Le C n’était pas un langage performant, même si ses concepteurs ont réussi à faire croire le contraire.
Ce sont les améliorations des compilateurs qui l’ont rendu rapide (le C est bien plus complexe que les premiers langages). Et si autant d’efforts se sont concentrés sur le C, c’est plutôt le fait de son universalité : à la fois langage de haut niveau et qui autorise un accès bas niveau. La loi de Moore a fait le reste.
Mort aux cons !
[^] # Re: 2G
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 1.
Le FORTRAN n'était pas plus rapide… En fait c'était même très lent au début ! Mais diverses équipes se sont attaquées à son optimisation pour que le langage puisse être largement adopté (sinon on préférait l'assembleur) et ne pas subir le sort de PL/I. La première version normalisée (fruit d'une certaine maturation) était souvent aussi rapide mais pas plus rapide que le C.
Pour LISP, tu fais certainement allusion aux LispMachines ? Dans le principe, leur shell est une variante et extension du langage (comme les DOS qui étendaient le BASIC des ordinateurs familiaux d'une certaine époque.) Après, le langage LISP par lui-même a la notion de listes en son cœur comme d'autres manipulent des chaines de caractères ; c'est d'ailleurs dans son nom !
Les concepteurs du C n'ont réussi à faire croire rien ! Ils ont amené un concept qui aurait pu rester interne à AT&T mais a fait ses preuves largement. C'est une méconnaissance qui fait dire que « le C est bien plus complexe que les premiers langages » alors que justement ce langage était bien pauvre par rapport à ce qui était possible et envisageable à l'époque mais que le choix a été fait de ne retenir que des choses simples et communes. D'ailleurs, qu'est-ce qui fait son universalité si ce n'est pas la facilité à avoir un compilateur C sur n'importe quelle architecture ? Ce que tu qualifie de « à la fois langage de haut niveau et qui autorise un accès bas niveau » devrait te faire tilter que c'est juste un langage assembleur et donc avec une rapidité pratiquement native. Les efforts qui se sont concentré dessus ont été pour éliminer ce côté trop proche de la machine (avant la normalisation, trop de types se calaient sur l'architecture cible), même si on a encore pas mal de comportements implementation defined
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: 2G
Posté par PR . Évalué à -2.
Je renvoie à The Art of UNIX Programming, mais aussi ma propre expérience des langages suscités (Fortran pendant 3 ans, C durant 20 ans à titre perso, Cobol durant 6 ans).
Aussi de Wikipedia :
Le langage C présente la particularité d'être à la fois un langage de haut niveau et de bas-niveau. Cependant cette notion a tendance à évoluer dans le temps; le langage C qui était généralement considéré comme de haut niveau s'est vu progressivement rapprocher du bas niveau.
Wikipedia qui cite Approches impérative et fonctionnelle de l'algorithmique: Applications en C et Algorithmique Techniques fondamentales de programmation.
Vous ne savez pas faire la différence entre les qualités techniques intrinsèques et l’usage, la réputation, d’un outil technique, qui est le fait d’une évolution en dernier instance gouvernée par l’économique (ici concentration des moyens autour d’un langage généraliste), qui se décline sous forme de rapports de force sociologiques, politiques, etc.
Bref les travers habituels de linuxfr, dès qu’on sort du technique pur, et encore sans vision historique… on est complètement à la ramasse.
Mort aux cons !
[^] # Re: 2G
Posté par PR . Évalué à 1. Dernière modification le 01 décembre 2022 à 12:30.
Le C introduit le paradigme fonctionnel au sein du langage informatique, en mixant avec la programmation impérative ; il introduit la notion de portée de variables (en assembleur, la notion de variable n’existe même pas : tu manipules des registres ou des zones mémoire) ; il dispose d’instructions de contrôle qui n’existent tout simplement pas en assembleur, etc.
Typiquement, même le Cobol (celui que je pratique là encore en 2022) ne dispose que d’une pile d’appel (le
perform [thru]
) sans pile des variables (donc pas d’isolation).C’est un niveau d’abstraction supplémentaire que ne permet pas l’assembleur, où il faut soi-même gérer sa pile d’appel, ou rester dans de l’impératif pur (ce qui nécessite de toutes autres méthodologies de programmation).
Mort aux cons !
[^] # Re: 2G
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 2.
Ici trois ans de fortran, quelques mois de cobol et plus de dix ans de C, mais aussi divers asm pendant cinq ou six ans …où je gérais déjà ma pile d'appel avant de découvrir le C. De nombreux langages d'assembleur permettent de définir des constantes et des variables (plus exactement de nommer des zones mémoire afin de travailler confortablement mais ne gère pas vraiment de typage ok) Les instructions de contrôle qui n'existeraient pas sont de bêtes comparaison-et-saut ; et au début (i.e. avec des compilos C basiques sans intelligence/optimisations) je pouvais constater que le résultat généré était bien la traduction directe en assembleur.
Faut croire que malgré une longue pratique on peut ne pas cerner certains rouages.
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: 2G
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 1.
C'est marrant la prétendue vision historique qui invente un complot : les gars se sont dit on va inventer un langage et on va faire croire qu'il est le plus performant…
Au point de vouloir occulter la réalité historique simple. Le besoin était d'avoir un méta-assembleur assez générique sinon on écrivait un programme pour i286 ensuite fallait reprendre tout le boulot pour m68k puis pour z80 etc. Donc on fait un langage facile à porter mais on en profite pour utiliser les éléments de syntaxe modernes existant (à la algol) Le besoin n'était pas couvert et ils l'ont fait. (et j'ai lu un des mémos qui mentionnait les essais de fortran qui n'ont pas été concluant, notamment la difficulté à porter le compilateur là où il n'existait pas encore sans parler des problèmes de perf qui n'étaient pas encore résolus à l'époque.) Bref, rien à voir avec le message simpliste d'une personne pas à la ramasse.
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: 2G
Posté par PR . Évalué à -1.
Sourcée. Elle.
Mort aux cons !
[^] # Re: 2G
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 3.
Je ne lis ni n'interprète dans Wikipédia et les liens pointés tes deux affirmations : « Le C n’était pas un langage performant, même si ses concepteurs ont réussi à faire croire le contraire. » La performance peut être discuté, en sachant que c'est relatif ; mais les concepteurs occupés à faire croire est une contre-vérité et un mensonge voire une vile calomnie. Ça ce n'est sourcé nulle part.
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: 2G
Posté par PR . Évalué à 2.
Normal, c’est l’autre source, d’Éric Raymond
Aller, maintenant je te laisse déblatérer tout seul dans ton coin.
Mort aux cons !
[^] # Re: 2G
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 2.
Je l'avais lu et ça va dans le sens de ce que je disais : ils ont envisagé/regardé les choses qui existaient à l'époque et comment ça pouvait répondre ou pas à leur besoin.
Mais je ne lis toujours pas qu'ils tentent de faire croire quoi que ce soit.
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: 2G
Posté par vmagnin (site web personnel) . Évalué à 4.
Un des enjeux de l'équipe de Backus sur la période initiale (1954-1957) était en effet d'écrire un compilateur qui dans quasiment toutes les situations génère un code machine presque aussi rapide que s'il avait été écrit par un humain (alors que beaucoup de programmeurs de l'époque pensaient que c'était impossible). Ils savaient que sinon FORTRAN serait rejeté. Dès le début, le premier compilateur FORTRAN a donc été conçu comme un compilateur optimiseur.
# Python
Posté par alberic89 🐧 . Évalué à 2.
En tout cas, Python n'aurais pas vu le jour sans C, sous interpréteur principal et nombre de ses modules sont codés avec ce langage.
L'informatique n'est pas une science exacte, on n'est jamais à l'abri d'un succès
[^] # Re: Python
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 4.
Mais si, mais si, c'aurait été dans un autre langage ou en assembleur…
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
# Forth ( ancetre de Java)
Posté par totof2000 . Évalué à 5. Dernière modification le 30 novembre 2022 à 10:49.
https://fr.m.wikipedia.org/wiki/Forth_(langage)
Jle cite :
https://www.forth.com/resources/forth-apps/
J'adore ce langage.
[^] # Re: Forth ( ancetre de Java)
Posté par totof2000 . Évalué à 3.
J'ai oublie ce lien : https://www.forth.com/resources/forth-programming-language/
[^] # Re: Forth ( ancetre de Java)
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 2.
une personne qui a du goût <3
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
# plusieurs
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 3.
Bien sûr que non… Que fais-tu de tous les systèmes d'exploitation qui ont été écrits avant la naissance du C ?
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: plusieurs
Posté par nico4nicolas . Évalué à 3.
Et même après !
[^] # Re: plusieurs
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 2.
Après, il y a eu des OS en : Pascal, Ada, Java, etc. Bientôt Rust (je le dis pour nous épargner le commentaire zélote)
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
[^] # Re: plusieurs
Posté par tkr . Évalué à 1.
lesquels?
[^] # Re: plusieurs
Posté par claudex . Évalué à 3.
Pour Rust, il y a Redox
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: plusieurs
Posté par Gil Cot ✔ (site web personnel, Mastodon) . Évalué à 2.
“It is seldom that liberty of any kind is lost all at once.” ― David Hume
# Pas trop d'accord avec ce raisonnement
Posté par gUI (Mastodon) . Évalué à 6. Dernière modification le 01 décembre 2022 à 14:32.
De manière générale, je n'aime pas trop le sous-entendu qui consiste à dire "si machin n'avait pas inventé tel truc, alors personne derrière n'aurait jamais fait quoi que ce soit".
Si R&K n'avaient pas inventé le C, qqu'un d'autre aurait inventé un autre langage dans le même style et pour faire la même chose, parce que ça manquait c'était un besoin. Certes la syntaxe aurait été différente, mais le concept (sorte de super assembleur portable) aurait été le même.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Pas trop d'accord avec ce raisonnement
Posté par tkr . Évalué à 1.
les questions qui en découlent pourraient etre :
quid des interfaces graphiques si jobs&gates n'avaient pas piqué l'interface X du xerox park? linux, bsd et autres unix auraient fait comment? tout aurait toujours été en ligne de commande aujourd'hui?
quid des appareils électroménagers, qui j'imagine aujourd'hui ont bien un logiciel (d'ailleurs pas que les appareils électroménagers) sans que l'on voit s'il s'agit d'un os "standard" derrière ou d'un logiciel spécialisés/conçu uniquement pour tel appareil.. mais dans quel langage? est ce que le c, fortan cobol et autres lisp pourraient fonctionner sur un micro-ondes, une chaudière voire un portail électrique, où est ce des logiciels écrits sur mesure en assembleur ou autre chose?
l'idée étant de comprendre, pour les ordinateurs, sans le C ni la gestion des fenetres, ce qu'il en serait, et pour l'électroménager, qu'est ce qui fait tourner ces appareils?
encore merci!!!
(bien que cela semble aussi source de conflits :o)
[^] # Re: Pas trop d'accord avec ce raisonnement
Posté par tkr . Évalué à 1.
en fait je rajoute malheureusement que je suis pas vraiment d'accord avec ton terme "parce que cela répond à un besoin"
je pense que pour les entreprise, les machines à calculer et autres ordinateurs pour terminaux, étaient oui un besoin pour l'époque (et évolué aujrud'hui)
mais j'ai du mal à concevoir dans quelle manière bouger des fenetres avec un pointeur aurait été un besoin de l'époque alors que ce système était terré dans les laboratoires xerox, et ne semblait ni manquer, ni prédestiné à l'informatique mondiale qu'elle est aujourd'hui.
internet non plus d'ailleurs, et je pense que cela aurait laissé pousser le minitel (jusqu'à ce qu'il soit remplacé).. au meme titre que les tels tactiles, sans vouloir faire mon pro apple, les tactiles du début des années 2000 existaient déjà avec stylet, ce qui leur conféraient pas une attraction commerciale ni une ergonomie bien vendable.
mais pour le langage C, s'il n'avait pas existé, cela aurait été tout aussi intéressant de savoir comment l'humanité et les professionnels du métier, au meme titre que les fenetres/icones/pointeurs de chez xerox, si cette meme humanité se serait dépétrée pour inventer.. en allant dans quelle direction?
par ex, les bureaux sous linux, compiz fusion d'il y a dix ans, que je trouvais révolutionnaires.. ont presque disparu aujourd'hui (enfin sous openbsd/xfce, linux mint, et d'autres distros, j'ai jamais revu ce cube de bureaux..)
# OS à se dispenser du C
Posté par steph1978 . Évalué à 3.
un OS en Rust : https://www.redox-os.org/
un OS (noyau) en Nim : https://github.com/dom96/nimkernel
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.