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 servers, web development, networking and security services. 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.

Java okruženje za podučavanje koncepata programskih jezika

Manfred Hauswirth, Mehdi Jazayeri, and Alexander Winzer
Distributed Systems Group
Technical University of Vienna
Argentinierstraße 8/184-1, A-1040 Wien, Austria
{M.Hauswirth,M.Jazayeri,A.Winzer}@infosys.tuwien.ac.at
http://www.infosys.tuwien.ac.at/

 

Siže - Opisujemo SDE vizuelni ambijent za proučavanje semantike programskih jezika. SDE podržava apstraktnu mašinu pod nazivom SIMPLESEM koja se koristi za definisanje operativne semantike programskih jezika u rasprostranjenom udžbeniku o programskim jezicima. Zahvaljujući zasnivanju okruženja na infrastrukturi World-Wide Web-a, okruženje postaje odmah raspoloživo za studente i instruktore širom sveta. SDE poboljšava učenje studenata simulirajući i vizuelno prikazujući apstraktne pojmove semantike. Takve vizualizovane sredine su od neprocenjive vrednosti u studiji apstraktnih subjekata. SDE se trenutno koristi na brojnim univerzitetskim kursevima u različitim zemljama. Mi opisujemo arhitekturu okruženja, sposobnosti i pregled svojih iskustava u razvojnom okruženju.

Uvod

Kursevi o konceptima i principima programskih jezika čine standardni deo programa računarske nauke na univerzitetima. Za razliku od kurseva o programiranju na pojedinim jezicima, ovi kursevi naglašavaju sličnosti i razlike različitih programskih jezika. Na tim kursevima govori se o sintaksi i semantičkim komponentama programskih jezika. Proučavanje sintakse bavi se statičkim aspektima programskih jezika, na koje se može primeniti BNF notacija, koja je postala standardni alat za takve studije. Za proučavanje semantike, međutim, postoji nekoliko pristupa, ali ne postoji konsenzus za najbolji metod. Postojeći pristupi semantičkog opisa mogu biti kategorizovani kao aksiomski, denotacioni i operativni.

Operativni pristup definiše semantiku programskog jezika s osvrtom na izvršenje programa na apstraktnoj mašini. Konkretno, semantika jezičkog konstrukta definiše se tako što daje svoj prevod terminima instrukcija apstraktne mašine. Dakle, da bi u potpunosti razumeo semantiku programskog jezika, student mora naučiti uputstva apstraktne mašine, kako da prevede programe programskog jezika u programe apstraktne mašine i kako apstraktna mašina izvršava svoje programe. Na konvencionalnim kursevima, to se radi pomoću olovke i papira. Kad nauči semantiku jezika, student bi trebalo da bude osposobljen za prevod jezičkog konstrukta u instrukcije apstraktne mašine. Kako da student bude siguran u tačnost tog prevoda? Bez obzira na jednostavnost apstraktne mašine, praćenje izvršenja konstrukata kao što su rekurzivne procedure predstavlja dosadan posao podložan greškama jer student mora ručno da prođe kroz kod prateći svaki podatak, pokazivač, štos i gomilu.

Računarsko okruženje koje podržava razvoj programa, izvršenje i vizuelizaciju za apstraktne mašine oslobađa studenta od potrebe da se bavi dosadnim mašinskim izvršenjem, umesto da se koncentriše na semantike jezičkih konstrukcija. Vizuelno izvršenje programa oživljava semantiku jezičkih konstrukata. Vetter [7] tvrdi za “specijalizovane alate” da poboljšavaju razumevanje kursa. SIMPLESEM razvojno okruženje (SDE) je alat specijalizovan za koncepte programskih jezika. SIMPLESEM je semantička apstraktna mašina koja se koristi u knjizi Programming Language Concepts [4]. SDE je grafičko Java okruženje koje omogućava studentu da izmeni i pokrene SIMPLESEM programe, kao i da otkloni greške u njima. SDE animira SIMPLESEM izvršenja tako što vizualizuje kod i memoriju SIMPLESEM procesora. Korisnici imaju interaktivnu kontrolu nad memorijskim sadržajima i protokom programa u bilo kom trenutku. Podržani su i kod i tačke prekida podataka. Ovi objekti omogućavaju lako otklanjanje grešaka, kontrolu programa i toka podataka. To dovodi do boljeg razumevanja dinamičkog ponašanja programa [6]. Upotreba nove tehnologije za poboljšanje nastave i učenja trenutno predstavlja oblast aktivne diskusije. Poseban problem ACM komunikacija [1] odnosi se na nove edukativne upotrebe računara u studentskim centrima. Virtuelni okrugli sto [3] raspravlja o mnogim zanimljivim pitanjima i implikacijama nove IT obrazovne infrastrukture. Krämer [5] opisuje opšte probleme učenja na daljinu, promenu primera koji se navode u klasičnom podučavanju, u podučavanju na daljinu, kao i u specifičnom on-line kursu za distribuirani softverski inženjering.

