Nebojša Stefanović
Razvoj softverskih rešenja je postao neizvestan posao - većina današnjih aplikacija, od igara do vrhunskih sistema kontrole letenja na aerodromima, ima za zajedničku osobinu - neslavno kašnjenje. IBM nudi rešenje pod imenom Smalltalk.

 Nomen est omen: Smalltalk (eng. ćaskanje, neobavezan razgovor) u imenu sadrži najdragoceniju osobinu: prilagodljivost i fleksibilnost. Smalltalk je nastao sedamdesetih godina u Xerox-ovim laboratorijama u Palo Altu, sa ciljem da se napravi programski jezik za "decu svih uzrasta". Smalltalk je jedan od najznačajnijih objektno orijentisanih jezika, a njegovi koncepti uticali su ne samo na dizajn ostalih objektnih jezika, već i na izgled modernih grafičkih okruženja - Macintosh, Windows i Motif.


Izvorno i hibridno

 Smalltalk je čist objektno-orijentisani jezik, za razliku od hibridnih kao što je C++. Hibridi pružaju mogućnost da definišete objekte, ali zadržavaju ugrađene tipove podataka koji nisu objekti. Sa Smalltalk-om to nije slučaj: kod njega je sve klasa, čak i tako primitivan tip kakav je, recimo, integer. Smalltalk operiše na dva jednostavna principa: sve
je objekat (klasa), a objekti komuniciraju preko poruka. Programe pišete definišući klase, njihove metode i protokole po kojima komuniciraju - zadaci koje program treba da izvrši isključivo se dobijaju kao rezultat učaurenih metoda u klasama. Klasa može biti klijent druge klase, gde će ova kao server izvršiti zahtev klijenta ako je on u listi metoda server klase. Ovakva filozofija direktno podržava nasleđivanje (inheritance), učaurenje podataka i funkcija (encapsulation), kao i višeznačnost metoda (polymorphism). Objektni pristup može biti i mana Smalltalk-a - ne samo što morate savladati sasvim novu sintaksu, već i "zaboraviti" sve proceduralne tehnike koje ste koristiti u, recimo, C++-u.
 Smalltalk je oduvek bio publikovan kao razvojno okruženje - programer ne vidi razliku između runtime i radne verzije programa, sve klase i aplikacije se nalaze u virtuelnoj mašini, a koriste se i blagodeti inkrementalnog prevođenja, interaktivnog debugging-a... U Smalltalk-u ne postoji compile-link-execute ciklus na koji smo navikli prilikom testiranja aplikacije, već se ono bazira na eksperimentisanju i isprobavanju programa u virtuelnoj mašini. Pri tome se kompletan rad čuva u tzv. image fajlu, koji sadrži kompletnu strukturu klasa i svih promena izvršenih u toku razvoja. Podrazumeva se i bogata hijerarhija klasa. Ovakav pristup ima i mane, prvenstveno u domenu performansi - u visoko razvijenoj hijerarhiji dolazi do umnožavanja poziva kroz metode nagore u hijerarhiji klasa. Time se usporava izvršenje aplikacije. Druga zamerka je što virtuelna mašina uvodi sloj između programera i aktuelne hardverske arhitekture, radeći za njega "prljave poslove", kao što su kreiranje novih pojavljivanja (instances) objekata, procesiranje poruka, mapiranje metoda na podatke u klasi, upravljanje memorijom i slično. Ovo dovodi do kašnjenja u aplikaciji, ali je ono zanemarljivo u odnosu na ono šta dobijate. Umesto da gubite vreme jureći bagove po implementaciji, recimo, pointera u C++-u, možete se koncetrisati na sam problem, dok će Smalltalk sam "čistiti" objekte koji više nisu referencirani od strane drugih i tako oslobađati memoriju. Kada se sve sabere i oduzme, eksperimentalno je utvrđeno da je pri iole složenijim projektima sa velikom hijerarhijom od stotinak klasa pa naviše, razlika u brzini izvršavanja i veličini aplikacije zanemarljiva, poredeći Smalltalk i tradicionalne programske jezike. Mada je kod nas Smalltalk nepoznat većini ljudi, na Zapadu se u njemu piše kritični softver za blue-chip kompanije, većinom banke i finansijske korporacije.


