Greenspunovo desáté pravidlo je programovací aforismus , který říká : [1] [2]
Jakýkoli dostatečně složitý program v C nebo Fortranu obsahuje nově napsanou, nespecifikovanou, chybovou a pomalou implementaci poloviny jazyka Common Lisp .
Původní text (anglicky)[ zobrazitskrýt] Jakýkoli dostatečně komplikovaný program v jazyce C nebo Fortran obsahuje ad hoc, neformálně specifikovanou, pomalou implementaci poloviny Common Lisp s chybami.Pravidlo bylo formulováno kolem roku 1993 Philipem Greenspanem . Přestože je známá jako „desátá“, neexistují žádná pravidla, která by jí předcházela. Greenspan sám vysvětlil název takto: [3]
Jen jsem se snažil dát pravidlu chytlavý název.
Původní text (anglicky)[ zobrazitskrýt] Jen jsem se snažil dát pravidlu zapamatovatelné jméno.Smyslem pravidla je, že programátoři, omezení na nízkoúrovňové jazyky, jako je C , překonávají omezení jazyka tím, že do textu programů zavádějí analogy vlastností, které jsou vlastní expresivnějším jazykům, jako je Lisp .
Následně hacker Robert Morris rozvedl: [4]
…včetně samotného Common Lisp .
Původní text (anglicky)[ zobrazitskrýt] …včetně Common Lisp.Objasnění lze chápat jako komentář k obtížnosti vytvoření efektivní implementace jazyka Common Lisp nebo jednoduše jako hravý popis toho, jak funguje funkce Lisp eval .
Jakýkoli dostatečně složitý program Lisp bude pravděpodobně obsahovat pomalou implementaci poloviny jazyka Prolog .
Původní text (anglicky)[ zobrazitskrýt] Každý dostatečně komplikovaný LISP program bude obsahovat pomalou implementaci poloviny Prologu.Tato formulace [5] odráží skutečnost, že programy Prolog obsahují ostrovy ve stylu Lisp , zatímco programy Lisp obsahují ostrovy ve stylu Prolog .
S rozšířením distribuovaného programování a popularizací myšlenek implementovaných v jazyce Erlang navrhl Robert Virding tuto možnost: [6]
Jakýkoli dostatečně komplexní distribuovaný program obsahuje nově napsanou, blíže nespecifikovanou, chybovou a pomalou implementaci poloviny jazyka Erlang.
Původní text (anglicky)[ zobrazitskrýt] Jakýkoli dostatečně komplikovaný souběžný program v jiném jazyce obsahuje ad hoc neformálně specifikovanou pomalou implementaci poloviny Erlangu s chybami.Tato oprava se také nazývá Armstrongův důsledek.
Pravidlo se často mění nahrazením slov „Common Lisp“ oblíbeným funkčním jazykem mluvčího (např . Scheme nebo Haskell ). Dá se shrnout, že:
Jakákoli dostatečně komplexní platforma obsahuje nově napsanou, nespecifikovanou, chybovou a pomalou implementaci poloviny funkčního jazyka.
Původní text (anglicky)[ zobrazitskrýt] Každá dostatečně komplikovaná platforma obsahuje ad hoc, neformálně specifikovanou, pomalou implementaci poloviny funkcionálního programovacího jazyka s chybami.Lisp obecný | |||||||
---|---|---|---|---|---|---|---|
Implementace |
| ||||||
Software |
| ||||||
Publikace |
| ||||||
návrhová komise |
| ||||||
jiný |
|
Lisp | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Charakteristika |
| ||||||||||||||
Implementace |
| ||||||||||||||
Hardware |
| ||||||||||||||
Společenství |
| ||||||||||||||
|