SDE je prenosiv na mnoge platforme i može se koristiti bilo preko World-Wide Web-a u pretraživaču gde je omogućena Java (applet verzija) ili kao samostalna aplikacija. Da bi se obezbedila funkcionalnost identična u obema verzijama, uprkos činjenici da Java applet-i i aplikacije imaju različite bezbednosne uslove, applet simulira funkcionalnosti dozvoljene isključivo za aplikacije, npr applet verzija uključuje jednostavan server datoteka za skladištenje i unos koda. SDE ima jedan programski izvor za obe verzije. SDE je dostupan preko WWW-a i ne zahteva instalaciju na klijentskim računarima. Jedini uslov za njegovo korišćenje je pretraživač WWW-a u kome je omogućena Java.

Ovaj članak ima sledeću strukturu. Prvo ćemo opisati semantički apstraktni SIMPLESEM procesor s osvrtom na SDE i njegove funkcionalnosti. Zatim ćemo reći nešto o uticaju koji SDE ima na nastavu jezičke semantike. U poslednjem poglavlju rezimiramo glavne tačke, prikazujemo šta smo naučili i navodimo zaključak.

SIMPLESEM koncepti

SIMPLESEM je apstraktni semantički procesor koji podržava operativni pristup semantici programskih jezika. Time se omogućava razumevanje konkretnih pojmova programskog jezika tako što se mapiraju na sekvencama SIMPLESEM uputstava koja mogu “biti izvršena”.

SIMPLESEM se sastoji od pokazivača instrukcija i memorije, koja je podeljena na dve odvojene sekcije - jednu čine kod i podaci memorije, a drugu procesor. Memorija koda (C) sadrži kod koji se izvršava, a memorija podataka (D) sadrži podatke kojima manipuliše kod. I C i D adrese počinju od nule 0 (nula), a podrazumeva se da su i programi i podaci sačuvani na tim adresama. Pokazivač instrukcija (IP) koristi se za pokazivanje sledeće C komande koja treba da se izvrši. Inicijalizuje se na 0 i automatski se povećava kad se izvrši instrukcija. Svaka instrukcija zauzima jedno mesto u C. Izvršenje se prekida nakon posebne instrukcije halt.

Notacije C [X]] i D [X]] koriste se za označavanje vrednosti koje se čuvaju na X lokaciji u C i D. Izmena vrednosti uskladištene na lokaciji vrši se instrukcijom set target, source gde je target adresa lokacije čiji sadržaj treba da se izmeni, a source je izraz koji predstavlja novu vrednost. Na primer, set 10, D[20] skladišti vrednost lokacije 20 na lokaciju 10.

Ulaz/izlaz u SIMPLESEM postiže se pomoću instrukcije set, a odnosi se na posebne registre read (ulaz) i write (izlaz). Na primer, set 15, read pročitaće vrednost iz ulaznog uređaja i sačuvati je na lokaciji 15, a instrukcija set write, D[50] odštampaće sadržaj lokacije 50 na izlaznom uređaju.

Vrednosti se mogu kombinovati u izrazima na slobodan i na prirodan način. Na primer, set 99, D[15]+D[33]*D[41] bila bi prihvatljiva instrukcija za izmenu sadržaja lokacije 99. Da biste izmenili sekvencijalni kontrolni protok, SIMPLESEM nudi komande jump i jumpt. Prva predstavlja bezuslovni skok na određenu instrukciju, npr. jump 47 pomera instrukciju na C[47] gde treba da se izvrši sledeća instrukcija. A druga instrukcija predstavlja uslovni skok koji se javlja ako izraz ima tačnu vrednost. Na primer, za jumpt 47, D [3]> D [8] izvršenje će se nastaviti na lokaciji 47, ako je vrednost na lokaciji 3 veća od vrednosti na lokaciji 8, inače se izvršenje nastavlja sledećim uputstvom.

SIMPLESEM dozvoljava indirektno adresiranje. Na primer, setD[10], D[20] dodeljuje vrednost uskladištenu na lokaciji 20 ćeliji čija adresa je vrednost uskladištena na lokaciji 10. Dakle, ako se vrednost 30 skladišti na lokaciji 10, instrukcija menja sadržaj lokacije 30. Uz pomoć instrukcije jump može i da se zaobilazi. Na primer, jump D[13] skače na instrukciju sačuvanu na lokaciji 88 C, ako je 88 vrednost uskladištena na lokaciji 13.

