Fara í innihald

Pascal (forritunarmál)

Úr Wikipediu, frjálsa alfræðiritinu
(Endurbeint frá Pascal forritunarmál)

Pascal er stefjumál sem var þróað af Niklaus Wirth árið 1970 sem forritunarmál sem myndi henta vel í mótaða forritun. Pascal á sér ættingja Object Pascal sem er sniðið að hlutbundinni forritun.

Pascal er byggt á forritunarmálinu ALGOL og er nefnt eftir og til heiðurs stærðfræðingnum og heimsspekingnum Blaise Pascal. Forritunarmálin Modula-2 og Oberon voru þróuð út frá Pascal og eru svipuð.

Í upphafi var Pascal þróað sem forritunarmál ætlað til að kenna nemendum mótaða forritun. Margar kynslóðir nemenda hafa “slitið barnsskónum” í forritun með Pascal sem fyrsta mál í grunnáföngum forritunar til margra ára. Pascal er til í hinum ýmsu útfærslum í dag, til dæmis Free Pascal sem er meðal annars til bæði í 32-bita og 64-bita útgáfum. Allar gerðir Pascal henta til bæði kennslu og hugbúnaðarþróunar.

Hlutar af fyrsta Macintosh stýrikerfinu voru handþýddir yfir í Motorola 68000 smalamál úr Pascal kóða sem var skrifaður fyrir Lisa stýrikerfið, forvera Macintosh (Seinni útgáfur notuðust einnig við töluvert af C++ kóða). Fyrstu ár Macintosh var Pascal aðal æðra-stigs forritunarmálið í hugbúnaðargerð fyrir Makkann.

Útfærslur

[breyta | breyta frumkóða]

Fyrsti þýðandinn fyrir Pascal var hannaður í Zurich fyrir CDC 6000 series tölvukerfin og varð nothæfur 1970.

Fyrsta velheppnaða útfærslan af CDC Pascal þýðandanum fyrir önnur stórtölvukerfi var sett saman af Welsh og Quinn við Queens háskólann í Belfast árið 1972 fyrir ICL 1900 tölvuna.

Fyrsti bandaríski Pascal þýðandinn var settur saman í Háskólanum í Illinois undir stjórn Donald B. Gillies fyrir PDP-11 og skilaði út hreinu vélamáli.

Í Zurich var búinn til “port pakki” til þess að hraða útbreiðslu tungumálsins. Í pakkanum var þýðandi sem bjó til kóða fyrir sýndarvél auk túlks fyrir “p-kóða” kerfið. Þó svo að “p-kóðinn” hafi í upphafi verið hannaður til að vera þýddur yfir í hreint smalamál þá er í það minnsta eitt kerfi, UCSD útfærslan, sem nýtti það í að búa til stefjumálskerfið UCSD p-System. P-kerfis þýðendur eru merktir P1-P4, þar sem P1 er elsta útgáfan og P4 sú nýjasta.

Watcom Pascal var þróað fyrir IBM stórtölvur í upphafi níunda áratugarins.

IP Pascal var útfærsla af Pascal forritunarmálinu sem notaðist við Micropolis DOS, en var fljótlega færst yfir í CP/M sem keyrði á Z80.

Í upphafi níunda áratugarins var UCSD Pascal flutt yfir á Apple II og Apple III til þess að bjóða mótvægi við BASIC túlkana sem fylgdu með vélunum.

Apple bjó til sýna eigin útfærslu, Lisa Pascal fyrir Lisa námsstefnuna árið 1982 og 1985 færði Apple þennan þýðanda yfir á Macintosh og MPW. Sama ár skilgreindi Larry Tesler í samráði við Niklaus Wirth Object Pascal og voru þeim viðbótum bætt inn í Lisa Pascal og Mac Pascal þýðendurna.

