Tehnike poboljšanja upotrebljivosti sintakse programskih jezika

Similar documents
KLASIFIKACIJA NAIVNI BAJES. NIKOLA MILIKIĆ URL:

Fajl koji je korišćen može se naći na

Projektovanje paralelnih algoritama II

Slika 1. Slika 2. Da ne bismo stalno izbacivali elemente iz skupa, mi ćemo napraviti još jedan niz markirano, gde će

TEORIJA SKUPOVA Zadaci

Algoritam za množenje ulančanih matrica. Alen Kosanović Prirodoslovno-matematički fakultet Matematički odsjek

Mathcad sa algoritmima

Red veze za benzen. Slika 1.

Iskazna logika 1. Matematička logika u računarstvu. oktobar 2012

Uvod u relacione baze podataka

NIPP. Implementing rules for metadata. Ivica Skender NSDI Working group for technical standards.

ZANIMLJIV NAČIN IZRAČUNAVANJA NEKIH GRANIČNIH VRIJEDNOSTI FUNKCIJA. Šefket Arslanagić, Sarajevo, BiH

ANALYSIS OF INFLUENCE OF PARAMETERS ON TRANSFER FUNCTIONS OF APERIODIC MECHANISMS UDC Života Živković, Miloš Milošević, Ivan Ivanov

Konstekstno slobodne gramatike

MATHEMATICAL ANALYSIS OF PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR FEEDING BOTTLE CAPS

PRIPADNOST RJEŠENJA KVADRATNE JEDNAČINE DANOM INTERVALU

Zadatci sa ciklusima. Zadatak1: Sastaviti progra koji određuje z ir prvih prirod ih rojeva.

Algoritmi i programiranje

DYNAMIC HEAT TRANSFER IN WALLS: LIMITATIONS OF HEAT FLUX METERS

Uvod u analizu (M3-02) 05., 07. i 12. XI dr Nenad Teofanov. principle) ili Dirihleov princip (engl. Dirichlet box principle).

6. PROGRAMSKE STRUKTURE STRUKTUIRANOG PROGRAMIRANJA

1.1 Algoritmi. 2 Uvod

DISTRIBUIRANI ALGORITMI I SISTEMI

Fraktali - konačno u beskonačnom

Mehurasto sortiranje Brzo sortiranje Sortiranje učešljavanjem Sortiranje umetanjem. Overviev Problemi pretraživanja Heš tabele.

WEB PODATAKA (WEB OF DATA)

ANALYTICAL AND NUMERICAL PREDICTION OF SPRINGBACK IN SHEET METAL BENDING

Rešenja zadataka za vežbu na relacionoj algebri i relacionom računu

Programiranje u realnom vremenu Bojan Furlan

INVESTIGATION OF UPSETTING OF CYLINDER BY CONICAL DIES

3. Programiranje u Matlab-u

NAPREDNI FIZIČKI PRAKTIKUM 1 studij Matematika i fizika; smjer nastavnički MJERENJE MALIH OTPORA

Metrički prostori i Riman-Stiltjesov integral