Kao što se može videti iz opisa SIMPLESEM-a, to je jednostavna mašina čije je funkcionisanje i efekte izvršavanja instrukcija lako razumeti. Drugim rečima, možemo pretpostaviti da je njena semantika intuitivno poznata studentima sa osnovnim računarskim obrazovanjem. Semantika programskih jezika može se opisati pravilima koja preciziraju kako je svaki konstrukt jezika preveden u niz ekvivalentnih SIMPLESEM uputstava. Pošto su SIMPLESEM uputstva već poznata, semantika novodefinisanih konstrukata takođe postaje poznata.

Sve konstrukcije i koncepti modernih programskih jezika kao što su petlje, rutine, rekurzije, stack i heap memorije, blok strukture, određivanje okvira, semantika prolaznih parametara, mogu biti mapirane na opisanim SIMPLESEM uputstvima. To mapiranje, međutim, prevazilazi okvire ovog rada. Zainteresovani čitalac upućuje se na [4] ako želi da vidi detaljan opis.

Slika 1 prikazuje jednostavan i intuitivan primer mapiranja koncepata programskih jezika na SIMPLESEM uputstva.

 A mapping to SIMPLESEM
Slika 1: Mapiranje na SIMPLESEM

Program na levoj, prikazan kao C kao jezik, izračunava najveći zajednički delilac dva cela broja pomoću jednostavne petlje. Kod sa desne strane prikazuje isti program sa SIMPLESEM uputstvima.

SIMPLESEM razvojno okruženje

Studenti već na prvim godinama studija uče kako da prođu kroz proceduralni kod. Bez softverske podrške, prolazak kroz kod je dosadan zadatak podložan greškama. SIMPLESEM razvojno okruženje (SDE) je grafičko okruženje čija je osnova Java, a podržava razvoj i vizuelizaciju SIMPLESEM programa. Java [2 ] predstavlja naš izbor za implementaciju jer smo hteli da SDE bude dostupan putem interneta kao applet. Java omogućava prenosivost u širokom spektru platformi. Stoga se može koristiti odmah i pokrenuti “kao gotov proizvod''.

Applet je deo Java koda koji je preuzet sa WWW servera i izvršava se na računaru klijenta (vidite sliku 2 ). WWW pretraživač korišćen za preuzimanje pruža applet sa prihvatljivom dužinom trajanja okruženja koji vodi računa i o bezbednosnim problemima, itd.


 
  Downloading and executing an applet
Slika 2: Preuzimanje i izvršavanje applet-a

Upotreba ove postavke ima nekoliko prednosti: nije potrebna eksplicitna instalacija na računaru klijenta, već samo pretraživač na kome je omogućena Java, što već postoji na većini računara. SDE je širom sveta dostupan putem interneta, a korisnici ne moraju da održavaju softver jer uvek preuzimaju najnoviju verziju.

Pored toga, SDE se može preuzeti i koristiti kao lokalni applet ili kao samostalna aplikacija. Ovo je interesantno za upotrebu na računarima bez internet konekcije ili ako je nekome na raspolaganju isključivo spora veza. Upotreba SDE-a kao lokalnog applet-a zahteva pretraživač koji je poboljšala Java. Za aplikacije Java Virtual Machine (JVM), potreban je Java Runtime Environment.

Slika 3 prikazuje globalnu arhitekturu koju ima SDE.
 

  Global architecture
Slika 3: Globalna arhitektura

Applet-i imaju samo ograničen pristup računaru klijenta, npr. nije moguć pristup datotekama. Da bismo obezbedili skladištenje i unos SIMPLESEM datoteka za verziju applet-a, implementirali smo server datoteka koji se pokreće na domaćinu i sadrži SDE applet. Korisnici applet verzije mogu učitavati sa servera i skladištiti na serveru. Verzija aplikacija direktno koristi sistem datoteka. Uprkos različitim mogućnostima, koje nastaju zbog bezbednosnih ograničenja, obe verzije su uključene u jednan izvor. Funkcionalnosti su omogućene ili onemogućene u zavisnosti od toga da li se SDE izvršava kao applet ili kao aplikacija. Konfiguracija, međutim, nije neophodna.

SDE se sastoji od jednostavnog urednika orijentisanog u linijama, SIMPLESEM prevodioca i grafičkog programa za otklanjanje grešaka.

  
 
