Home - About - News - FAQ - Download - Libraries - Podrška - Tim - GNU - To Do - Resursi
Prema platformi za download

## O GNU Pascalu

Ova stranica je direktan izvadak iz GPC priručnika. Ako želite pregledavati priručnik možete početi na vrhu priručnika ili na odgovarajućoj stranici u priručniku.

GNU Pascal prevodilac (GPC) je, kao što ime govori, Pascal prevodilac (engl. compiler) iz GNU obitelji (see section E. The GNU Project.). Ovo znači:

- GPC je 32/64-bitni prevodilac,

- nema ograničenja kao što je 64 kB ili 640 kb limit poznat iz nekih operacijskih sustava -- čak i na tim sustavima --,

- radi na svim operacijskim sustavima podržanim od GNU C prevodioca, uključujući

  - Linux na Intelu, Alphi, S390, i na svim ostalim podržanim tipovima hardvera,
  - BSD obitelj: FreeBSD, NetBSD, OpenBSD,
  - DOS sa 32 bita, koristeći DJGPP ili EMX,
  - MS-Windows 9x/NT, koristeći Cygwin ili mingw,
  - OS/2 sa EMX,
  - MIPS-SGI-IRIX,
  - Alpha-DEC-OSF,
  - Sparc-Sun-Solaris,
  - HP/UX
  i druge,

- može služiti kao nativni prevodilac ili prevodilac između sistema (engl. cross-compiler) - između svih podržanih sistema,

- proizvodi visoko optimirani kod za sve te sisteme,

- slobodan je softver Free Software (Open-Source Software) u skladu sa GNU General Public License licencom (section E. The GNU Project., za primjedbe i prijevode),

- kompatibilan je sa ostalim GNU jezicima i alatima kao što su GNU C i GNU debugger (ili, ako više volite, program za simboličko ispravljanje pogrešaka u ispravljanom programu).

Prevodilac podržava slijedeće jezične standarde i kvazi-standarde:

- ISO-7185 Pascal (see section B. Resursi za korištenje s GPC-om),
- većinu dijelova ISO-10206 Extended Pascala,
- Borland Pascal 7.0,
- dijelove Borland Delphi i Pascal-SC (PXSC).

Neki naglasci:

