xBase u Windows vodama

Milan Bašić
Nije malo programera koji svoju egzistenciju zasnivaju pre svega na xBase dijalektima. Za svakog od njih pojava novog FoxPro-a uvek predstavlja važan trenutak, a verzija 5.0 nosi novitete koje vredi sa posebnom pažnjom proučiti...

U svetu softvera ustaljeni tok stvari je da velika riba pojede malu. Tako je Clipper prešao u ruke Computer Assosiates-a, dBASE Borland-a, a FoxPro Microsoft-a. To je donelo nadu da će FoxPro imati blistavu i sigurnu budućnost, ali događaji koji su sledili još jednom su nam pokazali da u životu ništa nije sigurno.
Kada je Windows postao najvažnija platforma na PC računarima, u Microsoft-u su odlučili da promovišu novi pristup korišćenju aplikacija koji je otelotvoren u paketu Office. U Microsoft-ovom paketu se nije našao FoxPro, već Access, a tu je bio i Visual Basic, na čijim osnovama su razvijeni makro-jezici u Word-u, Excel-u i Access-u. Budućnost FoxPro-a je tako došla pod znak pitanja.
Srećom, korisnici su održali junaka naše priče vitalinim i u tim teškim godinama. Predstavljene su prve verzije za Windows koje su dobro primljene (to naročito važi za FoxPro 2.6), a Access nije stekao očekivanu popularnost kao platforma za razvoj aplikacija, pa su u kompaniji odlučili da odobre sredstva za dalji razvoj Fox-a. Sredinom 1995. se, bez velike pompe, pojavio Visual FoxPro 3.0, svojevrsni probni balon: ako xBase programerska zajednica prihvati novi alat, ići će se dalje sa razvojem, a u suprotnom... Pojava nove verzije Visual FoxPro 5.0 jasno govori o reakciji tržišta.

Revidirani kod

Na instalacionom CD-u se, pored aplikacije, nalazi i kompletna dokumentacija u on-line formi, a za one koji više vole papir, u kutiji su i četiri knjige: Instalation Guide and Master Index (136 strana), Users Guide (186 strana), Language Reference (451 strana) i Developer's Guide (764 strane). Program zauzima 100 do 250 MB prostora na disku, a postoji i laptop konfiguracija koja zauzima samo 15 MB, uz sumnjivu upotrebnu vrednost. Setup omogućava i fino podešavanje za presnimavanje, ali mi preporpučujemo da kompletni Visual FoxPro 5.0 preselite na disk: ušteda na prostoru nije vredna gubitka opšte funkcionalnosti.
Po prvom startovanju aplikacije, naćićete se u okruženju na koje ste navikli, mada su odmah uočljive i prve razlike. Korisnički interfejs je redizajniran tako da je opšti utisak veće saglasje komponenti i viša funkcionalnost radne površine. Otvaranje menija ili prozora je daleko brže na slabijim računarima: PC računar sa 486 na 50 MHz sa 10 MB RAM-a obezbediće sasvim pristojan rad. Što se tiče operativnih sistema, podržani su Windows 95 i NT, dok je podrška za Windows 3.1x izostala.
Brži rad ukazuje da je kod značajno revidiran. Prethodna verzija je bila stabilna, ali smo joj zamerali izvesnu tromost, kao i loše upravljanje sistemskim resursima. Drugim rečima, stalno ste morali da vodite računa da sistem, bez obzira koliko operativne memorije imate, ne preopteretite kako ne bi ostali bez neophodnih resursa.

Upravljanje projektom

