פוסטסקריפט

היסטוריה

את השפה יצרו בשנת 1982 מייסדי חברת אדובי, ג'ון וורנוק וצ'אק ג'שקה (לפנים ממרכז המחקר זירוקס פארק), כגרסה פשוטה יותר של שפת InterPress. 
מייסד אפל, סטיב ג'ובס, פגש את וורנוק וג'שקה בשנת 1984 והפציר בהם להתאים את פוסטסקריפט למדפסת הלייזר החדשה של חברת קנון. בשנת 1985 הייתה מדפסת ה-LaserWriter של אפל למדפסת הראשונה ששווקה כשהיא תומכת בשפת פוסטסקריפט. תוך זמן קצר הפכה השפה לתקן דה פקטו להעברת מסמכים לדפוס. 
מאחר שתיאור מסמך בפוסטסקריפט הוא למעשה תוכנית מחשב, ישנו קושי להעריך, בהינתן קובץ פוסטסקריפט מסוים, כמה זמן תארך הדפסתו (דוגמה קיצונית היא הכנסת לולאה אינסופית לתוכנית הפוסטסקריפט, דבר שיגרום לכך שתוכנית זו לא תסתיים ולמעשה תשתק את המדפסת). חיסרון נוסף של פורמט הפוסטקריפט, הנובע מהיותו גם שפת תכנות, הוא העובדה שלא ניתן לייצר תוכנה לעריכת קובצי פוסטקריפט כלליים. הרצון ליצור פורמט שיאפשר גם העברה איכותית של קבצים גרפיים וגם יכולת לערוך אותם, הביא את חברת אדובי לפתח את פורמט PDF, שלמעשה מכיל את כל האלמנטים הגרפיים של שפת הפוסטקריפט אולם ללא היכולות התכנותיות. כיום משמש פורמט ה-PDF כפורמט הפצת המסמכים הנפוץ ביותר, אולם עדיין רוב המדפסות הגרפיות והתקני הקדם-דפוס (כמו תווין פילם ופלטות וכן מדפסות דיגיטליות) כוללות מפרש פוסטקריפט. לאחרונה הכריזה חברת אדובי על תוכנה למדפסת שמסוגלת לקבל כקלט מסמכים בפורמט PDF.

השפה

פוסטסקריפט היא שפה שלמה טיורינג. תוכניות פוסטסקריפט נכתבות בדרך כלל על ידי תוכנות ולא על ידי בני אדם, אולם ניתן לבצע חישובים וליצור איורים על ידי יצירה ידנית של קובצי פוסטסקריפט.
פוסטסקריפט היא שפה מפורשת, מבוססת מחסנית (Stack). התחביר משתמש בכתיב פולני. הדבר מייתר את השימוש בסוגריים, אך הופך את השפה למעט קשה לקריאה, ודורש מהקורא לזכור את מצב המחסנית.
השפה התפתחה משפת FORTH ומכילה מלבד פעולות חשבוניות, מבני בקרה תכנותיים כלולאות או משפטי אם-אז (IF-THEN) גם מבני נתונים. מעבר למבני הנתונים הפשוטים כמספרים ומחרוזות, שפת פוסטסקריפט בנויה סביב מבנה נתונים חשוב ומרכזי בשפה - מילון ערכים (Dictionary). המילון מורכב מזוגות של מפתחות וערכים, כאשר הן כמפתח והן כערך יכול לשמש כל מבנה נתונים בשפה. בין היתר גם מבנה נתונים של מילון יכול להוות ערך של מפתח במילון אחר. בצורה זו ניתן לבנות מבני נתונים עשירים למדי.
ממד נוסף של השפה הוא העובדה שפונקציות או פרוצדורות במושגי פוסטסקריפט הן למעשה מערכים של אופרטורים, כך שניתן להפעיל פעולות המיועדות במקור לפעול על נתונים - על קוד של פרוצדורות. למשל, ניתן לשרשר שתי פרוצדורות על ידי התייחסות אליהן כשני מערכי נתונים.
מעבר למרכיבים התכנותיים בשפה, שפת פוסטסקריפט מכילה אובייקטים ופעולות גרפיות בדו-ממד. בעזרת פעולות אלה ניתן למקם על הדף המודפס עצמים וקטוריים (רבועים, קשתות, מסלולים, פוליגונים וכדומה) בגדלים שונים, טקסט בגופנים שונים, וגם תמונות דיגיטליות בפורמט של מפת סיביות (תמונות המורכבות מפיקסלים).
על מנת לאפשר הגדרות גרפיות שאינן תלויות במדפסת מסוימת, שפת פוסטסקריפט מאפשרת למתכנת להגדיר את הצורות הגרפיות במונחי מערכת צירים של המשתמש (User Coordinate System) כאשר פנימית, מפרש הפוסטסקריפט מחזיק במטריצת המרה המגדירה את היחס בין מערכת הצירים של המשתמש להתקן ההדפסה. מטריצה זו מכונה Current Transformation Matrix, או בקיצור CTM והיא מהווה חלק מהמצב הגרפי שאותו שומר מפרש הפוסטסקריפט.
על ידי פעולות על מטריצת ההמרה (CTM), ניתן לסובב, לשנות את הגודל ולעוות צורות שונות. למשל, הכפלת המטריצה במטריצת סיבוב יוצרת סיבוב של מערכת הצירים של המשתמש, והפעלת אופרטורים גרפיים תגרום הופעתם מסובבים על התקן הפלט (בדרך כלל על הדף המודפס).
מאפיינים אחרים של המצב הגרפי הם עובי הקווים, הפונט הנוכחי, הצבע הנוכחי, והאזור על הדף עליו ניתן לצייר (Clipping Path).