Generativno programiranje
Prema definiciji (Eisenecker, 1998.), generativno programiranje (GP) predstavlja
"... dizajniranje i implementaciju programskih modula koji se mogu kombinirati radi generiranja visoko specijaliziranih i optimiziranih sustava koji omogućuju rješavanje specifičnih zadataka.".
Odnosno, možemo reći da GP predstavlja disciplinu automatskog programiranja, koja se pod tim nazivom pojavljuje potkraj 90-tih godina.
Osnovne karakteristike GP
( u odnosu na druge discipline automatskog programiranja)
- fleksibilnost u odnosu na druge tehnike automatskog programiranja:
- izrada aplikacija korištenjem više generatora
- modifikacije generatora
- optimizacija
- proizlazi iz težnje da se u generirane aplikacije ugrađuju samo potrebna svojstva, umjesto korištenja generičkih komponenti
Dakle, radi se o pristupu izradi aplikacija na način da se ne usmjerava cijeli napor samo na pojedinu ciljnu aplikaciju, nego i na generator, koji osim pojedine aplikacije, može automatski generirati i ostale aplikacije iz problemske domene koju pokriva. Pojedina aplikacija za generiranje zadaje se specifikacijom u nekom od jezika specifičnih za problemsku domenu (eng. DSL - Domain Specific Language), za razliku od općih programskih jezika, koji nisu ograničeni na određenu problemsku domenu.
Temeljne discipline GP
GP, kao relativno nova programerska disciplina, uključuje nekoliko temeljnih disciplina:
- Objektno orijentirano programiranje
- Metaprogramiranje
- Generičko programiranje
- Aspektno orijentirano programiranje
- Domenski inženjering
Literatura
- Krzysztof Czarnecki and Ulrich W. Eisenecker:"Generative Programming: Methods, Tools, and Applications", Addison Wesley, 2000. (temeljna knjiga za GP)
Vanjske poveznice
- GPCE (Generative Programming and Component Engineering) - glavna svjetska konferencija za GP
- Wiki sustav o generativnom programiranju i srodnim disciplinama