Á níunda áratugnum skrifaði Anders Hejlsberg Blue Label Pascal þýðandann fyrir Nascom-2. Endurútfærsla af þessum þýðanda fyrir CP/M og IBM PC var markaðsett undir heitunum Compas pascal og PolyPascal áður en Borland eignaðist hann. Þýðandinn var endurskýrður Turbo Pascal og varð gríðarlega vinsæll, að hluta til vegna hagstæðs verðs og hins vegna þess að hann var einn fyrsti þýðandinn í þróunarumhverfi sem bauð upp á vinnusvæði sem náði yfir allan skjáinn. Anders Hejlsberg færði svo Turbo Pascal yfir á Macintosh 1986 og setti viðbæturnar úr Object Pascal yfir í Turbo Pascal. Þessar viðbætur skilu sér síðan inn í útgáfu 5.5 af Turbo Pascal fyrir PC.

Hinn ódýri Borland þýðandi hafði mikil áhrif á Pascal samfélagið sem í lok níunda áratugarins var farið einbeita sér mestmegnis að þróun fyrir IBM PC. Margir PC áhugamenn sem leituðu af mótuðu forritunarmáli í stað BASIC hófu að nota Turbo Pascal. Á sama tíma byrjuðu margir atvinnuforritarar að skoða tungumálið. Á sama tíma var fjöldi eiginleika C forritunarmálsins bætt inn í því markmiði að leyfa Pascal forriturum að nota API skilin úr Microsoft Windows milliliða laust. Þessar viðbætur innihéldu núllstrengi, benda reikning, fallabendla, viðfang virkja og óöruggar tagbreytingar.

Borland ákvað hins vegar seinna að þeir vildu hlutbundnu eiginleikana aðeins fágaðri og hófu þróunina á Delphi umhverfinu og notuðu uppkastið af Obect Pascal frá Apple sem grunn. (Drögin frá Apple eru ekki opinber staðall). Borland kallaði þetta Obect Pascal í fyrstu útgáfunum af Delphi en breyttu nafninu formlega í Delphi í seinni útgáfum. Aðal viðbæturnar frá hlutbundnu eiginleikum eldra kerfisins voru tilvísanir á hluti, sýnadrsmiðir og eyðar, og eigindi. Margir aðrir þýðendur bjóða uppa á það sama, sjá Object Pascal.

Super Pascal er útgáfa sem bætti við ótölulegum merkjum, “return” skipun og segðir sem tagnöfn.

Háskólarnir í Zurich, Karlsruhe og Wuppertal hafa þróað EXtension for Scientific Computing (Pascal XSC) byggt á Oberon, sem er frí lausn til að forrita tölulega útreikninga með kvarðaðri nákvæmni.

Pascal er í sinni upprunalegu mynd stefjumál með hefðbundnum skipunum s.s. if, while, for o.s.frv.. Málfræðilega greinist Pascal frá öðrum forritunarmálum í C fjölskyldunni aðallega eftir því hvernig (ensk) lykilorð eru notuð þar sem C notar sértákn. Til dæmis til þess að reikna leyfð (modulus) í Pascal notar þú lykilorðið “mod” en C notar táknið %. Annar smávægilegur munur er hlutverk semikommunnar. Í Pascal aðgreina semikommur einfaldar setningar (af öllum gerðum) innan samsettrar setningar (afmarkað með { ... } ) en semikomman er hluti setningunni í C. Þessi munur er ekki sýnilegur þegar þú lítur á röð segða og virkja þar sem hver lína endar á semikommu í hvoru tilfelli. Munurinn er sést helst við tvær aðstæður. Semikomma getur ekki verið beint á undan “else” í Pascal en þarf að vera í C nema að setningin sé innin hornklofa ( {...} ). Síðasta setning á undan “end” ætti heldur ekki hafa semikommu í Pascal. Margir Pascal forritarar setja samt sem áður semikommu á eftir síðustu setningunni til að halda stílnum og búa í rauninni til “tóma segð” við enda setningarinnar. Margir kennarar eru ekki hrifnir af þessu því það gæti ruglað nemandann um raunverulegt hlutverk semikommunar í Pascal.

Halló heimur

[breyta | breyta frumkóða]

