Objavljeno: 17.5.2005 10:59 | Avtor: Uroš Mesojedec | Monitor Maj 2005

Uroš Mesojedec: Boj podlag

Uroš Mesojedec: Boj podlag

Kadar smo soočeni z reševanjem problema, je praktično izbrati podlago, na kateri bomo s čim manj truda prišli do čim boljše rešitve.

Obvladovanje zapletenosti je ena izmed definicij dela programerja. In kot da ne bi bilo dovolj zapleteno že obvladovanje strojne opreme, je mnogokrat še veliko teže obvladati problematiko, ki naj bi jo programska oprema reševala. Zaradi take, kar dvojne zapletenosti, ki naj bi jo programerji obvladali, ni nič čudnega, da toliko projektov doživi neslaven konec.

Delna tolažba je znano pravilo, da pri reševanju projekta lahko izberemo le dvoje izmed naslednjega: poceni, pravočasno in kakovostno. Marsikdaj še tako velike vsote denarja ne morejo rešiti zavoženega projekta. Znano je tudi, da dodajanje ljudi ne prinese rešitve, saj zapletenost njihovega medsebojnega sodelovanja še dodatno onemogoči uspešno delo. O kakovosti pa sploh ne gre izgubljati besed. Težave nastajajo praktično povsod in sprejemljiva stopnja nezanesljivosti je pač dejstvo, ki ga sprejmemo že vnaprej.

Seveda nihče namenoma ne vlaga časa in denarja v nekaj, kar je vnaprej obsojeno na neuspeh. Zato se ponudba rešitev kar naprej spreminja. Danes en zveneč izraz, jutri druga kratica. Vsak dan pa nekaj novega, kar naj bi končno rešilo svet. In vendar še vedno rešujemo enake težave. Posebne žrtve v tem procesu so programerji uporabniških programov.

Zaradi velike zapletenosti, ki jo prinaša reševanje vsakega resničnega problema, je danes iluzorno pričakovati, da bi lahko uspešno rešitev, vsaj v okviru zadanih kakovostnih in finančnih ciljev (če se moramo odreči enemu, se dajmo tokrat pravočasnosti), dobili, ne da bi se oprli na katero od vzpostavljenih podlag. Tega se igralci v računalniški industriji še kako dobro zavedajo. Zmagovalci v boju podlag bodo najbolj daljnosežno vplivali na nadaljnji razvoj računalniške industrije. Microsoftov šef Ballmer se ni kar tja v tri dni znojil na odru in vpil "razvijalci, razvijalci, razvijalci...".

Podlaga je danes veliko več kot, denimo, programski jezik. Tudi razvojne knjižnice, za katere se je pred leti mislilo, da bodo krojile odločitve razvijalcev, niso najpomembnejše. Odkar se je svet povezal in reševanje novih problemov zahteva internetno ozaveščenost, je ustrezna razvojna podlaga celoten programski strežnik, ki zajema vsaj rešitev za shrambo podatkov, popoln sklad internetnih storitev, večuporabniško okolje s čim večjo sposobnostjo stopnjevanja zmogljivosti in prijazen, a zelo zmogljiv programski jezik s priloženo knjižnico, ki naj zmore čim več, da si ne mažemo rok s postopki, ki so bili že zdavnaj odkriti in rešeni na optimalen način.

