OpenSource For You

Using tools to auto-generate code from high-level models or specificat­ions looks like a cool idea. Though generating code instead of ‘hand-writing’ it from scratch has many advantages, one needs to also be aware of the disadvanta­ges of this approach. This

-

tHEn I firsw Gow ExposED wo Auwo-CoDE GEnErAwors, I wAs quIwE ImprEssED wIwH wHAw wHEy CoulD ACHIEvE. For ExAmplE, YACC (YEw AnowHEr CompIlEr CompIlEr) Is A CompIlEr GEnErAwor. To ExplAIn wHAw A ‘CompIlEr GEnErAwor’ mEAns In lAymAn wErms, Iw’s wHEn you provIDE wHE spECIfiCAw­Ion (I.E., lAnGuAGE GrAmmAr) For pArsInG InwErspErs­ED wIwH HAnD-CoDED ACwIons, AnD wHE YACC wool GEnErAwEs CoDE CorrEsponD­InG wo wHAw GrAmmAr. YACC Is A ‘CompIlEr CompIlEr’; In owHEr worDs, Iw’s A CompIlEr wHAw wAkEs wHE GrAmmAr AnD GEnErAwEs As ouwpuw wHE CoDE For A CompIlEr wHAw rECoGnIsEs wHAw GrAmmAr. So, InswEAD oF wrIwInG A CompIlEr (wHE pArsEr ComponEnw oF A CompIlEr, wo BE spECIfiC), wHICH CAn BE A really ComplEx wAsk, you CAn spECIFy wHE GrAmmAr In wHE FormAw rEquIrED By YACC, AnD you GEw pArsEr CoDE ‘Auwo-GEnErAwED’. You CAn usE wHAw pArsEr wo pArsE wHE Inpuw sourCE filEs.

SImIlArly, you CAn GEnErAwE A ‘lExICAl AnAlysEr’ usInG wHE LEx wool. A lExICAl AnAlysEr wAkEs sourCE CoDE, wHICH Is A swrEAm oF CHArACwErs, AnD GEnErAwEs A swrEAm oF wokEns (For wHIs rEAson, A lExICAl AnAlysEr Is Also known As A tokeniser); wHEsE wokEns ArE wHEn FED wo wHE pArsEr. ComInG BACk wo LEx, you CAn spECIFy wHAw wokEns you nEED wo GEnErAwE In wHE FormAw rEquIrED By LEx, AnD wHE LEx wool wIll GEnErAwE A lExICAl AnAlysEr CoDE For you. Looks Cool, DoEsn’w Iw?

Tools lIkE lEx AnD yACC CAn BE ConsIDErED wo BE ‘ DomAIn- spECIFIC lAnGuAGEs’ ( DSLs). THEsE ArE DEsIGnED For A spECIFIC DomAIn, AnD ArE spECIAlIsE­D lAnGuAGEs For pErFormInG wAsks In wHosE DomAIns. You CAn ConwrAsw DSLs wIwH GEnErAl- purposE lAnGuAGEs suCH As C++ AnD JAvA, wHICH ArE prEwwy muCH DomAIn- nEuwrAl, AnD you CAn usE wHEm For A vAsw rAnGE oF proGrAmmIn­G wAsks. Now All DSLs GEnErAwE CompIlABlE CoDE. For ExAmplE, SQL ( SwruCwurED QuEry LAnGuAGE) Is A DSL AnD Is mEAnw For InwErACwIn­G wIwH A DAwABAsE. THEsE DSLs CAn, In wurn, BE ConsIDErED As ApplICAwIo­n OrIEnwED LAnGuAGEs ( AOLs). AOLs ArE spECIAlIsE­D lAnGuAGEs wHAw ArE DEsIGnED wo proGrAm For A spECIFIC ApplICAwIo­n or proBlEm DomAIn. AOLs Allow us wo worry ABouw wHE proBlEm DomAIn, AnD HElp us FoCus on spECIFyInG wHE proBlEm InswEAD oF wHE ImplEmEnwA­wIon DEwAIls. AOLs ArE A GooD wArGEw For Auwo- GEnErAwInG CoDE. WEll- known ExAmplEs ArE CoDE GEnErAwors From UML DIAGrAms— wHErE you spECIFy your HIGH- lEvEl DEsIGn In UML DIAGrAmmIn­G wools ( suCH As ArGoUML, EnwErprIsE ArCHIwECw AnD RAwIonAl RosE), AnD you CAn GEw CoDE AuwomAwICA­lly GEnErAwED From wHosE DIAGrAms. OwHEr ExAmplEs ArE MAwLAB AnD SImulInk, usED For mAwHEmAwIC­Al AnAlysIs AnD moDEllInG.

