El arte de programar

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 30 de junio de 2022; las comprobaciones requieren 2 ediciones .
El arte de programar
El arte de la programación informática
Autor donald knuth
Género Informática
Idioma original inglés
Original publicado 1968
Interprete S. G. Trigub, Yu. G. Gordienko, I. V. Krasikov y otros.
Serie El arte de programar
Editor Williams / Addison–Wesley
Liberar desde 1968

The Art of Computer Programming [ 1] es una  monografía fundamental del famoso matemático e informático estadounidense Donald Knuth , dedicada a la consideración y análisis de los algoritmos más importantes utilizados en informática . En 1999, el libro fue reconocido como una de las doce mejores monografías físicas y matemáticas del siglo [2] .

El proyecto de escritura del libro fue iniciado por el autor en 1962. Inicialmente, se planeó lanzarlo en un volumen, pero la cantidad de material resultó ser tan grande que la cantidad de volúmenes se incrementó a siete. Los primeros tres volúmenes se publicaron con bastante rapidez: volumen 1, en 1968, volumen 2, en 1969, volumen 3, en 1973. A esto le siguió una pausa hasta febrero de 2005, en que el autor publicó la primera parte del cuarto volumen. Se tomó la decisión de publicar las partes restantes del cuarto volumen aproximadamente dos veces al año en números separados, después de lo cual se publicaría oficialmente el cuarto volumen completo. Durante 2005-2009 se publicaron los números 0, 1, 2, 3 y 4 y en 2011 se publicó el volumen 4A que incluye información de estos números. También en 2005, se publicó el número 1 "MMIX: una computadora RISC para el nuevo milenio", cuya información se incluirá en la nueva cuarta edición del primer volumen. El número 6 (en 2015) y el número 5 (en 2017) se publicaron como parte del Volumen 4B. El volumen 4B en sí se lanzó en 2022.

Dado que Knuth siempre había considerado El arte de la programación como el principal proyecto de su vida , se retiró en 1993 con la intención de concentrarse por completo en escribir las partes que faltaban y poner en orden las existentes [3] . Él creía que tomaría 20 años completar el trabajo [4] .

Historia

Como experto reconocido en diseño de compiladores , en 1962 Knuth comenzó a escribir un libro sobre diseño de compiladores. Pronto se dio cuenta de que el alcance del material debía ser mucho más amplio. En junio de 1965 terminó de escribir la primera versión de lo que originalmente quería publicar en un libro de doce secciones. El volumen del texto manuscrito era de 3000 páginas. Según los cálculos de Knuth, este volumen debería haber cabido en 600 páginas impresas, pero, como le informó su editor, el volumen real sería de 2000 páginas. En este sentido, la estructura del libro fue revisada a favor de varios volúmenes, 1-2 secciones cada uno. Desde entonces, debido al constante crecimiento del material, se decidió que el cuarto volumen también se dividiría en libros separados: 4A, 4B, 4C y posiblemente 4D. Pero esta división, al parecer, no será definitiva, ya que los apartados 7.1 y 7.2.1 ocupan ya más de 650 páginas en total.

En 1976, Knuth produjo una segunda edición del segundo volumen, que requirió reescribir . Pero el diseño tipográfico ( monotipo ) utilizado en la primera edición ya no estaba disponible a estas alturas. Para evitar frustraciones similares en el futuro, en 1977 Knuth comenzó a desarrollar su propio sistema tipográfico de composición tipográfica por computadora. Según sus cálculos, el trabajo no debería haber llevado más de seis meses, pero tardó unos diez años en completarse [5] . El sistema se llamó TeX y actualmente se utiliza para componer todos los volúmenes de El arte de la programación. Además, más tarde TeX se convirtió en el estándar de facto para escribir artículos y monografías en las ciencias naturales.

Al igual que los otros libros de Knuth, El arte de programar lleva su marca registrada: por cada error encontrado en el texto, el autor paga un dólar hexadecimal, o $ 2,56 (0x100 centavos , base 16 ). Otra característica distintiva del libro es la abundancia de ejercicios para la autorrealización, de diversos grados de dificultad, que van desde simples problemas de "calentamiento" hasta problemas abiertos. La dificultad de cada ejercicio se califica en una escala numérica de 0 a 50. Así, en las primeras ediciones , el Último Teorema de Fermat se marcaba con el número 50 , pero en la tercera edición esta calificación se "devaluó" ​​a 45, ya que por esa tiempo su demostración ya había dejado de ser un problema abierto.

Resumen de convenciones para el volumen tres, 1978 "Clasificación y búsqueda" (izquierda - evaluación, derecha - breve explicación)

Contenidos

El plan original para escribir el libro sugería el siguiente desglose del material.

De hecho, este esquema se implementó hasta el tercer volumen inclusive.

Actualmente[ ¿cuándo? ] publicó el volumen 4A, que contiene las primeras secciones del capítulo 7. Está previsto que las nuevas secciones se publiquen inicialmente en números separados (aproximadamente 128 páginas), aproximadamente dos números por año (los números 0, 1, 2, 3 y 4 se publicaron de manera similar antes del lanzamiento del volumen 4A).