Centralno mesto na ekranu i dalje zauzima Project Manager, iz koga lako pristupite bilo kojoj komponenti aplikacije u razvoju. On sarađuje sa programima koji prate izmene na izvornom kodu kakav je MS Visual SourceSafe. Poboljšan je sistem koji omogućava simultani rad nekoliko programera na projektu, pa nekoliko projektanata istovremeno može da menja bazu podataka ili komponente projekta. Prozor Project Manager-a je postao još funkcionalniji: pored mogućnosti da ga pomerate po radnoj površini ili postavite neposredno ispod Toolbar-ova i otvarate samo onaj tab koji vam je u datom trenutku potreban, moguće je i izvući tab koji će se na radnoj površini ponašati kao samostalan prozor. Ova poslednja je dobrodošla u odmaklim fazama rada na projektu, kada je radna površina pretrpana objektima.
Objekti koji proističu iz Project Manager-a su doživeli izmene čiji je cilj veća funkcionalnost. U Database Designer-u beležimo mogućnost manipulacije konekcijama preko Connection Designer-a, što olakšava kreiranje aplikacija koje pristupaju udaljenim podacima preko ODBC drajvera. Do sada se ovaj posao obavljao preko ODBC Administrator-a, koji je trebalo posebno pozivati. I ostali "dizajneri" su dopunjeni novim opcijama koje skraćuju lutanje po prozorima.
Izdvojimo nekoliko noviteta. Ako za pristup podacima koristite Pessimistic Buffering, zaključavanje slogova je efikasnije, Table Designer je dobio novi tab kroz koji podešavate svojstva tabele i pozive funkcija koje kontrolišu trigere ili Record Validation, kroz Query i View dizajnere kreirate spoljne veze, dajete alijase kolonama ili podešavate procenat slogova koji će biti jednovremeno učitani... Novitet Form Designer-a je podešavanje tipa prozora: može da se koristi Multiple Document Interface ili Single Document Interface; u drugom formular može da bude "dete" desktop-a. Kroz Shortcut Menu Designer lako kreirate popup menije, a umanjeni Properties prozor Form Designer-a smanjuje gužvu na radnoj površini.

U središtu zbivanja

Prave vrednosti novog Visual FoxPro-a kriju se u većoj integraciji novih tehnologija. Tu pre svega mislimo na ActiveX, koja otvara vrata ka razvoju savremenih informacionih sistema namenjenih Windows platformi. ActiveX je, da se podsetimo, grupa otvorenih tehnologija koje unapređuju OLE-a. U Visual FoxPro-u, ActiveX omogućava korišćenje kako Automation server-a, tako i kontrola.
Automation server je tehnologija koju smo ranije poznavali kao OLE server; omogućava da se aplikacija razvijena u Visual FoxPro-u dinamički poveže sa drugim aplikacijama. Slično važi i u suprotnom pravcu, odnosno iz vaše aplikacije mogu se pozivati drugi Automation serveri, recimo Excel.
Bilo koju klasu ili objekt vaše aplikacije lako proglašavate Automation serverom i tako omogućavate korisnicima da objektu pristupaju iz drugog programa. Recimo:

DEFINE class osoba AS CUSTOM OLEPUBLIC
Ime = SPACE(30)
Prezime = SPACE(45)
PROCEDURE ProslediIme
RETURN This.Ime + " " + This.Prezime
ENDPROC
ENDDEFINE


Kreirali smo OLEPUBLIC klasu i unutar nje metod čiji je zadatak da dva stringa spoji u jedan. Objekat sazdan od ove klase možemo da koristimo kako unutar Visual FoxPro aplikacije, tako i iz bilo kog drugog programa koji podržava ActiveX Automation. Recimo iz Visual Basic-a:

Set oTest = CreateObject("foxole.osoba")
With oTest
.Ime = "Petar"
.Prezime = "Petrović"
End With
cName$ = oTest.ProslediIme()


Mogu se kreirati Remote Automation aplikacije, što znači da Automation server može da bude na jednom, a klijent na drugom računaru. Ovo je naročito korisno kod izrade klijent/server aplikacija ili asinhronog procesiranja.
Pored Automation tehnologije, ActiveX donosi i nove kontrole koje se u kreiranju formulara ravnopravno koriste sa standardnim kontrolama. Na tržištu je preko 1000 kontrola koje koriste ISimpleFrame interfejs, što olakšava posao programerima. Uostalom, bila bi prava šteta trošti vreme u pravljenju elemenata savremene Windows aplikacije, kada je već neko to uradio.
ActiveX kontrole nisu zatvoreni sistem - možete da ih proširujete metodima i svojstvima specifičnim za primenu koju ste odabrali. Na engleskom ova osobina se označava terminom reusable i, ako sebi damo slobodu izražavanja, predstavlja novi sinonim za objektno programiranje. Visual FoxPro 5.0 se u velikoj meri uklapa u shvatanje modernog OOP sistema; ta konstatacija će izavati burne reakcije programerskih "čistunaca", ali pitamo se da li zaista postoji "živi" programski jezik koji u potpunosti poštuje sve OOP definicije. Za programera čiji je osnovni i jedini cilj kreiranje Windows programa koji manipuliše velikom količinom podataka raznorodnog karaktera, mogućnosti rukovanja objektima ugrađene u Visual FoxPro 5.0 su dovoljne.