Vizuelno doba za Smalltalk

 IBM je svoju familiju RAD alata, Visual Age, prilagodio većini jezika koji su danas u upotrebi (C++, Smalltalk, Basic, Java, kobol). "Vizuelno doba" je preporodilo i IBM Smalltalk, koji se nije prodavao tako dobro kao konkurentski ParcPlace/Digitalk proizvodi. Šta, dakle, donosi Smalltalk edicija Visual Age-a?
 IBM Visual Age for Smalltalk dolazi na jednom CD-u, na kome se nalaze evaluaciona i šifrovana komercijalna verzija u Standard, Professional i Professional Server izdanju. Evaluciona verzija ima vremensko ograničenje od oko dva meseca i aplikacije dizajnirane u njoj se ne mogu "pakovati", tj. distribuirati dalje. Na CD-u se nalazi i kompletna online dokumentacija sa reader-om, slična Microsoft-ovom Online books sistemu, sa mogućnošću pretraživanja, notiranja i slično. Standard verzija donosi, pored integrisanog RAD-Smalltalk okruženja, ODBC podršku za preko 30 formata, pristup relacionim bazama (DB2), podršku multimedijalnim elementima u aplikaciji, Visual Basic Extension (VBX) kontrolama i pristup postojećem C kodu. Ako vam je potrebno više, pogledajte opcije Professional verzije, koja nudi još kontrolu verzija aplikacije koja sprečava neželjene promene pri radu u timu, kao i multiple version-release support. Tu su i detaljno konfigurisanje aplikacija, alati za analizu/poboljšanje performansi i pristup kobol kodu. Server verzija je rezervisana za razvoj u mreži (istovremeni pristup više programera) i nudi centralnu biblioteku klasa i komponenata.
 IBM, sem bazne verzije, nudi i dodatne proizvode za specifične aplikacije (podrška za Oracle, AS/400 Connection, Communications/Transactions, Reports). Informacije o mogućnostima dodataka, najnovije patch-eve, tehničku podršku i ostalo, možete dobiti kod predstavnika za Jugoslaviju, ili preko Interneta na www.software.ibm.com/ad/smalltalk/about/index.html. Aktuelna verzija, koju sam i isprobao, jeste 3.0a za Windows 95. Ona je trenutno raspoloživa za OS/2 V3, Windows 3.11, Windows 95, NT 3.51 i AIX V4.2. Minimalni hardverski zahtevi su 486 na 33 MHz, 24 MB RAM-a i dobar monitor - rad u rezoluciji manjoj od 1024*768 je prilično neudoban, tako da je 15 inča minimum. Instalacija će vam na disku uzeti 200-230 MB; od toga šezdesetak megabajta odlazi na dokumentaciju.


Rad u VA okruženju

 Pri pokretanju aplikacije dočekaće vas dva prozora: Smalltalk Transcript, koji predstavlja neku vrstu standarnog izlaza i nevizuelni workspace. Njega, ako "vizuelno" programirate, nećete koristiti često. Drugi prozor je mnogo bitniji i predstavlja centar vaših budućih aplikacija. U VA Organizeru startujete razvoj aplikacija i pod-aplikacija, definišete delove koji čine aplikaciju, testirate ih i pripremate distribuciju. Prvi korak u VA okruženju predstavlja započinjanje aplikacije kreiranjem njenog prvog dela. Pošto to uradite, pred vama će se otvoriti srce VA sistema - Composition Editor, klasično RAD okruženje, sa paletom raspoloživih komponenti i toolbar-om za kontrolu aplikacije.
 Zastupljene su sve standardne Windows 95 kontrole, OLE i IBM-ov SOM. U skladu sa filozofijom Smalltalk-a, sve je podignuto na viši nivo idejom da su na radnoj površini vidljivi svi objekti, ne samo vizuelni već i nevizuelni, dakle bilo koja klasa kao što je niz ili database tabela. Aplikaciju kreirate tako što uspostavljate veze između komponenti - te veze su akcije vašeg programa. Imate potpunu kontrolu izmene pojedinih atributa objekta,