Slika 4: SDE slika ekrana

Slika 4 pokazuje uzorak SDE sesije. Urednik/kod komponenta pokazuje SIMPLESEM programski kod u kodu memorije C (ovaj program prikazan je na slici 1). Sledeće uputstvo, koje će se izvršiti, je uputstvo u liniji 6. To je prikazano promenjenom bojom pozadine na ovoj liniji. Tačka prekida postavljena je na liniji 7, koja je prikazana u prozoru tačke prekida s leve strane. Pored toga, broj kao deo linije 7 u prozoru koda označava tačku prekida različitom bojom pozadine. Tačka prekida podataka postavljena je na lokaciji 1. Različita boja pozadine lokacije 1 je broj reda u prozoru podataka koji ukazuje na to da je prelomna tačka pokrenuta u trenutnom stanju izvršenja. To znači da je automatsko izvršenje zaustavljeno i da SDE čeka unos korisnika. Korisnik sada može da proveri stanje izvršenja, promeni vrednosti podataka, izmeni program, promeni tačke prekida ili da nastavi izvršenje, itd. Ove funkcije dostupne su preko raznih prozora u kombinaciji sa tasterima na dnu glavnog prozora. SDE nudi sledeće funkcionalnosti:

Uređivanje. SDE programi mogu se direktno kucati u editor-u. Editor je orijentisan na linije i nudi osnovne funkcionalnosti za uređivanje kao što su: sečenje, lepljenje, brisanje i ubacivanje redova, itd

Tačke prekida. Tačke prekida mogu se ubaciti u program da bi obustavile automatsko izvršenje u definisanim tačkama.

Kontrola izvršenja. Standardno ponašanje podrazumeva da se programi automatski izvršavaju sve dok ne bude neophodan ulaz korisnika (dok se ne pristupi read registru), dok izvršenje ne dođe do tačke prekida, odnosno, dok korisnik ne pritisne kontrolni taster (pauza, stop, restart). U takvim slučajevima korisnik može da preduzme dodatne mere, na primer da obezbedi ulaz, podesi/obriše tačke prekida, nastavi izvršenje, da prođe kroz kod itd.

Tačke prekida podataka. Tačke prekida podataka postavljene su na D memorijskim lokacijama. Ako instrukcija pokuša da promeni lokaciju sa tačkama prekida podataka, izvršenje se obustavlja.

Unos i skladištenje datoteka. SIMPLESEM kod može se čuvati u datotekama i unositi iz datoteka. U slučaju aplikacijske verzije to se radi na lokalnom sistemu datoteka. Applet verzija nema pristup sistemu datoteka. Dakle, unos i skladištenje vrši se preko udaljeng servera datoteka koji radi na serveru applet-a. Ovaj server je deo SDE-a.

Detaljni SDE priručnik nalazi se u [8]. Da bismo zaokružili priču, prilažemo sliku 5 koja prikazuje SDE unutrašnu arhitekturu.


 
  SDE's internal architecture
Slika 5: SDE - unutrašnja arhitektura

Kontrolna komponenta obezbeđuje korisnički interfejs za komunikaciju između korisnika i drugih komponenti. Pored toga, zadužena je za komunikaciju između komponenti. Komponenta koda implementira editor izvornog koda. Dve komponente tačke prekida čuvaju i prikazuju tačke prekida. One pružaju specijalizovani interfejs za prevodioca koji podržava brzu proveru tačaka prekida.

Komponenta prevodilac (slika 6 ) dobija linije koda od komponente koda i unosi ih u svoj leksički analizator. Leksički analizator razbija ulaz u tokene, koji predstavljaju ulaz za parser. Parser kombinuje više tokena u SIMPLESEM instrukcije i proverava sintaksičku tačnost. Prevodilac zatim izvršava instrukciju. Potrebne vrednosti podataka preuzimaju se od komponenti podatka i šalju se komponentama podatka.
 

  Interpreter interaction
Slika 6: Interakcija prevodioca

Da bi omogućio korisniku da prekine ili pauzira izvršenje, kao što je gore opisano, prevodilac se implementira kao Java nit. Kada korisnik započne SIMPLESEM program, kreira se nit prevodioca. On sarađuje sa leksičkim analizatorom i parserom koji su, takođe, niti. Prekid i pauziranje zahteva vrši se suspenzijom odgovarajućih niti. Kasnije, ove niti mogu se prekinuti ili nastaviti, na primer, u slučaju operacija koje se sastoje od jednog koraka. Ova arhitektura sa više nizova obezbeđuje visoko-interaktivni odziv. Detaljan opis primene SDE-a prikazan je u [8].