Lenguaje de ejemplo orientado a máquina

Los programas de ejemplo del libro utilizan un "ensamblador MIX" diseñado para ejecutarse en una computadora MIX hipotética. En la tercera edición, el MIX obsoleto fue reemplazado por MMIX , que tiene una arquitectura RISC completa . Existe un software que proporciona emulación de la máquina (M)MIX en computadoras estándar compatibles con IBM. La colección de compiladores GNU tiene la capacidad de compilar código C/C++ en la arquitectura de destino MMIX.

Muchos lectores se desaniman por el hecho de usar un lenguaje de bajo nivel, pero Knuth considera que su elección está justificada, ya que la unión a la arquitectura es necesaria para poder juzgar con precisión características del algoritmo como la velocidad, el consumo de memoria, y así. Sin embargo, como resultado de esta elección, el público objetivo se reduce en gran medida. Además, su alcance es limitado como un "libro de recetas" para programadores prácticos, muchos de los cuales no conocen el lenguaje ensamblador y, si lo saben, no tienen ganas de traducir algoritmos de bajo nivel del libro a lenguajes de alto nivel. . Muchas guías de práctica que presentan el mismo material de una manera más popular se publican por esta misma razón.

Crítica

La característica principal de la monografía de Knuth, que la distingue favorablemente de otros libros sobre programación, es el listón excepcionalmente alto de la calidad del material y la presentación académica, así como la profundidad del análisis de los temas en consideración. Gracias a ello, se ha convertido en un auténtico éxito de ventas y en un libro de referencia para todo programador profesional [6] . La revista American Scientist incluyó El arte de la programación en su lista de las 12 mejores monografías físicas y matemáticas del siglo XX [2] junto con los trabajos de Dirac sobre mecánica cuántica , Einstein sobre la teoría de la relatividad , Russell y Whitehead sobre los fundamentos . de matemáticas , y algunos otros [7] .

La portada de la tercera edición del primer volumen del libro contiene una cita de Bill Gates : "Si te consideras un programador realmente bueno... lee El arte de programar (Knuth)... Si puedes leer todo este trabajo , entonces definitivamente deberías enviarme un currículum" [8] .

Ediciones

originales

Tercero (actual)

En orden ascendente de números de volumen:

  • Volumen 1: Algoritmos fundamentales . Tercera edición (Reading, Massachusetts: Addison-Wesley, 1997), xx+650pp. ISBN 0-201-89683-4
  • Volumen 1, Fascículo 1: MMIX  : una computadora RISC para el nuevo milenio . (Addison-Wesley, 14 de febrero de 2005) ISBN 0-201-85392-2 (estará en la cuarta edición del volumen 1)
  • Volumen 2: Algoritmos seminuméricos . Tercera edición (Reading, Massachusetts: Addison-Wesley, 1997), xiv+762pp. ISBN 0-201-89684-2
  • Volumen 3: Clasificación y búsqueda . Segunda edición (Reading, Massachusetts: Addison-Wesley, 1998), xiv+780pp.+foldout. ISBN 0-201-89685-0
  • Volumen 4A: Algoritmos combinatorios, Parte 1 (Upper Saddle River, Nueva Jersey: Addison-Wesley, 2011), xvi+883pp. ISBN 0-201-03804-8
  • Volumen 4B: Algoritmos combinatorios, Parte 2 (Upper Saddle River, Nueva Jersey: Addison-Wesley, 2023), xviii+714pp. ISBN 0-201-03806-4
Anterior

Por fecha de publicación:

  • Volumen 1 , primera edición, 1968. 634pp. ISBN 0-201-03801-3 .
  • Volumen 2 , primera edición, 1969, xi+624pp, ISBN 0-201-03802-1 .
  • Volumen 3 , primera edición, 1973, xi + 723pp + página central, ISBN 0-201-03803-X
  • Volumen 1 , segunda edición, 1973, xiii+634pp, ISBN 0-201-03809-9 .
  • Volumen 2 , segunda edición, 1981, xiii+ 688pp. ISBN 0-201-03822-6 .
  • Volumen 4, Fascículo 2: Generación de todas las tuplas y permutaciones , (Addison-Wesley, 14 de febrero de 2005) v+127pp, ISBN 0-201-85393-0
  • Volumen 4, Fascículo 3: Generación de todas las combinaciones y particiones . (Addison-Wesley, 26 de julio de 2005) vi+150pp, ISBN 0-201-85394-9
  • Volumen 4, Fascículo 4: Generación de todos los árboles  - Historia de la generación combinatoria , (Addison-Wesley, 6 de febrero de 2006) vi + 120pp, ISBN 0-321-33570-8
  • Volumen 4, Fascículo 0: Introducción a los algoritmos combinatorios y funciones booleanas , (Addison-Wesley Professional, 28 de abril de 2008) vi+240pp, ISBN 0-321-53496-4
  • Volumen 4, Fascículo 1: Trucos y técnicas bit a bit; Diagramas de decisión binarios (Addison-Wesley Professional, 27 de marzo de 2009) viii+260pp, ISBN 0-321-58050-8
  • Volumen 4, Fascículo 6: Satisfiabilidad , (Addison-Wesley, 8 de diciembre de 2015) xiii+310pp, ISBN 978-0-13-439760-3
  • Volumen 4, Fascículo 5: Preliminares Matemáticos Redux; retroceder; Enlaces de baile , (Addison-Wesley, 16 de junio de 2017) 320pp, ISBN 978-0-13-467179-6

