Hay momentos que amplían lo que creemos que es posible en el desarrollo de software y, por lo tanto, cambian la estructura de todo lo que hacemos como desarrolladores. Ciertos documentos históricos capturan los cambios de paradigma más cruciales en la tecnología informática y no tienen precio. Este artículo analiza el último siglo (casi) de desarrollo de software, codificado en artículos que todo desarrollador debería leer. Nueve artículos que definen la historia del desarrollo de software Sobre números computables, con una aplicación al problema de Entscheidungs ​​Primer borrador de un informe sobre las especificaciones EDVAC para el sistema de traducción de fórmulas matemáticas de IBM, FORTRAN Ir a Declaración considerada dañina Nuevas direcciones en criptografía El Manifiesto Arquitectónico Gnu Estilos y diseño de arquitecturas de software basadas en red Bitcoin: un sistema de efectivo electrónico entre pares TensorFlow: un sistema para el aprendizaje automático a gran escala 1. Alan Turing: sobre números computables, con una aplicación al problema de Entscheidungs ​​(1936)Aquí es el arquetipo de un documento paradigmático. La escritura de Turing tiene el carácter de una mente que explora sobre el papel un terreno incierto y encuentra los puntos de referencia para desarrollar un mapa. Es más, este mapa en particular nos ha sido útil durante casi cien años. El artículo de Turing es legible y tiene un estilo casi narrativo, al menos para un artículo técnico. Plantea preguntas difíciles sobre qué hace que un número sea computable y profundiza en algunas matemáticas complicadas. Pero el modelo general –de una serie ilimitada de cuadrados en una cinta (una cinta de Turing) que puede mover la “cabeza” (puntero)– ​​es sorprendente, incluso hoy. Turing describe la esencia de todo el mundo de las máquinas de información que le siguieron. La elegancia de la idea de la máquina de Turing reside en su capacidad de convertir las matemáticas en informática y la informática en matemáticas. Sigue siendo un modelo útil para describir la complejidad de los sistemas. Sobre números computables es una lectura obligada en muchos niveles, incluso como continuación del trabajo de Gödel sobre lo incompleto. Sólo el descubrimiento de la idea de la cinta y la máquina hace que valga la pena. John von Neumann: Primer borrador de un informe sobre el EDVAC (1945) La propuesta de Von Neumann para la arquitectura EDVAC (Computadora automática variable discreta electrónica) es el tipo de avance que podría hacerte pensar, al principio, «eso no era ya obvio». ?” Lo que no era obvio era que la memoria de una computadora pudiera almacenar datos e instrucciones juntos. En otras palabras, la memoria podría contener información que también fuera ejecutable. Sin embargo, más allá de la idea central está la sensación de que un escritor define lo que era posible para las máquinas en ese momento. Es un salto enorme desde la discusión principalmente filo-matemática de Turing a la discusión práctica de von Neumann sobre la información «impresa magnéticamente en cinta o alambre de acero». Este trabajo tiene todo tipo de ideas interesantes en marcha, incluidas ideas sobre el manejo de errores en la computación: «El dispositivo puede reconocer automáticamente las averías más frecuentes, indicar su presencia y ubicación mediante señales visibles desde el exterior y luego detenerse”. El artículo de Von Neumann se encuentra justo en la puerta de entrada de las computadoras modernas y describe de una manera mitad real y mitad especulativa la naturaleza de los dispositivos que utilizamos hoy en día. Es por eso que la arquitectura general de las computadoras todavía se conoce como arquitectura von Neumann. El artículo pregunta cuál sería el carácter de una computadora general, ya que «se aplica tanto al dispositivo físico como a las disposiciones aritméticas y lógicas que gobiernan su funcionamiento». La respuesta de Von Neumann fue un esbozo de la computadora digital moderna.3 John Backuss et al.: Especificaciones para el IBM Mathematical FORmula TRANSlating System, FORTRAN (1954) Aunque la especificación FORTRAN no se publicó públicamente, ejerció una fuerte influencia sobre el diseño del lenguaje. y el software en general.FORTRAN, ahora un antiguo progenitor entre los lenguajes de programación, fue un gran avance en los lenguajes de nivel superior para su época. Fue el primer lenguaje verdaderamente de propósito general.La importancia de FORTRAN queda clara cuando recuerdas que había sido Sólo han pasado 28 años desde que Turing imaginó una computadora en 1936. La especificación FORTRAN da una gran sensación del momento y ayudó a crear un modelo que los diseñadores de lenguajes han adoptado desde entonces. Capta la sensación floreciente de lo que entonces se estaba volviendo posible con el hardware y el software. 4. Edsger Dijkstra: Ir a la declaración considerada dañina (1968) Además de darnos el meme «considerado dañino», el artículo de Edsger Dijkstra de 1968 no sólo identifica la superioridad de los bucles y los flujos de control condicional sobre la difícil de seguir. declaración, pero instiga una nueva forma de pensar y hablar sobre la calidad del código. El trabajo de Dijkstra nos brinda todo un entorno, una actitud hacia la programación y una forma de ver la disciplina en una página y media. Considere esto: para eso Por esta razón deberíamos hacer (como programadores sabios conscientes de nuestras limitaciones) todo lo posible para acortar la brecha conceptual entre el programa estático y el proceso dinámico, para hacer la correspondencia entre el programa (dispersado en el espacio de texto) y el proceso (dispersado en el espacio del texto). tiempo) lo más trivial posible. Aquí, estamos pensando no sólo en la estructura del software en tiempos de escritura y ejecución, sino también en el carácter del trabajo y nuestro papel como seres humanos en él. Esto nos da una idea de la cultura de la ingeniería de software como un esfuerzo apasionante; una cultura que sustenta todo lo que hacemos en software hoy en día. El breve tratado de Dijkstra también ayudó a marcar el comienzo de la generación de lenguajes de orden superior, acercándonos un paso más a los lenguajes de programación que utilizamos hoy. Diffie-Hellman: New Directions in Cryptography (1976) El artículo de Diffie-Hellman, de Whitfield Diffie y Martin E. Hellman, se destaca de tres maneras notables: La propuesta parece imposible al principio. La solución es elegante y fácil de entender. Cambió el curso de la historia. Si ya sabe cómo funciona el intercambio de claves Diffie-Hellman, entonces sabrá por qué este documento está en nuestra lista. El descubrimiento y la invención del cifrado asimétrico/de clave pública sentó las bases para todas las comunicaciones seguras en Internet (como HTTPS) y fue la base para el libro blanco de Bitcoin 32 años después. Cuando aterrizó, New Directions in Cryptography desató un Batalla épica entre la comunicación abierta y las agencias gubernamentales de espionaje como la NSA. Fue un momento extraordinario en el software y en la historia en general, y lo tenemos por escrito. Los autores también parecieron comprender la naturaleza radical de su propuesta; después de todo, las palabras iniciales del artículo fueron: “Hoy nos encontramos al borde de una revolución en criptografía”.6. Richard Stallman: The Gnu Manifesto (1985) El manifiesto GNU es, en cierto sentido, el manifiesto del software de código abierto. También es una audaz afirmación del espíritu de programación por amor a la programación que muchos desarrolladores adoptan hoy en día: GNU, que significa Gnu’s Not Unix, es el nombre del sistema de software completo compatible con Unix que estoy escribiendo. que puedo regalarlo gratis a todos los que puedan usarlo. Varios otros voluntarios me están ayudando. Se necesitan mucho aportes de tiempo, dinero, programas y equipos. Aquí está la premisa básica del código abierto. (Nótese el nombre ingenioso y autorreferencial, otro tropo de OSS). El artículo continúa describiendo un proyecto audaz (un sistema operativo de calidad y disponible de forma generalizada para que cualquiera lo use) y lo respalda con una discusión filosófica. Muy legible y divertido. (incluso un poco sabelotodo) el manifiesto argumenta en contra del modelo de código cerrado y pago por licencia que dominaba la industria en ese momento. Como la historia ha demostrado, increíblemente, este fue un caso en el que ganaron los valientes rebeldes. El software de código abierto está en todas partes hoy en día, y programar por amor a él, al tiempo que se gana la vida con él, es una forma de vida. El Manifiesto Gnu todavía está lo suficientemente actualizado hoy en día como para leerse como si hubiera sido escrito para un GitHub. proyecto en 2023. Seguramente es el más entretenido de los artículos de esta lista.7. Roy Fielding: Estilos arquitectónicos y diseño de arquitecturas de software basadas en red (2000) Notarás que estoy manipulando un poco las fechas. Aunque el artículo de Fielding que presenta el estilo arquitectónico REST llegó al año 2000, resumió las lecciones aprendidas en el entorno de programación distribuida de los años 90 y luego propuso un camino a seguir. En este sentido, creo que es el título de dos décadas de historia del desarrollo de software. Este documento reúne todo lo que los desarrolladores aprendieron de los inicios de Internet y ofrece una solución a sus problemas más apremiantes. REST es importante porque supone un intento bien dirigido al corazón de la complejidad del software moderno. Es por eso que ha seguido siendo la piedra de toque para la toma de decisiones arquitectónicas durante dos décadas. La discusión de Fielding sobre la complejidad y el diseño en su aplicación a la arquitectura web es una lectura adecuada para los desarrolladores de hoy.8. Satoshi Nakamoto: Bitcoin: A Peer-to-Peer Electronic Cash System (2008) El ahora famoso artículo de Nakamoto fue escrito por una persona, grupo de personas o entidad desconocida. Reúne todo el estado de la técnica en monedas digitales y resume una solución a sus principales problemas. En particular, el documento de Bitcoin aborda el problema del doble gasto. Este es un documento breve y accesible. Hace un gran trabajo al esbozar la cuestión del doble gasto en un lenguaje sencillo, luego ofrece una respuesta conceptual y luego profundiza en algunos de los detalles de implementación de una solución. No necesito contarles sobre el impacto del documento, o el furor que ha desatado desde entonces. Más allá de la simple noción de una moneda como Bitcoin, el documento sugirió un motor que podría aprovechar la criptografía para producir máquinas virtuales distribuidas como Ethereum. El documento de Bitcoin es un maravilloso ejemplo de cómo presentar una solución simple y limpia a un lío de complejidad aparentemente desconcertante. .9. Martin Abadi et al.: TensorFlow: A System for Large-Scale Machine Learning (2015) Si está buscando un hito importante en el camino hacia los modernos sistemas de IA con modelos de lenguaje grande (LLM), el documento técnico de TensorFlow lo es. Es relevante como discusión sobre un marco generalizado de aprendizaje automático e introduce TensorFlow, una plataforma emblemática de IA. Aunque este artículo se sumerge libremente en el extremo complejo del conjunto del aprendizaje automático, también ofrece destilaciones sucintas como: “ Dada una secuencia de palabras, un modelo de lenguaje predice la siguiente palabra más probable”. Este es un resumen conciso de lo que realmente está sucediendo en la IA del chat moderno. Este artículo, escrito por Martín Abadi y una serie de colaboradores demasiado extensos para enumerarlos, se centra en los detalles de TensorFlow, especialmente en la creación de una plataforma de IA más generalizada. En el proceso, proporciona un excelente recorrido de alto nivel por los últimos avances en aprendizaje automático. Excelente lectura para los curiosos del aprendizaje automático y aquellos que buscan una entrada en lenguaje sencillo a una comprensión más profunda del campo. Léelo aquí. Conclusión Quizás la conclusión más valiosa de esta gira de brillantez es que siempre hay espacio para nuevas ideas y enfoques. Ahora mismo, alguien, en algún lugar, está trabajando en una forma de hacer las cosas que revolucionará el mundo del desarrollo de software. Tal vez seas tú, con un artículo que podría terminar ocupando el puesto número 10 en esta lista. Pero no se apresure a descartar ideas descabelladas, incluida la suya propia. Copyright © 2024 IDG Communications, Inc.

Source link