פסקל: היסטוריה וסביבות פיתוח

אם תשאלו מתכנת ממוצע בן-זמננו על שפת פסקל (Pascal), סביר להניח שהוא יגיב בהרמת גבה. בשנות התשעים של המאה הקודמת, שפת פסקל נלמדה אמנם במגמות מדעי המחשב כמעט בכל בית ספר ואוניברסיטה בארץ, ושימשה לא פעם גם למטרות מסחריות; אך כיום רבים סבורים שמדובר בדינוזאור, שפה עתיקה שאבד עליה הכלח ושמקומה במוזיאון. המציאות, כמו תמיד, אינה שחור או לבן: שפת פסקל נדחקה אמנם הצידה בתודעה של ציבור המתכנתים, אבל היא בהחלט לא מתה. בדף זה נדבר קצת על גלגוליה של שפת פסקל בארבעים וחמש(!) השנים שעברו מאז הופיעה לראשונה, וננסה להבין מדוע היא עדיין רלוונטית.

היסטוריה

בשנת 1970 פירסם מדען המחשבים השוויצרי ניקלאוס וירת' (Niklaus Wirth) מפרט של שפת תכנות חדשה שהמציא, בשם "פסקל" (על שם הפילוסוף והמתמטיקאי הצרפתי בן המאה ה-17, בלז פסקל). שלא כמו רוב שפות התכנות באותה תקופה, פסקל יועדה מראש להיות שפה לימודית, ובניגוד לשפת בייסיק (Basic) הפשוטה משנת 1964, שנועדה גם היא למתחילים, פסקל כללה יכולות מתקדמות לאותם ימים כגון תכנות פרוצדורלי, מצביעים (Pointers) ועוד.