AIR CURTAINS VAZDU[NE ZAVESE V H

VELOCITY PROFILES AT THE OUTLET OF THE DIFFERENT DESIGNED DIES FOR ALUMINIUM EXTRUSION

Osobine metode rezolucije: zaustavlja se, pouzdanost i kompletnost. Iskazna logika 4

NEURONSKE MREŽE 1. predavanje

ANALYSIS OF THE RELIABILITY OF THE "ALTERNATOR- ALTERNATOR BELT" SYSTEM

LLL Seminari u okviru TEMPUS projekta

FIZIKALNA KOZMOLOGIJA VII. VRLO RANI SVEMIR & INFLACIJA

Kontrolni uređaji s vremenskom odgodom za rasvjetu i klimu

On the relation between Zenkevich and Wiener indices of alkanes

povezuju tačke na četiri različita načina (pravom linijom, splajnom,

1.1 Uvod. 1.1 Uvod Značajke programskog jezika Python Interpretacija me dukôda

METODE ZA REŠAVANJE PROBLEMA TRIANGULACIJE POLIGONA I NJIHOVA IMPLEMENTACIJA

Konstrukcija i analiza algoritama

Šta je to mašinsko učenje?

BROJEVNE KONGRUENCIJE

PRECIPITATION FORECAST USING STATISTICAL APPROACHES UDC 55:311.3

MAGNETIC FIELD OF ELECTRICAL RADIANT HEATING SYSTEM

U VOD U ALGOR IT ME I S T RUKT URE P ODATAK A

AN EXPERIMENTAL METHOD FOR DETERMINATION OF NATURAL CIRCULAR FREQUENCY OF HELICAL TORSIONAL SPRINGS UDC:

APPROPRIATENESS OF GENETIC ALGORITHM USE FOR DISASSEMBLY SEQUENCE OPTIMIZATION

MATLAB for Windows PODGORICA, DECEMBAR 1996.

IMPROVEMENT OF HIPPARCOS PROPER MOTIONS IN DECLINATION

TemidaLib sistem za rad sa velikim brojevima TemidaLib Multiprecision Arithmetic Library

ADAPTIVE NEURO-FUZZY MODELING OF THERMAL VOLTAGE PARAMETERS FOR TOOL LIFE ASSESSMENT IN FACE MILLING

ALGORITMI ZA ISPITIVANJE DJELJIVOSTI

Neke klase maksimalnih hiperklonova

STRUCTURAL VEHICLE IMPACT LOADING UDC =111. Dragoslav Stojić #, Stefan Conić

EXPERIMENTAL ANALYSIS OF THE STRENGTH OF A POLYMER PRODUCED FROM RECYCLED MATERIAL

Đorđe Đorđević, Dušan Petković, Darko Živković. University of Niš, The Faculty of Civil Engineering and Architecture, Serbia

LINEARNI MODELI STATISTIČKI PRAKTIKUM 2 2. VJEŽBE

O aksiomu izbora, cipelama i čarapama

Primena Katalanovih brojeva i nekih kombinatornih problema u kriptografiji

pretraživanje teksta Knuth-Morris-Pratt algoritam

Jednočlani potpuni skupovi veznika za iskaznu logiku

Karakterizacija problema zadovoljenja uslova širine 1

REVIEW OF GAMMA FUNCTIONS IN ACCUMULATED FATIGUE DAMAGE ASSESSMENT OF SHIP STRUCTURES

Oracle Spatial Koordinatni sustavi, projekcije i transformacije. Dalibor Kušić, mag. ing. listopad 2010.

Fibonaccijev brojevni sustav

Product Function Matrix and its Request Model

Jedna familija trokoračnih postupaka šestog reda za rešavanje nelinearnih jednačina

1. Ocena performansi

DEVELOPMENT OF A MATHEMATICAL MODEL TO PREDICT THE PERFORMANCE OF A VIBRATORY BOWL FEEDER FOR HEADED COMPONENTS

MREŽNI DIJAGRAMI Planiranje

Electron content of rings of fully benzenoid hydrocarbons

Metode praćenja planova

Ivan Soldo. Sažetak. U članku se analiziraju različiti načini množenja matrica. Svaki od njih ilustriran je primjerom.

A - pri promeni broja obrtaja: - zapreminski protok se menja sa promenom broja obrtaja ventilatora linearno

THE USE OF SCRIPT IN THE SOFTWARE GEMCOM ***

Redizajn web stranica tvrtke Zimo digital

Asian Journal of Science and Technology Vol. 4, Issue 08, pp , August, 2013 RESEARCH ARTICLE

SINTAKSNA I ALGORITAMSKA NOTACIJA

Neke primene teorije fazi skupova i fazi logike u procesiranju slika

INOVACIJE I UNAPREĐENJE NASTAVE MATEMATIKE PRIMENOM JAVA APLETA. Dimitrija Tucovića bb, Novi Pazar, ,

EARNED VALUE METHOD - EVM METOD OSTVARENE VREDNOSTI

Kratak kurs MatLab-a

DESIGN AND CALCULATION OF RING SPRINGS AS SPRING ELEMENTS OF THE WAGON BUFFER UDC : Jovan Nešović

UPUTE ZA OBLIKOVANJE DIPLOMSKOG RADA

Prsten cijelih brojeva

Turingovi strojevi Opis Turingovog stroja Odluµcivost logike prvog reda. Lipanj Odluµcivost i izraµcunljivost

UNIVERZITET U NOVOM SADU PRIRODNO-MATEMATIČKI FAKULTET DEPARTMAN ZA MATEMATIKU I INFORMATIKU

Šime Šuljić. Funkcije. Zadavanje funkcije i područje definicije. š2004š 1

LINGVISTIČKE FAZI PROMENLJIVE KAO ALAT ANALIZE U MENADŽMENTU INVENTARA

NAPREDNI FIZIČKI PRAKTIKUM II studij Geofizika POLARIZACIJA SVJETLOSTI

MUSICAL COMPOSITION AND ELEMENTARY EXCITATIONS OF THE ENVIRONMENT

Mere sličnosti XML podataka i primene u otkrivanju duplikata

Ksenija Doroslovački KOMBINATORIKA INTERPRETIRANA FUNKCIJAMA I NJIHOVIM OSOBINAMA MASTER RAD. NOVI SAD jun 2008

Transcription:

Computer Science and Information Systems?(?):???? DOI: N/A Tehnike poboljšanja upotrebljivosti sintakse programskih jezika Petar Prvulović Matematički fakultet 11000 Belgrade, Serbia {petar.prvulovic}@gmail.com Abstract. U radu postavljamo programski jezik kao interfejs izme du programera i računara. U tom kontekstu posmatramo jezike i identifikujemo neke ideje koje utiču na njihovu upotrebljivost. Jezike posmatramo u najširem mogućem smislu, ne ograničavajući se na odre denu familiju jezika, paradigmu ili vid izražavanja. Posmatrane ideje su klasifikovane u šest grupa. Baziramo se na tekstualnim jezicima i za svaku grupu opisujemo osnovne ideje i ilustrujemo ih primerima. Zatim dajemo osnov za primenu na vizuelne jezike i ilustrujemo primerima. Na kraju dajemo kratak osvrt na upotrebljivost jezika kao interfejsa u kontekstu ciljne grupe korisnika i namene i predlažemo moguće primene u sistemu obrazovanja Republike Srbije. Keywords: upotrebljivost programskih jezika, preglednost koda, čitljivost koda, preimenovanje seta instrukcija, proširenje seta instrukcija, sintaksne slobode. 1. Uvod Programski jezik je interfejs izme du programera i računara. Taj interfejs treba programeru da omogući pretvaranje ideje u niz instrukcija ciljne platforme. Programski jezici doživeli su evoluciju sintakse. Sintaksa je obogaćivana logičkim i jezičkim konstrukcijama kako bi podržala potrebe programera i omogućila izražavanje ideja kroz odre dene paradigme. Identifikovali smo neke često korišćene elemente koji doprinose upotrebljivosti programskih jezika, u smislu da olakšavaju čitljivost i pisanje koda, tj. izražavanje ideja, i grupisali ih. U tom razmatranju obuhvaćeni su jezici opšte namene i ezoterični jezici prvi jer su svakodnevnoj upotrebi a drugi jer su granični slučajevi primene pomenutih ideja. Jezici su posmatrani nezavisno od paradigmi za koje su dizajnirani, pa su tako izdvojene ideje koje imaju opštu primenu. Uticaj paradigmi biće pomenut samo gde je to nužno potrebno. Opisaćemo šest tipova poboljšanja upotrebljivosti programskih jezika. Daćemo primere za svaki od njih i razmotriti neke prednosti i mane. Zatim ćemo pokazati kako je moguće posmatrati dizajn jezika u odnosu na ciljnu grupu korisnika i namenu. Na kraju pokazujemo kako je moguće primeniti ovakvo gledište na izbor programskih jezika u sistemu obrazovanja. 2. Tehnike poboljšanja upotrebljivosti sintakse programskih jezika 2.1. Preimenovanje osnovnog seta instrukcija Davanje smislenih aliasa binarnim instrukcijama čini prepoznavanje i zadavanje instrukcija manje zamornim i manje sklonim greškama. Pogrešno zapisana binarna instrukcija

2 Petar Prvulović (invertovan bit) u velikoj verovatnoći dovodi do prihvatanja instrukcije kao validne i izazivanja logičke greške, primetne tek u izvršenju. Korišćenje alfabeta prirodnog jezika omogućava set instrukcija takav da zamena jednog slova može da izazove grešku nepostojeće instrukcije i bude primećena u fazi pisanja koda. Bušači kartica su osnovni primer primene ove tehnike - kao ulaz dobijaju tekstualne mnemonike instrukcija, koje preslikavaju u binarni zapis koda instrukcija i otiskuju ga na kartici/traci [1]. Ovakvi ure daji predstavljaju klasičan primer interfejsa. Vremenom su evoluirali u programske jezike, editore i kompajlere. Asembler ima sintaksu koja je dobrim delom 1-1 preslikavanje u skup binarnih instrukcija. Brainfuck je primer namerno lošeg interfejsa: sintaksa je 1-1 preslikavanje skupa instrukcija Turingove mašine, pri čemu su izabrani neintuitivni nazivi kako bi se pisanje i čitanje programa načinilo težim. Ook! koristi potpuno isti princip. Skup naziva sadrži onomatopeje glasova majmuna, čime se postiže komičan efekat tako što kôd na prvi pogled izgleda kao zapis na "orangutanskom", posebno ako se čita naglas. Brainfuck Ook! Opis < Ook. Ook? Pomeriti pokazivač udesno > Ook? Ook. Pomeriti pokazivač ulevo + Ook. Ook. Inkrement aktivne ćelije - Ook! Ook! Dekrement aktivne ćelije. Ook! Ook. Ispis aktivne ćelije, Ook. Ook! Unos vrednosti i upis u aktivnu ćeliju [ Ook! Ook? Uslovni skok. Ako je vrednost ćelije 0, skoči do uparenog ] ] Ook? Ook! Skok nazad na upareni [ Fig. 1. Set instrukcija za Brainfuck i Ook! Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Fig. 2. Deo programa na Ook! jeziku 2.2. Dodavanje logičkih konstrukcija i sintaksnih pravila Sintaksne olakšice i gramatička pravila, kao što su if-then-else, switch-case, notacija izraza... donekle apstrahuju platformu i čine programske jezike bližim govornim jezicima. Ovakve konstrukcije kompajler prevodi u niz mašinskih instrukcija, neretko po složenim pravilima i ne obavezno kroz 1-1 preslikavanje. Gramatika jezika definiše se u skladu sa paradigmom na koju se jezik naslanja, pa imamo raznolik skup konstrukcija. Namena

Tehnike poboljšanja upotrebljivosti sintakse programskih jezika 3 konstrukcija može biti apstrahovanje toka (razni oblici uslova, petlji, skokova, pozivanja procedura), definisanje iskaza, zadavanje vrednosti itd. Ilustrovaćemo ovu tehniku primerom naredbe skoka. Ovakvo rezonovanje može se primeniti i za druge konstrukcije. Na primer, mogu se uporediti uslovne konstrukcije u Pascal i C familiji i jezicima funkcionalne paradigme. Naredba skoka zahteva broj instrukcije. Jedna naredba može da se prevede u više mašinskih instrukcija. Naknadno umetanje koda vrši promenu položaja (broja) instrukcija nakon umetnog koda. Oba dovode do problema numerisanja instrukcija. U Basic-u je to rešeno tako što svaki red počinje brojem. Naknadno umetanje koda rešeno je preporukom da brojevi redova ne moraju biti uzastopni, već sa razmakom (npr. 10,20,30...), pa ostaje brojni prostor za numerisanje umetnih redova (npr. 15, 21...). Time je otklonjena potreba ažuriranja instrukcija skoka koriste se brojevi značajni na nivou jezika a stvarni brojevi instrukcija dobijaju se prilikom kompajliranja. Mana ovog rešenja je uvo denje dodatnog napora programeru. Asembler i Pascal problem skoka rešavaju uvo denjem labela. Instrukcija skoka kao parametar prima ime labele a u fazi kompajliranja pretvara ga u broj instrukcije nakon mesta gde je labela definisana. program goto_example ; l a b e l r p t ; var a : i n t e g e r ; begin a : = 1 0 ; r p t : r e p e a t { s k i p 15 } i f ( a = 15) then begin a := a +1; goto r p t ; end ; w r i t e l n ( a=, a ) ; a := a +1; u n t i l a =20; end. 10 PRINT " f a c t o r i a l of : " 20 INPUT A 30 LET B=1 35 REM b e g i n n i n g o f t h e loop 40 IF A<=1 THEN 80 50 LET B=B A 60 LET A=A 1 70 GOTO 40 80 PRINT B Fig. 3. Primer: Basic i Pascal kôd sa uslovnim skokom

4 Petar Prvulović 2.3. Proširenje seta instrukcija i tipova podataka Kada se neatomična operacija koristi dovoljno često ima smisla obezbediti atomičnu zamenu. Primer toga su print i write funkcije. Slično važi i za tipove podataka - string nije primitivan tip ali se dovoljno često koristi da ima smisla tretirati ga tako. C koristi nul-terminisane nizove karaktera i na taj način uvodi izvor velikog broja problema (komplikovan kôd, rukovanje pokazivačima sklono greškama). Pascal omogućava string kao primitivan tip a Java kao klasu u podrazumevano uključenom paketu. Izbor raspoloživih tipova podataka i opisivanja promenljivih tako de zavisi od namene jezika. Tako, jezici nižeg nivoa apstrakcije veći fokus stavljaju na primitivne tipove i njihove varijante (int i short int, signed i unsigned...) dok viši jezici rade sa apstraktnim tipovima PHP ima native podršku za heš mape, Java sakriva pokazivače itd. Interpretirani jezici su često slabo tipizirani, tj. ne zahtevaju eksplicitno zadavanje tipa promenljivoj, čime se programer rasterećuje tih detalja implementacije. Uopšte, sakrivanje detalja implementacije apstrahovanjem omogućava bolje fokusirano učenje jezika, na štetu efikasnosti rezultujućih programa. 2.4. Modularnost koda Razdvajanje koda u više fajlova omogućava bolje organizovanje koda, izolovanje logičkih celina i lakše vo denje velikih projekata. Preduslov je za stvaranje biblioteka i višestruko iskoristivog koda. Benefiti su sažetiji i pregledniji kôd, jer se delovi mogu apstrahovati i pozivati eksterno. Način uključivanja koda iz drugih fajlova je bitan faktor. Razlikujemo uključivanje pomoćnih fajlova u zaglavlju u tim fajlovima nalaze se deklaracije elemenata koje izvršni kôd koristi, i uključivanje fajla u toku koda u tim fajlovima mogu biti pomoćne deklaracije ali i izvršni kôd koji se izvršava na mestu uključenja. Tako se mogu neki detalji implementacije izdvojiti iz koda čime se dobija bolja preglednost. Sličan efekat može da pruži i opcija sažimanja koda, često prisutna u editorima. 2.5. Dodavanje biblioteka Dodavanje biblioteka je direktna posledica modularnosti. Tiče se izbora, načina imenovanja, organizacije i dokumentovanja raspoloživih biblioteka i načina distribucije (da li su preinstalirane ili se ručno dodaju, kako se dodaju). Biblioteke omogućavaju najveći prostor za proširenje jezika, ali u okviru definisane sintakse. Zavisno od namene korišćenja treba razmotriti koji jezik pruža najbolju podršku planiranim aktivnostima. 2.6. Sintaksna ograničenja i slobode Prethodne tehnike omogućavaju dovo denje jezika na nivo prilično blizak govornom jeziku, mada ograničene fleksibilnosti. Ignorisanje praznih karaktera i dodavanje komentara su gotovo obavezne mogućnosti jezika. Time je omogućena dodatna izražajnost koda i dodavanje sadržaja koji nije definisan rečnikom jezika tamo gde nije moguće ili nije praktično postići željenu izražajnost koda.

Tehnike poboljšanja upotrebljivosti sintakse programskih jezika 5 Komentari su blokovi teksta koje kompajler ignoriše. Označavaju se početnim i krajnjim simbolom, i mogu biti umetnuti u kôd ili se nalaziti u zasebnim redovima. Neki ezoterični jezici izbegavaju eksplicitno označavanje komentara pa se komentarom smatra sve što se ne izvršava ili nema značenje. Tako je moguće komentare pisati gotovo bilo gde, neprimetno spojene sa naredbama, čime kôd postaje blizak govornom jeziku. Chef i Shakespeare koriste ovaj princip i tako dobijaju kôd koji izgleda kao recept za pripremanje hrane, odnosno drama u Šekspirovom stilu. Jezici imaju uzak skup naredbi pa rešavanje problema na njima nije toliko jednostavno koliko bi bilo na popularnim jezicima ali pokazuju da je koncept slobodnih jezika, bliskih govornom, izvodiv. This recipe prints the first 100 Fibonacci numbers. It uses an auxiliary recipe for caramel sauce to define Fibonacci numbers recursively. This results in an awful lot of caramel sauce! Definitely one for the sweet-tooths. Ingredients. 100 g flour 250 g butter 1 egg Method. Sift the flour. Put flour into mixing bowl. Serve with caramel sauce. Stir for 2 minutes. Remove egg. Rub the flour until sifted. Stir for 2 minutes. Fold the butter into the mixing bowl. Pour contents of the mixing bowl into the baking dish. Serves 1. Fig. 4. Deo programa na Chef jeziku Beli karakteri imaju bitnu ulogu u izgledu koda. Odluka da li ih ignorisati ili ne dovodi do mogućnosti, odnosno obaveze, uvlačenja koda i označavanja kraja naredbi. Uvlačenje redova može biti ignorisano, dato u vidu estetskih preporuka (C, Pascal), a može biti i deo sintakse - Python odre duje blokove koda na osnovu uvlačenja. Definisanje blokova naredbi i kraja naredbe su blisko povezani. Asembler, Basic i Python ne koriste simbol za kraj naredbe ali su ograničeni na jednu naredbu po redu. C i Pascal familije jezika koriste ; za oznaku kraja naredbe. JavaScript omogućava oba pristupa: naredbu je moguće završiti sa ; ili se ograničiti na jednu naredbu po redu. Izbacivanje potrebe završavanja naredbi znakom ; i definisanje blokova uvlačenjem a ne eksplicitnim navo denjem simbola doprinosi čitljivosti i brzini pisanja koda i eliminiše sintaksne greške izostavljanja tih simbola, ali može stvoriti probleme druge vrste. Grupisanje uvlačenjem stvara problem neraspoznavanja tab i space karaktera, koji mogu proizvesti na oko isto uvlačenje ali za kompajler različito. Nekorišćenje ; može dovesti do nejasnih greški kompajlera a opciono korišćenje do, na prvi pogled, neočekivanog ponašanja koda. JavaScript kôd u 5 vraća undefined jer automatski dodaje ; na kraj reda, nakon return.

6 Petar Prvulović return 0 ; Fig. 5. Primer dvoznačnog koda 2.7. Vizuelni programski jezici Vizuelni programski jezici koriste grafičke simbole i njihove me dusobne odnose kao elemente izražavanja. Pokazali su se pogodnim za opisivanje tokova, objekata i relacija izme du njih. Grafički elementi mogu se posmatrati isto kao i tekstualni. Na primer, sintaksno pravilo zadavanja tipa objektu u tekstualnom obliku može biti <tip> <ime objekta> <kraj naredbe>, dok u grafičkom tu ulogu može imati oblik elementa (kvadrat, elipsa...). Prethodno pomenute tehnike tako mogu da se primene i na vizuelne jezike. Ilustrovaćemo ovo kroz nekoliko primera. UML koristi grafičke elemente za prikaz objekata i linije i strelice za povezivanje objekata. Pravila crtanja pružaju izvesnu slobodu (u izboru veličine, mesta, boje elemenata...) a dodatna sloboda postignuta je konceptom komentara, u vidu pridruživanja teksta i grafike elementima šeme. Scratch omogućava zapisivanje naredbi upotrebom grafičkih elemenata, čime se može dobiti prilično pregledan kôd. Izrada koda može biti sporija od tekstualnog zapisa, pošto je potrebno raditi sa grafičkim editorom ali je potrebno predznanje manje. Naredbe mogu biti predstavljene ikonicama i tekstualnim nazivima a logičke konstrukcije (grananja, skokovi i sl.) grafičkim šablonima u koje je moguće smestiti naredbe. U odre denim uslovima Scratch je projektovan tako da mogu da ga koriste deca uzrasta 5 godina. Piet je ezoterični jezik koji u osnovi koristi princip preimenovanja seta instrukcija. Ime instrukcije dobija se razlikom boja susednih regiona na bitmapi, pri čemu postoji odre den skup boja koje imaju sintaksni značaj. Ostale boje se, u najprostijem slučaju, zanemaruju, tj. tretiraju se kao komentari. Tako je moguće dobiti kôd koji izgleda kao Mondrianove slike. Fig. 6. Piet program

3. Moguće primene i dalji razvoj Tehnike poboljšanja upotrebljivosti sintakse programskih jezika 7 Izbor programskog jezika treba vršiti u skladu sa korisnicima i upotrebnom namenom [12]. Jezik (interfejs) ne bi trebalo da bude svrha sam sebi niti da korisniku nameće suvišne elemente, već da služi kao alat. Tako je moguće vršiti objektivan izbor jezika. [14] je primer razmatranja u ovom kontekstu. Pomenute tehnike daju ideju za definisanje mera. Kao posledica toga, moguće je vršiti pore denje podrške ovakvih tehnika ugra deno u programska okruženja, kao vid benchmarka. Konkretne studije se mogu sprovesti i u evaluaciji plana i programa nastave programiranja u osnovnim i srednjim školama i fakultetima kojima računarstvo nije primarna oblast. Ilustrovaćemo osnovnu ideju na primeru programa za računarstvo i informatiku za gimnazije. Programom je predvi den Pascal koji se kritikuje jer nema primenu u praksi. Sa druge strane, cilj kursa je savladavanje veština modelovanja problema na algoritamski način [8] što Pascal podržava. Pritom sakriva platformske specifičnosti i pruža sintaksu zadovoljavajuće izražajnosti. Ovako je moguće postaviti okvire i izvršiti izbor jezika koji ispunjavaju potrebe nastavnog programa i pokrivaju primećene nedostatke. 4. Zaključak U radu smo postavili programski jezik kao interfejs izme du programera i računara. Tako smo identifikovali neke koncepte ugra dene u sintaksu kako bi poboljšali upotrebljivost programskih jezika i svrstali ih u šest grupa. Data klasifikacija nije konačna i ne obuhvata sve koncepte već pokazuje ideju i postavlja osnovu za dalji rad. Iznete ideje mogu se primeniti kao osnov za ocenjivanje i dizajniranje programskih jezika i alata, a data je ideja primene u izboru programskih jezika u obrazovnom sistemu. References 1. A brief history of small computers, [Online]. Available: http://www.erg.abdn.ac.uk/ gorry/eg3576/comp-history.html (current May 2014) 2. Chef, [Online]. Available: http://www.dangermouse.net/esoteric/chef.html (current May 2014) 3. Comment (computer programming), [Online]. Available: http://en.wikipedia.org/wiki/comment_(computer_programming) (current May 2014) 4. Ook!, [Online]. Available: http://www.dangermouse.net/esoteric/ook.html (current May 2014) 5. Piet, [Online]. Available: http://www.dangermouse.net/esoteric/piet.html (current May 2014) 6. Visual programming language, [Online]. Available: http://en.wikipedia.org/wiki/visual_programming_language (current May 2014) 7. Ook! (2013), [Online]. Available: http://esolangs.org/wiki/ook! (current May 2014) 8. Pravilnik o izmenama i dopunama pravilnika o nastavnom planu i programu za gimnaziju (2013), [Online]. Available: http://www.mpn.gov.rs/dokumenta-i-propisi/nastavni-planovii-programi/srednje-obrazovanje-i-vaspitanje/79-gimnazije/883-pravilnik-o-izmenama-idopunama-pravilnika-o-nastavnom-planu-i-programu-za-gimnaziju (current May 2014) 9. Canneyt, M.V.: Reference guide for free pascal, version 2.6.4 (2014), [Online]. Available: http://www.freepascal.org/docs-html/ref/ref.html (current May 2014) 10. ECMAScript, E., Association, E.C.M., et al.: Ecmascript language specification (2011) 11. Kemeny, J.G., Kurtz, T.E.: A Manual for Basic. CEIR Multi-Acess Computer Service (1965)

8 Petar Prvulović 12. McKeeman, W.M.: Programming language design. In: Compiler Construction. pp. 514 524. Springer (1974) 13. Müller, U.: Brainfuck an eight-instruction turing-complete programming language (1993), [Online]. Available: http://en.wikipedia.org/wiki/brainfuck (current May 2014) 14. Phillips, L.: Scientific computing s future: Can any coding language top a 1950s behemoth? (2014), [Online]. Available: http://arstechnica.com/science/2014/05/scientific-computingsfuture-can-any-coding-language-top-a-1950s-behemoth/ (current May 2014)