Je ne déteste pas utiliser le langage d'assemblage, car j'en ai écrit quelques-uns dans mon cours sur le système d'exploitation. Mais évidemment, le langage d'assemblage manque d'abstraction, il faut faire plus attention aux détails.
Le langage d'assemblage est-il vraiment essentiel pour écrire TAOCP?
Réponses:
Il utilise non seulement MIXAL, son langage d'assemblage pour MIX, mais aussi MIX, un modèle pour un ordinateur simple (comme celui qui était utilisé dans les années soixante). Il s'agit d'un modèle d'enseignement avec lequel il est, dans une certaine mesure, indépendant du développement sur le terrain.
S'il avait utilisé un autre langage de programmation (lequel, au fait, pensez-vous aurait été approprié?), Par exemple NPL (langage de programmation astucieux), il aurait dû abandonner l'idée d'utiliser MIX ou introduire un compilateur d'un langage informatique de choix (ce qui est beaucoup plus complexe que ce qu'il traite dans le Vol 1). De cette façon, il ne serait pas devenu TAOCP mais TAONPLP. Le premier est indépendant d'un tel choix et, pour cette raison, intemporel d'une manière que peu de livres sur la programmation le seront jamais. Le deuxième serait probablement oublié maintenant ...
Aussi, tant que les ordinateurs fonctionnent en principe comme le fait son MIX, c'est une bonne chose d'en tenir compte si vous êtes vraiment intéressé à apprendre à travailler avec eux.
la source
Vous, jeunes whippersnappers, vous m'émerveillez parfois. Vous n'avez trop souvent aucune idée que quelque chose s'est passé avant de commencer l'école. (J'ai le même problème. Il m'a fallu beaucoup de temps pour comprendre que 15 ans étaient en fait très peu de temps, du point de vue des adultes. C'est à peu près la durée allant d'Hiroshima à la crise des missiles cubains. Pour moi, la Seconde Guerre mondiale est juste l'histoire, mais mon père y a combattu, et ma mère était au collège pendant.)
TAOCP, vol. 1, "Fundamental Algorithms", 1ère édition, a été imprimé pour la première fois en 1968. Cela fait 45 ans. Knuth a commencé à planifier la série bien avant.
Pour référence: l'Intel 8086 est apparu pour la première fois en 1978, dix ans plus tard. La langue PASCAL est apparue pour la première fois en 1971; le livre Jensen & Wirth, sur la deuxième version du langage, est sorti en 1974. Le développement initial de C a été 1969-1973: K&R a été publié en 1978.
Knuth voulait que la série couvre le domaine. Il a défini le style, ALORS, pour être utile aux pratiquants ALORS. Il ne s'attendait jamais à ce que cette série devienne littéralement l'œuvre de sa vie, ou que son écriture s'étende sur ce qui durera probablement bien plus d'un demi-siècle quand il aura finalement terminé.
Le langage d'assemblage n'est sans doute pas aussi critique aujourd'hui qu'il l'était à l'époque, mais il est encore beaucoup plus important que les mavens Java / C ++ / Javascript / Python / Perl ne voudraient vous faire croire.
Maintenant sortez de ma pelouse!
la source
Knuth discute de son raisonnement dans la Préface. Je ne citerai que quelques morceaux:
Bien qu'il ne le signale pas directement, je pense que sa mention d'ALGOL et de FORTRAN indique un autre problème qu'il a évité et qui peut être encore plus important. Supposons qu'il ait choisi Algol (clairement mieux adapté aux programmes non numériques que Fortran de toute façon). Je dirais qu'Algol serait probablement encore plus étranger à la plupart des programmeurs d'aujourd'hui que le langage d'assemblage qu'il a choisi.
Pour la troisième édition, il a repensé le MIX pour l'adapter plus étroitement aux processeurs modernes et a dû réécrire le code pour cela. Je suppose, cependant, que s'il avait utilisé un langage de niveau supérieur, la réécriture aurait été beaucoup plus importante - et toutes les raisons qu'il a invoquées resteraient également.
la source
Knuth a également mis à jour sa justification :
la source