Upotreba SDE-a za podučavanje

Uvek je teško podučavati početnike apstraktnim konceptima. Na primer, studenti koji tek počinju imaju poteškoća s konceptom rekurzije: “kako je moguće pozvati proceduru koju definišete'', pitaju. Zahvaljujući vizualizaciji izvršenja rekurzivnih procedura, student može jasno videti kako rekurzija počinje, kako se nastavlja i kako se završava. Zatim može videti cene mehanizma i može ih vizuelno uporediti sa ekvivalentnim implementacijama na osnovu iteracije. Vizuelni uticaj je trenutan. Teže je otkloniti greške u rekurzivnom postupku koji se ne završava tako što ćemo tražiti magnitudu na papiru, nego pokretanjem prevodioca. Zaista, inicijalni demo program unesen sa SDE-om predstavlja rekurzivni faktorijal programa. To je dobar pokazatelj kako jednostavan program dovodi do komplikovanog dinamičkog ponašanja. Jedna loša instrukcija može da dovede do beskonačne rekurzije. Modifikovanjem selektivnih instrukcija u programu instruktor može da pokaže svoje uobičajene greške i njihove, ponekad dramatične, posledice.

Osnovna ideja za SDE je vizualizacija apstraktnih pojmova koji nemaju fizičke predstave. Većina informatičkih oblasti bavi se sličnim apstraktnim konceptima i može imati koristi od ovakvih pratećih softverskih alata.

Zaključak

Opisali smo SIMPLESEM razvojno okruženje za proučavanje semantike programskih jezika. SDE se koristi na našem univerzitetu za kurs: Koncepti programskih jezika. Ovo je prvi put da se kurs uči uz takvu podršku.

Zanimljivo, iako je SDE upravo razvijen i još nije zvanično predstavljen, već ga je “otkrila'' nekolicina instruktora širom sveta (na najmanje tri kontinenta!) i koriste ga u svom podučavanju. Tradicionalno, instruktori sličnih kurseva razmenjuju iskustva i dobijaju podršku od autora udžbenika. Materijal koji se deli obično je, po prirodi, statičan: modeli programa, kopije folija, itd. Softverski alat, kao što je SDE, omogućava nove načine deljenja. Konkretno, posebno zanimljivi SIMPLESEM programi (kao što je naš faktorijal demo program) koji demonstriraju specifične probleme, poput rekurzija ili parametara procedura, mogu se naći na WWW-u.

SDE takođe omogućava nove vrste domaćih zadataka, koje ranije nisu bile moguće, osim za veoma male SIMPLESEM programe. Osim toga, domaći zadaci mogu imati oblik applet-a koje pokreću studenti i automatski ih dostavljaju na site instruktora. Zadaci se mogu automatski procenjivati i učenik odmah biva obavešten o rezultatima. Takvi mehanizmi omogućavaju instruktoru da podrži veći broj studenata nego što je uobičajeno.

Java predstavlja okruženje za realizaciju SDE-a koji je, uglavnom, namenjen za upotrebu pretraživača preko WWW-a. Izabrali smo infrastrukturu Java/WWW pretraživač da bismo obezbedili sveobuhvatan pristup i neposrednu dostupnost novih verzija. Pored toga, ova postavka trebalo je da oslobodi korisnike od poslova instalacije i održavanja. Pošto Java podržava prenosivost, pretpostavili smo da lako možemo ispuniti ove ciljeve. Pokazalo se da je ovaj stav bio previše optimističan. Trajanje projekta značajno je produženo zbog dva glavna razloga: novo Java izdanje i Java okruženje za pretraživače. Tokom implementacije, Java se promenila od verzije 1.0.2 na 1.1.k. Zbog toga su nastale neke nekompatibilnosti, npr. zastarelost interfejsa, što je izazvalo obradu SDE-a. Pretraživači i platforme na kojima rade imaju nešto drugačije okruženje, posebno u smislu GUI programiranja. Ove razlike dovoljno su velike da Java pristup umesto: “pišite jednom, pokrenite svuda”, postane “pišite jednom, testirajte svuda”. Time je izazvano značajno kašnjenje zbog testova kompatibilnosti i stabilnosti. Ovi problemi neće nas napustiti sve dok se Java ne stabilizuje. Ipak, nije nam poznat nijedan drugi pristup koji nudi slične beneficije. SDE je dostupan preko World-wide Web-a (http://www.infosys.tuwien.ac.at/pl-book/simplesem/).





Published (Last edited): 14-02-2013 , source: http://lsirpeople.epfl.ch/hauswirth/papers/Simplesem/