Greenspanin kymmenes sääntö

Greenspunin kymmenes sääntö on ohjelmointiaforismi  , joka sanoo : [1] [2]

Mikä tahansa riittävän monimutkainen C- tai Fortran -ohjelma sisältää juuri kirjoitetun, määrittelemättömän, bugisen ja hitaan toteutuksen puolet Common Lisp -kielestä .

Alkuperäinen teksti  (englanniksi)[ näytäpiilottaa] Mikä tahansa riittävän monimutkainen C- tai Fortran-ohjelma sisältää ad hoc, epävirallisesti määritellyn, bugien sisältävän, hitaan toteutuksen puolet Common Lispistä.

Alkuperä

Säännön muotoili noin vuonna 1993 Philip Greenspan . Vaikka se tunnetaan "kymmenennenä", sitä edeltäviä sääntöjä ei ole. Greenspan itse selitti nimen seuraavasti: [3]

Yritin vain antaa säännölle tarttuvan nimen.

Alkuperäinen teksti  (englanniksi)[ näytäpiilottaa] Yritin vain antaa säännölle mieleenpainuvan nimen.

Merkitys

Säännön pointti on, että ohjelmoijat, jotka rajoittuvat matalan tason kieliin, kuten C , ylittävät kielen rajoitukset lisäämällä ohjelmien tekstiin ominaisuuksien analogeja, jotka ovat ominaisia ​​ilmeisemmille kielille, kuten Lisp .

Morrisin selvennys

Myöhemmin hakkeri Robert Morris tarkensi: [4]

…mukaan lukien itse Common Lisp .

Alkuperäinen teksti  (englanniksi)[ näytäpiilottaa] …mukaan lukien Common Lisp.

Selvennys voidaan nähdä kommentina Common Lisp - kielen tehokkaan toteutuksen vaikeudesta tai yksinkertaisesti leikkisänä kuvauksena Lispin eval - toiminnon toiminnasta .

Täydennys Prologista

Mikä tahansa riittävän monimutkainen Lisp - ohjelma sisältää todennäköisesti puolet Prolog - kielestä hitaan toteutuksen .

Alkuperäinen teksti  (englanniksi)[ näytäpiilottaa] Mikä tahansa riittävän monimutkainen LISP-ohjelma sisältää puolet Prologista hitaan toteutuksen.

Tämä muotoilu [5] kuvastaa sitä tosiasiaa, että Prolog -ohjelmat sisältävät Lisp-tyylisiä saaria , kun taas Lisp-ohjelmat sisältävät Prolog -tyylisiä  saaria .

Erlang Supplement

Hajautetun ohjelmoinnin leviämisen ja Erlang -kielellä toteutettujen ideoiden yleistymisen myötä Robert Virding ehdotti tätä vaihtoehtoa: [6]

Mikä tahansa riittävän monimutkainen hajautettu ohjelma sisältää juuri kirjoitetun, määrittelemättömän, bugisen ja hitaan toteutuksen puolet Erlang-kielestä.

Alkuperäinen teksti  (englanniksi)[ näytäpiilottaa] Mikä tahansa riittävän monimutkainen rinnakkainen ohjelma toisella kielellä sisältää ad hoc epävirallisesti määritellyn virheiden aiheuttaman hitaan toteutuksen puolet Erlangista.

Tätä korjausta kutsutaan myös Armstrongin seuraukseksi.

Yleistys

Sääntöä muutetaan usein korvaamalla sanat "Common Lisp" puhujan suosikkitoiminnallisella kielellä (esim . Scheme tai Haskell ). Voidaan tiivistää näin:

Mikä tahansa riittävän monimutkainen alusta sisältää äskettäin kirjoitetun, määrittelemättömän, bugisen ja hitaan toteutuksen puolikkaasta toiminnallisesta kielestä.

Alkuperäinen teksti  (englanniksi)[ näytäpiilottaa] Mikä tahansa riittävän monimutkainen alusta sisältää ad hoc, epävirallisesti määritellyn, virheellisen, hitaan toteutuksen puolet toiminnallisesta ohjelmointikielestä.

Muistiinpanot

  1. Revenge of the Nerds Arkistoitu 7. kesäkuuta 2019 Wayback Machinessa , kirjoittanut Paul Graham .  (Englanti)
  2. Philip Greenspunin tutkimus arkistoitu 24. tammikuuta 2009 Wayback Machinessa  
  3. Ohjelmoinnin 10. sääntö Arkistoitu 29. tammikuuta 2008 Wayback Machinessa  
  4. Paul Graham lainaa Arkistoitu 12. elokuuta 2005 Wayback Machinessa  
  5. comp.lang.prolog: miksi et käyttäisi Prologin LISP-imp:tä itse Prologin sijaan?  (Englanti)
  6. [erlang-questions] Erlang concurrency Arkistoitu 25. heinäkuuta 2008 Wayback Machinessa