Forum Linux.général sans le C, quel logiciel conséquent/répandu aurait existé?

Posté par  (Mastodon) . Licence CC By‑SA.
Étiquettes : aucune
2
30
nov.
2022

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  . É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  (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  (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  (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  . É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  (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  . Évalué à -2.

          Les concepteurs du C n'ont réussi à faire croire rien !

          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.

          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  . É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  (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  (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  . Évalué à -1.

              C'est marrant la prétendue vision historique qui invente un complot

              Sourcée. Elle.

              Mort aux cons !

              • [^] # Re: 2G

                Posté par  (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  . Évalué à 2.

                  Normal, c’est l’autre source, d’Éric Raymond

                  The tradition of being careful about modularity and of paying close attention to issues like orthogonality and compactness are still much deeper in the bone among Unix programmers than elsewhere.
                   

                  Early Unix programmers became good at modularity because they had to be. An OS is one of the most complicated pieces of code around. If it is not well structured, it will fall apart. There were a couple of early failures at building Unix that were scrapped. One can blame the early (structureless) C for this, but basically it was because the OS was too complicated to write. We needed both refinements in tools (like C structures) and good practice in using them (like Rob Pike's rules for programming) before we could tame that complexity.
                   
                  -- Ken Thompson  

                  Early Unix hackers struggled with this in many ways. In the languages of 1970 function calls were expensive, either because call semantics were complicated (PL/1. Algol) or because the compiler was optimizing for other things like fast inner loops at the expense of call time. Thus, code tended to be written in big lumps. Ken and several of the other early Unix developers knew modularity was a good idea, but they remembered PL/1 and were reluctant to write small functions lest performance go to hell.
                   

                  Dennis Ritchie encouraged modularity by telling all and sundry that function calls were really, really cheap in C. Everybody started writing small functions and modularizing. Years later we found out that function calls were still expensive on the PDP-11, and VAX code was often spending 50% of its time in the CALLS instruction. Dennis had lied to us! But it was too late; we were all hooked…
                   
                  -- Steve Johnson  

                  Aller, maintenant je te laisse déblatérer tout seul dans ton coin.

                  Mort aux cons !

                  • [^] # Re: 2G

                    Posté par  (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  (site web personnel) . Évalué à 4.

          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.

          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  . É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.

    Il y a 10 sortes de gens dans le monde – ceux qui comprennent le ternaire, ceux qui ne le comprennent pas et ceux qui le confondent avec le binaire.

    • [^] # Re: Python

      Posté par  (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  . Évalué à 5. Dernière modification le 30 novembre 2022 à 10:49.

    est ce qu'il existait des "logiciels" écrits avant les années 80, dans les premiers appareils électroniques?

    https://fr.m.wikipedia.org/wiki/Forth_(langage)

    Jle cite :

    1971 voit la première application d'envergure : Moore utilise Forth pour développer le logiciel de pilotage du radiotélescope de Kitt Peak (Arizona) sur deux mini-ordinateurs 16-bits. Il y est bientôt rejoint par Elizabeth Rather, qui devient le deuxième programmeur Forth. Par ses performances et sa souplesse d'emploi, l'application intéresse rapidement d'autres observatoires, et en 1976, Forth est adopté comme standard par l'Union internationale d'astronomie.

    Après une première modernisation du logiciel de Kitt Peak en 1973, Moore et Rather fondent Forth, Inc., pour promouvoir le langage et ses applications. En 1976, une première version exécutable sur microprocesseurs 8-bits est disponible sous le nom de MicroFORTH.

    https://www.forth.com/resources/forth-apps/

    J'adore ce langage.

  • # plusieurs

    Posté par  (site web personnel, Mastodon) . Évalué à 3.

    j'avais lu qu'ibm avait basé son os2 sur l'assembleur : est ce le seul os (et langage) à se dispenser du C?

    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

  • # Pas trop d'accord avec ce raisonnement

    Posté par  (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  (Mastodon) . É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  (Mastodon) . É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  . É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.