Greenspuns tionde regel är en programmeringsaforism som säger : [1] [2]
Alla tillräckligt komplexa C- eller Fortran- program innehåller en nyskriven, ospecificerad, buggig och långsam implementering av hälften av Common Lisp-språket .
Originaltext (engelska)[ visaDölj] Alla tillräckligt komplicerade C- eller Fortran-program innehåller en ad hoc, informellt specificerad, buggaren, långsam implementering av hälften av Common Lisp.Regeln formulerades omkring 1993 av Philip Greenspan . Även om det är känt som den "tionde" finns det inga regler som föregår det. Greenspan själv förklarade namnet på följande sätt: [3]
Jag försökte bara ge regeln ett catchy namn.
Originaltext (engelska)[ visaDölj] Jag försökte bara ge regeln ett minnesvärt namn.Poängen med regeln är att programmerare, begränsade till lågnivåspråk som C , övervinner språkets begränsningar genom att i programtexten introducera analoger av egenskaper som är inneboende i mer uttrycksfulla språk som Lisp .
Därefter utvecklade hackaren Robert Morris : [4]
… inklusive Common Lisp själv .
Originaltext (engelska)[ visaDölj] … inklusive Common Lisp.Förtydligandet kan ses som en kommentar till svårigheten att skapa en effektiv implementering av Common Lisp-språket , eller helt enkelt som en lekfull beskrivning av hur Lisps evalfunktion fungerar .
Alla tillräckligt komplexa Lisp- program kommer förmodligen att innehålla en långsam implementering av hälften av Prolog- språket .
Originaltext (engelska)[ visaDölj] Alla tillräckligt komplicerade LISP-program kommer att innehålla en långsam implementering av hälften av Prolog.Denna formulering [5] återspeglar det faktum att Prolog -program innehåller öar i Lisp-stil , medan Lisp-program innehåller öar i Prolog -stil .
Med spridningen av distribuerad programmering och populariseringen av idéer implementerade på Erlang- språket föreslog Robert Virding detta alternativ: [6]
Alla tillräckligt komplexa distribuerade program innehåller en nyskriven, ospecificerad, buggig och långsam implementering av hälften av Erlang-språket.
Originaltext (engelska)[ visaDölj] Alla tillräckligt komplicerade samtidiga program på ett annat språk innehåller en ad hoc informellt specificerad bugg-driven långsam implementering av hälften av Erlang.Denna korrigering kallas även Armstrong-konsekvensen.
Regeln varieras ofta genom att orden "Common Lisp" ersätts med talarens favoritspråk (t.ex. Scheme eller Haskell ). Det kan sammanfattas att:
Varje tillräckligt komplex plattform innehåller en nyskriven, ospecificerad, buggig och långsam implementering av ett halvt funktionellt språk.
Originaltext (engelska)[ visaDölj] Alla tillräckligt komplicerade plattformar innehåller en ad hoc, informellt specificerad, buggfylld, långsam implementering av hälften av ett funktionellt programmeringsspråk.Vanlig Lisp | |||||||
---|---|---|---|---|---|---|---|
Genomföranden |
| ||||||
programvara |
| ||||||
Publikationer |
| ||||||
designkommitté |
| ||||||
Övrig |
|
Läspa | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Egenskaper |
| ||||||||||||||
Genomföranden |
| ||||||||||||||
Hårdvara |
| ||||||||||||||
gemenskap |
| ||||||||||||||
|