Ich hasse es nicht, Assemblersprache zu verwenden, da ich einige in meinem OS-Kurs geschrieben habe. In der Assemblersprache fehlt es jedoch offensichtlich an Abstraktion. Sie müssen den Details mehr Aufmerksamkeit schenken.
Ist die Assemblersprache wirklich wichtig, um TAOCP zu schreiben?
Antworten:
Er verwendet nicht nur MIXAL, seine Assemblersprache für MIX, sondern auch MIX, ein Modell für einen einfachen Computer (wie es in den sechziger Jahren verwendet wurde). Dies ist ein Modell für den Unterricht, mit dem er in gewissem Maße unabhängig von der Entwicklung auf dem Gebiet ist.
Wenn er eine andere Programmiersprache verwendet hätte (welche wäre Ihrer Meinung nach übrigens geeignet gewesen?), Sagen wir NPL (raffinierte Programmiersprache), hätte er entweder die Idee der Verwendung von MIX aufgeben oder eine neue einführen müssen Compiler einer beliebigen Computersprache (was weitaus komplexer ist als das, was er in Band 1 behandelt). Auf diese Weise wäre es nicht TAOCP, sondern TAONPLP geworden. Der erste ist unabhängig von einer solchen Wahl und aus diesem Grund in gewisser Weise zeitlos, wie es nur wenige Bücher über Programmierung jemals sein werden. Der zweite wäre wohl mittlerweile vergessen ...
Solange Computer im Prinzip so arbeiten wie sein MIX, ist es eine gute Sache, dies zu berücksichtigen, wenn Sie wirklich daran interessiert sind, zu lernen, wie man mit ihnen arbeitet.
quelle
Sie jungen Whippersnapper überraschen mich manchmal. Sie haben allzu oft keine Ahnung, dass etwas passiert ist, bevor Sie in die Schule gegangen sind. (Ich habe das gleiche Problem. Ich habe lange gebraucht, um zu begreifen, dass 15 Jahre aus Sicht der Erwachsenen eigentlich eine sehr kurze Zeit waren. Das ist ungefähr die Zeitspanne von Hiroshima bis zur Kubakrise. Für mich ist der Zweite Weltkrieg gerecht Geschichte, aber mein Vater hat gekämpft, und meine Mutter war in der Mittelstufe.)
TAOCP. Vol. 1, "Fundamental Algorithms", 1. Auflage, wurde erstmals 1968 gedruckt. Das ist 45 Jahre her. Knuth hat die Serie schon lange vorher geplant.
Als Referenz: Der Intel 8086 erschien 1978, zehn Jahre später. Die PASCAL-Sprache erschien erstmals 1971; Das Jensen & Wirth-Buch, über die zweite Version der Sprache, erschien 1974. Die anfängliche Entwicklung von C war 1969-1973: K & R wurde 1978 veröffentlicht.
Knuth wollte mit der Serie das Feld abdecken. Er legte den Stil fest, DANN, um den Praktizierenden von Nutzen zu sein. Er hatte nie erwartet, dass diese Serie buchstäblich zu seinem Lebenswerk werden würde, oder dass das Schreiben weit über ein halbes Jahrhundert reichen würde, wenn er endlich fertig ist.
Die Assemblersprache ist heute wohl nicht mehr so kritisch wie damals, aber sie ist immer noch weitaus wichtiger, als die Java / C ++ / Javascript / Python / Perl-Mavens es von Ihnen allen erwarten würden.
Jetzt geh weg von meinem Gesetz!
quelle
Knuth bespricht seine Argumentation im Vorwort. Ich zitiere nur ein paar Kleinigkeiten:
Obwohl er nicht direkt darauf hinweist, denke ich, dass seine Erwähnung von ALGOL und FORTRAN auf ein anderes Problem hinweist, das er vermieden hat und das möglicherweise noch wichtiger ist. Nehmen wir an, er hat Algol gewählt (eindeutig besser für nicht numerische Programme geeignet als Fortran). Ich würde postulieren , dass Algol wahrscheinlich sogar wäre mehr fremd die meisten der heutigen Programmierer als die Assemblersprache wählte er.
Für die dritte Ausgabe überarbeitete er den MIX, um ihn besser an moderne Prozessoren anzupassen, und musste den Code dafür neu schreiben. Ich würde jedoch davon ausgehen, dass, wenn er eine höhere Sprache verwendet hätte, das Umschreiben wesentlich umfangreicher gewesen wäre - und alle Gründe, die er genannt hat, auch weiterhin bestehen würden.
quelle
Knuth hat seine aktualisierte Begründung auch:
quelle