La décima regla de programación de Greenspun es un aforismo en la programación de computadoras y especialmente en los círculos del lenguaje de programación que dice: [1] [2]
Cualquier programa C o Fortran suficientemente complicado contiene una implementación lenta ad hoc , especificada informalmente, con errores y de la mitad de Common Lisp .
Descripción general
La regla expresa la opinión de que la flexibilidad y extensibilidad argumentada diseñada en el lenguaje de programación Lisp incluye toda la funcionalidad que se necesita teóricamente para escribir cualquier programa de computadora complejo, y que las características requeridas para desarrollar y administrar tal complejidad en otros lenguajes de programación son equivalentes a algunas. subconjunto de los métodos utilizados en Lisp.
Otros lenguajes de programación, si bien afirman ser más simples, requieren que los programadores reinventen de manera aleatoria una cantidad significativa de funcionalidad necesaria que está presente en Lisp como una base estándar probada en el tiempo.
También se puede interpretar como una crítica satírica de sistemas que incluyen subsistemas complejos y altamente configurables. [3] En lugar de incluir un intérprete personalizado para algún lenguaje específico de dominio , la regla de Greenspun sugiere usar un lenguaje ampliamente aceptado y con todas las funciones como Lisp.
Paul Graham también destaca la naturaleza satírica del concepto, aunque basado en problemas reales:
Eso suena a broma, pero sucede tan a menudo en diversos grados en grandes proyectos de programación que existe un nombre para el fenómeno, la Décima Regla de Greenspun. [4]
La regla fue escrita alrededor de 1993 por Philip Greenspun . Aunque se conoce como su décima regla, de hecho no hay reglas precedentes, solo la décima. La razón de esto según Greenspun:
Lo siento, Han-Wen, pero no hay nueve leyes anteriores. Solo estaba tratando de darle a la regla un nombre memorable. [5]
El hacker Robert Morris declaró más tarde un corolario , que aclara el conjunto de programas "suficientemente complicados" a los que se aplica la regla:
… Incluido Common Lisp. [6]
Este corolario se refiere en broma al hecho de que muchas implementaciones de Common Lisp (especialmente las disponibles a principios de la década de 1990) dependen de un núcleo de C compilado de bajo nivel , que evita el problema del bootstrapping pero puede ser en sí mismo algo variable en calidad, al menos en comparación a una forma limpia autoalojamiento Common Lisp. [7]
El ingeniero de software Stewart Milberger luego comenzó una prueba del corolario de Morris:
Dejé de portar Open Inventor a Common Lisp porque estaba implementando una implementación ad-hoc con errores y pobremente especificada de espacios de nombres en Common Lisp (el primer paso de Scheming Pony en una prueba del Corolario de Morris del décimo de Greeenspun) como lo había hecho Open Inventor antes de que los espacios de nombres de C ++ fueran compatible, como plantillas y métodos múltiples (todavía no, creo). Alguien también le dice a Stroustrup que mire las macros Common Lisp y detenga la locura de las plantillas. [8]
Esta prueba se refiere en broma al hecho de que Common Lisp tiene un sistema relativamente primitivo para dividir símbolos llamados 'paquetes' y también que podría haber un Greenspun's 11, vis-a-vis C ++.
Ver también
Referencias
- ^ Greenspun, Philip (1990-2017). "Investigación de Philip Greenspun" . Consultado el 23 de diciembre de 2020 .
- ^ Graham, Paul (mayo de 2002). "La venganza de los nerds" . Consultado el 24 de octubre de 2019 .
- ^ "Décima regla de Greenspun, ¿todos los grandes proyectos incluyen un intérprete Lisp?" . Stack Exchange . 2017-04-12 . Consultado el 23 de diciembre de 2020 .
- ^ Graham, Paul (2004). Hackers y pintores: grandes ideas de la era informática . O'Reilly Media . ISBN 978-0-596-00662-4.
- ^ Greenspun, Philip (27 de septiembre de 2003). "Décima regla de programación" .
- ^ "Cotizaciones Lisp" . paulgraham.com .
- ^ Rhodes, Christophe (15 de mayo de 2008). "SBCL: un Common Lisp de arranque razonablemente" (PDF) . Apuntes de la clase en Ciencias de la Computación (Sistemas Autosustentables: Primer Taller) . Consultado el 23 de diciembre de 2020 .
- ^ Pony intrigante (2020-02-19). "Vulcanizando" . lista de correo libre-riscv-dev . Consultado el 23 de diciembre de 2020 .