prednosti smalltalka smalltalk ima v primerjavi z drugimi objektno orientiranimi programskimi jeziki na primer s c veliko prednosti upravljanje s pomnilnikom garbage collection pozno povezovanje late binding dinamične strukture netipiziranost prenosljivost knjižnice razredov ponovna uporaba razvojno okolje enostavnost jezika lažje vzdrževanje odlično orodje za prototipiranje hitrejše programiranje upravljanje z pomnilnikom garbage collection eden od največjih problemov s katerimi se srečuje programer med razvojem programa je prav gotovo upravljanje z pomnilnikom oziroma še točneje čiščenje objektov ki se pojavljajo med izvajanjem programa pa jih kasneje ne potrebujemo več najpreprostejši primer tega so alociranje in dealociranje kazalcev ki jih uporabljamo v programu pri sistemih ki delajo neprestano ur na dan predstavlja to še poseben problem saj lahko le en kazalec ki ga nenehno rezerviramo in nikoli sprostimo povzroči pomanjkanje pomnilnika in s tem povezane napake v izvrševanju programa pri večini programskih jezikov tudi pri c mora programer sam poskrbeti da se bodo sprostile pomnilniške lokacije nekaj jezikov med njimi tudi smalltalk pa podpira avtomatsko zbiranje neuporabljenih objektov garbage collection garbage collection sprosti vse neuporabljane objekte takrat ko začne primanjkovati pomnilnika lahko pa ga tudi predčasno sprožimo posledica tega je seveda da se programer ne rabi ukvarjati s problemom ali njegov program počisti neuporabljene objekte ter se tako lahko bolj posveti drugim problemom pri programiranju razvoj programa z uporabljenim garbage collection bo tako seveda mnogo hitrejši slika garbage collection pozno povezovanje late binding v smalltalku nimamo običajnih korakov prevajanja in povezovanja kot pri drugih programskih jezikih kjer se cel postopek izvede naenkrat za vse objekte v aplikaciji v smalltalku se vsaka metoda prevede takoj ko se napiše in to ločeno od drugih to metodo lahko tudi takoj stestiramo tako lahko na primer nekdo napiše neko metodo jo posneme odpre neko okno vtipka vanj kodo smalltalka in prav tam tudi preveri pravilnost izvajanja metode seveda se lahko takoj poslužuje tudi različnih razhroščevalnikov debugger in preglednikov inspector s katerimi si lahko pobliže ogleda izvajanje kode primer izvrševanje operacij v razvojnem okolju za visual smalltalk primer razhroščevalnik za visual smalltalk primer pregledovalnik za visual smalltalk v smalltalku lahko gremo v primerjavi z običajnimi razhroščevalniki še korak dlje program lahko namreč med tem ko je pognan spreminjamo in takoj testiramo če spremembe pravilno delujejo program lahko spreminjamo tudi v primeru napake napako v metodi popravimo in nadaljujemo z izvajanjem na tistem mestu kjer je prišlo do napake temu postopku pravimo enhanced debugging slika pozno povezovanje dinamične strukture v smalltalk u ni nobenih omejitev kar se tiče velikosti podatkov tako so lahko na primer polja arrays velika toliko kot dopušča pomnilnik podobno pa je tudi velikost števila tipa integer odvisna le od velikosti pomnilnika ste uspeli v c izračunati koliko je v celih številih netipiziranost smalltalk je netipiziran jezik ko definiramo metode in spremenljivke nam ni potrebno definirati tipov kot je to npr v c in pascalu prav tako se lahko v času izvajanja neka spremenljivka pojavlja v vrednostih različnih tipov posledica je hitrejše programiranje ker je potrebno vtipkovati manj programske kode vendar pa netipiziranost predstavlja poleg prednosti predstavlja tudi slabost programskega jezika zaradi nepravilnih klicev v času izvajanja se lahko pojavi več napak slika the beatles primeri tipov prenosljivost določene izvedbe smalltalka predvsem parcplace digitalkova smalltalka so prenosljivi med različnimi platformami to pomeni da lahko nek program poženemo na kateremkoli računalniku za katerega obstaja ta izvedba smalltalka veliko stopnjo prenosljivosti pa je moč zaslediti tudi med različnimi smalltalki prenosljivost ne velja le na ravni osnovnih objektov temveč vseh objektov ki so v sistemu na razpolago med njimi tudi vsi objekti za grafični uporabniški vmesnik kaj podobnega pri drugih programskih jezikih zasledimo le redkokje portabilnost je tako velika predvsem zaradi tega ker je večji del smalltalka napisanega v smalltalku torej sam v sebi celo prevajalnik za smalltalk je napisan v smalltalku večji del te kode je mogoče tudi spremeniti ali pa vsaj narediti podrazrede kjer pa lahko stvari postavimo tako kot si jih mi želimo slika portabilnost nekoč drugi programski jeziki in danes smalltalk del smalltalka ki ni napisan v smalltalku se imenuje virtual machine in predstavlja le okrog celotnega sistema virtual machine vsebuje povezavo z operacijskim sistemom skrbi za garbage collection in dinamično prevajanje ter skrbi še za nekaj drugih stvari knjižnice razredov ena od največjih prednosti smalltalka pred drugimi programskimi jeziki so tudi knjižnice razredov ki jih ima vsak smalltalk že v standardni različici komite za smalltalk ansi x j ki standardizira smalltalk določa razrede oziroma knjižnice razredov ki naj bi jih imel vsak smalltalk prav zaradi teh standardnih knjižnic je tudi portabilnost med smalltalki tako velika za razliko od smalltalka ansi c standard ne vsebuje knjižnic razredov zaradi česa se potem dogaja da na primer aplikacije napisane v borlandovih owl razredih ne moremo prenesti na microsoft c foundation classes brez velikih popravkov v sami kodi standardna smalltalkova knjižnica razredov olajša delo programerjem saj je veliko stvari ki bi jih moral sprogramirati že narejenih v knjižnici se nahajajo tisti razredi ki so najpogosteje uporabljeni prav tako pa so v knjižnici seveda tudi metode z operacijami nad temi razredi te metode so v večini že optimizirane kar pomeni da večinoma opravljajo operacije veliko bolj hitro in zanesljivo kot tiste iste ki bi jih če ne bi bilo standardne knjižnice morali napisati sami programerji veliko prednost predstavlja tudi to da je v smalltalku s pomočjo knjižnic že opravljena tehnična plat dela z organizacijo zaslona zunanjim videzem oken krmiljenjem menijev itd razvijalci programov v smalltalku tako npr ne rabijo imeti posebnega znanja o api funkcijah saj je na tem področju veliko stvari že narejenih programer se lahko tako posveti izključno tistemu kar je v njegovi aplikaciji resnično novo tako lahko rečemo da je smalltalk narejen na mnogo višji ravni abstrakcije kot c s strojne ravni abstrakcije smo pomaknjeni na aplikacijsko programer v smalltalku ne razmišlja o bajtih prekinitvah točkah ampak tako kot uporabnik torej o oknih menijih urejevalnikih seznamih slikah urejenih zbirkah ponovna uporaba slika ena od prednosti smalltalka ki so tesno povezane z knjižnicami razredov je ponovna uporaba reusability kode razredov v splošnem namreč velja da ima smalltalk v primerjavi z drugimi programskimi jeziki zelo veliko stopnjo ponovne uporabe kode veliko stopnjo ponovne uporabe kode razredov gre pripisati predvsem temu da je programer v smalltalku prisiljen razmišljati o objektih in razredih saj druge strukture v smalltalku sploh ne obstajajo v nasprotju s smalltalkom pa se v drugih programskih jezikih namesto kreiranja razredov za reševanje problemov velikokrat namesto razreda kreirajo začasne strukture ki pa niso tako ustrezne za ponovno uporabo tako so na primer raziskave obdelanih je bilo okrog projektov v zda pokazale da je ponovna uporaba kode v programskem jeziku c le okrog Če upoštevamo še en podatek iz te raziskave in sicer da je v c programu okoli običajne c kode potem vidimo da c ni na nič kaj boljšem položaju za primerjavo podatek da je stopnja ponovne uporabe v smalltalku po rezultatih iste raziskave okrog ponovna uporaba kode pri smalltalki seveda zelo prispeva k dejstvu o hitrejšem programiranju v smalltalku razvojno okolje slika ugodje razvojnega okolja zelo veliko prednost smalltalka pred ostalimi jeziki predstavlja tudi okolje v katerem razvijamo aplikacij application development environment na voljo je namreč veliko orodij s katerimi si olajšamo delo in zaradi katerih je čas izdelave aplikacije mnogo krajši kot pri drugih jezikih prva lastnost ki je pri razvojnemu okolju takoj opazna je to da gre v smalltalku za neke vrste integrirano okolje development in run time objekti razvojni objekti in objekti iz časa izvajanja so hkrati dostopni tako lahko med razvojem uporabljamo objekte iz časa izvajanja velja pa tudi obratno med izvajanjem lahko uporabljamo razvojne objekte najbolj znani dodatki v razvojnem okolju so pregledovalniki browsers s katerimi si lahko oglejujemo hierarhijo razredov njihovih metod in spremenljivk za vsak razred je med drugim mogoče poizvesti povpraševanje tudi o tem kateri razredi so njegovi nadrazredi podrazredi pa tudi to v katerih metodah se ta razred pojavlja primer pregledovalnik razredov class hierarchy browser za visual smalltalk razrede v smalltalku je mogoče grupirati za prikaz takšnih skupin razredov ki pripadajo neki zaključeni celoti pa so na voljo tudi posebni pregledovalniki smalltalk s takšnimi orodji seveda zelo podpira v zadnjem času zelo popularne ideje o skupinskem programiranju primer pregledovalnik skupin razredov package browser v visual smalltalk enterprise zelo uporabna orodja so na voljo tudi na nivoju metod tako je npr za vsako metodo mogoče v določenih smalltalkih npr visual smalltalk izvesti povpraševanje o tem katere metode se kličejo iz nje iz katerih metod je bila klicana ta metoda pa tudi to katere metode z istim imenom kot ga ima ta metoda še obstajajo v aplikaciji ipd prav tako je mogoče videti vse osnovne podatke o metodi čas nastanka ime avtorja in pa tudi vse prejšnje verzije verzije neke metode je mogoče tudi primerjati in zelo hitro najti razlike med njimi primer primerjava prejšnjih verzij neke metode v visual smalltalk enterprise možna so povpraševanja tudi na nivoju spremenljivk tako je npr možno poizvedovati o tem v katerih metodah se spremenljivka pojavi možno pa je tudi ločeno povpraševanja o tem v katerih metodah se v spremenljivko zapisujejo vrednosti in v katerih metodah pa se ta spremenljivka le uporablja primer pregledovanje metod v katerih se pojavlja spremenljivka seveda je mogoče celotno okolje za razvoj tudi spreminjati in prilagajati potrebam programerja možno je uvesti tudi svoja nova orodja s katerimi programer lažje razvija aplikacijo skratka cel sistem je odprtega tipa kar je prav gotovo posebnost smalltalka enostavnost jezika smalltalk slovi kot eden najbolj enostavnih jezikov temelji namreč le na majhnem številu enostavnih konceptov ki jih je treba osvojiti če se želi programirati v smalltalku raziskave na področju učenja programskih jezikov so pokazale da je čas učenja bodočih programerjih za smalltalk krajši kot čas učenja za druge programske jezike npr c zaradi tega ker je rezerviranih besed je zelo malo lahko z lahkoto uvajamo kakšne svoje koncepte tako lahko na primer namesto zank for repeat oziroma while z lahkoto uvedemo kakšno novo svojo ki nam bolj ustreza smalltalk tako sodi med visokonivojske programske jezike medtem ko c sodi med nizkonivojske jezike kjer programiranje poteka na dosti nižjem nivoju bližje strojni opremi znano je tudi da je programiranje objektno orientiranih programov mnogo lažje v smalltalku kot v c smalltalk je bil namreč zgrajen kot objektno orientiran programski jezik c pa je bil narejen kot izboljšava navadnega c prav zaradi tega ker programer v c ni prisiljen razmišljati o objektih se pogosto zgodi da program večinoma sploh ni objektno orientiran pri smalltalku ni nikoli bojazni da bi programer zašel v ne objektne vode zaradi česar je programiranje gledano dolgoročno nedvomno hitrejše lažje vzdrževanje zaradi tega ker je celotna aplikacija v smalltalku objektno orientirana je možno vnašati spremembe mnogo lažje kot pri drugih jezikih prav tako je z uporabo odličnih razhroščevalnikov debugger in preglednikov inspector mnogo lažje odpravljenje napak kot pri večini drugih programskih jezikov slika ni kaj vzdrževati odlično orodje za prototipiranje smalltalk se v večji meri uporablja za gradnjo velikih aplikacij kjer seveda pomembno vlogo zavzema prototipiranje smalltalk slovi kot odlično orodje za prototipiranje saj je mogoče narediti prototipe aplikacije relativno zelo hitro ko pa v prototipu uredimo vse podrobnosti je narejen tudi program slika še o prototipih hitrejše programiranje zaradi mnogih že prej napisanih prednosti je programiranje v smalltalku veliko hitrejše kot v drugih programskih jezikih raziskave v zda so pokazale da naj bi bilo na primer programiranje v smalltalku pri večjih aplikacijah okrog krat hitrejše kot programiranje v c nazaj na glavno stran morebitna vprašanja pripombe in predloge lahko naslovite na andrej krajnc uni mb si