Des dauphins et du design

Rodhocetus kasrani, un ancêtre des cétacés actuels en train de nager sous l'eau.
ⓒ Arthur Weasley Creative Commons

Les dauphins, c’est quand même des bestioles bizarres : une créature dont la structure interne est adaptée à la vie terrestre, qui s’est ré-adapté à la vie marine, si un dieu designer existe réellement, il ne sait pas ce qu’il se veut. Je trouve ce genre d’adaptations intéressantes, car elles montrent qu’il y a une grosse différence entre les raisons initiales d’une caractéristiques, d’une feature et la manière dont elles sont exploitées. Les poumons c’est absolument nécessaire pour vivre en dehors de l’eau, mais vu la rareté relative de l’oxygène dissout dans l’eau, être capable de l’extraire de l’air à la surface n’est pas une mauvaise stratégie.

En informatique, toutes les discussions sur le génie logiciel, le design, cherchent à appliquer les techniques issues des autres branches de l’ingénierie : on prend le cahier des charges, on conçoit quelque chose de logique qui rempli ce cahier, et tout va bien. Sauf que : l’informatique est dans une phase qui ressemble plus à l’explosion cambrienne qu’à la conception d’un pont. Au centre d’un iPhone se trouve un système d’exploitation datant des années 80, basé sur un système datant de la décennie précédente, et destiné à une catégorie d’ordinateurs aujourd’hui disparue (les stations de travail). Toutes les hypothèses sur lesquelles ce système a été conçu ont changé, mais comme les mammifères en milieu marin il ne se débrouille pas trop mal.

