Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web development, networking and server security. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

Gde se pogresio sa Smalltalk-om 2

Ian Bicking: stariji deo njegovog bloga

Gde se pogrešilo sa Smalltalk-om 2

Imao sam nekoliko reakcija na moj poslednji post . Kao što sam rekao vec, on je bio napola gotov, kada sam zapocinjao da ga pišem nisam znao kakvi ce zakljucci biti i nisam ponovo sve iz pocetka pisao kada sam video na kraju kakvi su mi zakljucci. Tako da su etiketirali kao neinformisanog, radije nego kao nekog ko je malo više neorganizovan.

Dosta dugo sam programirao koristeci Smalltalk dok sam bio još u školi. Upijao sam Kool Aid, razumeo sam filozofiju, citao sam literaturu. Samo sam koristio Squeak , a bio sam svestan da drugi sistemi imaju više alata. Svi drugi sistemi su vlasnicki, a igrom slucaja Smalltalk zajednica (vecim svojim delom) nije besplatan softver. Siguran sam da se dešavaju stavari otvorenog izvora (a Squeak je sasvim kul), ali sve napredne (skoro “moderne”) karakteristike izgleda da su vlasnicke. Mislim da nije fer da ih napustimo samo zbog toga. Ali ja nisam fer i ja ih zbog toga napuštam.I svakako se ne izvinjavam zbog toga.

Sada, hajde da se vratimo sa mojih zakljucaka:

Smalltalk ne nudi nikakav put sa tacke A na tacku B. Smalltalk ima mnogo dobrih karakteristika. Mnogo njih ukljucuje razlicita ponašanja pri programiranju i razmišljanje o samoj prirodi programiranja. Tu je i sintaksa - nije to loša sintaksa, ali nije to ni dominantna sintaksa, i ne ponaša se dobro u prisustvu odlicnih sintaksi. teško je iapk uporediti jednu naspram druge (npr. ne poklapaju se jedna sa drugom). Ipak sintaksa je mali deo svega, ali to je jedan od delova gde Smalltalk sve iznova osmišljava. Mnogo tih inovacija su uspešne, mnogo njih je i veoma elegantno ako se gleda kao celina. Ali ili ih prihvatite ili ne. To je velika greška.

Smalltalk obezvreduje ideju “programa". Smalltalk izgled jeste set divnih, živahnih interaktivnih objekata, kao agenti u jednoj zajednici. Cesto nacin na koji su u interakciji deluje krajnje spontan, a izgleda i kao da su svi oni vršnjaci bez vidljivog centra. Ravioli kod je cesto rezultat toga.

Ali tu ima više od raviola koda. Smalltalk podstice stil u kome cesto ne postoji nikakv program. Sve je podeljeno u zahtevnoj zajednici gde je mala razlika izmedu koda i infrastrukture. Otvorite radno mesto, postavite objekte i povežete ih, zatim pokrenete dugme koje opet same njih pokrene. Ali kao rezultat svega teško je razlikovati program od jednostranog radnog mesta. Zope ima mnogo takvih problema, a interesantno je da ovaj clanak vas podstice da pratite metodologiju koja “Obespravljuje podatke koji idu u bilo koje dato ZODB spremište”, zahvaljujuci izazovu o kooperaciji u takvom okruženju. iZnam da postoje drugi alati za bolju kooperaciju sa Smalltalk-om od Zope. Ali oni su uglavnom vlasnicki, tako da ih se odricem :p (ne živim ni u svetu Smalltalk-a, tako da nemojte tražiti od mene da se odreknem trenutnih alata koje koristim)

Ipak, šteta koju ravioli kod nanosi ne treba biti zanemarena. Kratka definicija sa wiki stranice:

U svetu strukturalnog programiranja, kada stvari pocnu da se zapetljavaju vaš kod postane Špageti kod. Svi znaju šta je to Špageti kod. Receno je da sa objektima dobijate ravioli kod: hiljade malih klasa svuda oko vas, a niko nije u stanju da pronadje pravo mesto odakle sve stvari zapocinju da se dešavaju.

Opet, ravioli kod ne nudi put od tacke A do tacke B. Tacka A ovde jeste nebitni programer koji se uvodi u kod, tacka B jeste isti taj programer koji uspešno pravi bilo koje promene koje su neophodne. Po mom iskustvu kod raviloli koda postoji geštalt koji dolazi do svoje brze realizacije kada se sve kockice sastave. Ali pre nego što dodjete do te ralizacije zaticete sebe da se nalazite u nizu raznih kodova kada je teško predvideti efekte ili odrediti uzrok, a i cesto ne znate koliko se ste daleko od realizacije geštalta.

Ovo je ono što sam mislio kada sam rekao da je Smalltalk programski jezik doveo mnogih okvira i do ne mnogo biblioteka - okvir od vas zahteva da uzmete u obzir odredjene metafore izuzetka, da vaš razvojni tok uklopite u odredjeni okvir, a ne dat okvir podredite vašem razvojnom toku. Okviri su nekada vredni toga, ali je to uvek po odredjenoj ceni.

Nedostatak poštene sintakse za opšte jednostavno programiranje (tj. funkcionisanje) takodje ne pomaže da Smalltalk postane jednostavniji ili pristupoacniji.

Skrenuo sam sa mnogo glavnih tacaka ovde: Smalltalk kod jeste organski i produživ, ali se ne snalzi u dodiru sa necim sto je tako suptilno kao što je jedan “program”. Trenutni kompjuterski svet je svet programiranja, ne objekata. Možda cemo doci do sveta objekata, ali bi trebalo da postoji zvezda vodilja koja vodi do tacke B, a pocinje od tacke A.

Dakle onda je možda moj zakljucak da je Smalltalk jedna nekompromisna vizija, ali svet još nije spreman za takvu viziju. Kažem “svet još nije spreman” sa empirijske tacke gledišta, ne kao osudivanje. Niti ja osudjujem svet i borim se protiv njegove neukosti u pogledu ne prihvatanja dobrih stvari. Svet je takav kakav je, a mi smo tu gde jesmo. Mi možemo pokrenuti svet u pravcu koji želimo, ali ga samo možemo pokrenuti, a ne možemo želeti da smo negde drugo.

(Možda nije fer -- mi kao individue možemo da skakutamo okolo koliko želimo, možda je to stvar pronalazaka;tako da je moj zakljucak samo pitajuci)

Published (Last edited): 06-11-2012 , source: http://blog.ianbicking.org/where-smalltalk-went-wrong-2.html