Nagy sárlabda

A Wikipédiából, a szabad enciklopédiából

A nagy sárlabda a számítógép-programozásban egy felismerhető belső szerkezet nélküli program. Habár nemkívánatos a szoftvertervezésben, mégis előfordul, az üzleti részről érkező nyomás, a fejlesztők gyakori cseréje és a kód entrópiájának növekedése miatt. Tervezési antimintának tekintik.

Leírása[szerkesztés]

Brian Foote és Joseph Yoder egy 1997-es cikkükben Big ball of mud címen elemezte a problémát:

A nagy sárlabda egy ötletszerűen strukturált, burjánzó, pongyola, spagetti kód dzsungel. Ezek a rendszerek a szabályozatlan növekedés és ismétlődő, kiterjedő javítások jeleit mutatják. Az információt egészen távoli részekre is eljuttatja, egészen addig, amíg minden globálissá vagy duplikálttá válik. Globális architektúrát vagy nem definiáltak, vagy felismerhetetlenné tették. Még azok a programozók is menekülnek ettől a kódtól, akiknek csak az architektúra iránti érzékenység töredékei találhatók meg. Csak azok érzik magukat jól benne, akik nem törődnek az architektúrával és szeretik napról napra foltozgatni ezeket a süllyedő hajókat.[1]

A nagy sárlabdával foglalkozó programozóknak mélyen bele kell ásniuk magukat, hogy megértsék, és követelményeket határozzanak meg az újraíráshoz. A technológiai váltások szintén eredményezhetik az egész program újraírását.

Egyéb használat[szerkesztés]

A Lisp nyelvvel kapcsolatban nem az antimintát emlegetik, hanem a Lisp formázhatóságára, alakíthatóságára, bővíthetőségére gondolnak, amikor a nyelvet nagy sárlabdának nevezik. Ugyanis Lispben megtehetők a következők:

  • Makrók használata a nyelv lehetőségeinek bővítésére
  • A program egyes részeinek fordítási időben való végrehajtása
  • Adatok által irányított programstílus használata
  • A módosított Lisp változatot rendszerképként elmenteni későbbi használatra.

Mindezek különlegesen rugalmassá teszik a Lisp nyelvet, egészen addig, hogy futásidőben átírható a Lisp teljes megvalósítása, emiatt a Lisp sárszerű lesz, hogy az egyszerű használattól is bővül és fejlődik. A Lisp egyik jellemzője a metanyelvi absztrakció, amivel teljes szótárak definiálhatók. Ezekkel leírhatók a program által tartalmazott folyamatok és függvények, így tartományspecifikus nyelvek (DSL) is. Azonban megfelelő dokumentáció hiányában az antiminta is manifesztálódik, mivel az egyébként jól működő programot csak az eredeti programozók értik, vagy azok az elszántak, akik rászánják az idejüket arra, hogy az erősen rekurzív kódba beleássák magukat.

Az 1970-es években írták az alábbi hasonlatot:

Az APL olyan, mint egy csodálatos gyémánt: hibátlan és csodálatosan szimmetrikus. De nem bővítheted. Ha hozzáragasztasz egy másik gyémántot, akkor nem kapsz nagyobb gyémántot. A Lisp olyan, mint egy sárlabda; adjál hozzá és továbbra is sárlabdának néz ki, továbbra is olyan lesz, mint a Lisp.

A hasonlatot Joel Mosesnek tulajdonítják,[2] ám ő tagadja, hogy ilyet írt vagy mondott volna. Ő inkább babzsáknak nevezte a Lispet, mivel mindig visszatér eredeti alakjába.[3]

Jegyzetek[szerkesztés]

  1. Brian Foote és Joseph Yoder: Big Ball of Mud. Fourth Conference on Patterns Languages of Programs (PLoP '97/EuroPLoP '97) Monticello, Illinois, 1997 szeptember
  2. Richard P. Gabriel and Guy L. Steele (1996). „The Evolution of Lisp”. ACM History of programming languages—II 28 (3), 233–330. o. DOI:10.1145/155360.155373.  
  3. Thomas J. Bergin and Richard J. Gibson (1996). „Supplemental material from HOPL II”. ACM SIGPLAN Notices, 9–20. o. DOI:10.1145/240964.1198155.  

Források[szerkesztés]

  • Guy L. Steele, Jr. & Richard P. Gabriel The Evolution of Lisp [1], note on reference 128
  • Brian Foote and Joseph Yoder, Big Ball of Mud Fourth Conference on Patterns Languages of Programs (PLoP '97/EuroPLoP '97) Monticello, Illinois, September 1997

Fordítás[szerkesztés]

Ez a szócikk részben vagy egészben a Big ball of mud című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.