טורבו פסקל

טורבו פסקל (באנגלית: Turbo Pascal) היא סביבת פיתוח של חברת בורלנד לשפת פסקל, שכוללת IDE ומהדר. סביבה זו הייתה פופולרית ואהודה אצל מפתחים בשפת פסקל בסביבת DOS, בשל חדשנותה, פשטותה, יכולותיה ומחירה הנמוך. חידושיה של חברת בורלנד בטורבו פסקל לא היו רק בסביבת פיתוח, אלא גם בהרחבות רבות לשפה, שאומצו לאחר מכן בידי מהדרים רבים, והעצימו את יכולותיה של השפה והתאימו אותה לתפיסות תכנותיות חדשות. הגרסה האחרונה של טורבו פסקל הייתה השביעית. בשנת 1995 חברת בורלנד הפסיקה לפתח אותה, ועברה לפתח את סביבת הפיתוח המהיר דלפי לחלונות וללינוקס. כיום ניתן להוריד גרסאות שונות של טורבו פסקל (1,3,5.5) ממוזיאון התוכנות של בורלנד. הגרסה הראשונה של טורבו פסקל יצאה ב-20 בנובמבר 1983, והליבה שלה התבססה על מהדר בשם PolyPascal שנכתב על ידי מהנדס התוכנה הדני אנדרס הלסברג. בורלנד הוסיפה למהדר ממשק משתמש ועורך טקסט. אנדרס הצטרף לחברה כעובד, והיה הארכיטקט של כל גרסאות טורבו פסקל ושלוש הגרסאות הראשונות של דלפי. כאשר הגרסה הראשונה הופיעה בשוק האמריקאי, ה-IDE שלה היה חדשני יחסית, והיא נמכרה במחיר של 49 דולר. גרסה זו, שיצאה ב-17 בספטמבר 1986, הייתה הגרסה הראשונה שתמכה ביצירת יישומים שגודלם מעל 64K בתים באמצעות Overlays. הוספת הקונספט של שימוש ביחידות (Unit), שהם קטעי קוד מהודרים בשפת פסקל. עד כה היה צורך להשתמש בקובצי הכללה, שאחד מחסרונם היה שהם היו חייבים להיות בקוד מקור, ולא היו יכולים להיות מהודרים, ולכן היו צריכים לעבור בכל פעם הידור מחדש. ב-2 במאי 1989 יצאה גרסה שמכונה גם Object Pascal, שלה הוספה יכולת מלאה של תכנות מונחה עצמים, שכוללת הכמסה, פונקציות בנאי ומפרק, ירושה, פולימורפיזם ושיטות וירטואליות. גרסה זו שמתהדרת בעזרה היפרטקסט עם יכולת גזירה והדבקה ותמיכה במעבד מתמטי של מעבדים שונים, עדיין לא כללה תמיכה בעכבר. נוספה ספרייה מונחת עצמים בשם Turbo Vision לכתיבת ממשק משתמש ושימוש בעצמי מסך כמו תפריטים, שימוש בעכבר, תיבות שיחה והודעות. נוספה יכולת שילוב של שפת אסמבלר בסביבה. סביבת הפיתוח של 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 של טורבו פסקל המופצת בחינם, במוזיאון טורבו פסקל, אתר בורלנד