ארכיון יומי: 9 ינואר, 2010

FPC לאן – פוסט תקופתי

עכשיו אחרי ש FPC 2.4.0 שוחררה לעולם, אני יכול לדבר על עץ הפיתוח שאני עוקב אחריו באמת וזה 2.5.1. זהו עץ שיהיה בסופו של דבר גרסה 2.6.0.

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

אינני יודע אם למשל הדבר הבא נכנס ל 2.4.0, אבל הוא קיים ב 2.5.1:

var
   s : string;
...
case s of
  'String1' : ...;
  'String2' : ...;
  ...
end;
...

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

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

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

  1. תמיכה בתחביר for in
  2. תמיכה במחלקות הניתנות לאיטרציה על ידי הגדרת אופרטור בתוך מחלקה למניה בשם Enumerator וכמה פונקציות

דוגמא ל for in אפשר לראות בצורה הבאה:

procedure StringLoop(S: String);
var 
  C : Char;
begin
  for C in S do
    DoSomething(C);
end;

כמו שאפשר לראות, באמצעות אנומרציה על תו בתוך מחרוזת, אפשר לעשות פעולות פר תו בודד. אותו הדבר אפשר לעשות גם למערכים ול set . להמשיך לקרוא