AnowHEr wEll-known kInD oF Auwo-CoDE GEnErAwor InCluDEs GUI BuIlDErs, wHICH mosw oF you mAy AlrEADy BE FAmIlIAr wIwH. For ExAmplE, you CAn usE wools suCH As NEwBEAns (For JAvA) or VIsuAl SwuDIo (For C#/VB) For UI DEsIGn, AnD wHEsE wools wIll AuwomAwICA­lly GEnErAwE CompIlABlE sourCE CoDE. OF CoursE, you nEED wo ADD wHInGs suCH As EvEnw-HAnDlInG CoDE AnD BusInEss-loGIC CoDE wo wHE GEnErAwED CoDE, Buw wHEy AlrEADy Allow you wo FoCus on wHE UI DEsIGn By Jusw DrAGGInG AnD DroppInG UI Conwrols InswEAD oF wrIwInG All wHE wEmplAwE CoDE In A wExw EDIwor.

Aw somE poInw you mAy HAvE usED ‘wIzArDs’ wHAw GEnErAwE CoDE For you For your spECIfiC nEEDs. THEsE ArE quIwE populAr, EspECIAlly For sImplIFyIn­G proGrAmmIn­G For rEpEwIwIvE wAsks. THEy ArE wIDEly usED, EspECIAlly In EnwErprIsE proJECws, sInCE wHEy HElp soFwwArE CompAnIEs mAkE wHEIr proGrAmmEr­s morE proDuCwIvE. Also, proDuCw CompAnIEs wHAw sEll soFwwArE pACkAGEs wArGEwInG proGrAmmEr­s, AwwrACw powEnwIAl DEvElopErs By sHowInG How soFwwArE DEvElopErs CAn rEDuCE wHEIr proGrAmmIn­G EFForws IF wHEy Buy wHEIr soFwwArE pACkAGE. As A proGrAmmEr, you CAn now sImply ClICk or DrAG AnD Drop wo CrEAwE proGrAms InswEAD oF wypInG Aw wHE kEyBoArD For lonG Hours. Looks quIwE AwwrACwIvE, DoEsn’w Iw?

So, wHAw ArE wHE ADvAnwAGEs oF ‘GEnErAwInG CoDE’? 1. Improved productivi­ty. AuwomAwED CoDE GEnErAwors Allow you wo work Aw wHE lEvEl oF spECIfiCAw­Ions or moDEls, AnD CommunICAw­E In wHE wErms usED In wHE ApplICAwIo­n DomAIn. WIwH GEnErAl-purposE lAnGuAGEs, you nEED wo work In wErms oF low-lEvEl ConswruCws suCH As for AnD while loops, wHICH Is quIwE wEDIous AnD wImE ConsumInG. 2. Reduced complexity. WHEn proGrAmmEr­s work Aw HIGHEr lEvEls oF ABswrACwIo­n, wHEy CAn pErForm ComplEx wAsks wIwH EAsE, CompArED wo low-lEvEl ConswruCws In GEnErAlpur­posE lAnGuAGEs.

 ??  ?? S.G.Ganesh
S.G.Ganesh

Newspapers in English

Newspapers from India