[ sokolovic @ 11.12.2010. 18:36 ] @
Je l' se neko mozda bavio ovim problemom?
Nameravam da pocnem polako sa izucavanjem i pokusam implementaciju nekog jednostavnijeg alata za generisanje koda (za pocetak). Koristili bi mi bilo kakvi saveti, uputstva, eventualno preporuka literature...
[ del-boy @ 11.12.2010. 20:48 ] @
Što se tiče literature, možeš pogledati slajdove (opširni su, ja sam učio iz njih, nije ni bilo knjige) iz predmeta Programski prevodioci na FTN-u.

http://www.acs.uns.ac.rs/sr/pp

Kreće se od parsiranja, a cilj je da se na kraju generiše asemblerski kod za određeni podskup C-a.
[ sokolovic @ 11.12.2010. 20:57 ] @
Iste slajdove sam ja koristio za taj predmet, hvala na uputstvima, kolega! :)
Ono sto sam ja planirao jeste pravljenje alata za generisanje koda na nekom visem programskom jeziku, recimo iz UML modela ili neke druge predstave. Imas li kakvu ideju za to?
[ del-boy @ 15.12.2010. 17:53 ] @
Hm, nešto slično smo radili na faxu iz predmeta Metodologije brzog razvoja softvera. Ideja je bila da se za bilo koji konceptualni model baze izgeneriše aplikacija koja će da podrži CRUD operacije za svaku tabelu, da podrži zoom-ove i next-ove*, search i takve stvari... Na vežbama su nam dozvolili da izaberemo način na koji ćemo da radimo (najjednostavnija varijanta je čisto generianje koda, a najkomplikovanija je pisanje generičke aplikacije koja se rekonfiguriše u zavisnosti od datog modela - moj tim je radio drugu varijantu).

Profesor je na predavanjima nacrtao čitav model (nekih 30ak tabela, čini mi se) u PowerDesigner-u i to je trebal isparsirati i generisati konfiguracioni file za našu aplikaciju. Parsiranje nismo sami uradili nego smo koristili postojeću biblioteku koju je napisao neko od asistenata ranije, s tim da neke slučajeve ona nije pokrivala pa smo napisali patch (ima ga u repozitorijumu). Parser se zvao mosquito, ali da me ubiješ sad ne mogu da nađem link do tog projekta, mada imam taj jar (a ima ga i u repozitorijumu).

Skoro sam postavio i kod tog projekta na net, pa možeš pogledati ako te zanima: https://bitbucket.org/delboy/mbrs

Ako imaš dodatnih pitanja, slobodno pitaj, odgovoriću koliko se sećam, davno sam radio ovo :D...

* Ne znam da li su nazivi zoom i next standardizovani (sreo sam ih samo na tom predmetu), ali to su samo načiti za filtriranje filtriranje jedne tabele iz drugi i za popunjavanje formi podacima iz druge tabele (izabereš jedan red i on u prethodnoj formi popuni polje odgovarajućim ključem ili više njih (ako je kompozitni ključ).

edit: Nađoh gde se mosquito projekat nalazi: http://sourceforge.net/projects/mosquito-pdm/
Kao što vidiš, odavno nije update-ovan, tako da ovaj naš patch nije tamo primenjen sigurno. U repozitorijumu imaš sam patch, a jar je već patch-ovan.
[ pl4stik @ 22.12.2010. 00:35 ] @
Tesko da ces danas naci bolji code gen od samog visual studia 2005+... Pitanje je prilicno opsirno i moze da se primeni na razlicite delove razvoja aplikacije ali u globalu gledano nacin programiranja u VS-u se u sustini zasniva na generisanju objekata npr. za data layer mozes da koristish ugradjene Typed Data Set ili Entity Framework koji na osnovu baze pravi model koji su u stvari parcijalne klase pa mozes da ih nasledjujes ili mozes prvo da "nacrtas" model pa na osnovu njega da generises bazu... Na osnovu tog modela mozes da koristish MVC i/ili DynamicData za prezetaciju etc...
Uopste, celokupan razvoj u vs-u je zasnovan na templejtima i generisanju objekata ali nije pravilo (jer pravila nema) tako da mozes sve to da zaobidjes i da pravish custom ...

Just my 2¢
[ dragancesu @ 21.06.2011. 19:08 ] @
Vidim da dugo nije pisano u ovoj temi, ali mi je nakako zanimljiva pa da nastavim

Pre mnogo godina sam video program koji se zvao proC. To je bio generator aplikacija i pisao je C kod, rezultat je bio cist source. Interesanto je da je sa verzijom 1 napravljena verzija 2. Trebalo je uneti koja je struktura tabela (ascii, ali nema veze) i na osnovu toga je pravio forme za unos i izvestaje. Rezultat je trebalo samo kompajlirati. Video sam kako to radi, ali ga nisam koristio jer ipak C nije bas pravi jezik za pravljenje aplikacija koje sam radio, knjigovodstvo i slicno. Uglavnom presao sam na clipper. I tamo sam nalazio neke generatore aplikacija, ali nema sanse da se setim kako se zovu.

Ipak, nastavio sam da se bakcem s stim i mogu reci da sam napravio dosta uspesan program na clipper-u koji je generisao programe tipa forme i izvestaji. Pored toga je bila biblioteka sa funkcijama koje su to omogucavale. Mnogo ih je koristilo i bili su zadovoljni.

A zasto sam se to trudio? Pre mnogo godina su me poslali na kurs oracla, tada bese verzija 5, forms 2.3 i jedna lekcija je bila "forma za minut" i onda sam pokusao to da napravim na clipper-u. Na kraju sam i uspeo, bese to davne '96 ili '97 Sve u svemu probao sam da kopiram oracle i na neki nacin sam uspeo. Daleko je to od dobre kopije, ali sam bio zadovoljan. Bio je tu i editor ekrana, i editor izvestaja, moglo je da se oznaci da se kolona sumira, po kojoj se grupise i slicno. Mozda primitivno, ali je radilo.

Ali to je moglo da se radi sa programima gde imas imas editor i sam pises source. Ali onda su dosli jezici, tacnije alati sa svojim editorima i ostalim cudesima gde ne znas gde je kod zapisan. Tamo to ne ide, eventualno da napises neke procedure i funkcije koje standardno pozivas.

Primer za ovo sto trazis danas je mozda Delfi for PHP. Nisam koristio, ali koliko sam video dobijes neki source, a uz program idu i neke standardne funkcije koje dodas uz projekt.

Kad sam se malo bavio php-om video sam da je vrlo dosadno kreirati ekrane za unos/izmenu podataka. Ali za to imas cak i neke online kreatore programa. I to sam uspeo da napravim na clipper-u. Uglavnom php je mozda dobar kandidat jer je interpreter. Ali sve u svemu moras znati da uradis rucno i kad steknes tu rutinu onda mozes preci na kreiranje generatora tj pomocnika za tvoj posao, to je kako ja vidim ovu problematiku.



[Ovu poruku je menjao dragancesu dana 22.06.2011. u 08:19 GMT+1]