Greenspan tizedik szabálya

Greenspun tizedik szabálya egy  programozási aforizma , amely így szól : [1] [2]

Minden kellően összetett C vagy Fortran program a Common Lisp nyelv felének újonnan írt, nem meghatározott, hibás és lassú megvalósítását tartalmazza .

Eredeti szöveg  (angol)[ showelrejt] Minden kellően bonyolult C vagy Fortran program tartalmaz egy ad hoc, informálisan meghatározott, hibáktól sújtott, lassú megvalósítást a Common Lisp felének.

Eredet

A szabályt Philip Greenspan fogalmazta meg 1993 körül . Bár a „tizedik” néven ismert, nincs szabály, amely megelőzné. Greenspan maga a következőképpen magyarázta a nevet: [3]

Csak próbáltam kapós nevet adni a szabálynak.

Eredeti szöveg  (angol)[ showelrejt] Csak próbáltam emlékezetes nevet adni a szabálynak.

Jelentése

A szabály lényege, hogy a programozók az alacsony szintű nyelvekre korlátozva, mint például a C , leküzdik a nyelv korlátait azáltal, hogy a programok szövegébe olyan tulajdonságok analógjait vezetik be, amelyek kifejezőbb nyelvekben, például a Lispben rejlenek .

Morris pontosítása

Ezt követően Robert Morris hacker kifejtette: [4]

…beleértve magát a Common Lisp -et is .

Eredeti szöveg  (angol)[ showelrejt] …beleértve a Common Lisp.

A pontosítás felfogható a Common Lisp nyelv hatékony megvalósításának nehézségére vonatkozó megjegyzésnek , vagy egyszerűen csak játékos leírásnak a Lisp eval funkciójának működéséről .

Kiegészítés a Prologról

Minden kellően összetett Lisp program valószínűleg a Prolog nyelv felét lassan implementálja .

Eredeti szöveg  (angol)[ showelrejt] Minden kellően bonyolult LISP program tartalmazni fogja a Prolog felének lassú megvalósítását.

Ez a megfogalmazás [5] azt a tényt tükrözi, hogy a Prolog programok Lisp stílusú szigeteket , míg a Lisp programok Prolog stílusú  szigeteket tartalmaznak .

Erlang-kiegészítés

Az elosztott programozás elterjedésével és az Erlang nyelven megvalósított ötletek népszerűsítésével Robert Virding ezt a lehetőséget javasolta: [6]

Minden kellően összetett elosztott program az Erlang nyelv felének újonnan írt, meghatározatlan, hibás és lassú megvalósítását tartalmazza.

Eredeti szöveg  (angol)[ showelrejt] Bármely kellően bonyolult párhuzamos program egy másik nyelven tartalmazza az Erlang felének ad hoc informálisan meghatározott, hibáktól sújtott lassú megvalósítását.

Ezt a korrekciót Armstrong-következménynek is nevezik.

Általánosítás

A szabályt gyakran úgy változtatják meg, hogy a "Common Lisp" szavakat a beszélő kedvenc funkcionális nyelvére cserélik (pl . Scheme vagy Haskell ). Összefoglalva:

Bármely kellően összetett platform egy fél funkcionális nyelv újonnan írt, nem meghatározott, hibás és lassú megvalósítását tartalmazza.

Eredeti szöveg  (angol)[ showelrejt] Minden kellően bonyolult platform tartalmaz egy ad hoc, informálisan meghatározott, hibáktól sújtott, lassú megvalósítást a funkcionális programozási nyelv felének.

Jegyzetek

  1. A Nerds bosszúja archiválva : 2019. június 7. a Wayback Machine -nél , szerző: Paul Graham .  (Angol)
  2. Philip Greenspun kutatása archiválva : 2009. január 24. a Wayback Machine -nél  
  3. A programozás 10. szabálya Archiválva : 2008. január 29. a Wayback Machine -nél  
  4. Paul Graham idézi : Archivált 2005. augusztus 12-én a Wayback Machine -nél  
  5. comp.lang.prolog: miért nem használja a Prolog LISP-imp-jét magával a Prolog-gal szemben?  (Angol)
  6. [erlang-questions] Erlang concurrency Archivált 2008. július 25. a Wayback Machine -nél