No odio usar lenguaje ensamblador, ya que he escrito algunos en mi curso de sistema operativo. Pero obviamente, el lenguaje ensamblador carece de abstracción, hay que prestar más atención a los detalles.
¿Es realmente esencial el lenguaje ensamblador para escribir TAOCP?
Respuestas:
No solo usa MIXAL, su lenguaje ensamblador para MIX, sino también MIX, un modelo para una computadora simple (como una que se usaba en los años sesenta). Este es un modelo de enseñanza con el que es, hasta cierto punto, independiente del desarrollo en el campo.
Si hubiera usado otro lenguaje de programación (¿cuál, por cierto, crees que hubiera sido adecuado?), Digamos NPL (ingenioso lenguaje de programación), habría tenido que abandonar la idea de usar MIX o introducir un compilador de algún lenguaje de computadora de elección (que es algo mucho más complejo de lo que está tratando en el Vol. 1). De esa manera no se habría convertido en TAOCP sino TAONPLP. El primero es independiente de tal elección y, por esta razón, es atemporal de una manera que pocos libros sobre programación alguna vez serán. El segundo probablemente ya estaría olvidado ...
Además, siempre que las computadoras funcionen, en principio, de la forma en que lo hace su MIX, es bueno tener eso en cuenta si está realmente interesado en aprender a trabajar con ellas.
fuente
Ustedes jóvenes látigos me sorprenden a veces. Con demasiada frecuencia no tienes idea de que algo sucedió antes de comenzar la escuela. (Tengo el mismo problema. Me tomó mucho tiempo comprender que 15 años fueron en realidad muy poco tiempo, desde el punto de vista de un adulto. Eso es aproximadamente el lapso desde Hiroshima hasta la crisis de los misiles cubanos. Para mí, la Segunda Guerra Mundial es solo historia, pero mi padre luchó en él, y mi madre estaba en la secundaria durante el mismo).
TAOCP, vol. 1, "Algoritmos fundamentales", primera edición, se imprimió por primera vez en 1968. Eso fue hace 45 años. Knuth comenzó a planificar la serie mucho antes de eso.
Como referencia: Intel 8086 apareció por primera vez en 1978, diez años después. El lenguaje PASCAL apareció por primera vez en 1971; el libro de Jensen & Wirth, sobre la segunda versión del lenguaje, salió en 1974. El desarrollo inicial de C fue 1969-1973: K&R se publicó en 1978.
Knuth pretendía que la serie cubriera el campo. Estableció el estilo, ENTONCES, para ser útil para los practicantes ENTONCES. Nunca esperó que esa serie se convirtiera literalmente en el trabajo de su vida, o que su escritura abarcara lo que probablemente será más de medio siglo cuando finalmente termine.
Podría decirse que el lenguaje ensamblador no es tan crítico hoy como lo era entonces, pero sigue siendo mucho más importante de lo que los expertos en Java / C ++ / Javascript / Python / Perl quisieran que todos creyeran.
¡Ahora sal de mi césped!
fuente
Knuth discute su razonamiento en el Prefacio. Citaré solo algunas partes:
Aunque no lo señala directamente, creo que su mención de ALGOL y FORTRAN apunta a otro problema que evitó que puede ser aún más importante. Supongamos que eligió Algol (claramente más adecuado para programas no numéricos que Fortran de todos modos). Yo diría que Algol probablemente sería aún más extraño para la mayoría de los programadores de hoy que el lenguaje ensamblador que eligió.
Para la tercera edición, rediseñó el MIX para que se ajustara más a los procesadores modernos, y tuvo que reescribir el código. Sin embargo, diría que si hubiera usado un lenguaje de nivel superior, la reescritura habría sido sustancialmente mayor, y todas las razones que dio seguirían siendo así.
fuente
Knuth también ha actualizado su lógica :
fuente