- Iz Standard Pascala: Mnogi popularni Pascal prevodioci tvrde da proširuju Standard Pascal, ali im nedostaju ove važne značajke.

  - Polja kao konformni parametri -- standardni i komforan način prosljeđivanja polja (ARRAY) varijabilne veličine procedurama i funkcijama. [Example]
  - Prosljeđivanje lokalnih procedura kao proceduralnih parametara -- s punim pristupom svim varijablama "nadređene" procedure. [Example]
  - Automatski datotečni međuspremnici (engl. file buffers) i standardne ``Get'` i ``Put'` procedure. Predviđajuće čitanje (engl. read-ahead) bez privremenih varijabli. [Example] Ovo dozvoljava, na primjer, da se provjeri ulaz iz tekst datoteka prije čitanja bez konverzije kroz znakovne nizove (engl. strings). [Example]
  - Istinski pakirani zapisi (RECORD) i polja. Pakira 8 Booleovih varijabli u jedan bajt. [Example]
  - Interne datoteke. Ne morate se brinuti o kreiranju privremenih imena datoteka i njihovom brisanju kasnije. [Example]
  - Globalni ``goto'`. (Da, ``goto'` ima svoju ulogu kada nije ograničen na trenutni potprogram.) [Example]
  - Automatski postavlja diskriminantu varijabilnog zapisa (RECORD) u ``New'`. [Example]
  - Skupovi (SET) proizvoljne veličine. [Example]

- Iz Extended Pascala:

  - Znakovni nizovi (strings) proizvoljne duljine. [Example]
  - ``ReadStr'` i ``WriteStr'`. Čitajte iz i pišite u znakovne nizove sa punim komforom ``ReadLn'`/``WriteLn'`. [Example]
  - Rutine za predstavljanje datuma i vremena neovisne od sistema (prenosive). [Example]
  - Iteracija pomoću članova skupa: ``for Ch in ['A' .. 'Z', 'a' .. 'z'] do ...'` [Example]
  - Proširene operacije nad skupovima (simetrična diferencija, ``Card'`)
  - Generalizirane ``Succ'` i ``Pred'` funkcije (`foo := Succ (bar, 5);`).
  - Kompleksni brojevi. [Example] [Example]
  - Operatori za potenciranje (``pow'` i ``**'`) za realne i kompleksne brojeve.
  - Inicijalizirane varijable. [Example]
  - Funkcije mogu vraćati vrijednost tipa zapis ili polje (Record, Array).
  - Varijable za imenovanu povratnu vrijednost u funkcijama. [Example]
  - Moduli.
  - Ne-dekadski brojevi u bazama od 2 do 36: ``baza#broj'`.
  - ``MinReal'`, ``MaxReal'`, ``EpsReal'`, ``MaxChar'` konstante.
  - Schemata -- Pascalov način da se dobiju dinamička polja bez nestašnih trikova [Example]
  - Lokalne varijable mogu imati dinamičku veličinu. [Example]
  - Pristup odsječcima polja -- pristupa se dijelovima polja kao manjem polju, čak i na lijevoj strani operacije dodjele vrijednosti (engl. assignment) [Example]

- Kompatibilan sa Borland Pascalom 7.0 s objektima (BP):

  - Podržava jedinice (UNIT), objekte, ..., i čini čak i stvari kao ``absolute'` varijable prenosivima. [Example]
  - Dolazi s prenosivim verzijama standardnih BP jedinica sa punim izvornim kodom.

  - (PNG, 21 kB)

    Istinski mrežno-transparentna CRT jedinica: možete izvršavati svoje CRT aplikacije lokalno ili dok ste prijavljeni udaljeno (remote login), bez potrebe za brigom o različitim tipovima terminala. Kompatibilna s BP jedinicom, ali s mnogim proširenjima, kao npr. preklapajući prozori. [Example]
  - Potpuno funkcionalna GUI (X11) verzija CRT (također potpuno mrežno transparentna).
  - ``Random'` funkcija koja može proizvesti iste sekvence pseudo-slučajnih brojeva kao i ona u BP -- ako vam je to potrebno umjesto mnogo jače elaboriranog inicijalnog algoritma.
  - Podržava proceduralne varijable u stilu BP-a, jednako kao i procedure kao parametre iz Standard Pascala. [Example]
  - ``Ports'` jedinica dozvoljava pristup I/O portovima na sistemima gdje to ima smisla. [Example]
  - Specijalne kompatibilnostne značajke za pomoć u migraciji s BP-a na GPC, kao ``GPC for BP'` jedinica koja pruža neke od GPC-ovih značajki za BP, te neke rutine za pristup skupovima velikih memorijskih blokova na uniforman način pod GPC-om i BP-om (čak i u tzv. realnom modu). [Example]
  - Dolazi sa BP-kompatibilnom ``binobj'` uslugom. [Example]

- Iz Borland Delphija:

  - ``abstract'` tipovi objekata i metoda
  - ``is'` i ``as'` operatori za testiranje pripadnosti objekta tipu
  - komentari s ``//'`
  - ``Setlength'` procedura za znakovne nizove (string) čini nepotrebnim korištenje trikova kao što je pridodjeljivanje "nultom karakteru".
  - ``Initialize'` i ``Finalize'` za rukovanje varijablama na niskoj razini.

- Iz Pascal-SC (PXSC):

  - Korisnički redefinirani (preopterećeni) operatori. Zbrajajte svoje vektore sa ``+'`.

- Pažljivo definirana GNU proširenja pomažu vam da učinite svoje programe iz realnog života prenosivima:

  - 64-bitni cjelobrojni tipovi sa i bez predznaka.
  - Specijalni tipovi garantiraju kompatibilnost sa drugim GNU jezicima kao što je GNU C. Direktive kao ``{$L foo.c}'` čine jednostavnim održavanje projekata pisanih u više jezika, npr. uključivanje koda pisanog u drugim jezicima u Pascal programe [Primjer (Pascal dio)] [Primjer (C dio)],
  - ili uključivanje Pascal koda u programe pisane u drugim jezicima. [Primjer (Pascal dio)] [Primjer (Pascal jedinica)] [Primjer (C dio)]
  - Proširenja kao ``BitSizeOf'` i ``ConvertFromBigEndian'` pomažu rješavanju problema s različitim tipovima i unutrašnjim poretkom (engl. endianess - big endian, little endian). [Example]
  - Male sitnice kao što su ``DirSeparator'`, ``PathSeparator'`, ``GetTempDirectory'` pomažu vam da pišete programe koji izgledaju i osjećaju se "kod kuće" na svim operativnim sistemima.
  - ``PExecute'` rutina dozvoljava izvođenje 'child' procesa na prenosiv način koji u potpunosti iskorištava višezadaćne (engl. multitasking) okoline. [Example]
  - GNU GetOpt rutine daju komforan pristup kratkim i dugim opcijama u komandnoj liniji u Unix-stilu sa i bez argumenata. [Example]
  - Rutine kao ``FSplit'` ili ``FSearch'` ili ``FExpand'` znaju o specifičnostima raznih operativnih sistema. [Example]
  - ``FormatTime'` funkcija pušta vas da formatirate vrijednosti datuma i vremena, prema raznim pravilima formatiranja. [Example]

- Korisne i prenosive GNU standardne jedinice:

  - ``Pipe'` jedinica daje međuprocesnu komunikaciju čak i pod običnim DOS-om. [Example] [Demo proces za primjer]
  - GNU multipreciznostna ``GMP'` jedinica omogućava aritmetiku cijelih, realnih i racionalnih brojeva proizvoljne preciznosti. [Primjer: faktorijele] [Primjer: Fibonaccijev niz] [Primjer: potenciranje] [Primjer: potenciranje realnih brojeva] [Primjer: pi]
  - POSIX funkcije poput ``ReadDir'`, ``StatFS'` ili ``FileLock'` pružaju efikasno, lako za korištenje i prenosivo sučelje (engl. interface) prema operacijskom sustavu. [Example] [Example], [Example]
  - ``DosUnix'` jedinica kompenzira neke nekompatibilnosti između dviju obitelji operacijskih sustava. [Example]
  - ``MD5'` jedinica izračunava MD5 sume poruka (engl. message digest), u skladu s RFC 1321. [Example]
  - ``FileUtils'` jedinica pruža neke rutine za rukovanje datotekama i direktorijima na višoj razini. [Example]
  - ``StringUtils'` jedinica pruža neke rutine za rad sa znakovnim nizovima na višoj razini. [Example]
  - ``Intl'` jedinica za internacionalizaciju. [Example] [Example]
  - ``Trap'` jedinica za hvatanje grešaka u vremenu izvođenja (runtime-errors) i njihovo obrađivanje unutar programa. [Example]
  - ``HeapMon'` jedinica koja pomaže detektirati "curenje" memorije (engl. memory leaks) u vašim programima.

Demo programi spomenuti gore su raspoloživi na WWW-u jednako kao i u GPC distribucijama, binarnim i source. Nedostaci:

- GNU simbolički debugger (GDB) još ne razumije Pascal sintaksu i tipove; potrebno je koristiti C sintaksu kod ispravljanja programa GDB-om.

- Sa GPC-om prevođenje traje dulje nego s npr. Borland Pascalom.

Suradnici dobrodošli! Sposobni, predani programeri su uvijek dobrodošli u GNU Pascal tim. Ako želite biti nezavisni od kompanija kojima morate plaćati za prevodilac sa mnogo restriktivnijim uvjetima licenciranja koji se izvršava na jednom operacijskom sustavu, budite pozvani da se pridružite razvojnom timu, section A. Autori i suradnici na GNU Pascal projektu..

- O GNU Pascalu
- Nove mogućnosti u GNU Pascalu
- Često postavljana pitanja
- Gdje nabaviti GNU Pascal
- Biblioteke koje možete koristiti uz GPC
- Kako dobiti podršku za GNU Pascal
- GNU Pascal razvojni tim
- GNU projekt
- Stvari preostale za napraviti u GNU Pascalu
- Resursi za korištenje s GPC-om.

- Povratak na vrh

Copyright © 1996-2002 GNU Pascal development team

Verbatim copying and distribution is permitted in any medium, provided that this notice and the disclaimer below are preserved.

This information is provided in the hope that it will be useful, but without any warranty. We disclaim any liability for the accuracy of this information.

We are not responsible for the contents of web pages referenced by this site.

Copyright © 1996-2002 GNU Pascal development team

Kopiranje bez izmjena i distribucija je dozvoljena na svakom mediju, uz uvjet da je ova obavijest i ograda niže sačuvana.

Ova informacija je pružena u nadi da će biti korisna, ali bez ikakve garancije. Negiramo svaku pravnu odgovornost za točnost ove informacije.

Nismo odgovorni za sadržaj web stranica referenciranih s našeg sitea.