Greenspuns zehnte Programmierregel ist ein Aphorismus in Programmiererkreisen und insbesondere in Programmiersprachenkreisen , der besagt: [ 1 ] [ 2 ]

Jedes ausreichend komplizierte C- oder Fortran- Programm enthält eine ad hoc , informell spezifizierte, fehlerhafte und langsame Implementierung der Hälfte von Common Lisp .

Überblick

Die Regel bringt die Ansicht zum Ausdruck, dass die argumentierte Flexibilität und Erweiterbarkeit, die in die Programmiersprache Lisp eingebaut wurde , alle Funktionalitäten umfasst, die theoretisch zum Schreiben eines beliebigen komplexen Computerprogramms erforderlich sind, und dass die Merkmale, die zur Entwicklung und Verwaltung einer solchen Komplexität in anderen Programmiersprachen erforderlich sind, einer Teilmenge der in Lisp verwendeten Methoden entsprechen.

Andere Programmiersprachen, die zwar behaupten, einfacher zu sein, verlangen von den Programmierern, dass sie einen erheblichen Teil der benötigten Funktionalität, die in Lisp als standardisierte und bewährte Basis vorhanden ist, auf willkürliche Weise neu erfinden.

Man kann es auch als satirische Kritik an Systemen interpretieren, die komplexe, hochgradig konfigurierbare Subsysteme beinhalten. [ 3 ] Anstatt einen eigenen Interpreter für eine domänenspezifische Sprache einzubinden , schlägt Greenspuns Regel die Verwendung einer weit verbreiteten, voll ausgestatteten Sprache wie Lisp vor.

Paul Graham hebt außerdem den satirischen Charakter des Konzepts hervor, obwohl es auf realen Problemen basiert:

Das klingt wie ein Witz, aber es kommt in großen Programmierprojekten so häufig und in unterschiedlichem Ausmaß vor, dass es einen Namen für dieses Phänomen gibt: Greenspuns zehnte Regel. [ 4 ]

Die Regel wurde um 1993 von Philip Greenspun verfasst . Obwohl sie als seine zehnte Regel bekannt ist, ist diese Bezeichnung irreführend. Tatsächlich gibt es keine vorhergehenden Regeln, nur diese zehnte. Der Grund dafür liegt laut Greenspun darin, dass…

Tut mir leid, Han-Wen, aber es gibt keine neun vorhergehenden Gesetze. Ich wollte der Regel nur einen einprägsamen Namen geben. [ 5 ]

Der Hacker Robert Morris formulierte später einen Folgerungssatz , der die Menge der „hinreichend komplizierten“ Programme präzisiert, auf die die Regel Anwendung findet:

…einschließlich Common Lisp. [ 6 ]

Diese Folgerung bezieht sich scherzhaft auf die Tatsache, dass viele Common-Lisp-Implementierungen (insbesondere jene aus den frühen 1990er Jahren) auf einem Low-Level-Kern aus kompiliertem C basieren , wodurch das Problem des Bootstrappings umgangen wird , die Qualität jedoch selbst, zumindest im Vergleich zu einem sauber selbstkompilierenden Common Lisp, etwas schwanken kann. [ 7 ]

Siehe auch

Referenzen

  1. ^ Greenspun, Philip (1990–2017). „Philip Greenspuns Forschung“ . Abgerufen am 23.12.2020 .
  2. ^ Graham, Paul (Mai 2002). „Die Rache der Nerds“ . Abgerufen am 1. Mai 2023 .
  3. ^ „Greenspuns zehnte Regel: Beinhaltet jedes große Projekt einen Lisp-Interpreter?“ Stack Exchange . 12.04.2017 . Abgerufen am 01.05.2023 .
  4. ^ Graham, Paul (2004). Hacker & Maler: Große Ideen aus dem Computerzeitalter . O'Reilly Media . ISBN 978-0-596-00662-4Die
  5. ^ Greenspun, Philip (27. September 2003). „10. Regel der Programmierung“ .
  6. ^ „Zitate mit Sprachfehler“ . paulgraham.com .
  7. ^ Rhodes, Christophe (15.05.2008). SBCL: a Sanely-Bootstrappable Common Lisp (PDF) . Lecture Notes in Computer Science . Abgerufen am 01.05.2023 .