PC Press
O nama
O nama
Pretplata
O nama
Postanite saradnik PC-ja
Kontakt sa redakcijom
PC Press
Novi broj
Novi broj   
Pretrazivanje
Arhiva
Arhiva   
PC Online
PC Plus   
Specijalna izdanja
Softver Softver
PC #27 : Septembar 1997 TehnoGuru

 Naslovna  Sadržaj 
Nebojša Stefanović  

Objektno ćaskanje

Razvoj softverskih rešenja je postao neizvestan posao. Nebojša Stefanović predstavlja IBM-ovo rešenje: 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 verzija, 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.

Verzija 4

U vreme pisanja teksta, nova verzija još nije bila na tržištu. U međuvremenu, IBM je u aprilu najavio, a od juna počeo da prodaje verziju 4.0.

Najvažnija novost je svakako širenje Visual Age for Smalltalk-a na još dve platforme - HP-UX i Sun Solaris, uz već podržana Windows 3.1/95/NT, OS/2 i AIX okruženja. Ne postoji više standard verzija paketa, već samo profesionalna i server; jedna od dodatnih opcija koje ulaze u osnovni paket je Oracle podrška, koja se ranije morala dokupljivati. Vrlo su interesantne Web connection i Lotus Notes opcije - ko je bio na IBM roadshow-u ovog juna u Hajatu, mogao je da vidi kako se fascinantno brzo i jednostavno baza podataka izbacuje na Web. Ukida se zvanična podrška 16-bitnim VBX kontrolama (mada će IBM-ovi partneri i dalje da podržavaju i prodaju ovu opciju), a uvodi podrška OLE, OCX i ActiveX kontrolama. Prisutan je i set "novih" Windows 95 kontrola, gde dobijate specifične stvari poput slider-a, progress bar-a i slično, uz već podržane generičke kontrole koje su portabilne na svaku platformu.

Na žalost, ima i novosti koji se neće svideti korisnicima. Prva, relativno laka za preboleti, jeste prelazak sa IBM-ovog online books sistema na .pdf (Adobe Acrobat) dokumentaciju. Štampanje uputstva je sada lakše, ali nema više pretraživanja, vođenja beleški i slično. Druga zamerka je ozbiljnija: novi Visual Age for Smalltalk troši dosta resursa i sporiji je od svog prethodnika. Pakovanje najtrivijalnijih aplikacija traje po deset minuta na prosečnoj Pentium mašini. Mada su hardverski zahtevi neznatno promenjeni (Pentium na 66 MHz, 32 MB za razvoj i 16 MB za runtime aplikacije), procena je da će vam za udoban rad trebati bar duplo više od onoga što IBM navodi kao minimum. Sudeći po diskusiji u comp.lang.smalltalk, performanse nekih familija klasa su slabije nego u prethodnoj verziji.

IBM Visual Age for Smalltalk je skup alat, namenjen velikim i vrednim projektima, tako da se obično instalira na adekvatan hardver. U svetlu nove portabilnosti i novih interesantnih opcija koje nudi, teško da će pad performansi na low-end mašinama ili nespretno rešena dokumentacija predstavljati bitnu manu za profesionalce. Nama, običnim smrtnicima, ostaje da se nadamo da će IBM u sledećoj reviziji softvera ove nedostatke ispraviti ili makar ublažiti.

Korisna adresa

SBS, Beogradska 39, tel. 011-3246-221.