PostScript

**PostScript** on programmeerimiskeel graafiliste objektide (tekst, vektorina kirjeldatud objektid nagu ring, ruut, joon jms ning rastergraafika) kirjeldamiseks sõltumata tulemust realiseerivast seadmest (printer, kuvar vms). Siiski on PostScript ka võimas programmeerimiskeel, millel abil tehtud ka näiteks veebiserver (http://www.pugo.org/).

## Ajalugu

PostScripti aluse pani John Warnock 1976. aastal firmas Evans and Sutherland (arvutigraafikaga tegelev ettevõte). 1978 hakkas Warnock tööle Xerox PARC-is koos Martin Newelliga. Koos kirjutasid nad disainimissüsteemi JaM (John and Martin), mida arendati edasi ning mida tuntakse InterPressi nime all. Warnock lahkus ettevõttest koos Chuck Geschkega ja rajas Adobe Systemi aastal 1982. Seal tegid nad InterPressi põhjal lihtsama keele: PostScripti, mis toodi turule 1984. Steve Jobsi pealekäimisel kohandasid nad keele laserprinterite jaoks. 1985 tuli turule esimene PostScripti toetusega laserprinter (Apple LaserWriter) ja alates sellest muutus PostScripti kasutamine laserprinterites tavaliseks. Aastaks 2001 ei olnud kuigi paljud printerid enam PostScripti toetusega, sest selle toe lisamine printerisse tuli oluliselt kallim kui prinditava lehe arvutis renderdamine. Aegamööda on PostScripti tagaplaanile surunud selle järeltulija PDF (Portable Document Format), mis tuli välja 1990. aastate alguses, kuid ei saavutanud kiiret populaarsust.

PostScripti keel on saanud kaks suurt uuendust, mida eristatakse tasanditena (ingl. *level*). Algne PostScript ehk PostScript Level 1 tuli välja aastal 1984. PostScript Level 2 tuli välja aastal 1991 ja selles parandati kiirust, JPEG lisamist otse PostScripti, dokumendi osade kordamist (Form mehhanism) jms. PostScript Level 3 tuli välja aastal 1997 ja selles parandati värvikäsitlust, veakäsitlust, programmi sisu filtreid (pakkimine, vormingute tõlgendamine jms) ja programmi ülesehitust.

## Fakte

* Type 1 ja Type 3 fondid põhinevad PostScriptil
* PostScripti on kasutatud ka ekraanil (Display PostScript ehk DPS ja Network extensible Window System ehk NeWS; DPS-i sarnast süsteemi kasutab Apple Mac OS X)

## Programmeerimiskeelena

PostScript on pinupõhine (pinu on andmestruktuur, millest loetakse esimesena viimati sisestatu) süsteem. Tavaliselt kirjutavad PostScript programme teised programmid ja mitte inimene. Keelena sarnaneb PostScript keelega Forth, aga andmestruktuurid sarnanevad rohkem Lispi omadega. Keeles on hulk operaatoreid, millest enamus on pinu sisu muutmiseks. Iga operaator vajab pinus kindlat hulka ja kindla andmetüübiga kirjeid ning jätab pinusse kindla arvu kindlat tüüpi elemente. Reavahetus ei oma PostScriptis tähtsust, tühik ja reavahetus on samaväärsed. Puudub lause algus ja lõpp, kõike käsitletakse ühe jadana. Tekstilise väärtuse puhul reavahetust ikkagi arvestatakse.

Programminäide aritmeetilise tehte (1 + 2) * (9–8) näol:

  1 2 add 9 8 sub mul

Toimuvad järgmised sammud:
# Pinusse pannakse 1;
# Pinusse pannakse 2;
# Operaator add loeb pinust 2 ühikut (1 ja 2) ning jätab tulemuse 3 pinusse;
# Pinusse lisatakse 9;
# Pinusse lisatakse 8;
# Operaator sub loeb 2 arvu pinust (9, 8), lahutab need ning jätab tulemuse 1 pinusse;
# Operaator mul loeb 2 arvu pinust (3 ja 1, mille jätsid eelnevad operaatorid) ja korrutab need.

Programmi lõppedes on pinus arv 3.

Kommentaare saab lisada protsendiga, kommentaar kestab rea lõpuni.

Muutujat saab defineerida operaatoriga def:

  /x 123 def      % defineeritakse muutuja x väärtusega 123
  /x 1 2 add def  % defineeritakse muutuja x väärtusega 3
  /y x 3 add def  % kasutades muutujat x defineeritakse muutuja y väärtusega 6

Kaldkriipsu kasutatakse literaadina. Muutuja kasutamisel kaldkriipsu lisada ei tule.

Operaatoriga saab luua tsükleid, esitada tingimusi, defineerida operatsioone korduvkasutuseks (nagu funktsioonid), teostada graafilisi operatsioone, muuta pinu sisu (elemente ümber reastada, kustutada, paljundada) ja palju muud.

### "Hello world" programm

PostScripti vorming eeldab faili alguses hüüumärgiga algavat kommentaari. Tekstväärtusi väljendatakse sulgudega. Standardväljundisse kirjutatakse pinus olev võrdusmärgi abil:

  %!
  (Hello world) =

Väljundisse minev programm:

  %!
  /Times-Roman findfont 15 scalefont setfont
  72 200 moveto
  (Hello world) show
  showpage

### Interpretaatorid

PostScripti suudavad interpreteerida GhostScript, Acrobat Distiller.

Näiteks GhostScript Linuxi käsureal:

  $ gs
  ESP Ghostscript 815.01 (2005-09-22)
  Copyright (C) 2004 artofcode LLC, Benicia, CA. All rights reserved.
  This software comes with NO WARRANTY: see the file PUBLIC for details.
  GS>4 5 mul
  GS6
  GSmul
  GS=
  120
  GS>quit
  $ 

GhostScripti käsureal on näha pinus olevate elementide arv.

GhostScripti koosseisu kuulub ka PostScripti PDF-iks teisendamise programm, GhostView (gv) ja palju muud.

## Vaata ka

* Portable Document Format

## Välislingid

Adobe üllitatud raamatud (keelega alustajatel soovitatakse raamatutega just selles järjekorras tutvust teha):
* "The Blue Book" tutvustus ja kasutusnäited (Tutorial and Cookbook)
* "The Green Book" sügavamalt keelt lahkav raamat (PostScript Language Program Design)
* "The Red Book" keele spetsifikatsioon (PostScript Language Reference, third edition)

Teised raamatud:
* Thinking in PostScript

Saidid:
* PostScripti operaatorite kogu seletustega
* PostScripti sissejuhatus