Greenspuns tiende regel er en programmeringsaforisme , der siger: [1] [2]
Ethvert tilstrækkeligt komplekst C- eller Fortran -program indeholder en nyskrevet, uspecificeret, buggy og langsom implementering af halvdelen af Common Lisp-sproget .
Originaltekst (engelsk)[ Visskjule] Ethvert tilstrækkeligt kompliceret C- eller Fortran-program indeholder en ad hoc, uformelt specificeret, fejlbehæftet, langsom implementering af halvdelen af Common Lisp.Reglen blev formuleret omkring 1993 af Philip Greenspan . Selvom det er kendt som den "tiende", er der ingen regler, der går forud for det. Greenspan selv forklarede navnet som følger: [3]
Jeg prøvede bare at give reglen et iørefaldende navn.
Originaltekst (engelsk)[ Visskjule] Jeg prøvede bare at give reglen et mindeværdigt navn.Pointen med reglen er, at programmører, begrænset til sprog på lavt niveau som C , overvinder sprogets begrænsninger ved at indføre analoger af egenskaber, der er iboende i mere udtryksfulde sprog som Lisp , i teksten til programmer .
Efterfølgende uddybede hackeren Robert Morris : [4]
... inklusive Common Lisp selv .
Originaltekst (engelsk)[ Visskjule] ...herunder almindelig Lisp.Præciseringen kan ses som en kommentar til vanskeligheden ved at skabe en effektiv implementering af Common Lisp-sproget , eller blot som en legende beskrivelse af , hvordan Lisps evalfunktion fungerer .
Ethvert tilstrækkeligt komplekst Lisp -program vil sandsynligvis indeholde en langsom implementering af halvdelen af Prolog -sproget .
Originaltekst (engelsk)[ Visskjule] Ethvert tilstrækkeligt kompliceret LISP-program vil indeholde en langsom implementering af halvdelen af Prolog.Denne formulering [5] afspejler det faktum, at Prolog -programmer indeholder øer i Lisp-stil , mens Lisp-programmer indeholder øer i Prolog -stil .
Med udbredelsen af distribueret programmering og populariseringen af ideer implementeret i Erlang -sproget foreslog Robert Virding denne mulighed: [6]
Ethvert tilstrækkeligt komplekst distribueret program indeholder en nyskrevet, uspecificeret, buggy og langsom implementering af halvdelen af Erlang-sproget.
Originaltekst (engelsk)[ Visskjule] Ethvert tilstrækkeligt kompliceret samtidig program på et andet sprog indeholder en ad hoc uformelt specificeret fejlbehæftet langsom implementering af halvdelen af Erlang.Denne korrektion kaldes også Armstrong-konsekvensen.
Reglen varieres ofte ved at erstatte ordene "Common Lisp" med talerens foretrukne funktionelle sprog (f.eks . Scheme eller Haskell ). Det kan opsummeres, at:
Enhver tilstrækkelig kompleks platform indeholder en nyskrevet, uspecificeret, buggy og langsom implementering af et halvt funktionelt sprog.
Originaltekst (engelsk)[ Visskjule] Enhver tilstrækkeligt kompliceret platform indeholder en ad hoc, uformelt specificeret, fejlbehæftet, langsom implementering af halvdelen af et funktionelt programmeringssprog.Almindelig Lisp | |||||||
---|---|---|---|---|---|---|---|
Implementeringer |
| ||||||
Software |
| ||||||
Publikationer |
| ||||||
designudvalget |
| ||||||
Andet |
|
Lisp | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Egenskaber |
| ||||||||||||||
Implementeringer |
| ||||||||||||||
Hardware |
| ||||||||||||||
Fællesskab |
| ||||||||||||||
|