PL/I – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
←‏תחביר: הרחבה
שורה 51:
*[[מצביע]] כ[[טיפוס נתונים]].
* ניהול זיכרון דינמי: [[משתנה (תכנות)|משתנים]] חולקו לארבע קטגוריות מבחינת ניהול הזיכרון:
** AUTOMATIC: כברירת מחדל, המשתנה נוצר עם הפעלת הפרוצדורה שבה הוא מוגדר, ונעלם עם סיום הפעלת הפרוצדורה (קטגוריהבדומה זולמשתנים היאלוקליים ברירתב[[שפת המחדלC]]).
** STATIC: המשתנהמשתנה מתקייםהמתקיים במשך כל זמן פעולתה של התוכניתהתכנית (בדומה למשתנים לוקליים סטטיים בשפת C).
** CONTROLLED: משתנה שהתוכניתשהתכנית קובעת מתי ייווצר ומתי יפנה את הזיכרון - משתנה כזה [[הקצאת זיכרון דינמית|מוקצה באופן דינמי]] על גבי זיכרון הערימה. שפת PL/I איננה כוללת מנגנון [[איסוף זבל]].
** BASED: משתנה המבוסס על הזיכרון שהוקצה למשתנה אחר. בעזרת קטגוריה זאת המתכנת יכול להגדיר מנגנון הקצאת זיכרון דינמי משלו, התפור לצורכי התכנית (שפת [[C++|++C]] מאפשרת פעולה כזאת בעזרת מנגנון Placement new).
 
יכולות נוספות:
שורה 61:
* אוסף נרחב של [[פונקציה (תכנות)|פונקציות]] לעיבוד של מספרים, מחרוזות, מצביעים ועוד.
 
בין חסרונות השפה הבולטים הוא השימוש המוגזם ב[[ברירת מחדל|ברירות מחדל]]. למשל - משתנה שאינו מוגדר, יוגדר (כמו ב[[פורטרן]]) על ידי ה[[מהדר]] כ FIXED BIN (כלומר מספר שלם) אם יתחיל באותיות I עד J ואחרת יוגדר כמשתנה FLOAT ([[נקודה צפה]]). עם זאת, רשימת כל המשתנים שלושלא הוגדרו מוצגת באזהרה של המהדר, כך שניתן לזהותם ולהגדירם.
 
==תחביר==