Zdi se, da sta dva velika nasprotnika v boju podlag trenutno tabor, zbran okoli jave, in Microsoft, ki se je zabavi priključil nekoliko pozneje s svojo pobudo .net. Javi je uspelo nekaj izjemnega - povezala je številna podjetja v industriji, ki si na številnih slojih podlage drugo drugemu skačejo v zelje, kljub vsemu pa so posvojila enoten programski standard za njihov nadzor. IBM in Oracle npr. sta zelo huda konkurenta pri ponudbi podatkovnih strežnikov, vendar sta oba programska strežnika zgradila z javo. Kljub temu se javi pozna, da je bila - kljub vcepljeni neodvisnosti od podlage, večnitnosti in dinamičnosti - v svet programskih strežnikov vstavljena šele naknadno. Številne rešitve, npr. podpora spletnim storitvam, so prišle pozno in se s težavo vklapljajo v obstoječe knjižnice, zapletenost razvoja "poslovne" jave (J2EE) pa je presegla vse razumne meje. Na srečo se čedalje več postopkov avtomatizira, razvojna orodja pa postajajo vse bolj učinkovita, kar nekako zakrije dodatni sloj zapletenosti, ki ga je java, precej nepotrebno, vnesla v reševanje resničnih problemov. Vse to seveda ni šlo neopaženo mimo Microsofta, ki se je s podlago .net javi najprej pošteno priklonil, potem pa jo je poizkusil poraziti na vseh njenih šibkih točkah. Seveda jim je bilo delo znatno olajšano z izkušnjami, ki jih je prva podlaga že prestala, hkrati pa jih strojna neodvisnost, čeprav je s podlago .net mogoča, ni pretirano ovirala, saj ogrodje .net v resnici danes živi le na sistemih, ki poganjajo Okna. No, vsaj Microsoftova različica. Štrene vsem namreč meša skupnost, zbrana okoli proste in odprte kode. Ta je v boj podlag korenito posegla in ima prav toliko možnosti za prevlado kot druga dva igralca. Seveda pa je v svetu proste kode težko govoriti o prevladi, saj je njen cilj predvsem sodelovanje.

Osvežimo si spomin. Gibanje proste kode je nastalo kot odgovor na nekaterim nesprejemljive pogoje rabe operacijskega sistema unix. V nekaj letih jim je uspelo razviti ključna orodja, z vstopom Linuxa v ta svet pa so dobili tudi uporabno jedro operacijskega sistema. Prosti klon Unixa je bil tako rojen in odprla se je pot za nadaljnjo izgradnjo celovite razvojne podlage. Vendar v odprtem svetu na tem področju nikoli ni šlo vse po enem tiru. Že sistemski pripomočki tipično zahtevajo nekaj deset različnih izvajalnih sistemov, od ukaznih lupin prek najrazličnejših tolmačev do pravih prevajalnikov, vsi pa zahtevajo še kupe nameščenih knjižnic. A tako je pač vedno bilo. Ko je prišla java, zaradi strahu Suna pred cepitvijo na številne nezdružljive različice ni bilo mogoče doseči popolnega odprtja njene kode in to je bilo za nekatere znova zadosten razlog, da so se razvoja klona lotili sami. Tudi Microsoftovi pobudi .net se je zgodilo podobno; s sicer nekoliko drugačnimi motivi je nastal mono, njen skoraj enako zmogljiv klon.

A to so le odgovori skupnosti na ponudbo "velikih". Povsem mogoče je, da bo miselni delež razvijalcev vse bolj pridobivala še ena podlaga - podlaga resnično dinamičnih jezikov, ki na inovativnih ogrodjih omogočajo sestavljanje programske opreme novega rodu. Trend je začel perl, ki se je v spletu znašel skozi poenostavljeno skriptno različico PHP, vse skupaj pa je v orbito izstrelil Apache in podatkovni strežnik MySQL, s katerima se izvrstno znajde. Ta odprtokodna podlaga, ljubkovalno označena s kratico LAMP (Linux,Apache,MySQL,PHP/perl), je nastala nenačrtno, vendar jo danes uporablja velik delež razvijalcev. Zakaj? Ker temelji na odprtih standardih! Znana past velikih ponudnikov je vzpostavljanje lastnih, le navidez odprtih standardov, ki razvijalca zaklenejo in mu ne omogočajo proste izbire, ko se znajde v težavah. Java to rešitev delno odpravlja, saj smo nekoliko svobodni vsaj pri izbiri ponudnika, žal pa jo skupnost ni posvojila in nič ne kaže, da bi jo lastnik zadosti sprostil.

Zato pa se na odprtih standardih gradijo nove in nove rešitve. LAMP je, kljub svoji priljubljenosti, le otroško igrišče za vznemirljive novosti, ki šele prihajajo. Ker bodo gradile na odprtih standardih, je investicija časa in denarja vanje verjetno še najbolj varna. Če seveda lahko čakamo, da bodo dozorele. Morda pa našim problemom ustrezajo že danes?

Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!

Komentirajo lahko le prijavljeni uporabniki

 
  • Polja označena z * je potrebno obvezno izpolniti
  • Pošlji