Greenspuns desáté pravidlo - Greenspuns tenth rule - Wikipedia
Greenspunovo desáté pravidlo programování je aforismus v programování a hlavně programovací jazyk kruhy, které uvádí:[1][2]
Jakékoli dostatečně komplikované C nebo Fortran program obsahuje ad hoc, neformálně specifikováno, Chyba - řízená, pomalá implementace poloviny Společný Lisp.
Přehled
Pravidlo vyjadřuje názor, že argumentovaná flexibilita a rozšiřitelnost navržen do programovacího jazyka Lisp zahrnuje všechny funkce, které jsou teoreticky potřebné k napsání jakéhokoli složitého počítačového programu, a že funkce potřebné k vývoji a správě takové složitosti v jiných programovacích jazycích jsou ekvivalentní některé podmnožině metod používaných v Lispu.
I když ostatní programovací jazyky tvrdí, že jsou jednodušší, vyžadují, aby programátoři náhodným způsobem objevili značné množství potřebné funkce, která je v Lispu přítomna jako standardní, osvědčená základna.
Lze jej také interpretovat jako satirickou kritiku systémů, které zahrnují složité, vysoce konfigurovatelné podsystémy.[3] Spíše než zahrnout zvyk tlumočník pro některé jazyk specifický pro doménu, Greenspunovo pravidlo navrhuje použít široce přijímaný a plně vybavený jazyk, jako je Lisp.
Paul Graham také zdůrazňuje satirickou povahu konceptu, i když založenou na skutečných problémech:
To zní jako vtip, ale u velkých programovacích projektů se to v různé míře stává tak často, že pro tento fenomén existuje název, Greenspunovo desáté pravidlo.[4]
Pravidlo bylo napsáno někdy kolem roku 1993 autorem Philip Greenspun. Ačkoli je známo jako jeho desáté pravidlo, ve skutečnosti neexistují žádná předchozí pravidla, pouze desáté. Důvod pro to podle Greenspuna:
Promiň, Han-Wen,[5] ale neexistuje 9 předchozích zákonů. Jen jsem se snažil dát pravidlu nezapomenutelné jméno.[6]
— Philip Greenspun, http://philip.greenspun.com/bboard/q-and-a-fetch-msg?msg_id=000tgU
Hacker Robert Morris později prohlášen za důsledek, který objasňuje soubor „dostatečně komplikovaných“ programů, na které se pravidlo vztahuje:
… Včetně Common Lisp.[7]
Tento důsledek vtipně odkazuje na skutečnost, že mnoho implementací Common Lisp (zejména těch, které jsou k dispozici na počátku 90. let) závisí na jádru kompilované na nízké úrovni C, který obchází problém bootstrapping ale může být sám o sobě poněkud variabilní v kvalitě, přinejmenším ve srovnání s čistě vlastní hosting Společný Lisp.[8]
Softwarový inženýr Stewart Milberger poté spustil důkaz o Morrisově následku:
Přestal jsem portovat Open Inventor na Common Lisp, protože jsem implementoval buggy ad-hoc špatně specifikovanou implementaci jmenných prostorů v Common Lisp (první krok Scheming Pony v důkazu Morrisova doplňku Greeenspunova 10.), jak to Open Inventor udělal před tím, než byly jmenné prostory C ++ podporovány, jako jsou šablony a více metod (myslím, že ještě ne). Někdo také řekne Stroustrupovi, aby se podíval na makra Common Lisp a zastavil šílenství šablony.[9]
Tento důkaz vtipně odkazuje na skutečnost, že Common Lisp má relativně primitivní systém pro dělení symbolů zvaných „balíčky“, a také na to, že by mohl existovat Greenspunův 11, vis-a-vis C ++.
Viz také
Reference
- ^ „Výzkum Philipa Greenspuna. 1990–2017. Archivovány od originál dne 24. 1. 2009. Citováno 2019-10-24.
- ^ Graham, Paul (Květen 2002). "Pomsta pitomců". Citováno 2019-10-24.
- ^ Greenspunovo desáté pravidlo, zahrnuje každý velký projekt tlumočníka Lisp?
- ^ Graham, Paul (2004). Hackeři a malíři: velké myšlenky z počítačového věku. O'Reilly. str.198. ISBN 978-0-596-00662-4. (také na Knihy Google )
- ^ [1] Han-Wenův profil Github
- ^ 10. pravidlo programování
- ^ Paul Graham cituje.
- ^ Rhodes, Christophe (2008-05-15). „SBCL: Sanely-Bootstrappable Common Lisp“ (PDF). Přednášky z informatiky (Self-Sustaining Systems: First Workshop). Citováno 2016-10-24.
- ^ „[libre-riscv-dev] Vulkanizace“.