Sledeća stanica - Internet

Mada Microsoft to nije potencirao, prethodna verzija Fox-a je znala da se izbori sa klijent-server arhitekturom. Tada ste bili vezani za SQL Server, dok je sada podržan i Oracle. To je, posmatrano sa vremenske distance, donekle iznuđeni potez, jer su sva marketinška sredstva bila usredsređena ka Visual Basic-u kao "idealnoj" platformi za razvoj klijenata - trebalo je parirati narastajućoj popularnosti Delphi-ja. Sa pojavom verzije 5.0, stvar se iz korena promenila i na sva zvona je promovisana mogućnost da, istim alatom, kreirate aplikacije koje koriste konvencionalnu i klijent-server arhitekturu. Akcenat je stavljen na razvoj u lokalnom okruženju i bezbolno prenošenje sistema na Database server. Većinu stvari sam obavi Upsizing Wizard.
Microsoft se potrudio da nam priredi još jedno iznenađenje: mogućnost pravljenja HTML strana, preko kojih možete da pretražujete bazu podataka preko Interneta (ili intraneta) i da dobijete izveštaj koji sadrži rezultat upita. Opcija je podržana odgovarajućim "čarobnjakom", ali vredi pomenuti uslove koji treba da budu zadovoljeni da bi se Fox našao u ulozi informacionog Web servera.
Osnovni Web server treba da podržava ISAPI (Internet Server API), aplikacija koja je razvijena u Visual FoxPro-u treba da bude projektovana tako da je moguće njeno pozivanje kao Automation servera i mora da postoji "izlaz" preko koga će biti distribuirani rezultati rada nad bazom, obično HTML template. Aplikacija kreirana u Fox-u, dakle, može da radi na četiri načina: iz razvojnog okruženja, kao samostalni izvršni program, kao OLE server i preko Internet Browser-a, kojim korisnik upravlja sa udaljenog računara koji čak i ne mora da bude Windows kompatibilan.

U radu

Test rada sistema počeli smo kreiranjem novog projekta, i tu smo se odmah našli pred dilemom: da li da posao obavimo sami, ili da startujemo novi Application Wizard. Druga mogućnost nam se učinila interesantnom: kroz pet koraka "čarobnjak" nas je odveo do nove aplikacije. Prvo smo zadali ime projekta, izabrali generisanje kompletne aplikaciju (alternativa je okvir koji ćete posle prilagoditi vašim potrebama), odredili bazu podataka (može da se koristi postojeća, ili da se kreira nova na osnovu šablona) i... to je sve. Pošto smo ga upoznali, zaključili smo da je Application Wizard dobrodošao neiskusnima, dok će se oni drugi pre odlučiti za razvoj "od nule".
U tom slučaju, prvi korak koji sledi iza kreiranja projekta je definicija baze podataka. Za razliku od ustaljenog sistema xBase jezika, DBF datoteke su ovde samo skladišta tabela i u radu ih gotovo ne primećujete. Database Designer tretira celokupnu bazu podataka i omogućava podešavanje svih relevantnih parametara, kako za bazu, tako i za pristup podacima sa nekog drugog izvora. Pored rada sa tabelama (kreiranje, postavljanje referencijalnog integriteta i permanatnih relacija), tu su i pogledi (Views), virtuelne tabele koje nastaju spajanjem podataka na nivou baze ili šire. Udaljenim bazama pristupa se isključivo preko pogleda. Ispod školjke se krije standardni SQL jezik, odnosno naredba SELECT sa brojnim opcijama. Sviđa nam se što je rad u Database Designer-u logičan i nije potrebno puno vremena da bi se shvatilo "šta se tu dešava", ali ponukani iskustvom iz verzije 3.0, ne verujemo automatskom generatoru funkcija referencijalnog integriteta, koje su često radile poglešno. Nismo, istina, primetili neke nedostatke, ali koga je zmija ujela...
Zgodno je što postoji opcija beleženja procedura u okviru same baze - podaci koji ne treba da se vide mogu biti skriveni na ovom mestu, a da su vam ipak pri ruci, uz mogućnost revizije strukture same baze. Zgodno je ovde upisati trigere, funkcije koje automatski upisuju neku vrednost (možda primarni ključ) ili procedure koje kontrolišu proveru pravilnosti podataka.
Rad se u ovom delu Visual FoxPro-a odvija se bez usporenja, čak i na slabim mašinama - veliko unapređenje u odnosu na verziju 3. Čak je i brzina kompajliranja modula, bez obzira o kom tipu se radi, više nego zadovoljavajuća. Kako snaga računara raste, tako relativno ubrzanje u odnosu na Visual FoxPro 3.0 opada, a celokupne testove obavili smo na tri platforme od kojih je najslabija bila 486/80 sa 16 MB RAM-a, srednja 486/100 sa 32 MB RAM-a i SCSI keš kontrolerom na kome je dodatnih 16 MB memorije, a najjača Pentium/133 sa 64 MB RAM-a.