Öll Pascal forrit byrja á "Program" lykilorðinu, valkvæmum lista of útværum skráalýsingum og síðan forritsbút merktum með "Begin" og "End" lykilorðunum. Semikommur skipta setningum, og punktur lætur forritið hætta. Pascal lítur sömu augum á há- og lágstafi.

Hér er dæmi um kóða í mjög einföldu forriti:

program HelloWorld(output);
begin writeln('Halló heimur!') end.

Gagnaskipan

[breyta | breyta frumkóða]

Í Pascal eru einföldu tögin real, integer, character og boolean auk enumeration, sem var kynnt sem nýtt tag í Pascal.

program myprog;
 
var
  r: real;
  i: integer;
  c: char;
  b: boolean;
  e: (one, two, three, four, five);

Hægt er að búa til undirsvið úr raðtögum.

var
  x: 1..10;
  y: 'a'..'z';
  z: two..four;

Hægt er að búa til tög úr öðrum tögum með tagskilgreiningu.

program myotherprog;
 
type
  x = integer;
  y = x;
...

Fleiri flóknari tög er hægt að setja saman úr einfaldari tögum:

type 
  a = array [1..10] of integer;
  b = record
        a: integer;
        b: char
      end;
  c = file of a;

Pascal styður notkun benda:

type 
  a = ^b;
  b = record
        a: integer;
        b: char;
        c: a
      end;
var pointer_to_b: a;

Hér er breytan pointer_to_b bendir á tagið b, færsla. Til að búa til nýja færslu og setja gildin 10 og A í svæðin a og b í skránni myndi forritið verða svona;

  new(pointer_to_b);
  pointer_to_b^.a := 10;
  pointer_to_b^.b := 'A';
  pointer_to_b^.c := nil;
...

Hægt er að búa tiltengdan lista með því að nota tag með bendli (c) í skránna.

Flæðisskipanir

[breyta | breyta frumkóða]

Pascal er mótað forritunuarmál. Sem þýðir að flæði er stjórnað með stöðluðum setningum, án 'go to' skipana.

while a <> b do writeln('Waiting');
 
if a > b then
  writeln('Condition met')
else
  writeln('Condition false');
 
for i := 1 to 10 do writeln('Iteration: ', i:1);
 
repeat a := a + 1 until a = 10;

Stefjur og föll

[breyta | breyta frumkóða]

Pascal mótar forrit í stefjur og föll.

program mine(output);
  var i : integer;
  
  procedure print(var j: integer);
 
    function next(k: integer): integer;
    begin
      next := k + 1
    end;
 
  begin
    writeln('The total is: ', j);
    j := next(j)
  end;
 
begin
  i := 1;
  while i <= 10 do print(i)
end.

Stefjur og föll geta komið innan hvers annars eins djúpt og maður vill og 'program' setningin er alltaf sú ysta.

Hver stefja eða fall getur haft sínar eigin skilgreiningar á goto merkjum, föstum, tögum, breytum og öðrum skilgreiningum sem þurfa öll að vera í þessari röð. Krafan um þessa röð var í upphafi til þessa að geta þýtt á hagkvæman hátt með því að lesa aðeins einu sinni yfir. Flestir nútíma þýðendur hafa hins vegar fallið frá þessari ströngu kröfu um röðun.

Þýðendur

[breyta | breyta frumkóða]

Fjölmargir Pascal þýðendur eru fáanlegir fyrir almenning:

  • Delphi Geymt 5 desember 2005 í Wayback Machine er aðal RAD forritunartólið frá Borland. Það notar Object Pascal málið (Nefnt 'Delphi programming language' frá Borland), þróað út frá Pascal til að gera forrit fyrir Windows. Nýjustu útgáfurnar frá 2005 og 2006 styðja einnig að þýða fyrir .NET umhverfið.
  • Free Pascal (www.freepascal.org Geymt 25 janúar 1999 í Wayback Machine) er kerfi sem keyrir á mörgum verkvöngum og er skrifað í Pascal (þýðir sig sjálft). Markmið Free Pascal er að skaffa hentugan og öflugan þýðanda sem getur bæði þýtt eldri kerfi og nýtist til forritunar á nýjum kerfum. Free Pascal er dreyft ókeypis í gegnum GNU GPL. Það getur blandað standard Pascal, Extended Pascal (Turbo Pascal) og Object Pascal (Delphi) kóða samanog styður fjöldan allan af stýrikerfum.

