INFORMATICA 1/1984 PROGRAMSKI JEZIK PASCAL I UDK: 519.682.8 MATJAŽGAMS(I), IVAN BRATKO (2,1), VLADIMIR BATAGELJ (3), ROBERTREINHARDK1), MARKMARTINEC(I), MARJANŠPEGEL(I), PETERTANCIG (1) (1) INSTITUT,,JOŽEFSTEFAN"f UUBLJANA (2) FAKULTETA ZA ELEKTROTEHNIKO, UNIVERZA EDVARDA KARDELJA, LJUBLJANA (3) FAKULTETAZANAROSLOVJEINTEHNOLOGIJO, UNIVERZA EDVARDA KARDEUA, LJUBLJANA V flanku je ODisano mesto nrogPamskega jezika Pascnla ilede ns ostale višje progpamske jezike. Opisani so značilni predstavniki najholi Domembnih skupin nrooramskih iezikov in polebej alqoritmični jeziki* kamor uvrščamo tudi (-ascal. Sledi kratek onis zgoriovine Pascnla in zaključna r>ri"a language« are rtevided Into most important grouos and on# PepresentntIve ot eaeh group is wery shortly riescpihed. Special eaPe is devoted to "algopithmic" languages. Finally some conc lusions ape dpa«n. Thpoughout the piner the emphasis 1s on the human engineeping side. 1. Uvod Ppoqpan. osnovno merilo zn pazdelitev je naiin izraianfa oz. oblikovanja ideje v delufoto kodo. 2.1. Skupine visokih progpamskiH SKUPINA PREOST»VNI.K SKRAJuI OOMfTC*) algoritmični j. FOPTRAN PL/1 PL/1 (i zvertenke?) matPični i. funkeifsM j. logični i. vzorčni j. objektrH j. conoi ALKOL-6U PASCAL BASIC C APL LiSP PROUH; SNOOOL SM4LLTALK Slika 1. Skupine Droqran»kih iezikov. (*)' Tudi r>onor» izvedenka* »trannot/ "black hole". Pp< oeenievaniu uspe.Snosti npoopamikih 1eziko«» ki smo Jih oznaiiHI s "SKRAJNI DOMET"/ so mnenja deliena. Wpp. Hoare v /3/ očita tovpstnim jezikom kopico ponanklHvpst1» nekateri drueji avtopii pa jih zaaovarjaj°. 0 tej ppoblematiki bomo še oovopili v nadaljevanju članka. Vsako skupino iezikov smo poskusili okarakteri zi Pat i samo z enim pridevni ko-n, ki *ku$a onozoriti na stil oz. mičin ppogramipanja/ ki ga jezik naibolj nof temelji na konverzaeiiski interakciji preko posebpega terminala. Mastal j* okoU šestdpsetih let. Je funkcijski jezik z obsežrcim naborom uporabhih podprograno«/. APL ima goreče nasprotnike in zaoovopnike. Zagovorniki trdiio, da so bistveno boli produktivni/ kadar uoorabliajo ta jezik /5/. Nasnrotriiki trdiio' -i» je jezik popolnoma neprealerien. Po mnenju nekaterih 9trokovnjakov )e mogoče podoupo produktivnost doseči v večini 0Lqoritmičnih jezikov^ če uoorabljamo knjiznjice z ustreznim n^borom podprogramov. APL na i>ry1 pogled ločimo od ostalih jezikov po nnoHci nenavadnin znako«. Poqlejmo i\ priier enostavneoa Btavka v ADLju: NIO^ (A t •B)f? <> FM-^-FUN MIU LISP (LlSt Processop) Jf nafboM Jiroko 'iporablian jezik utietne Intel ioence. Nastajal 1e okoli leta.1960 /6/. Pogleimo si primer stavka v LlSPu« tj. telo rekurzfvne procedure/ ki računa faktorielo: (CONO ((ZERfiP N) 1) K (TI.IES N (FACT (OIFFEPrNCE (N D)))) [ ], X,X). XllaU],r, [XIZ]> :- concdail, poripira funkciisko ppogrami ranj e /?'• ki pa qa po nažern mnenjulahko v velik^i merf unorabljai"O tudi v Pascalu. Funkeijsko oroarami ran je je stil oz. nač in . pronrarni ran j a tako kut npr. strukturirano aM ooiektno oroaraciranie. Zelo preprosto novedflnb je funkcijs1"5 proqran>1 ranie tako, da prevladujeio funkcije/ oziroma vrpdnotenje in ne nrireditveni stavH kot v običajnem post opkovnern nrogrami ran j u. Ponlpjmo s1 na prenrostem .ppimeru stil funke1jskeoe orogramiranj a: IF HaRobnDospoa(letalo) THEN Sopozionozorilo(letalo) FLSE IF 7notPBjnoseoa(tpta lo) THfH IT Uenajavljeno(letalo) THEIi Sproz 1 A larm( letalo) ELSe iF Neznanol pteceVozi lo< lr»talo) THEM SproziPoizvefibo(stab) ELSE cont inue; Na tak nečin lahko nrogpamfrairn npecpj nodobno kot M funkcijsHh Jezikih, kaP p» Pi»scal ni. Ppav tako Pascal nimfl mnbžice uqodnih tastnosH LlSPa* npp. ndobneoa procesipanja seznaroov. PR0L06 1e novejši iezik umetne h sernamov.ln za upotavl Jani« vsebovanosti elementa v »eznainu: PROLOG cone ( conc ( Pascal orocedure Conc(x,y: tipSeznnn; var(itipSainaii) 8EGIN IF x * pil THEN z :• y ELSE BEG1N , Corie(xf.next/ y, z); Oodn)VSeznam(xt.vsebinx, z> END • ' ENO;<*Conc*) PROLOG mewbep(X,Z) :- cone (L1, Jx |L2 ],Z) . Pa*cal FUNCTION Member(x: 11pE lement; z: tioSeznam) s boolean; IF z = nil THtN Membep := fntse ELSE IF 1 > zf.v»ebina 1HE.N Kemhep := tpus ELSE-hemher :« Mpmber1fna polja), npr. kot v novem 1S0 stlu/22/* lanko dokai uso«»Sno konkupiramo SllOHOLu. SMALLTALK je objektni jezik aU holie peieno sistem. SMALLrAL" je del sistPma, ki je nastal kbt roziskovslni ppoiekt osehnih raiunalnikov (Dyn«book» /13/. Te pnziskava imajo vclik vnl.1v na rnzvnj n4Jmoclepn«i$ih osebnih računalniko«. Za VSP t<» sistenp je znafilno, da so moino povezani s celotnim proqra»skim okollt«/ k1 jp v Pascalu pomank l j ivo. knj je t.o objektno ^poorami ran j ni Poileimo *\ naiprei paiUke aranča sta okrnijli in imata skupni vs« lastnosti, ki pMpadajo lastnosH "ok roqlost". Stil objektneqa ppooramiranja 1* la Paecal orecei nepri mi>ren* čepra« imn vpUka veiina lezikov vsaj nekai obiektne")a. Po /14/ je proqramiranje objektno usmprjena matematika in nateroatika vrednostno usraerjeno programiranje. Pascalski zapis (record) ima nekai iBstnosti objektov, vpndar ne podRira ob.jektnega proora*!ranja. Okviri (frame) v LISPu 90 v/eliko hližje pojmu objekta. 2.3. Onis značilnih alqor i tn) £n i h jezikov sf razvoj algor1tmičnih jezikov: 8ASIC (Meqinner's ALL-purpose Svmoolic Instruction Code) so razvHi iPta 1965 kot enostauen iezik za udenje proarami ran i.i ln kot stopnUko do FOMTHANa \n AlfioLn. MASIC 1*8 klj"b svoji rclativni skromposti pomembno vloqo v računalništv/u kot Ipzik za poqovorno delo (intppok t i vnost) in v zaiinjih letih zapadi svoje majhnostl 1n preprostostt kot tezik za domnčp računaInike. PL/1 (ppoqpamning Lannuaqe One) jp na«tajal v letih 1V6U - 1965. Prvi pppvaintnik je postal dostopon po letu 66. V t'L/1 »o upoštevane izkuinje FORTRANa, AlbOLa/ COMOLa, itd., torei je jezik s Sirokim podroijen upopabp ip tudi primerno močnimi konstrukti. V PL/1 ie vse/ kar SP 6n razumeti/ tud1 dovoH*nOs zato poskušn razuireti turii napske. PL/1 podpiP« FOM in to ie uerjetpo todi eriep ori virokov za precejSnjo razsirjepnst teqa lezikn. ALGOL-60 ALG0L-A8 PASCAL ADA 55-60 bolj "naravffn" - portoben naraunemu jeziku >. Ta lastnost naj bi omoqoJ«la J »amodokumentiranost ppoopsmov 1n tudi pr«v*pljivost s »tPani nepponramep)ew, npr. vodstvenih delavcev. Co»»L in FOHTRAN sts ie vedno naibolj uporabljana Rpo.iramska iez i ka. L je nastil« kot Kmato )o je oadompstUa nrecei noli rtOOULA-i /16,17/. KDCUl. A-»! i " . «»t nann« k i iezik/ ki 1e pretvsem nnin»njen r* \ mp t ement ac i i o sistevov na mi k roračuna lr>1 k i h . Jezik je aefiniral N. wipth/ imnlementirap j« bi l Letn 1Vdft. AOA (Ada Aunusta l.ov/elar.p - poiunalništva) ie jezik, katereo« iziielavo je naroHl DOK (Pepartmpnt of 0<>tPnsp># to i« ameriško obratrhno ministPStvo. AI>1 nai hi bil torei n>ti ni h i l z»lo vspm pri nump r i čn i h iiroaraniranjij pri e»< ki so tiali časa proaramirali v katerei" koli ompnjpnih treh iezikov 1n Pascatu/ raisi proqraii1ra v Pascalu. Pascal nitia tako obsežnega nabora stapdardnih podproiranov kot FOMTHAM* vendar ie v standardu določena možnost klicania podDroqramov V FORTRANu. CORul ina pred Pascalom to prednost/ da Ima datoteke z direktnim d09eoon>/ indeksno sekvencialn« dat.oteke in tepe možnosti f ormat i rani a zapisov (1/0). Glavna prednost BAŠICA ie njepova ooenostavljenost in interakt1vna usmerjenost. 7.ato nav/erienih noroank l ji vos 11 1e Paacal brez rtodatkov qlede ha omenjpne jezike manj orimeren za nekatore poslovne aplikadie in ta •nanj vešže uporahnike. Prvi jezik/ ki je bil narejen kot Tiočnejši brat sorodneqa • jezik8/ pa je doživel rtoknj žalostno usodo/ ie bil ALGOI.-68. Danes se talo uporanli«/ čeprav se poiavlinjo znaM ojivlianja. la jezik je nastal kot izpelinnka AlGOLa-6l> tako/ dn je bil bistveno snnsobnejši in 6wobodnej51 viiraianju. To na je vodHo v zeto obseine in počasne orevaialnike/ v neprealedfost in teiko čitliivott; proqramo«, Odkrivanje napak j e b i I o oteikočeno in nroduktivnost |e padla. PL/1 j« nastnl kot naslertnik FUfTRANa/ COROLa in A i. r, o l a 60 tiko« da je pohral večino konstruktov iz teh jezikov in ie kaj. Je tiočneiši od Pascala. Pačunalniški strokov/niaki qa v rrecejSnji meri oceniuiejo kot stranpot. Teiko jf v neksi besedah i kje so snovalci teqa" iezika li. Morde je ra2loa preobširnost ki se kaie kot " obsežna nnožica mej seho) ciostikrat t'j1ih konstruktov 1n preveUkd svoboda i2raiania. dogofe so poqrešili impl.etpeht ator j i jezlka/ ki so naoisnlf ielo obsežen in pogosto neučinkovit prevajalnik. Klfub vsemu se PL/1 precej uporablja. Podobno Bituactio 8reču)<"mo tudi pri AOI. AOA ima relati«no malo oopolnoma novih konceptov Olede na ostale alaoMtmtčne jezike. Prsdvsem MODDla-2 H te močno poriobna/ s«v na lahko nrištejemo še USCD Pascal io mikroradunalnike, Pascal PLUS ia atskretno simulacijo in Concurrent Pascsl za anlikaciie v realnem Jasu. 1e v/erzije Pascala so us»erjene na Dodobna RoHroija kot APA/ standardni Pascal pa lahko oboqatii"O s knjižnjicami porinroo r amov/ v ibtrnem jeziku. ADA je vsepno ločnejša or) onenjenih ieiikov, vendar )e ta njena "ol tudi dvorezen mei/ saj j» u tako ir.očnih jeiiHh oooosto r>i>pr1jetno proqran>1 ra t i vendar brez kon£ni>'ga"~ rezut tata /22/. Naiteiiro nekaj dobrih lastnosti Psscala /15/23/: -majnen in prenoslii« pre«aja lnik» zato se lahko uporablja na mini 1n imoolii«e14ih mtkro rašunalnikih -dobra/ enostavna in razumljiva literatura. o Pascalu -majhen in udoben jezik t malo rezeruiraniiM besedami, malim številom sintaktičnih in semant ifnih pravil in z malo izjernanii/ zatorpj čista in učinkovita knnilna struktura/ k 1 H«i«» občutek zanes l i i vos 11 » upor»bnik se lahko nauči in obdrži v spomiriu vse znaiilnosti jeziki) -dotare metoae ••» t rnktup 1 ran j a portatkov -dovoli nočni kontrolni in podatkovni kon9trukti» da owogočaio udobno in nitro qi -onionoča dobro nrpqtednost in razne stile proqramirania (hpr. s strukturiraniem ali brez/ i td.) Nameni pačrtovalcev Pascala /15/23/: -vetika učinkouitost nai bi bila dosezena 8 iimveč kontrola"! v dasu prevajanja in s^mo nujoo potrebnimi v času izv/ajani»z tph lastnoBti. Primprjajmo rccimo udobnost PROLOGovpna debuqqprja ali I. ISPovo proor«m9ko okolje » l i HASICovo interak 11 vno9 t in uirleli bon^o/ da ima tu Pascal ie veliko nei Jkor i Sčenih mojnosti. »aljrta bodočnost pa bo vorjptno prinesl« kai nov<"ia/ veriftno nekaj izupn »kurine a Iqor1 tmi t. i\i h jezikov. •ooojf bo ta jezik w marsičem podobe" t eme l inetno ipziku lanonske pete račiinalnikov. 26 5. Literatura 1. A.I.w»sserman/S.Gutz : The Future of Pro- qrammlnq/ CACM, Vol. 25/ Nom. 3/ ttr. 196 - 206/ mai 1982 2. R.Reinhapdt/V.Raikovič/I.lajovic,J.Vrečko : Kritnriji za izbiro programirneqa jezika za pouk PačunaIn14tva na srednji šoU/ simpozij INFOKMATICA 77/ 7 107/ 5 8tr./ Bled, 1977 5. C.A.R.Hoare : The Emoepor'« Old Clothes, CACM, Vol. 24, Nutn. 2, .str. 75 - 8.3, februnr 1981 4. Editorial/ ACM SIGPLAN NoticfS/ Vol. 19/ Nun>. 9* septerober 1962 5. On APL and Producti \M ty/ CACM Forum/ CACM, Vol. 24/ Num. 7/ str. 478 - 479/ juUj 19B1 6. J.McCarthy, etc: LISP 1.5 Proqrammep'» Manual/ |he 1.1.T. Press/ 19A2 7. H.Herifan : The Function of Faster Proqrarp»1nq, New Sdfntist 25/ str. 512 - S1S/ nover>her 1982 B. T.Hratko/M.Gams : PROLDG : osnove in princioi struktur1ranja nodntkov/ Inforn-atica k, str. 40 - 47/ 1<>80 9. R.Kowalskl : Alqorithu = Loqic' + Control« C»CM/ yol. 22/ Nu». 7/ str. 572 - >9S/ 179? 10.o.A.waterman/F.Hayes-Roth : An 0werv1ew o( Patt«rn-0irscted Inference Sy»tem»» Academic Press/ 1V78 11.i1.Gams : Pomen 1n vloq« znanja v sistemU za fnterdlfc-i jo z uporabnikom/ naqi8terskc delo/ iunij 19U2 12.l».u.Maurer : Tie Proortminer' s (nt roituctfon to SMOHOL/ American Elsevier Puolish. Como.* 1976 13.8.J.MacLennnn : values and Ohjects \n Programnino Lanr to Efiitor/ Ac*" SIGPLA<\I Notices, Vol. 17, Num. 12/ stp. 10 - 11/ decemher 1982 1".A.P.2el«znikaP : Proqramirani* v AOI 1/ Informatiea •(, str. 10 - Zi, 194 2 19. A .H. že l ezn i k sr : Proora"i ran je v Ai)T 11/ Informatica 4/ stp. 19 - M), 1982 20.H. F.l.edH»rn, A .Si nmr : Scalin-i l