¿Qué artículos se consideran los clásicos de lectura obligatoria en informática?

Hace un tiempo, recopilé esta lista de una variedad de diferentes artículos de recomendación y debates en la web sobre los mejores artículos en informática. Yo solo leo algunos de estos. De vez en cuando leo otro, con la esperanza de superarlos todos eventualmente.

  • Principios de diseño detrás de Smalltalk – Daniel HH Ingalls
  • Lo que todo programador debe saber sobre la memoria – Ulrich Drepper
  • Time, Clocks and the Ordering of Events in a Distributed System – Leslie Lamport (Un amigo me dijo una vez que este es el artículo más frecuentemente citado en informática)
  • ¿Se puede liberar la programación del estilo de Von Neumann? Un estilo funcional y su álgebra de programas: John Backus (muy relevante hoy y el artículo que me llevó a buscar los clásicos)
  • Ir a la declaración considerada perjudicial – Dijkstra
  • Sobre los criterios que se utilizarán en la descomposición de sistemas en módulos – DL Parnas
  • Una breve historia de la ingeniería de software – Niklaus Wirth
  • Una nota sobre computación distribuida – Waldo, Wyant, Wollrath, Kendall
  • Un proceso de diseño racional: cómo y por qué fingirlo – David L. Parnas
  • Un formalismo universal de actor modular para la inteligencia artificial – Hewitt, Bishop, Steiger
  • Una base axiomática para la programación de computadoras
  • Una evaluación experimental de la asunción de independencia en la programación de múltiples versiones – Knight, Leveson
  • Argumentos y resultados – James Noble
  • Una anécdota sobre la inferencia de tipo ML – Andrew Keonig
  • Hermosa concurrencia – Simon Peyton Jones
  • Polimorfismo limitado por F para la programación orientada a objetos
  • Genéricos en el lenguaje de programación Java – Gilad Bracha
  • Mónadas para la programación funcional – Philip Wadler
  • Sobre los criterios que se utilizarán en la descomposición de sistemas en módulos – DL Parnas
  • Desarrollo del programa por refinamiento gradual – Niklaus Wirth
  • Funciones recursivas de expresiones simbólicas y su cálculo por máquina (Parte I)
  • La analogía de la memoria transaccional frente a la recolección de basura – Dan Grossman
  • ¿Por qué Pascal no es mi idioma favorito?
  • EWD1036 – Sobre la crueldad de enseñar realmente ciencias de la computación
  • Cultivando un idioma – Guy L. Steele Jr
  • Lisp – Buenas noticias, malas noticias, cómo ganar en grande – Richard P. Gabriel
  • Gestión del desarrollo de grandes sistemas de software – Dr. Winston W. Royce
  • Por qué la programación es un buen medio para expresar ideas mal entendidas y mal formuladas – Minsky, 1967
  • Notas sobre la programación en C – Rob Pike
  • Sobre el diseño de lenguajes de programación independientes de la máquina – Dr. EW Dijkstra
  • Sobre la economía de hacer matemáticas
  • Programación como una experiencia – La inspiración para uno mismo – Smith y Ungar
  • Variación protegida – La importancia de estar cerrado – Craig Larman
  • Estructuras de datos puramente funcionales – Chris Okasaki
  • Integridad relacional de los sublenguajes de la base de datos – EF Codd
  • Los siguientes 700 lenguajes de programación – PJ Landin
  • El camino de Testivus
  • Lo que todo informático debería saber sobre la aritmética de coma flotante

Todos estos están disponibles en PDF en la web si realmente los busca. Sin embargo, si no puede encontrar uno de ellos, envíeme un mensaje. Los tengo todos en PDF.

Discurso de aceptación del Premio Turing de Ken Thompson en 1984 ” Reflexiones sobre la confianza en la confianza

“¿Hasta qué punto se debe confiar en una declaración de que un programa está libre de troyanos?
¿caballos? Quizás sea más importante confiar en las personas que escribieron el software.

El discurso completo se puede encontrar aquí: http://www.ece.cmu.edu/~ganger/7

El documento fue uno de los primeros documentos importantes en describir los problemas de puerta trasera de la caja negra, y señala que la confianza es relativa .

Describe un mecanismo de puerta trasera muy inteligente basado en el hecho de que las personas solo revisan el código fuente (escrito por humanos) y no el código de máquina compilado . Un programa llamado compilador se usa para crear el segundo a partir del primero, y generalmente se confía en el compilador para hacer un trabajo honesto.

Su artículo describe una versión modificada de Unix C compilador que haría:

  • Ponga una puerta trasera invisible en el comando de inicio de sesión de Unix cuando notó que el programa de inicio de sesión se estaba compilando, y como giro
  • Agregue también esta característica de manera indetectable a futuras versiones del compilador luego de su compilación.

“Nuevas direcciones en criptografía”
IEEE TRANSACCIONES SOBRE LA TEORÍA DE LA INFORMACIÓN, VOL. IT-22, NO. 6, NOVIEMBRE 1976Whitfield Diffie y Martin E. Hellman
www-ee.stanford.edu/~hellman/publications/24.pdf

More Interesting

¿Cuál es el estado del arte en redes anónimas abiertas P2P optimizadas para transmitir música o video?

¿Quiénes son algunos doctores en informática líderes en la industria?

¿Qué consejo me das, si realmente quiero comenzar a programar?

Quiero construir un dron propio desde cero. Como experto en CS, sin conocimientos de mecánica / aeronáutica y electrónica avanzada, ¿cuál debería ser mi camino por delante?

¿Puedo hacer investigación en informática si no estoy interesado en las matemáticas?

¿Se puede usar Matlab Computer vision para productos a gran escala?

¿Por qué el PageRank es muy alto para los nodos en un gráfico con indegree cero?

¿Cómo debe un junior de Ingeniería de Software llegar a un Científico de Investigación?

¿Hay algún artículo traducido o escrito escrito por autores japoneses sobre la computadora de quinta generación ICOT encabezada por el gobierno japonés en la década de 1980?

¿Ha habido algún progreso en la arquitectura de subsunción desde que se introdujo?

¿Qué hacen los investigadores de aprendizaje automático?

¿Es el análisis no asintótico de la complejidad computacional un área activa de investigación, o lo ha sido alguna vez en el pasado?

¿Por qué el aprendizaje de la red neuronal se ralentiza a medida que el error disminuye? ¿Esto necesita ser el caso?

¿Por qué es que cuando se requiere que los estudiantes universitarios (CS, IT o IS) realicen investigaciones / proyectos / tesis, siempre se trata del diseño y desarrollo de sistemas?

¿Qué estructuras de datos son más eficientes que las tablas hash?