promovisanja atributa u poseban objekat, nasleđivanja vizuelnih i nevizuelnih objekata itd. Program može da trpi značajna prerađivanja u objektnom smislu, koja bi u nekom drugom razvojnom okruženju bilo prilično naporno proizvesti.
 VA Smalltalk, dakle, omogućava visoku fleksibilnost pri eksperimentisanju, koja je verovatno najvažnija u ranim fazama objektnog dizajna, kad još niste sigurni da li je klasifikacija koju trenutno radite dobra ili ne. Koliko puta vam se desilo da nevoljno pristupate korenitim izmenama programa, zato što zahteva mukotrpan i često neizvestan posao prekomponovanja klasa i metoda? Koliko puta ste u cajtnotu primenili "prljave", ali efikasne proceduralne tehnike i apstrakcije koji su vam spasli ugovoreni posao, ali unakazili kôd, u kome pri sledećim izmenama i promenama niko živ ne može da se snađe? VA Smalltalk omogućava da "u hodu", promenite objektnu koncepciju i nastavite sa razvojem. Ovakvu filozofiju IBM naziva construction from parts, a u OO pristupu susreće se termin componentware, prirodna evolucija objektnog programiranja.
 Smalltalk podržava sledeće veze među objektima: attribute-to-atribute (kada se atribut jednog objekta promeni, menja se i onaj drugi), event-to-action (izvršenje metoda objekta usled događaja), event-to-script (izvršava se skup Smalltalk komandi zasnovan na događaju) i attribute-to-script veza, koja omogućava izvršavanje skripta kad se vrednost podatka izmeni. Script Editor, koji je jedan klik daleko, omogućava pregled i editovanje Smalltalk koda i promenljivih za određenu komponentu. Kôd je neki metod u klasi, javan za ceo opseg aplikacija, dok su promenljive privatne za svaku klasu. U ovom editoru postoje alati koji olakšavaju pisanje koda. Među komponentama koje čine, recimo, prozor, okvir ili bilo koju vizuelnu/nevizuelnu klasu, možete da izaberete jednu i dodelite joj određeni sintaksni kontekst (kondicionalno izvršavanje, petlja i slično), a da samu sintaksu i ne znate - Script editor će to odraditi za vas. Prosečna veličina koda u Smalltalk metodu, prema istraživanjima, jeste šest do deset linija; samih metoda po klasi obično ima 12-20, dok instanci promenljivih nema više od šest. Veći prosek u aplikaciji obično znači loš objektni model (previše odgovornosti na premalo klasa). Ovaj prosek je drugačiji u slučaju vizuelnih VA klasa, s obzirom da nikakve dodatne intervencije nisu potrebne na klasama tipa prozor, textbox i slično, pa je u tom slučaju je broj metoda obično nula.
 Pored Script Editor-a, postoji i Public Inteface editor, u kome prilagođavate dostupnost reusable komponenti - tu treba da definišete koji će atributi, događaji i metodi određene komponente biti dostupni (public) drugim klasama i kako. Delovi aplikacije se kasnije ponašaju kao i objekti u paleti Composition Editor-a: klase se povezuju sa drugim klasama jednostavnim klikom na njih. Možete čak i ubaciti sopstvene objekte u paletu. Na kraju, ovaj editor može i definisati default skriptove za atribute; ako vam je potrebna dodatna logika, dodajte je sami. Po završetku dizajna aplikacije, nju treba da "spakujete" tj. da izbacite kompajler i podršku za biblioteke iz image fajla. VA ovo radi automatski, a korisnik bira manji ili veći image fajl. Na raspolaganju su i klase koje mogu da otkriju uska grla u aplikaciji i pomognu u njihovom otklanjanju. Najzad, VA će generisati EXE fajl sa pomoćnim .dll-ovima - on se naziva application loader i izvršava aplikaciju smeštenu u .img fajl. Ako su performanse posebno bitne, VA Smalltalk ima sopstveni API interfejs koji omogućava da kritične delove koda pišete u C-u.


Utisci za kraj

 VA Smalltalk pruža mnogo više nego što je moguće opisati u jednom novinarskom pregledu. Naprimer, database podrška je vrlo fleksibilna i dobrih je performansi, što nije ni čudo s obzirom da je prvenstvena upotreba VA (i pored njegove širine) izrada front-end aplikacija na velikim bazama u korporativnom okruženju. Jedna od važnih odlika IBM VA Smalltalk-a je transparentnost koda: nije neobično da jedni delovi tima rade na OS/2, a drugi na Windows 95 ili nekoj drugoj platformi. Uz pridržavanje nekih konvencija pri pisanju, kôd će bez ikakvih prepravki raditi pod jednim ili drugim sistemom.
 Sitnice koje život znače? Recimo, ograničenje za multiple-line textbox je dva gigabajta - uporedite to sa drugim razvojnim alatima gde su slična ograničenja stroža nekoliko desetina hiljada puta i dobićete dobru sliku za kakve je projekte predviđen Visual Age for Smalltalk. Ovo je alat profesionalaca i iza njega stoji moćna kompanija, tako da je bilo za očekivati da se od 1995 (kada se verzija 3.0 pojavila), prodaja VA Smalltalka uveća za 225%. Neće biti veliko iznenađenje ako verzija 4.0 nastavi ovim trendom.
 Autor se zahvaljuje Sveti Komarčeviću i Jelisaveti Katanić iz SBS-a na nesebičnoj pomoći prilikom pripreme teksta.




PC home - osnovna strana Novi broj|Arhiva|Pretrazivanje svih brojeva|O nama
Pretplatite se na PC|Postanite saradnik casopisa PC|Pitanja i komentari u vezi casopisa