טורבו פסקל

**טורבו פסקל** (באנגלית: **Turbo Pascal**) היא סביבת פיתוח של חברת בורלנד לשפת פסקל, שכוללת IDE ומהדר. סביבה זו הייתה פופולרית ואהודה אצל מפתחים בשפת פסקל בסביבת DOS, בשל חדשנותה, פשטותה, יכולותיה ומחירה הנמוך. חידושיה של חברת בורלנד בטורבו פסקל לא היו רק בסביבת פיתוח, אלא גם בהרחבות רבות לשפה, שאומצו לאחר מכן בידי מהדרים רבים, והעצימו את יכולותיה של השפה והתאימו אותה לתפיסות תכנותיות חדשות. הגרסה האחרונה של טורבו פסקל הייתה השביעית. בשנת 1995 חברת בורלנד הפסיקה לפתח אותה, ועברה לפתח את סביבת הפיתוח המהיר דלפי לחלונות וללינוקס. כיום ניתן להוריד גרסאות שונות של טורבו פסקל (1,3,5.5) ממוזיאון התוכנות של בורלנד.

## גרסה 1
הגרסה הראשונה של טורבו פסקל יצאה ב-20 בנובמבר 1983, והליבה שלה התבססה על מהדר בשם PolyPascal שנכתב על ידי מהנדס התוכנה הדני אנדרס הלסברג. בורלנד הוסיפה למהדר ממשק משתמש ועורך טקסט. אנדרס הצטרף לחברה כעובד, והיה הארכיטקט של כל גרסאות טורבו פסקל ושלוש הגרסאות הראשונות של דלפי. כאשר הגרסה הראשונה הופיעה בשוק האמריקאי, ה-IDE שלה היה חדשני יחסית, והיא נמכרה במחיר של 49 דולר.

## גרסה 3
גרסה זו, שיצאה ב-17 בספטמבר 1986, הייתה הגרסה הראשונה שתמכה ביצירת יישומים שגודלם מעל 64K בתים באמצעות Overlays.

## גרסה 4
הוספת הקונספט של שימוש ביחידות (Unit), שהם קטעי קוד מהודרים בשפת פסקל. עד כה היה צורך להשתמש בקובצי הכללה, שאחד מחסרונם היה שהם היו חייבים להיות בקוד מקור, ולא היו יכולים להיות מהודרים, ולכן היו צריכים לעבור בכל פעם הידור מחדש.

## גרסה 5.5
ב-2 במאי 1989 יצאה גרסה שמכונה גם Object Pascal, שלה הוספה יכולת מלאה של תכנות מונחה עצמים, שכוללת הכמסה, פונקציות בנאי ומפרק, ירושה, פולימורפיזם ושיטות וירטואליות. גרסה זו שמתהדרת בעזרה היפרטקסט עם יכולת גזירה והדבקה ותמיכה במעבד מתמטי של מעבדים שונים, עדיין לא כללה תמיכה בעכבר.

## גרסה 6
נוספה ספרייה מונחת עצמים בשם Turbo Vision לכתיבת ממשק משתמש ושימוש בעצמי מסך כמו תפריטים, שימוש בעכבר, תיבות שיחה והודעות.

## גרסה 7
*נוספה יכולת שילוב של שפת אסמבלר בסביבה.
*סביבת הפיתוח של DOS הורחבה לפיתוח בשני מצבי הפעולה שלו.
*נוספה סביבת פיתוח חדשה לחלונות 16 ביט בשם BPW. (Borland Pascal 7) שבה נוספו יחידות לעבודה עם סביבת חלונות. החשובות שבהם, WinProcs שבדומה ל-MFC מהווה עטיפה ליותר מ-600 פונקציות API של חלונות, וביחד עם היחידה WinType, שתי יחידות אלו מהוות את מכלול התכנות של פסקל בחלונות, שאפשר ליצור יישומים חלונאיים מלאים כולל יכולות ליצירת יישום מרובי מסמכים (MDI), חילוף נתונים דינמי בין יישומים (DDE) ויצירת קובצי ספריות קישור דינמי (DLL).
* נוסף טיפוס מחרוזת NullTerminated שגודלו יכול להגיע עד 64K תווים. (65,535 תווים). עד כה גודל מחרוזת היה מוגבל ל-256 תווים והדרך לטיפול בטקסט גדול יותר הייתה באמצעות הקצאת זיכרון דינמית.