Performanse okruženja

Sličnu lakoću i intuitivnost rada otkrili smo i u Forms Designer-u, u kome se oblikuju svi formulari za aplikacije. Uostalom, Designer-i u Visual FoxPro-u su od samog početka dobro osmišljeni - prate kako kako logiku operativnog sistema, tako i generacije Microsoft-ovih "vizuelnih" jezika kojima pripadaju.
Debager je značajno unapređen. U prethodnoj verziji bio je nužnu pomoć, ali sada je dostigao nivo uptrebljivosti da ga smatramo pravim pomoćnim alatom u okviru ozbiljnog razvojnog sistema. Tu su sve standardne opcije i prozori u kojima može da se prati izvorni kod, vrednosti promenljivih, stek poziva i izlaz.
Sve u svemu, Visual FoxPro 5.0, posmatrajući performanse razvojnog okruženja, pruža puno: brzina rada i stabilnost, koji direktno utiču na produktivnost rada, su na visini, a većina stvari koje automatski naprave razni "čarobnjaci" i builder-i je funkcionalna toliko da se ne mora previše "kopati" po kodu ili Properties prozoru.
Ovaj prikaz ne bi bio celovit kada se ne bismo osvrnuli na kvalitet krajnjeg proizvoda, prevedene Windows aplikacije. Iako Visual FoxPro nije pravi kompajler (bez obzira da li je generisan APP ili EXE fajl, negde u pozadini se "vuče" Run-time komponenta), brzina kojom se formira prikaz na ekranu je korektna. Nema neprijatnih usporenja čak i na računarima sa samo 8 MB operativne memorije, što je bila mana prethodne verzije. Što se tiče manipulacije podacima u lokalnoj bazi, dovoljno je reći: Rushmore optimizacija: ova tehnologija je, izgleda, i dalje zagonetka za ostale RDBMS sisteme.
Rad sa test bazom čija glavna tabela ima 20000 slogova je bio munjevit, bilo da se radi o sortiranju, filtriranju ili traženju podataka po indeksiranom ključu ili bez njega. Nažalost, isto ne važi ako se podacima prisupa preko ODBC drajvera, ali treba reći da se ni konkurentski sistemi, pre svega Access i Visual Basic, ne snalaze mnogo bolje na tom zadatku.

Mesto pod suncem

Pre samo nekoliko meseci se činilo da je Visual FoxPro nestao iz glavne struje dešavanja na sceni razvojnih sistema, ali i sam Microsoft se potrudio da nas razuveri. Kako po svojim mogućnostima koje otkrivaju pogled u budućnost, tako i po zvaničnim saopštenjima kompanije, ovaj paket je stavljen rame uz rame sa Visual C++ i Visual J++, što pokazuje da je Access potisnut (ili možda unapređen?) ka softveru koji je namenjen širokoj publici. Što se Visual Basic-a tiče, njegovo mesto i dalje nije strogo definisano, ali je on svakako blizu programerskoj zajednici.
Znatno je ozbiljniji izazov uporediti Fox sa proizvodima drugih kuća. Tek sada je jasno da se radi o sistemu namenjenom razvoju klijent-server aplikacija, ali tu su se drugi već ustoličili. Čini nam se da ti sistemi nemaju nekih značajnih prednosti i da će pre svega odlučivati ukusi programera i stare navike. A tu ovaj paket može da dođe na svoje, jer xBase programera koje napredak tehnologije tera u Windows vode ima napretek.

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