Hægt er að skoða mjög ítarlegan lista á Pascaland Geymt 5 september 2020 í Wayback Machine. Síðan er á frönsku en er bara listi með tenglum á þýðendur. Pascal Central Geymt 10 mars 2010 í Wayback Machine er síða með upplýsingum um Pascal fyrir þá sem forrita fyrir Mac. Þar eru margar áhugaverðar greinar og kennsluefni sem vert er að kíkja á.

Árið 1983 var forritunarmálið staðlað samkvæmt alþjólega staðlinum ISO/IEC 7185 ásamt nokkrum sérlenskum stöðlum, t.d. hinn ameríska ANSI/IEEE770X3.97-1983. Viðbætur voru svo settar inn í Pascal staðalinn 1990 sem ISO/IEC 10206.

ISO 7185 var skilgreindur sem útskýringar á forritunarmáli Wirts frá 1974 eins og því var lýst í notkunarleiðbeiningum og skýrslu [Jensen and Wirth] en bætti við "Conformant Array Parameters" sem stig 1 í staðlinum þar sem “Pascal without Conformant” er stig 0.

Niklaus Wirth leit sjálfur á útgáfuna frá 1974 sem “staðalinn” til að aðgreina hana frá útgáfum sem voru gerðar í CDC 6000 þýðandanum fyrir sértilvik.

Á stærri vélum var Pascal staðlinum almennt fylgt eftir en svo var ekki á IBM-PC. Á PC voru Borland þýðendurnir Turbo Pascal og Delphi með lang flesta notendur. Það er því miklvægt að reynda að skilja hvort tiltekin útfærsla tilheyri opinbera Pascal staðlinum eða útfærslu Borland á honum.

Gagnrýnisraddir

[breyta | breyta frumkóða]

Þó að Pascal sé mjög vinsælt (reyndar vinsælla á níunda og tíunda áratugunum en nú) hafa eldri útgáfur af Pascal verið gagnrýndar fyrir að vera óhentugt fyrir “alvöru” forritun utan kennslu. Brian Kernighan frægur stuðningsaðili C forritunarmálsins setti fram sína helstu gagnrýni á Pascal 1981 í riti sínu Why Pascal Is Not My Favorite Programming Language. Hins vegar voru margir stór áfangar í hugbúnaðargerð forritaðir að miklum hluta í Pascal, eins og Apple Lisa og Macintosh (svo mikið að skilin fyrir C á Macintosh þurftu að notast við taggerðir úr Pascal).

Á þeim langa tíma síðan þá hefur Pascal haldið áfram að þróast og flest gagnrýnisatriði Kernighans eiga ekki lengur við. Svo óheppilega vill til að eins og Kernighan hafði spáð fyrir voru lagfæringar á þessum vandamálum ósamhæfð milli þýðenda. Síðasta áratuginn hefur þróunin hins vegar farið á betri veg en Kernighan sá fyrir og skipst í tvo póla, eftir ISO eða Borland.

Út frá reynslu sinni með Pascal (og áður ALGOL) þróaði Niklaus Wirth nokkur önnur forritunarmál: Modula, Modula-2 og Oberon. Þessi tungumál taka á mörgum gagnrýnisatriða Pascal og eru ætluð öðrum notendahóp, o.s.frv. en ekkert þeirra hefur náð jafn mikilli útbreiðslu eða vinsældum eins og Pascal.

Snið:Wikibookspar

Tilvísunarefni

[breyta | breyta frumkóða]

Kennsluefni

[breyta | breyta frumkóða]
  • Niklaus Wirth: The Programming Language Pascal. Acta Informatica, 1, (Jun 1971) 35-63