Porovnanie jazykov Pascal a Java

Ak viete programovať v jazyku Pascal a práve sa učíte programovať v jazyku Java, môže vám pritom pomôcť tento zoznam analógií a rozdielov medzi jazykmi. Nedá sa pomocou neho naučiť programovať v Jave; na to je príliš krátky. Navyše, každý jazyk má svoju vlastnú filozofiu, a je lepšie programovať v Jave "štýlom Java" ako pokúšať sa programovať v Jave "štýlom Pascal". Môže vám však uľahčiť situácie, keď neviete prísť na to, ako niečo naprogramovať v Jave, a pritom viete, že v Pascale by vám to šlo celkom jednoducho.

Editovanie, kompilovanie, spúšťanie

Väčšina programátorov Pascalu používa klasické prostredie Turbo Pascal. Je to najstaršie vývojové prostredie, a vo svojom čase bolo jedným z dôvodov, ktoré jazyku Pascal zabezpečili desaťročia slávy. Novšia verzia Delphi má modernejšie prostredie, ale to už v dnešnej dobe nie je nijako výnimočné. Priaznivci slobodného softvéru môžu použiť prostredia Free Pascal a Lazarus. Vývojové prostredie však nie je nutné; program môžete napísať aj v obyčajnom textovom editore, a potom skompilovať z príkazového riadku.

Na programovanie v Jave existuje mnoho vývojových prostredí; odporúčam použiť Eclipse. Používanie vývojového prostredia takisto nie je nutné, ale prostredie Eclipse ponúka mimoriadne užitočné nástroje, ktoré mnohonásobne zvýšia programátorov výkon, napríklad dopĺňanie názvov, prezeranie hierarchie tried, refaktorovanie, a podpora automatických testov.

Zdrojový kód sa v Pascale píše do súborov typu "*.pas", napríklad "mojprogram.pas". V Jave sa píše do súborov typu "*.java", napríklad "MojProgram.java". (V jazyku Java je rozdiel medzi veľkými a malými písmenami, a to aj v názvoch súborov.)

Keď sa program v Pascale skompiluje, výsledkom je súbor typu "*.exe", napríklad "mojprogram.exe". (Príkaz na kompilovanie je "tpc mojprogram.pas".) Iba ak kompilujeme knižnicu, dostaneme "*.tpu", napríklad "mojakniznica.tpu". Výsledný program typu "*.exe" môžeme spustiť v grafickom prostredí dvojklikom, alebo z príkazového riadku príkazom "mojprogram.exe". Netreba kvôli tomu nič osobitné inštalovať.

Keď sa skompiluje program v Jave, dostaneme súbor typu "*.class", napríklad "MojProgram.class". (Príkaz na kompilovanie je "javac MojProgram.java".) Väčšinou sa však program skladá z mnohých zdrojových súborov, takže dostaneme mnoho súborov typu "*.class". Tieto môžeme spustiť, iba ak máme nainštalované JRE (Java Runtime Environment = prostredie na beh Javy). Skompilované súbory môžeme spojiť do jedného súboru typu "*.jar", čo je vlastne archív typu ZIP s nejakými doplňujúcimi informáciami (napríklad ktorý z tých súborov "*.class" obsahuje hlavný program). Ak máme nainštalované JRE, môžeme tieto archívy "*.jar" spúšťať dvojklikom. Ďalšou možnosťou je súbory typu "*.class" alebo "*.jar" vložiť do webovej stránky ako takzvaný Java applet, a potom sa program bude spúšťať vo webových prezeračoch, ktoré túto možnosť podporujú.

Programy a knižnice

V jazyku Pascal sa program skladá z hlavného programu a prípadne niekoľkých pomocných knižníc. Zdrojový kód hlavného programu a knižníc vyzerá takto:

program MojProgram;

uses Kniznica1, Kniznica2, MojaKniznica;

...{ globálne premenné, procedúry, funkcie }...

begin
  ...{ vstupný bod programu }...
end.
unit MojaKniznica;

interface

...{ verejné globálne premenné, hlavičky globálnych procedúr a funkcií}...

implementation

...{ súkromné globálne premenné, telá procedúr a funkcií}...

begin
  ...{ vstupný bod knižnice }...
end.

V jazyku Java sa program skladá z niekoľkých tried. Trieda, pomocou ktorej sa program spúšťa, musí mať definovanú metódu public static void main(String[]). Každá trieda je zvyčajne definovaná v osobitnom súbore (výnimkou sú takzvané vnútorné triedy, ale tie v podstate pri programovaní nepotrebujeme). Triedy môžu byť rozdelené do balíkov. Názov balíka je uvedený na začiatku súboru. Zdrojový kód vyzerá asi takto:

package sk.bur.viliam.moj_balik;

import sk.bur.viliam.iny_balik.MojaKniznica;
import sk.bur.viliam.dalsi_balik.*;

public class MojProgram {

  ...{ premenné, metódy }...

  public static void main(String args) {
    ...{ vstupný bod programu }...
  }

}

Procedúry, funkcie, metódy

V jazyku Pascal sa program skladá z procedúr, funkcií, a hlavného programu. Procedúra je vlastne taká funkcia, ktorá nevracia žiadnu hodnotu. A dalo by sa povedať, že hlavný program je vlastne procedúra bez názvu, na konci súboru.

procedure MojaProcedura(Parameter : Typ);
begin
  ...{ telo procedúry }...
end;
function MojaFunkcia(Parameter : Typ) : Typ;
begin
  ...{ telo funkcie}...
  MojaFunkcia := ...
end;

Ak programujeme triedy, môžeme im definovať procedúry, funkcie, konštruktory a deštruktory. Pri procedúre alebo funkcii môžeme zadať, že je virtuálna, čiže že sa môže v odvodených triedach zmeniť.

type TMojObjekt = object
  procedure MojaObjektovaProcedura(Parameter : Typ);
  function MojaObjektovaFunkcia(Parameter : Typ) : Typ;
end;

procedure TMojObjekt.MojaObjektovaProcedura(Parameter : Typ);
begin
  ...{ telo procedúry }...
end;

function TMojObjekt.MojaObjektovaFunkcia(Parameter : Typ) : Typ;
begin
  ...{ telo funkcie}...
  MojaFunkcia := ...
end;

V jazyku Java sa objektové procedúry a funkcie označujú jednotným názvom "metódy". Pri procedúrach sa ako návratový typ píše void. Výsledná hodnota funkcie sa vracia pomocou príkazu return. Tento príkaz zároveň ukončí vykonávanie funkcie; takže by mal byť posledným príkazom, ak nie celej funkcie, tak aspoň danej vetvy algoritmu.

void MojaMetoda(Typ Parameter) {
  ...
}
Typ MojaMetoda(Typ Parameter) {
  ...
  return ...;
}

Ak chceme upresniť, že daná procedúra alebo funkcia nie je objektová, treba pred ňu napísať slovo "static". (Napríklad už spomínaná funkcia "main" nie je objektová.) Okrem toho existuje ešte ako špeciálna možnosť statický kód, ktorý sa spustí na začiatku programu; ale tomu je lepšie sa vyhnúť, pretože poradie spustenia statických kódov rôznych tried závisí od poradia ich načítania do pamäte, a do toho je lepšie sa nepliesť.