## הרחבות של טורבו פסקל לשפה
### כתיבה וקריאה להתקנים חיצוניים
הדרך ליצור גישה לאמצעי קלט ופלט בטורבו פסקל הפכה להיות פשוטה ואינטואיטיבית, באמצעות שורה של פקודות קריאות ומובנות, שהתייחסו לכל אמצעי הקלט והפלט בצורה לוגית דומה, בין אם מדובר בקבצים בדיסק, במדפסת, במסך או במודם שמותקן ביציאה הטורית. 
* פקודת Assign הקצתה וקבעה את אמצעי הקלט-פלט: לקובץ - שם קובץ, להדפסה - PRN וליציאת תקשורת - COM ומספר (למשל COM1). 
* פקודת Rewrite פותחת את ההתקן לפלט. 
* פקודות Write או writeln מבצעות את הכתיבה. 
* ופקודת Close סוגרת את ההתקן.

#### בעבודה עם קבצים
* כדי לפתוח קובץ להוספת נתונים יש להשתמש בפקודת Append. 
*כדי לפתוח קובץ לקריאה יש להשתמש בפקודת Reset, בצירוף עם פקודת הקריאה Read או Readln. 
* פקודת Seek כדי להניע את מחוון הקובץ. 
* כדי לדעת מתי הגעת לסוף שורה קיימת הפונקציה EOLN (תו אסקי 13)
* ואילו פונקציה EOF מדווחת על סוף קובץ. 
* ביצוע של קריאת וכתיבת טיפוס נתונים לא מוגדר לקובץ, נעשתה באמצעות הפקודות BlockRead ו-BlockWrite.

### גישה למערכת הפעלה
סביבת טורבו פסקל הרחיבה גם את הגישה למערכת ההפעלה ול-BIOS של המחשב באמצעות היחידה DOS. ביחידה מספר שגרות. באמצעות  השגרה MsDos אפשר לבצע ישירות פקודות DOS, באמצעות השגרה Intr אפשר לגשת ישירות לשרותי ה-BIOS של המחשב באמצעות פסיקות תוכנה, ובאמצעות השגרה Exec אפשר להריץ תוכנית DOS תוך עצירת התוכנית הנוכחית. כמו כן ישנם פקודות DOS מובנות ביחידה לעבודה מהירה כמו למשל חיפוש קבצים, בדיקת גודלם וכדומה.

### היחידה - ספרייה חיצונית
גם מושג היחידה היה חידוש של טורבו פסקל. טורבו פסקל עשה שימוש בספריות של קטעי קוד חיצוניים מהודרים, לצורך שלוש מטרות: מיחזור קטעי קוד, הפשטה פרוצדורלית והכמסתו של הקוד, ושבירת מחסום 64K שהיה קיים ב-DOS. גישה לפונקציות בספריות חיצוניות קיימות (Unit) נעשית באמצעות המילה השמורה Uses לפני הגדרת המשתנים הגלובליים.

לדוגמה:

 **USES** WINCRT, STRINGS, WINPROCS, WINTYPES, WIN32;


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

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

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

כדי להשתמש בבנאי, יש ליצור שגרה מיוחדת שכותרת שמה שונתה מ-PROCEDURE למילה השמורה CONTRUCTOR.

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


 **program** MyProgram;
 **Type**
        MyObject=object
        Author,
        BookName: string;
        procedure SetRecord(TheAuthor,TheName:string);
        procedure WriteRecord();
        end;
   **procedure** MyObject.SetRecord(TheAuthor,TheName:string);
   begin
     Author:= TheAuthor;
     BookName:=  TheName ;
   end;
   **procedure** MyObject.WriteRecord();
   begin
     Writeln(Author,BookName);
   end;
 **Var**
  MyObject1:MyObject;
 begin 
    MyObject1.SetRecord('Eli','Exodus');
    MyObject1.WriteRecord();
 end.


## התחרות עם מיקרוסופט
סביר להניח כי פיתוח המוצר של מיקרוסופט לשפת פסקל Microsoft Pascal הופסק בשל התחרות הקשה שהציב הטורבו פסקל בשל איכותו ומחירו הנמוך. תאוריה אחרת גורסת שחברת בורלנד עשתה עסקה עם חברת מיקרוסופט להפסקת פיתוח Microsoft Pascal וגרסתו הקלה QuickPascal, בתמורה להפסקת פיתוח סביבת הפיתוח Turbo BASIC בידי חברת בורלנד.
 
## קישורים חיצוניים

* הורדה של גרסה 5.5 של טורבו פסקל המופצת בחינם, במוזיאון טורבו פסקל, אתר בורלנד

קטגוריה:שפות תכנות
קטגוריה:תוכנות DOS
קטגוריה:תוכנות שהושקו ב-1983