traducción al ruso

  • Knut D. E. El arte de la programación informática. Volumen 1. Algoritmos básicos - M.: Mir, 1976. - 735 p.
  • Knut D. E. El arte de la programación informática. Volumen 2. Algoritmos obtenidos - M.: Mir, 1977. - 724 p.
  • Knut D. E. El arte de la programación informática. Volumen 3. Clasificación y búsqueda - M.: Mir, 1978. - 844 p.
  • Knut D. E. El arte de la programación. Volumen 1. Algoritmos básicos = El arte de la programación informática. Volumen 1. Algoritmos fundamentales / ed. S. G. Trigub (Cap. 1), Yu. G. Gordienko (Cap. 2) e I. V. Krasikova (Sec. 2.5 y 2.6). - 3. - Moscú: Williams, 2002. - T. 1. - 720 p. — ISBN 5-8459-0080-8 .
  • Knut D. E. El arte de la programación informática, volumen 1, número 1. MMIX: una computadora RISC para el nuevo milenio. - M. : "Williams" , 2007. - 160 p. - ISBN 978-5-8459-1163-6 .
  • Knut D. E. El arte de la programación. Volumen 2. Los algoritmos resultantes = El arte de la programación informática. Volumen 2. Algoritmos seminuméricos / ed. L. F. Kozachenko (Capítulo 3, Secciones 4.6.4 y 4.7), V. T. Tertyshny (Capítulo 4) e I. V. Krasikov (Sección 4.6). - 3. - Moscú: Williams, 2001. - T. 2. - 832 p. — ISBN 5-8459-0081-6 .
  • Knut D. E. El arte de la programación. Volumen 3. Clasificación y búsqueda = El arte de la programación informática. Tomo 3. Ordenar y buscar / ed. V. T. Tertyshny (cap. 5) e I. V. Krasikov (cap. 6). - 2ª ed. - Moscú: Williams, 2007. - T. 3. - 832 p. — ISBN 5-8459-0082-1 ​​.
  • Knut D. E. El arte de la programación informática, Volumen 4, A. Algoritmos combinatorios, Parte 1 = El arte de la programación informática, Volumen 4A: Algoritmos combinatorios, Parte 1 / ed. Yu. V. Kozachenko. - 1. - Moscú: Williams, 2013. - T. 4. - 960 p. - ISBN 978-5-8459-1744-7 .

Libros relacionados

  • Martin Ruckert "The MMIX Supplement: Supplement to The Art of Computer Programming Volumes 1, 2, 3 by Donald E. Knuth", 1st Edition, (Addison-Wesley Professional, 15 de febrero de 2015), 224 págs., ISBN-13: 978 -0133992311,

Notas

  1. El arte de la programación informática . Consultado el 14 de junio de 2008. Archivado desde el original el 26 de febrero de 2009.
  2. 1 2 Morrison, Philip & Morrison, Phylis (1999), 100 o más libros que dieron forma a un siglo de ciencia , científico estadounidense (Sigma Xi, The Scientific Research Society) . — Vol. 87(6) , < http://www.americanscientist.org/bookshelf/pub/100-or-so-books-that-shaped-a-century-of-science > . Consultado el 11 de enero de 2008. Archivado el 28 de diciembre de 2008 en Wayback Machine . 
  3. David Walden. Donald E. Knuth - Ganador del premio A. M. Turing . ACM . Consultado el 6 de septiembre de 2016. Archivado desde el original el 19 de septiembre de 2017.
  4. Knuth: Jubilación . Consultado el 14 de junio de 2008. Archivado desde el original el 26 de junio de 2008.
  5. Historia de TeX - Grupo de Usuarios de TeX . Consultado el 14 de junio de 2008. Archivado desde el original el 7 de agosto de 2011.
  6. Donald Knuth El arte de la programación informática, volumen 1. Algoritmos básicos = El arte de la programación informática, volumen 1. Algoritmos fundamentales. - 3ra ed. - M .: "Williams", 2006. - S. 720. - ISBN 0-201-89683-4 , De los editores de la traducción rusa
  7. El arte de la programación informática . Consultado el 14 de junio de 2008. Archivado desde el original el 4 de septiembre de 2008.
  8. Bill Gates dijo una vez 'definitivamente envíame un currículum' si terminas este libro diabólicamente difícil  , Business Insider . Archivado desde el original el 1 de marzo de 2019. Consultado el 5 de noviembre de 2017.

Literatura

Enlaces