¿Cuál crees que es la mejor obra maestra de software hoy en día?

Impresionante pregunta! Siempre he deseado que hubiera un Premio Pulitzer para software, o un Premio Nobel para Literatura de Software. Puede animar a las personas a escribir software que sea más legible y más funcional.

Nomino la Biblioteca de plantillas estándar (C ++) de Alexander Stepanov, un poema de software épico si alguna vez hubo uno.

El STL es un conjunto de clases de plantillas que proporcionan estructura de datos eficiente y reutilizable, y funciones de plantilla que proporcionan algoritmos que se ejecutan sobre estas estructuras de datos. Los punteros STL generalizados en el concepto de iterador, y dedicaron los algoritmos para trabajar sobre iteradores que tenían propiedades específicas, no en las estructuras de datos directamente. Cuando Stepanov diseñó el STL, los lenguajes de programación no venían con una biblioteca de algoritmos y estructuras de datos preconstruidos. Cada gran proyecto tenía su propio árbol a medida y estructuras de datos de listas vinculadas, y algoritmos codificados directamente en la fuente. Cuando Stepanov escribió el STL, ni siquiera había compiladores de C ++ que pudieran construirlo. Tuvo que trabajar en seco todo el diseño. La escritura fue, por lo tanto, también una hazaña heroica mental.

Pero lo mejor de STL es que cada algoritmo tiene solo unas pocas líneas de longitud. Aunque las implementaciones posteriores lograron enturbiarlas como una mala traducción, los originales fueron hermosos.

Desde la introducción de la STL hace más de 2 años, toda una generación de desarrolladores de C ++ ha podido olvidar en gran medida su clase de Algoritmos y Estructuras de Datos, y trabajar exclusivamente con la STL.

[editar]

No estoy de acuerdo con la respuesta del señor Fidelman en la mayoría de los aspectos. Un martillo tiene utilidad y es popular, pero podría decirse que no es una obra maestra. Existen miles de variaciones en el diseño básico del martillo, ninguna destaca por su extraordinaria concepción y ejecución. También hay muchas novelas, pinturas, esculturas, etc., pero reconocemos que ciertas piezas están por encima de todas las demás. Apache es una herramienta útil, pero ¿es hermosa? WordPress es popular, pero ¿es especial? No conozco Erlang lo suficiente como para saber si es especial, pero hay muchos lenguajes de programación funcionales. Para seleccionar uno, tendría que destacarse de su tipo. ¿Lo hace? ¿En qué manera? De manera similar con CouchDB; ¿De qué manera se destaca de todas las demás bases de datos? ¿De qué manera es elegante?

Si queremos utilizar la utilidad o la popularidad para medir obras maestras, podríamos dejar que una máquina haga la clasificación. Entonces podríamos discutir sin cesar sobre la metodología de medición, pero ¿el resultado sería satisfactorio de alguna manera? Un concurso para los “más populares” tiene parámetros muy diferentes que una búsqueda de obras maestras.

Bueno, permítanme decir primero lo que llamaría una “obra maestra”: un programa que es históricamente significativo, elegante de alguna manera y escrito por un pequeño número de personas. Cualquier lista de dichos programas será necesariamente subjetiva e incompleta, pero incluiría:

  • LISP por John McCarthy
  • Emacs por Richard Stallman. Probablemente también GCC.
  • Unix de Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy y Joe Ossanna en los Laboratorios Bell
  • TeX por Donald Knuth
  • Smalltalk por Alan Kay, Dan Ingalls, et. Alabama. en Xerox Parc
  • Git por Linus Torvalds: el kernel de Linux fue notable, pero git fue y sigue siendo magnífico

Como plataforma: Erlang / OTP. No hay nada que se acerque incluso para soportar sistemas de alta disponibilidad masivamente concurrentes.

CouchDB: por su elegancia e implementación.

El demonio http Apache: la web descansa sobre sus hombros.

WordPress: el éxito habla por sí mismo.

ADICIÓN:

Perl y CPAN (o CPAN y Perl): para implementar realmente software modular de una manera fluida. La forma en que CPAN permite una instalación completamente automatizada, y la prueba de módulos es elegante y mágica. Puntos de bonificación para la inclusión del sistema Perl de pruebas de regresión completas en el momento de la instalación / actualización. (El sistema de empaquetado de Debian merece una mención honorífica por su gestión de dependencia).