7 thoughts on “Des dauphins et du design”

  1. J’avouerais que mes connaissances en théologie ne sont pas fulgurantes, mais je suis assez sûr que la présence d’un client chiant descend en flammes l’idée d’omnipotence.

  2. Le commentaire d’Alias est peut-être La Révélation Ultime, car elle force à se poser la question du Pour Quoi et du Pour Qui de l’Univers.

    Tu pourrais parler aussi des nageoires, anciens balanciers chez les coelocanthes, devenus papattes, redevenues nageoires chez les cétacés, un bel exemple de sous-programme qui a juste besoin des bons paramètres. Faudra chercher un parallèle avec la programmation objet.

    Pour l’Explosion Cambrienne je suis un peu d’accord : beaucoup de choses qui partent dans tous les sens, beaucoup de déchet, on verra ce qui arrivera. Ce sont les extinctions massives qui me font peur. Quoique nous avons déjà connu celles des années 80 (adieu ordis 8 bits), des années 90 (exit Amiga & Atari), des années 2000 (adieu stations de travail proprio). Apparemment les batraciens sauce x86 semblent l’emporter (même si les microorganismes omniprésents mais invisibles utilises plein d’autres choses). En fait, avec Windows on est déjà en plein dans les dinosaures (groupe dominant, beaucoup de niches écologiques remplies). Je vois bien les Mac en oiseaux (ex-reptiles devenus petites créatures à sang chaud) et les Android en mammifères prêts à bouffer toutes les niches écologiques. Ne manque plus que le Grand Météore pour éradiquer les PC fixes, et il n’y aura plus qu’à attendre l’apparition de l’équivalent de l’humanité, que je vais m’empresser de rapprocher de la Singularité. Ou de Skynet.

    Ce sera plus rigolo que la sempiternelle analogie entre ordinateur et voiture mais ça tombera à plat chez les incultes sans notion de paléontologie.

  3. La situation est très chaotique car l’hybridation est plus présente que dans l’évolution, des gènes (technologies) sautent sans cesse d’une plateforme à l’autre.

    Les PC sous Windows, c’est un un noyau basé sur l’architecture de VMS sur des processeurs 8086 avec un runtime qui est une mutation d’un système graphique écrit en Pascal. Un téléphone sous Android c’est un noyau Linux, avec un runtime qui est une mutation de Java et un processeur ARM. Mac OS X, c’est un noyau Mach, soudé avec un noyau BSD, avec des bouts de Taligent dedans, avec un runtime hybride Mac OS classique et Next, des technologies Linux phagocitées (CUPS notamment) et des technologies de téléphone mobiles back-portées, sans oublier quelques routines qui datent du Newton.

    Dans le rôle des Trilobites, les consoles de jeu avec leur grande variété de noyaux (dont un windows nt) et de processeurs PowerPC (qui descendent des Mainframes).

  4. A few corrections if I may.

    Windows NT is a kernel based on many concepts used in VMS (but, then again, to a large extent, so is OS/2 and AmigaOS, for both their primary authors had extensive VMS experience), but the original Windows was architected essentially from first principles based on a flawed understanding of object oriented run-time dispatch. What we think of as “Windows” today is really Win32 or Win64 sitting on top of the NT kernel. With relatively few exceptions, most of the problems people experience with the Windows environment today lie in the Win32/Win64 layer. The NT kernel is, and this is coming from a die-hard Windows-hater, solid as a rock in my experience with it.

    Also, NT eschews the 8086 memory model outright. It was designed with 80386’s support for flat addressing from the get-go. The _sole_ use of segmentation in the NT environment is for the FS register to serve as a base pointer to structured exception handling data structures. That’s it, and that’s only because Microsoft ran out of general purpose registers.

    Concerning GDI, when was it written in Pascal, and what was it called then? I grew up with the PC industry at the time, and I can’t remember a graphics system written in Pascal other than MacOS. (PC/GEOS was written in object-oriented assembly language, GEM was written in a hodge-podge of PL/M and C, and most other graphical DOS-extenders were written in assembly just to keep the size down.) What I do remember, though, and this is more likely the cause for Pascal calling conventions in Windows, was that a time once existed when using ENTER was both much faster and much smaller than the explicit PUSH BP; MOV BP,SP; SUB SP sequence, and using RET imm8 was much faster than MOV SP,BP; RET combinations. This pretty much proved true up until the 80486 came out. Designed in the 70s, when Pascal was more widely available than C thanks to the UCSD P-system, these instructions were optimized for Pascal, not for C. Further considering 8086’s limited memory constraints, I think it follows that Windows 1.0 and 2.0’s use of __PASCAL conventions were a sound engineering decision of the time.

    With Windows 8, I believe MS drops official support for the GDI API, and will endorse COM for invoking system-level services (what they should have done starting in the year 2000, but better late than never). COM is basically C under the hood. This is a good thing, because it’s significantly faster to invoke a COM interface than it is to invoke a Pascal-convention procedure now-a-days, and not only that, but it gives MS a chance to clean up all their APIs.

  5. @Thias : Tu ne crois pas si bien dire. En fait, il semblerait que l’hybridation entre espèces biologiques soit généralisée.

    Ça se savait depuis longtemps entre les microbes (transfert horizontal de gènes de résistance aux antibiotiques notamment), mais je ne sais plus quel article s’extasiait sur la capacité de nombre de virus à injecter leur génome dans le nôtre. Notre évolution serait nettement plus compliquée que le jeu des mutations & dérives génétiques avec le tamis de la sélection.

    J’allais dire « rien certes de comparable à l’Android qui héberge un Java » mais après tout, nos mitochondries seraient un parasite qui serait devenu un symbiote, dont nous récupérerions lentement tous les gènes (merci Wikipédia). Et à propos de symbiote : tu possèdes plus de cellules dans ta flore intestinale (et accessoirement sur ta peau) que dans ton corps stricto censu, et ces microbes se transmettent là aussi en partie horizontalement. On pourrait tenter un parallèle avec noyau & distribution, mais ça deviendrait hasardeux. Ou peut-être plus avec les OS modernes que tu cites, qui sont effectivement des patchworks de composants d’origine différentes.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: