Demat'iNal,
J'ai été frappé (ouille) par cet exposé au FOSDEM 2019.
Le sujet sous-jacent était « comment arriver à un compilateur C » à partir de… source. Et il est vrai que jamais je ne m'étais posé la question sous cet angle : arriver à faire qu'un compilateur pour un langage X soit écrit dans ce même langage X suppose… que l'on ait déjà un compilateur pour X. Ce problème se gérant soit par la disponibilité d'un autre compilateur, soit d'une version antérieure du même compilateur.
Prenons un exemple : la première ligne de code de GCC-9 n'a pas pu être compilée avec gcc-9 (vu que celui-ci n'existait pas encore), mais avec une version antérieure, disons GCC-8, qui lui même a été pour la première fois compilé par GCC-7 etc (ignorons les versions mineurs pour la simplicité de l'exemple).
Mais qu'y avait il au… tout début ? Serions nous capable de reconstruire GCC-9 (dont une partie est écrite en C++) sans GCC ?
Une chaîne possible serait de passer par GCC-4.7, dernier GCC à être écrit purement en C, mais supportant le C++. Et on peut compiler GCC-4.7 à partir d'un autre compilateur, a priori plus simple, TCC. Mais encore faut-il être capable de compiler TCC, ce qui reste plus simple que de compiler GCC.
Ce dépôt montre un chemin possible pour bootstrapper à partir de rien. Et c'est fascinant ! On commence par un petit bout de binaire écit à la main (il faut bien !) pour aller vers un langage de macro simplissime, puis un assembleur simpliste et enfin un assembleur correct, une mini-VM etc.
Il y a pleins d'approches intéressantes du problème, ce journal vous enjoind à jouer avec l'idée ! Quelques liens sympatoches :
- les slides présentés au FOSDEM
- un wiki sur le sujet. L'allégorie des dominos fonctionne très bien je trouve !
- une justification au délire, qui dit en gros que si on compromet le compilo, on compromet tout ce qu'il produit (c'est la Ken Thompson Attack)
- bootstraping a simple compiler from nothing
J'ai un peu honte de ne découvrir ça que maintenant, ça a l'air d'être un sujet bien étudié et avec pas mal de littérature, certainement plus probante que les quelques liens du dessus…
# J'ai exactement ce problème avec mon langage
Posté par Dr BG . Évalué à 10.
Mon langage s'appelle de C-Cool, il suffit de décrire grossièrement le programme que tu veux obtenir en langage naturel. Par exemple, le code du compilateur est écrit en C-Cool et est le suivant : « Fais un compilateur pour un langage dont il me suffirait de décrire grossièrement le programme que je veux en langage naturel ».
Reste juste le problème de bootstrap.
# coquille
Posté par David Marec . Évalué à 7.
Il s'agit de « The Ken Thompson Hack »: Hack et non
Attack.[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -8.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: coquille
Posté par ZeroHeure . Évalué à 8.
Je ne sais pas si c'est de l'humour, mais tu as une sacré propension à justifier n'importe quoi en produisant une floppée de détails tout à fait inutiles (si c'est de l'humour, je m'excuse).
Sinon je crois que ça fait référence (involontairement ?) à la Karger-Thompson Attack.
"La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -10. Dernière modification le 05 février 2019 à 06:03.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -10.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -10.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: coquille
Posté par gUI (Mastodon) . Évalué à 10.
Pitié oui, s'il-te-plait.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -10.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: coquille
Posté par Kerro . Évalué à 10.
Ta confiture semble faite avec beaucoup d'attention et de bonne volonté, mais elle est immangeable.
Pourtant sur ce site beaucoup sont dotés d'un solide appétit d'informations, de points de vues, etc, le tout avec un estomac entraîné à absorber des choses pas évidentes.
Tes textes sont bardés de trucs dont on ne comprend pas l'utilité, ils sont longs pour expliquer un truc qui se fait en 5 phrases, et tu en rajoutes dans un message supplémentaire, puis encore un message, et encore un autre.
Ça fait de centaines de lignes pour expliquer un truc basique --> tu as un soucis de vision, d'expression, de synthèse, de je ne sais quoi, mais c'est un GROS soucis.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -10.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: coquille
Posté par ZeroHeure . Évalué à 6.
Les critiques de ton commentaires sont très bien notées. Tes commentaires plongent dans les abîmes des notes. Et tu continues de réfuter toutes les critiques. Jamais de remise en cause, c'est décourageant.
En plus tu prétend nous expliquer pourquoi nous te notons mal, alors qu'on te lit depuis des années, qu'on est parfaitement au courant de ton histoire…
Quant au fond, ta abordes souvent des sujets techniques, que tu semble peu connaître. Tu ne te rends pas bien compte que tu as affaire à des professionnels en activité. Car nos métiers de programmeur, d'administrateur système, d'ingénieur réseau, etc. ça se pratique, lire des docs ne suffit pas.
Tu as déjà vu les commentaires de Zenitram ? il sont abondant, comme les tiens. Zenitram est spécialiste dans un domaine. Il parle rarement technique en dehors.
Enfin, les qq notes positives s'expliquent facilement : sur la quantité invraisemblable de tes messages, il y en a qui sont intéressant — et courts.
"La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -10.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: coquille
Posté par ZeroHeure . Évalué à 4.
Mais arrête de te la jouer bon sang! ça fait des années que les gens te le demandent.
"La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -10.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: coquille
Posté par ZeroHeure . Évalué à 4.
Ton assertion a été notée négativement bien avant mon commentaire. Elle peut-être sourcée, elle n'en a pas moins été invalidée par les autres.
Tu te la joues à avoir toujours raison, comme le schtroumpf à lunette.
Bonne nuit.
"La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -7.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: coquille
Posté par gUI (Mastodon) . Évalué à 7.
Je ne comprends pas qu'un mec aussi brillant que toi n'arrive pas à nous comprendre. Entre deux "mêêê" et "grouik grouik" on utilise bien des mots en Français non ?
On ne te parle pas de la validité ni des sources, mais de l'allégation elle-même. LA FORME BORDEL, LA FORME !!!
Et en plus le mot allégation me semble bien mal utilisé ici (mon Gros Robert est plutôt de mon avis), puisque justement le propos est justifié.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -7.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: coquille
Posté par gUI (Mastodon) . Évalué à 9. Dernière modification le 05 février 2019 à 22:27.
Ton propos ne t'es pas destiné, tu n'as donc pas à le juger. "J'écris bien, ce sont les autres qui ne comprennent pas".
Quand j'écris un document et qu'on me fait une remarque (fond comme forme, c'est important), à 90% du temps ça fini par une modification du document, même si j'ai parfaitement raison sur le fond. Si la personne n'a pas compris ce que j'ai écris c'est de ma faute (par définition). Je propose donc une reformulation plus détaillée, plus directe ou moins ambiguë (selon).
Plutôt que de pester contre je ne sais quel complot contre toi (franchement, qu'est-ce qu'on s'en fiche de ta vie !) essaie de comprendre ce qu'on te dit. Ce que tu écris est généralement imbuvable, et transpire la vanité. Vrai ou faux, là n'est pas le problème, c'est le ressenti des gens, c'est comme ça. Si tu es si intelligent, tu devrais le comprendre aisément.
J'ai "pertinenté" moi-même pas mal de tes commentaires, ce n'est pas pour te faire plaisir, mais c'est bien parce qu'ils m'ont fait plaisirs : pertinents et agréables à lire.
Une bonne fois pour toutes, ce n'est pas toi qu'on note mal, c'est ton texte. Il est CHIANT À LIRE !
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -7.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -10.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: coquille
Posté par gUI (Mastodon) . Évalué à 8.
En fait tu ne parles que à toi-même. Tu n'as rien à faire que les autres ne te comprennent pas.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -6.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: coquille
Posté par j_m . Évalué à 3. Dernière modification le 09 février 2019 à 22:36.
Moi j'ai pertinenté le premier message parce que j'ai apprécié le travail de recherche et aussi que tes commentaires deviennent progressivement trés interessant avec un bon travail de documentation.
Mais tu pars souvent de travers. J'ai l'impression que tu prend les commentaires trop à coeur. Tu surréagis.
[^] # Re: coquille
Posté par SpaceFox (site web personnel, Mastodon) . Évalué à 8. Dernière modification le 05 février 2019 à 17:07.
Si tu donnes à manger à tes cochons de la même façon que tu nous abreuves de tes logorrhées, les pauvres bêtes doivent être mortes étouffées sous des monceaux de nourriture avariée :( – personnellement j'ai du mal à associer ça à de la confiture.
Cette page te permets de relire tous tes commentaires, il semblerait qu'il y a une certaine corrélation entre la longueur de tes interventions et leur note.
La connaissance libre : https://zestedesavoir.com
[^] # Re: coquille
Posté par dyno partouzeur du centre . Évalué à 1. Dernière modification le 08 février 2019 à 21:01.
Tout aussi bonne que puisse être la confiture que tu nous sers, tu veux à chaque fois nous en servir un conteneur entier. Forcément, c'est l'indigestion !
Tes pavés sont illisibles pour la population de decideurs pressés de DLFP qui préfèrent moinsser plutôt que se taper ta logorrhée.
Si tu arrivais à synthétiser en quelques phrases, tout le monde s'en porterait mieux…
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -10. Dernière modification le 09 février 2019 à 11:22.
Ce commentaire a été supprimé par l’équipe de modération.
# Compiler un compilateur... Avec une version antérieure?
Posté par redo_fr . Évalué à 3.
Je ne suis absolument pas expert dans ce domaine, mais on m'avait expliqué il y a de nombreuses années, qu'il n'était pas possible de compiler un compilateur avec une version précédente, tout simplement parce que le compilateur 'V-1' ne pouvait pas, par construction, comprendre les nouvelles instructions du compilateur 'V' et donc ne pouvait pas les compiler.
Un expert du domaine pourrait-il confirmer (ou pas) en termes simples ce fait? :-)
Note : C'est peut-être expliqué dans la présentation (que je n'ai pas encore regardé), donc mes excuses dans ce cas pour le bruit.
Celui qui pose une question est bête cinq minutes, celui qui n'en pose pas le reste toute sa vie.
[^] # Re: Compiler un compilateur... Avec une version antérieure?
Posté par Dr BG . Évalué à 10.
Le code d'un compilateur n'a pas nécessairement besoin lui-même des instructions qu'il va interpréter. Il est d'ailleurs classique d'écrire un compilateur dans un langage qui n'a rien à voir avec le langage cible.
[^] # Re: Compiler un compilateur... Avec une version antérieure?
Posté par Liorel . Évalué à 5.
Il est même classique d'écrire un compilateur qui tourne sur une architecture différente de l'archi cible.
Ça, ce sont les sources. Le mouton que tu veux est dedans.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 4.
Ce commentaire a été supprimé par l’équipe de modération.
# Boostrap everything
Posté par gUI (Mastodon) . Évalué à 6. Dernière modification le 04 février 2019 à 14:57.
Le wiki donné en référence est impressionnant, on y trouve des CPU, des compilateurs et des OS de taille minimale. Extrêmement éducatif je suppose, faudrait trouver le temps pour s'y pencher dessus.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
# Le big bang L'oeuf la poule Adent et Eve
Posté par Christophe B. (site web personnel) . Évalué à -3.
C'est toujours le même problème :
L'oeuf ou la poule
Adent et Eve
Le big Bang
Pour plus de renseignement contacter le service correspondant à votre croyance / culture ( curé prêtre pasteur imam rabin shamane sorcier stade de foot etc … )
Pour le compilateur C l'équivalent de dieu sous Unix c'est Ken Thompson et Dennis Richie avec le langage B
Avec des Archanges comme Linux Thorvalds
Je vous laisse le soin de nommer les anges déchus :)
[^] # Re: Le big bang L'oeuf la poule Adent et Eve
Posté par gUI (Mastodon) . Évalué à 6.
Tu me copieras 100x "Linus Torvalds" :)
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Le big bang L'oeuf la poule Adent et Eve
Posté par David Marec . Évalué à 3.
Bah, puisque l'on verse dans le mystique, ça lui va bien le th, en fait.
Ceci dit, les premières versions Linux ont été écrites directement en assembleur, il me semble.
[^] # Re: Le big bang L'oeuf la poule Adent et Eve
Posté par Christophe B. (site web personnel) . Évalué à 1.
Pas de problème …
En primaire on scotchait des stylos bic pour écrire 5 lignes à la fois … :)for l in range(1,100):
print('je copie : "Linus Thorvalds"')
[^] # Re: Le big bang L'oeuf la poule Adent et Eve
Posté par Strash . Évalué à 10.
C'est bête, maintenant tu as fait 100 fois la faute au nom de famille !
[^] # Re: Le big bang L'oeuf la poule Adent et Eve
Posté par gUI (Mastodon) . Évalué à 6.
Comme disais un (vieux) collègue : "Le copier/coller c'est aussi pratique que dangereux. Et c'est très pratique !"
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Le big bang L'oeuf la poule Adent et Eve
Posté par Christophe B. (site web personnel) . Évalué à 3.
Bon ok je vais me flageller à grand coup de Listes chainées
A mon époque on rigolais pas avec l'orthographe …
[^] # Re: Le big bang L'oeuf la poule Adent et Eve
Posté par Maclag . Évalué à 10.
Aujourd'hui non plus.
Re-flagelle-toi immédiatement!
[^] # Re: Le big bang L'oeuf la poule Adent et Eve
Posté par oinkoink_daotter . Évalué à 3.
Il faut qu'il y re-retourne car la forme correcte pour la négation est "ne … pas". :-)
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -10. Dernière modification le 05 février 2019 à 12:52.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Le big bang L'oeuf la poule Adent et Eve
Posté par Kerro . Évalué à 10.
« Non, moi j'crois qu'il faut qu’vous arrêtiez d'essayer d'dire des trucs. Ça vous fatigue, déjà, et pour les autres, vous vous rendez pas compte de c'que c'est. Moi quand vous faites ça, ça me fout une angoisse… j'pourrais vous tuer, j'crois. De chagrin, hein ! J'vous jure c'est pas bien. Il faut plus que vous parliez avec des gens. »
Alexandre Astier, Kaamelott, Livre I, Tel un chevalier, écrit par Alexandre Astier.
[^] # Re: Le big bang L'oeuf la poule Adent et Eve
Posté par Faya . Évalué à 2.
Parce que chaque fois qu'on évoque ou que je pense à ce passage, je suis obligé d'aller le regarder de nouveau :
https://www.youtube.com/watch?v=I46N7c6RySw&t=8102
"Merci de rien, au revoir messieurs dames…" Livre II, La Botte secrète II
[^] # Re: Le big bang L'oeuf la poule Adent et Eve
Posté par Christophe B. (site web personnel) . Évalué à 8.
A quand un compilateur pour le français !
[^] # Re: Le big bang L'oeuf la poule Adent et Eve
Posté par Thomas Douillard . Évalué à 8. Dernière modification le 05 février 2019 à 20:25.
Ça doit s’écrire très simplement en C-COOL
[^] # Re: Le big bang L'oeuf la poule Adent et Eve
Posté par windu.2b . Évalué à 5.
Pareil pour Adam et Eve…
[^] # Re: Le big bang L'oeuf la poule Adent et Eve
Posté par nico4nicolas . Évalué à 4.
Wikipedia n'est pas d'accord :
Et ainsi de suite. Cette page Wikipedia résume mieux l'Histoire qui "commence" comme ça :
Tout est construit sur quelque chose d'existant, tes dieux ont ajouté des pierres à un édifice.
[^] # Re: Le big bang L'oeuf la poule Adent et Eve
Posté par Christophe B. (site web personnel) . Évalué à 3.
OK on est lundi mais j'étais pas la Vendredi …
je me suis basé sur https://fr.wikipedia.org/wiki/C_(langage)
Et j'attendais que quelqu'un demande : 'qui a codé le langage B'
afin de pouvoir répondre … X avec le langage A
et d'attendre la suite ….
[^] # Re: Le big bang L'oeuf la poule Adent et Eve
Posté par nico4nicolas . Évalué à 3.
J'ai pris les devants mais sans jouer le jeu à fond car les racines sont parfois (toujours ?) multiples. Pour rester sur le sujet initial, FORTRAN semble être le premier langage de programmation avec un compilateur.
[^] # Re: Le big bang L'oeuf la poule Adent et Eve
Posté par EdLeH (site web personnel) . Évalué à 7.
Quand les poules auront Adent.
# Commentaire supprimé
Posté par Anonyme . Évalué à 1. Dernière modification le 04 février 2019 à 17:06.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -10. Dernière modification le 10 février 2019 à 12:52.
Ce commentaire a été supprimé par l’équipe de modération.
# Attaque par le compilateur
Posté par barmic . Évalué à 3.
Ça demande à ce que la propriété soit maintenu dans les compilateurs générés. Hors de cas totalement triviaux qui sont pas forcément très compliqué à déceler, ça me paraît assez complexe.
[^] # Re: Attaque par le compilateur
Posté par arnaudus . Évalué à 3.
Je pense que c'est plus une expérience de pensée qu'un risque réel, pour plein de raisons. Déja, il faut que le compilateur compromis ait été introduit il y a très longtemps, au début de la chaine, puisque la compromission ne peut plus être introduite en cours de route. D'autre part, il ne semble pas très compliqué de «nettoyer» une distribution une fois que la faille est identifiée (il suffit de compiler gcc avec un autre compilateur du marché, puis de recompiler gcc avec lui-même, et de recompiler tous les éléments du système : en quelques heures, pouf, la faille introduite 20 ans auparavant n'existe plus. Ça fait beaucoup d'efforts pour pas grand chose!
Par contre, ce qui est intéressant, c'est la question autour de l'idée de prouver que les compilateurs ne sont pas compromis de cette manière. Si on analyse le binaire du compilo avec un outil compilé, qui prouve que le compilateur n'a pas fait en sorte que l'éditeur de binaire ne cache pas les bouts compromettants? Et si on utilise un autre compilo du marché, qui prouve qu'il n'a pas non plus lui aussi été affecté? C'est tellement improbable que ça ne représente pas un risque réel, mais c'est plus une question philosophique, et une attaque sur le principe souvent répété de la sûreté des logiciels libres par l'inspection du code.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -10.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Attaque par le compilateur
Posté par gUI (Mastodon) . Évalué à 10. Dernière modification le 05 février 2019 à 23:06.
fait !
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -8. Dernière modification le 06 février 2019 à 07:42.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Attaque par le compilateur
Posté par arnaudus . Évalué à 7. Dernière modification le 06 février 2019 à 08:54.
Sauf que tu parles d'un problème tellement différent que la discussion est carrément hors sujet, je trouve. Le problème que tu évoques n'a rien à voir avec le compilateur ; si tu veux juste dire que la confiance dans le compilateur n'est pas suffisante pour avoir confiance dans un ordinateur, alors oui, c'est trivialement vrai. Mais le nombre d'exemples qui pourraient poser de tels problèmes est quasiment illimité (noyau, bibliothèques externes, drivers, matériel, routeurs…).
Sur le fond, les problèmes que tu évoques sont théoriquement possibles, mais ils sont détectables, et c'est ça qui est rassurant, dans une certaine mesure. Si un binaire, une fois exécuté, n'a pas le même comportement sur deux machines différentes (il envoie une trame réseau chiffrée quand il est exécuté sur une machine et pas sur l'autre, par exemple), alors tu as identifié un vrai problème. Le constructeur prend quand même un risque majeur en introduisant, de cette manière, «en dur», des protocoles espions. Il pourrait du jour au lendemain se faire interdire de vente, par exemple. D'autre part, un tel truc «en dur» dans le matériel peut difficilement être mis à jour, et il ne peut qu'être très sensible à toute modification de l'environnement logiciel. Enfin, il semble tellement plus facile d'introduire des backdoors dans le matériel que d'analyser les binaires et d'y introduire des instructions supplémentaires que ça me semble plutôt relever de la science fiction.
Autrement, rien à voir, mais quand tu te retrouves à -50 avec 4 commentaires, c'est peut-être un signe qu'il est l'heure de prendre tes médicaments.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -8. Dernière modification le 06 février 2019 à 11:18.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Attaque par le compilateur
Posté par SpaceFox (site web personnel, Mastodon) . Évalué à 8.
Tout ton problème est dans l'inadéquation entre ton ressenti quant à la qualité de tes textes :
Et le fait qu'ils sont très loin de la perfection. En particulier parce qu'on y trouve encore des phrases beaucoup trop longues et complexes, comme par exemple :
Exemple qui contient quand même deux fois un double niveau d'inclusion (incise dans une incise) et un renvoi externe (lui-même trop long).
C'est un problème soulevé depuis plusieurs mois et que tu ne sembles pas décidé à prendre en considération.
Ne t'étonnes donc pas de l'accueil reçu par tes commentaires.
La connaissance libre : https://zestedesavoir.com
[^] # Re: Attaque par le compilateur
Posté par arnaudus . Évalué à 6. Dernière modification le 06 février 2019 à 15:23.
Est-ce quelqu'un qui s'y connait un peu ne pourrait pas essayer de mettre un terme technique sur le problème de SamWang (manque total de lucidité sur son incapacité à communiquer ses idées de manière intelligible et logique)? Ça permettrait d'éviter les injures et d'être un peu plus constructifs.
D'un autre côté, si SamWang tu es suivi pour un problème médical, ça ne coûte rien d'en glisser un mot (sans forcément donner des détails dont on se moque); d'expérience les gens sont bien plus bienveillants quand ils savent pourquoi leur interlocuteur ne respecte pas les codes sociaux. Dans tous les cas, il semble que tu n'es pas «cablé» comme le commun des mortels, ce qui fait qu'un texte qui te semble clair, aéré, et logique, nous semble confus, jargonnant, et maladroit. Mépriser tes interlocuteurs n'arrange pas ton cas, puisqu'il est évident pour tout le monde que le problème vient de toi. L'art de la communication, c'est avant tout l'humilité de faire l'effort de passer un message clair, surtout si en face on n'a rien demandé.
Quand je contribuais à Wikipédia, j'ai dû gérer à plusieurs occasions ce genre de situations, et c'est très compliqué, parce que malgré tous les efforts faits des deux côtés, les contributions de la personne "dyscommunicante" ne sont pas constructives. Souvent, le dialogue et la participation à un projet collectif entrent dans une démarche thérapeutique dans l'esprit du contributeur, mais cette démarche finit par être contre-productive (exclusion, sentiment de paranoïa, tensions chez les contributeurs réguliers, dégradation de la qualité du projet parce qu'on s'est «forcés» à accepter quelques contributions de mauvaise qualité, etc).
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -7. Dernière modification le 06 février 2019 à 16:13.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Attaque par le compilateur
Posté par SpaceFox (site web personnel, Mastodon) . Évalué à 2.
Ça ressemble à de la logorrhée (terme qui a une vraie signification médicale) mais à l'écrit. Il semblerait que ce soit plus souvent classifié comme un symptôme d'autre chose plus que comme une maladie à part entière.
La connaissance libre : https://zestedesavoir.com
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -10. Dernière modification le 07 février 2019 à 10:44.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -9.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Attaque par le compilateur
Posté par kantien . Évalué à 9. Dernière modification le 08 février 2019 à 13:13.
Tout d'abord mon domaine d'expertise est avant tout les mathématiques pure et la logique formelle, mais j'ai néanmoins une connaissance approfondie de la philosophie kantienne et une certaine érudition au sujet de la pensée philosophique.
Maintenant, je te le dis : tu es un parfait crétin doublé d'un malotru. Non, pour reprendre ton expression sur l'autre fil de discussion, qu'il n'est plus nécessaire de polluer, nous ne sommes pas en bonne compagnie ! On ne colle pas de quenelles pour sodomiser Kant à titre posthume ! Quand bien même on appelle cela de l'humour : ton sens de l'humour m'est parfaitement incompréhensible.
Ton problème principal de longueur dans tes textes n'est pas une pathologie (comme la logorrhée) mais tout simplement de la micrologie : c'est-à-dire de l'inutile précision dans les détails.
Pour le reste tu passes ton temps à essayer d'employer des notions et des concepts auxquels tu n'entends absolument rien, et cela face à des personnes qui, elles, les comprennent.
Au sujet de ton projet de LFC, tu devrais t'associer à Mr BG est son projet de C-Cool. Quand vous en serez à la phase de bootstrap, vous nous ferez un journal…
Vu que tu aimes Carnap, tu devrais lire ça : Carnap, Cassirer, and Heidegger: The Davos Disputation and Twentieth Century Philosophy, c'est incroyable à quel point Kant est omniprésent dans un article où son nom n'est même pas mentionné dans le titre.
Et globalement sur tes délires de projets :
À l'avenir, ne prends pas la peine de répondre à mes commentaires en espérant que j'y réponde, tu y trouveras systématiquement la porte fermée. Considère notre canal de communication comme définitivement clos : je ne donne pas à manger aux cochons sans aucune éducation.
Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -10. Dernière modification le 08 février 2019 à 16:05.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Attaque par le compilateur
Posté par ZeroHeure . Évalué à 4.
Je t'ai demandé ce matin d'éviter tes propos sur la quenelle. Tu recommences. Tu te crois où ? Tu nous prend pour qui ?
Et descend de ton piédestal tu vas prendre froid.
"La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay
[^] # Re: Attaque par le compilateur
Posté par kantien . Évalué à 6.
Sommaire
Je viens de voir que vous avez effacer son compte et supprimer certains de ses messages. Comme j'étais en train de rédiger un long commentaire pour exposer sa profonde ignorance au grand jour et que je ne veux pas avoir perdu du temps pour rien, je le mets quand même ici. Il pourra servir comme référence, au cas où il revienne avec un autre compte.
Voici une analyse de sa confiture que nous ne savons pas apprécier au sujet de l'article de Ken Thompson.
Le cas Ken Thompson
Alors que Ken Thompson reçoit le prix Turing en 1983 pour son œuvre, lors de son discours de remerciement, il présente le programme le plus malin (cutest)1 qu'il ait jamais écrit. Son discours est retranscrit sous forme d'article et publié dans un bulletin de l'ACM sous le titre Reflections on trusting trust.
Le programme en question est fortement lié au présent journal, puisqu'il consiste à corrompre un compilateur C dans la chaîne de bootstraping, de tel sorte que tout compilateur C qui lui succède introduise une porte dérobée dans le programme de login d'un système Unix.
Son exposé se décompose en trois étapes que nous présenterons brièvement dans ce qui suit.
Étape 1
La première étape consiste à écrire un programme qui, lorsqu'il s'exécute, reproduit son propre code source sur la sortie standard. Un tel programme est dit autoreproducteur. En voici un exemple minimal en OCaml :
Étape 2
La seconde étape traite un problème posé dans un autre commentaire du journal par redo_fr : comment ajouter de nouvelles fonctionnalités à un langage en compilant le nouveau compilateur avec une version antérieure, qui ignore, donc, les nouvelles fonctionnalités ?
Il y traite un exemple simple avec l'interprétation des séquences d'échappement dans les chaînes de caractères. Il montre comment boostraper l'interprétation de la séquence
\v
comme une tabulation verticale. Ainsi, même si, à la générationN
, la séquence\v
n'est pas valide, à partir des générationsN + 1
et suivantes, tous les compilateurs pourront l'utiliser dans leur propre code source.Étape 3
C'est l'étape finale où il décrit comment introduire la porte dérobée sans laisser aucune trace dans le code source du compilateur.
Dans une représentation idéalisée du fonctionnement d'un compilateur, celui-ci lit le code source du programme puis applique une routine
compile(s)
sur les parties du code. Pour introduire une porte dérobée, on peut tester la correspondance de la fonction à compiler sur un motif donné et introduire dans ce cascompile(backdoor)
.Le défaut de cette approche est que même une lecture superficielle du code source du compilateur risque de découvrir le pot aux roses, en voyant l'exécution conditionnelle de l'instruction
compile(backdoor)
.La solution consiste, alors, à combiner les techniques des deux premières étapes afin d'effacer la supercherie du code source du compilateur. À la génération
N
, on introduit la porte dérobée sous forme d'un programme autoreproducteur (étape 1), que l'on boostrape (étape 2), puis l'on distribue ce binaire comme compilateur C officiel qui reproduira son comportement dans toutes les générations successives.Le lecteur intéressé par les détails de chaque étape pourra toujours se reporter à l'article de Ken Thompson.
Maintenant, chers lecteurs, attardons nous quelque peu sur l'analyse détaillée de cette succulente confiture gracieusement offerte par SamWang, que, nous autres, pauvres cochons, n'avons pas su éstimer à sa juste valeur. Ça vaut le détour ! :-)
La recension de SamWang
Lui, ô grand chasseurs devant l'éternel de coquilles, coquillages et autres crustacés, se propose de nous révéler quelques une de ses prises, suite à sa lecture du papier l'été dernier. Et quelles prises ! :-D
Avant cela, il tente un résumé de l'article qu'il semble n'avoir pas totalement saisi. Pour lui, l'article expose l'injection d'une porte dérobée dans la compilation du fichier
login.c
. Puis Ken Thompson mettrait ensuite « en garde contre le risque d'injection de code malveillant par un compilateur malveillant dans tout programme qu'il compile, y compris un compilateur ». J'espère que tout lecteur attentif de ma présentation aura compris que c'est un peu plus subtil que ça.Passons, à présent, aux coquilles mineures relevées. Il en trouve deux :
S'il y a bien inversion de légende entre deux figures (celles qui illustrent comment ajouter la séquence d'échappement
\v
au langage) et que tout lecteur attentif corrigera de lui-même, je suis au regret de lui apprendre que la seconde n'en est pas une.SamWang ne devant pas être habitué à la lecture d'article académique, il a pris pour une coquille ce qui n'est rien d'autre qu'une mise en page, on ne peut plus classique, dans ce genre de papier. Les figures liées à la section 2 sont reportées en bas de page, qui, dans le cas présent où chaque page est en format deux colonnes, se trouve en bas de la seconde colonne. Cela lui donne l'illusion qu'elles sont insérées dans la section 3 dont le texte commence sur cette deuxième colonne.
C'est déjà quelque peu amusant, mais le plus beau reste à venir. Dans le fond, SamWang a une âme d'explorateur : il rêve d'une terre remplie de K-zino, avec son comparse zind dans sa logique LFC, inspirée des travaux de Rudolph Carnap, pour faire de la LNC. Malheureusement pour lui, depuis dix ans qu'il en parle, il ne navigue toujours par sur l'océan à la recherche de la terre promise. Nulle Santa Maria, ni même le moindre radeau, et tous ses bateaux semblent prendre l'eau. Alors, seul sur le rivage, admirant au loin l'horizon, il doit s'ennuyer un peu : il part donc à la pêche aux coquillages.
Et là, mazette, quelle récolte ! Ken Thompson ne sait même pas écrire correctement du
C
. Oui, vous avez bien lu : Ken Thompson est une bille enC
, il ne sait pas écrire un programme de quelques lignes syntaxiquement valide, et en plus il propose ça en publication à l'ACM qui valide le tout. Mais dans quel monde vit-on ?Voyons voir cette grossière erreur un peu plus à la loupe. Elle se trouve dans l'étape 1, lorsqu'il traite des programmes autoreproducteurs. Son code commence par la déclaration d'une chaîne de caractères :
Puis, dans la boucle principale, il parcourt cette chaîne pour l'imprimer caractère par caractère. Ni une, ni deux, SamWang arrive à la conclusion fatidique : si je commence par écrire cette séquence de caractère au tout début d'un fichier, je n'aurais pas un code source
C
valide. En conséquence, alors que le programme d'exemple devait afficher son propre code source, il affiche un texte qui n'est même pas valide enC
. Quel escroc ce Ken Thompson ! encore un qui essaye de jouer au paralogisme, mais on n'échappe pas à la surveillance assidue du SamWang.Rassurez vous, rien de tout cela dans le code de Ken Thompson, c'est juste que l'idiot de service à oublier de lire l'instruction qui précède la boucle
for
:C'est vrai que, finalement, il a un certain sens de l'humour notre SamWang : certes à ses dépends, mais c'est drôle quand même. :-)
Après, pour être tout a fait exact, son exemple n'est pas un programme autoreproducteur mais génère un tel programme. Il le précise lui même :
Ce qui est encore plus drôle (deuxième effet kiss cool) est que, à la toute fin de son commentaire, SamWang pointe un lien vers un vrai programme autoreproducteur « dans lequel le tableau de données est lu deux fois et interprété différemment les deux fois.[…] une solution bien astucieuse » (les mots sont de SamWang). Tout lecteur de bonne foi, comprenant le C, réalisera sans peine que cette solution astucieuse est identique, dans l'esprit, à celle de Ken Thompson.
Comme autre perle de sa pêche aux coquillages (heureusement que je sais ouvrir les huîtres), on trouvera celle-ci. S'interrogeant sur l'utilité de cette étape dans le corps de l'article, notre cher ami écrit, je cite :
Je laisse le lecteur libre de juger à quel point l'étape 1 est cruciale pour l'étape 3 (d'après ma présentation), et si, dans son article, Ken Thompson ne le signale pas explicitement selon une articulation logique sans faille. Ce qui manque, assurément, d'articulation logique, ce sont les commentaires à ralonge de SamWang.
Arriver à ce stade, toute personne sensée, avec un minimum d'humilité, aurait du se dire : « j'ai du raté un truc » (en l'occurrence oui, à savoir, une ligne de code). Mais comme rien n'arrête notre SamWang, il va bien plus loin : par une réduction à l'infinie, il entend, dans un premier temps, nous convaincre que le problème que cherche à résoudre Ken Thompson n'a même pas de solution. Non seulement il ne peut toujours pas naviguer sur l'océan à la recherche de découverte pleine d'espérance, devant se contenter du rivage et de ses coquillages, mais le voilà maintenant chutant inexorablement dans le tonneau des danaïdes, ce puit sans fin dont il desespère de ne pas voir le fond.
Ce genre de problème de point fixe est on ne peut plus courant, mais il semble l'ignorer : étant donné une fonction
f
trouver une valeurx
tel quef (x) = x
; où ici la fonctionf
, dont on cherche un point fixe, est la composée de deux autresf = run . compile
, de telle sorte que l'on cherchesource
satisfaisant l'équation :Il se met alors à chercher des contournements au défi, en assouplissant les contraintes, afin d'y arriver. Il envisage, par exemple, un programme qui ouvre son fichier source puis l'affiche, ce qui nécessite d'avoir toujours à disposition le code source d'un tel programme. Là où l'on voit qu'il n'a rien compris à l'article, étant donné que le compilateur compromis ne sera distribué que sous forme binaire tout en ayant la capacité de « parasiter » tous les futurs compilateurs qui
l'auront comme ancêtre.
Incompréhension totale de l'article confirmée par ce qui conclut cette partie du commentaire (qui constitue la moitié, en volume, du commentaire complet) :
Assurément que si, c'est impératif ! comme je viens de le rappeler.
Enfin, nous touchons au sublime avec la conclusion du commentaire, où, sautant du coq à l'âne, dans une articulation logique à toute épreuve, l'on apprend dans la foulée de cette question-réponse que, si, finalement, on peut écrire des programmes autoreproducteurs et que l'on appelle cela des quine (en l'honneur du philosophe analytique William Quine, je précise). SamWang a donc passé la moitié de son commentaire à nous expliquer que c'est pas possible, pour, finalement, nous dire que c'est possible. Effectivement, ça valait le coup ! :-D
Non vraiment, je ne vois pas ce qui a bien pu m'amener à écrire :
et le voir me répondre :
Ce qui précède doit bien apporter la preuve irréfragable de ce que j'avançais. Pour ce qui est de l'autre fil de discussion, ce n'est guère mieux, mais j'ai déjà assez perdu de temps comme cela pour devoir le justifier.
l'adjectif anglais cut, outre sa signification de mignon, peut aussi caractérisé quelque chose d'habile et d'ingénieux. En choisissant la traduction « malin », on retrouve le côté ingénieux d'un hack, ainsi que celui malveillant (par un jeu de mot) d'une attack. ;-) ↩
Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.
[^] # Re: Attaque par le compilateur
Posté par ZeroHeure . Évalué à 3.
maaaaagnifique !
"La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay
[^] # Re: Attaque par le compilateur
Posté par Dr BG . Évalué à 3.
Ah non, pitié ! Je pense que le compilateur C-Cool risque le dépassement de pile.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -10.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -6. Dernière modification le 06 février 2019 à 16:05.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Attaque par le compilateur
Posté par SpaceFox (site web personnel, Mastodon) . Évalué à 4.
Tu n'as pas compris : ma citation était un exemple de ce qui ne va pas, pas un point précis à éclaircir.
De plus, je ne suis pas convaincu que ta nouvelle version soit réellement plus claire ; déjà elle est sensiblement plus longue.
La connaissance libre : https://zestedesavoir.com
[^] # Re: Attaque par le compilateur
Posté par arnaudus . Évalué à 9.
Je pense que tu n'as pas compris de quoi on parlait. Le but n'était pas d'éclaircir ce paragraphe confus, c'était de donner un exemple.
Outre la taille gigantesque de tes blocs de texte, c'est avant tout un problème de clarté.
Par exemple, pour moi, cette phrase m'apparait totalement vide de sens. Sa syntaxe est extrêmement ambigüe (est-ce que "tant qu'il n'y a pas" fait référence à "réputée valide" ou à "réfuter la pertinence"?), et les mots d'enchaînent sans signification, avec des références vagues à un contexte qui ne semble pas évoqué dans ton texte. Tu pourrais écrire :
« Et pourquoi faut-il commanditer la perméabilité de cette orchidée réputée obscure tant qu'il n'y a pas la farine que j'ai ajoutée»
que je ne verrais pas une différence en terme de sens.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -8. Dernière modification le 06 février 2019 à 19:04.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -9.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Attaque par le compilateur
Posté par L'intendant zonard (site web personnel) . Évalué à 1. Dernière modification le 10 mars 2019 à 22:22.
Je débarque un mois après la conversation, mais je suis obligé de l'admettre : quels progrès depuis Luc2 !
Intendant, donc méchant, mais libre !
# Imbitable
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 3.
J'ai regardé les slide du FOSDEM et j'ai trouvé que c'était complètement incompréhensible… Au final je trouve que sa présentation aurait été plus efficace si elle avait contenu un seul slide comme la phrase que tu as écrite : « On commence par un petit bout de binaire écit à la main (il faut bien !) pour aller vers un langage de macro simplissime, puis un assembleur simpliste et enfin un assembleur correct, une mini-VM etc. »
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.