הפריצה הגדולה של שפת פסקל לתודעה ולשוק התחוללה בשנת 1983, כאשר חברת Borland החלה למכור את סביבת הפיתוח Turbo Pascal למערכת ההפעלה MS-DOS. קרוב לוודאי שההצלחה של Turbo Pascal נבעה מנוחות העבודה בה וממחירה הנמוך הרבה יותר מאשר משפת התכנות עצמה; כך או אחרת, השפה זכתה לפופולריות עצומה והפסקל של Borland (שלא היתה זהה במאה אחוזים לזו של וירת') הפכה לתקן דה-פקטו. במשך עשר השנים הבאות יצאו גרסאות רבות נוספות של Turbo Pascal, כאשר מגרסה 5.5 ומעלה נוספו לשפה גם יכולות תכנות מונחה עצמים (Object Oriented Programming).

בשנת 1995 נטשה Borland את הפיתוח ל-MS-DOS ועברה למערכת ההפעלה Windows 3.1 עם סביבת הפיתוח המשולבת והגרפית דלפי (Delphi). גם כאן, האיכות הגבוהה של סביבת הפיתוח עצמה הפכה אותה לפופולרית – אם כי סטודנט בשם פלוריאן פול קלמפפל (Klampfl) התאכזב מהמעבר והחל לפתח מהדר פסקל משלו, שיהפוך לימים לפרויקט הקוד הפתוח הידוע ורב-העוצמה Free Pascal Compiler. גם דלפי זכתה למספר רב של גרסאות שהוסיפו שכלולים ועדכונים לשפת התכנות עצמה. בגרסאות הראשונות היא נקראה Object Pascal, לאחר מכן Delphi כשמה של סביבת הפיתוח, וכיום – לאחר שפיתוח דלפי עבר לידי חברת Embarcadero, שוב Object Pascal.

מוצרי דלפי הראשונים ניצלו אולי את התנופה של Turbo Pascal, אלא שעולם התכנות כבר החל לגלוש לכיוונים אחרים. פרט למתחרה הוותיקה והחזקה C++ התחילו להופיע בשוק שפות פופולריות נוספות – Java ואחרות – וגם רשת האינטרנט הצעירה צברה תאוצה ויצרה עולם שלם וחדש של תכנות ש-Object Pascal פשוט לא הכירה. כמו כן, גרסאות דלפי עלו כסף בעוד שסביבות פיתוח עדכניות אחרות הופצו בחינם, ומוסדות החינוך עברו אליהן מטעמי חיסכון.

במשך עשר שנים לערך, גורמים אלה וכן הבלעדיות הכמעט-מלאה של מוצרי דלפי היקרים בתחום הפסקל דחקו את השפה הצידה. בסביבות שנת 2004, סביבת הפיתוח החינמית Lazarus שמבוססת על Free Pascal Compiler הפכה ליציבה, משוכללת ונוחה מספיק לצורך פיתוח מסחרי, והיא אמנם לא חזקה כמו דלפי אך מהווה אלטרנטיבה מעניינת. נכון להיום, אלו הן שתי האופציות הריאליות עבור מתכנתים שרוצים לעבוד בפסקל – ושתיהן מעודכנות לימינו ומשתכללות בלי הפסקה: מתכנת (או מתכנתת) שיבחרו לעבוד בהן ימצאו את עצמם מן הסתם במיעוט, אך מצוידים בכל הנוחות ובכל הכלים המודרניים הדרושים לפיתוח יישומים במאה העשרים ואחת.

יתרונות וחסרונות

בעולם המגוון להפליא של התכנות, כל תכונה כזו או אחרת של שפת תכנות יכולה להיתפס כיתרון או כחסרון – תלוי במטרה שלשמה משתמשים בה ובהעדפותיהם של המשתמשים עצמם. לכן, כל מה שנכתב כאן הוא בערבון מוגבל ומפרספקטיבה כללית ככל האפשר.

יתרונות: ראשית, בדומה לשפת C++, לשפת Object Pascal המודרנית יש מנעד רחב מאד: אפשר לתכנת בה בכל הרמות, החל מה"ברזלים" של המחשב (עד כדי שילוב מובנה של שפת אסמבלי) וכלה באובייקטים מורכבים ביותר ליישומי רשת, שרת/לקוח, מסדי נתונים ועוד. מכיוון שזוהי שפה "מקומית" (native), הקוד שלה הופך ישירות לקוד מכונה ומבטיח מהירות ריצה מרבית, ללא צורך בהתקנה של חבילות תוכנה נוספות, או בפענוח בזמן אמת כמו בשפות מפוענחות (interpreted) וסקריפטים למיניהם.

עם זאת, היתרון הגדול ביותר של Object Pascal על פני רוב השפות האחרות הוא שהיא קריאה, ברורה ומסודרת מאד. בזכות התחביר, מבנה התוכנית, הגדרות טיפוסי הנתונים וכו', השפה עצמה מנווטת את המתכנת לכתיבה מסודרת, הן רעיונית והן ויזואלית, מבלי לפגוע באפשרויות הפתוחות בפניו. מספר הסימנים הדו-משמעיים או שאינם ברורים מאליהם הוא מינימלי: פרט, אולי, לשפות חלשות בהרבה כמו Basic, לאדם שאינו מתכנת מנוסה קל יותר לקרוא ולהבין קוד פסקל מאשר קוד של כל שפה אחרת. תכונות אלה מועילות לא רק לצורכי למידה (אם כי Object Pascal אכן מצוינת ומומלצת למתחילים), אלא גם לצמצום שגיאות התכנות ולהפיכת התחזוקה של הקוד בעתיד לקלה.

בנוסף, בזכות הוותק שלה והפופולריות (לפחות עד התקופה האחרונה), השפה יציבה מאד, בדוקה ועדכנית, ויש באינטרנט כמות עצומה של דוגמאות קוד, טיפים ורכיבי צד שלישי לכל מטרה עבור סביבות הפיתוח הנפוצות.

חסרונות: גם אם הדבר אינו מוצדק, שפת Object Pascal אינה נפוצה כמו פעם, והיא נחשבת בעיני רבים למיושנת. לכן קשה יותר (יחסית) למצוא חומר לימודי, קורסים, סביבות פיתוח וכמובן גם עבודה בתכנות – חסרון משמעותי ביותר למי ששוקל ללמוד שפת תכנות לצורך קריירה. יש רק שתי סביבות פיתוח רציניות עבורה – אחת מהן יקרה מאד עבור המשתמש הפרטי, והאחרת קצת פחות חזקה (פירוט בהמשך).

כפי שהוזכר, שפת פסקל מעניקה למתכנת שליטה רבה מאד במתרחש, אך יש לזה מחיר: הצורך לכתוב יותר קוד, לרדת לפרטים של פעולות ששפות מודרניות פותרות לעתים בפקודות בודדות, ובעיקר לשחרר לבד את הקצאות הזיכרון שנעשות במהלך הריצה – פעולה שמתבצעת אוטומטית בשפות כמו Java או C# באמצעות מנגנון "איסוף הזבל" (Garbage Collection).

לסיום, מכיוון שרוב השפות הנפוצות/אופנתיות כיום מסתמכות במידה מסוימת על התחביר של שפת C או C++, התחביר של Object Pascal הוא חריג בנוף והמעבר בינו לבין שפות אחרות קצת פחות טריוויאלי.

סביבות פיתוח

אי-שם בעבר הרחוק, כל עבודת תכנות התבצעה בשתי תוכנות נפרדות לפחות: עורך טקסט (בדומה ל-Notepad של Windows או משוכלל יותר), ומהדר (Compiler) שלקח את הקוד שהוקלד בעורך והפך אותו לקובץ הרצה. שיטת עבודה זו היתה מסורבלת למדי ולא נוחה: לדוגמה, בעת איתור ותיקון שגיאות, המתכנת נאלץ לרוץ הלוך ושוב בין התוכנות כדי למצוא באיזו שורה אירעה שגיאה, ומה הקוד הבעייתי שנמצא בפועל באותה שורה. סביבות הפיתוח המשולבות (IDE – Integrated Development Environment) הינן תוכנות שמרכזות במקום אחד את כל הפונקציונליות הדרושה לתכנות: המתכנת יכול לכתוב את הקוד, להריץ אותו ולבצע כל פעולה אחרת באותו מקום. תוכנות כאלה הקלו מאד על חייהם של מתכנתים וכיום רוב משימות התכנות מתבצעות בהן. אחת מסביבות הפיתוח המשולבות הראשונות בהיסטוריה, אגב, וללא ספק המצליחה מביניהן, היתה זו של טורבו פסקל. כיום, מבחר סביבות הפיתוח המשולבות והמודרניות שמיועדות ספציפית ל-Object Pascal מצומצם מאד; למעשה, יש רק שתיים.

Lazarus: בשנת 1998, שלוש שנים בערך אחרי שיצאה לשוק הגרסה הראשונה של סביבת הפיתוח המשולבת דלפי, החל פרויקט בקוד פתוח ליצירת סביבת פיתוח משולבת מקבילה שתתבסס על מהדר FPC. פרויקט זה, שכונה מגידו (Megido), הופסק כעבור כשנה, אך שלושה ממפתחיו יצרו פרויקט חדש לאותה מטרה וקראו לו Lazarus – על שם האיש שהוקם לתחייה בברית החדשה. פרויקט זה הצליח במקום שקודמו נכשל, ועם הזמן הפך ליציב וחזק עד כדי כך שהוא מתחרה בכבוד עם סביבות פיתוח מסחריות ויקרות. ל-Lazarus, כמו לכל מוצר, יש יתרונות וחסרונות. מצד אחד הוא חינמי, עדכני, כולל גרסאות למבחר גדול של מערכות הפעלה (ניתן להעביר את אותו הקוד ולהדר אותו ב-Windows, ב-Linux ועוד) ויש לו קהילת משתמשים ומפתחים פעילה וידידותית. מצד שני, הוא עצמו קצת פחות ידידותי למשתמש, וקובצי ההרצה שהוא יוצר קצת פחות מהירים ויעילים לעומת דלפי. בסיכום הכללי, מדובר בסביבת עבודה מצוינת שמתאימה גם ליישומים מסחריים וגם למתחילים שמעוניינים ללמוד Object Pascal. אם ברצונכם להתקין Lazarus במחשב שלכם ולהתנסות בו, התחילו במדריך ההתקנה שכתבתי. דף הבית של Lazarus נמצא כאן.

Delphi: סביבת הפיתוח הזו, שגרסתה הראשונה הופיעה בשנת 1995, החליפה מאז ידיים וגם עברה גלגולים רבים, חלקם בעייתיים כמו גרסאות 8 ו-2005 הידועות לשמצה. עם זאת, הגרסאות האחרונות (XE2 והלאה) נחשבות מוצר מקצועי ומהוקצע למדי, בין סביבות הפיתוח החזקות והנוחות ביותר לכל שפת תכנות שהיא – לא רק ל-Object Pascal. הגרסה הנוכחית, XE8, מיועדת לפיתוח גם ל-iOS ולאנדרואיד. לרוע המזל, ליתרונות האלה יש מחיר: אלפי שקלים למוצר מלא, או כמאתיים דולר למהדורת Starter שהרשיון שלה מוגבל מבחינת שימוש מסחרי.  אם אתם יכולים להרשות לעצמכם את הטוב ביותר, בקרו בדף הרשמי של Delphi באתר של Embarcadero. אפשר להוריד גרסאות ניסיון לשלושים יום , אך שלושים יום לא עושים צדק עם המוצר הזה. על פי האתר של Embarcadero, המשווקות בישראל הן Comprise ומאגרי תוכנה.

טריוויה

כמעט כל מתכנת בטוח ששפת התכנות שלו היא הטובה ביותר ולועג לאחרות, אך פסקל במיוחד ספגה ועדיין סופגת הרבה אש: המאמר "Real Programmers Don't Use Pascal" משנת 1983 הפך לחלק ממיתולוגיית עולם התכנות. מאמר עתיק נוסף שעוד אפשר למצוא ברשת הוא "Why Pascal is Not My Favorite Programming Language", ואפילו לינוס טורבלדס, מפתח לינוקס האגדי, התייחס לשפת התכנות ולממציאה בארסיות. אפרופו, רוב הביקורות הללו אינן רלוונטיות ל-Object Pascal המודרנית, ולדברי ויקיפדיה, כמה מהאלמנטים שנחשבו בעייתיים בעיני ביקורות אלה אומצו ברבות הימים בשפות אחרות ומתקדמות.

מסיבות היסטוריות, שפת Object Pascal תומכת בתכנות במונחה עצמים (Object Oriented Programming) בשני אופנים שונים ונפרדים: באמצעות טיפוס הנתונים Object, שהופיע לראשונה ב-Turbo Pascal 5.5, ובאמצעות הטיפוס Class המודרני יותר שהתווסף לשפה בעידן Delphi.

הארכיטקט הראשי של שפת C# במיקרוסופט, אנדרס הילסברג (Hejlsberg), היה לפני כן הארכיטקט הראשי של Delphi בחברת Borland, ועבד בזמנו גם על פיתוח Turbo Pascal.

בלוג אישי בנושאי מייקינג, תכנות, מיקרו-בקרים ואלקטרוניקה