A zecea regulă a lui Greenspun este un aforism de programare care spune: [1] [2]
Orice program C sau Fortran suficient de complex conține o implementare nou scrisă, nespecificată, greșită și lentă a jumătate din limbajul Common Lisp .
Text original (engleză)[ arataascunde] Orice program C sau Fortran suficient de complicat conține o implementare lentă ad-hoc, specificată informal, plină de erori, a jumătate din Common Lisp.Regula a fost formulată în jurul anului 1993 de Philip Greenspan . Deși este cunoscut drept „al zecelea”, nu există reguli care îl precedă. Greenspan însuși a explicat numele după cum urmează: [3]
Încercam doar să dau regulii un nume captivant.
Text original (engleză)[ arataascunde] Încercam doar să dau regulii un nume memorabil.Ideea regulii este că programatorii, limitați la limbaje de nivel scăzut precum C , depășesc limitările limbajului introducând în textul programelor analogi ale proprietăților inerente limbajelor mai expresive precum Lisp .
Ulterior, hackerul Robert Morris a elaborat: [4]
… inclusiv Common Lisp în sine .
Text original (engleză)[ arataascunde] ...inclusiv Common Lisp.Clarificarea poate fi văzută ca un comentariu asupra dificultății de a crea o implementare eficientă a limbajului Common Lisp , sau pur și simplu ca o descriere jucăușă a modului în care funcționează funcția de eval a lui Lisp .
Orice program Lisp suficient de complex va conține probabil o implementare lentă a jumătate din limbajul Prolog .
Text original (engleză)[ arataascunde] Orice program LISP suficient de complicat va conține o implementare lentă a jumătate din Prolog.Această formulare [5] reflectă faptul că programele Prolog conțin insule în stil Lisp , în timp ce programele Lisp conțin insule în stil Prolog .
Odată cu răspândirea programării distribuite și popularizarea ideilor implementate în limbajul Erlang , Robert Virding a propus această opțiune: [6]
Orice program distribuit suficient de complex conține o implementare nou scrisă, nespecificată, greșită și lentă a jumătate din limbajul Erlang.
Text original (engleză)[ arataascunde] Orice program concurent suficient de complicat într-o altă limbă conține o implementare lentă ad-hoc, specificată informal, plină de erori, a jumătate din Erlang.Această corecție mai este numită și consecința Armstrong.
Regula este adesea variată prin înlocuirea cuvintelor „Common Lisp” cu limbajul funcțional preferat al vorbitorului (de exemplu Scheme sau Haskell ). Se poate rezuma ca:
Orice platformă suficient de complexă conține o implementare nou scrisă, nespecificată, greșită și lentă a unei jumătăți de limbaj funcțional.
Text original (engleză)[ arataascunde] Orice platformă suficient de complicată conține o implementare ad-hoc, specificată informal, plină de erori și lentă a jumătate dintr-un limbaj de programare funcțional.Lisp comun | |||||||
---|---|---|---|---|---|---|---|
Implementări |
| ||||||
Software |
| ||||||
Publicații |
| ||||||
comitetul de proiectare |
| ||||||
Alte |
|
Lisp | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Caracteristici |
| ||||||||||||||
Implementări |
| ||||||||||||||
Hardware |
| ||||||||||||||
Comunitate |
| ||||||||||||||
|