פיתוח חוצה פלטפורמות באמצעות Free Pascal 2.2.0

תרגום מהגרסה האנגלית לכתבה שפורסמה בOSNews ע"י Joost van der Sluis
תורגם ע"י עידו קנר

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

מהוא הכוח של FPC ?

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

חוצה פלטפורמות:

היתרון הגדול של FPC בכך שהיא חוצה פלטפורמות. הפיתוח של המהדר שם לו לדגש את ההיבט הזה מאז התחלת הפיתוח של גרסה מספר 2.0.

תכונה זו מסלקת את הצורך בעבודה מפרכת על קבצי Makefile, אשר משתנה מסביבה לסביבה, ואשר דורשת את השימוש בכלים כדוגמת autoconf ו-configure; המפתח אינו זקוק להסתכל על הספריות השונות המבצעות את העבודה הזו; מספיק להעתיק את המהדר וקבצי המקור של הפרויקט לפלטפורמה אחרת ע"מ להמיר את התכנה למערכת חדשה. ברור כי פיתוח חוצה פלטפורמות מפלטפורמה אחת (נגיד לינוקס) למערכת אחרת (Windows היא מטרה פופולרית) גם היא אפשרית.

הסיבה לכך שהקוד של Free Pascal נייד היא ממש פשוטה: המהדר מציע מגוון רחב של רוטינות חוצות פלטפורמות, העוקפות את ההבדלים בין POSIX לבין Windows API. בעוד שכל אחד מהם יכול להתקבל בצורה מלאכותית על פלטפורמות אחרות, ההדמיות הללו דורשות ספריות והתקנות מגושמות, ובד"כ לתוכנה שכזו יש מראה והרגשה מוזרים על פלטפורמות לא טבעיות.

המהדר Free Pascal מגיע עם מגוון רחב של ספריות קוד: ה-RTL (ספריות ה-Run Time) מספקות פונקציונליות בסיסית כגון גישה לקבצים, מחלקות, עבודה עם מחרוזות, ו-RTTI (Run-time Type Information) עבור זרמים. כל עוד המפתח משתמש בספריות אלו, ולא משפר אותן באמצעות API ספציפי לפלטפורמה, התכנה שלו תרוץ על לינוקס, Windows, FreeBSD, Mac OS X, Windows CE ועוד.

הרי ברור ששימוש ישיר בספריות מערכת ייעודיות כדוגמת C:\program files או קובצי הגדרות ב /etc/myproc.cfg הוא לא חוצה פלטפורמות. באמצעות השימוש ברוטינות FPC (כדוגמת המחלקה TRegistry) יהיה רכיב אשר יטפל ברמת מערכת ההפעלה. ה-FCL יודע כיצד ואיך כל מערכת שומרת את קבצי המידע שלה. פתרון זה מוריד כמעט לגמרי את הצורך בשימוש בקריאות API ייחודיות למערכת מסוימת.

תכנות גרפיות (GUI):

תכנות גרפיות (שולחן עבודה) הן הנורמה בימים אלו, ואין אתן שום בעיה. סביבת עבודה עבודה המשולבת (IDE) הנקראת Lazarus מתוכננת עם אותם העקרונות בהם מתוכננת גם FPC. ספריית ה-LCL (Lazarus class Library) המסופקת עם Lazarus נותנת לנו מענה אפשרי לפיתוח תכנות שולחן עבודה אשר משתמשות בצורה טבעית ב-API של Windows 32 ו-64 ביט. בלינוקס אנחנו יכולים להשתמש ב GTK1 או GTK2. גם השכבות של QT ו-Carabon כמעט ומושלמות עבור Lazarus.

באמצעות השימוש בLazarus, ניתן לפתח תכנה על לינוקס אשר תשתמש ב-GTK. כל שנדרש ע"מ לגרום לתכנה להכיל גם גרסת Windows היא שינוי הגדרות של המהדר. הידור מחודש ייתן אז קובץ ריצה של Windows אשר יעבוד בצורה ישירה מול כל גרסת Windows – ללא הצורך להתקין ספריות נוספות. כל מה שנדרש בשביל פעולה זו, היא התקנה מסודרת של Lazarus.

Windows בגרסת 64 ביט:

הידור מWindows ללינוקס טיפה מסובך וקשה יותר. המהדר דורש את השימוש ב GNU Linker על מנת להדר קובץ ELF בינרי, ואז יש צורך להעתיק את כל הספריות הדרושות. אך למרות זאת, העיקרון נשאר זהה. על מנת לספק קבצי ריצה בינריים, יש ל-FPC מקשר פנימי. אפשרות זו מאפשרת הידור הקוד עבור קבצי ריצה בינריים ל-Windows 64bit, כאשר הכלים של GNU אינם מספקים עדיין את היכולת הזו. אפשרות זו הופכת את FPC ו-Lazarus לפרויקטי הקוד הפתוח הגדולים והראשונים אשר מהדרים לסביבת 64 ביט וכן עבודה בסביבה זו במערכת ההפעלה Windows 64.

תוספות חדשות עבור פסקל מונחה עצמים:

בעבר, FPC הוסיף תוספות חדשות עבור שפת פסקל, כגון Operator Overloading – כאשר מאוחר יותר גם ביצועים מסחריים סיפקו תוספות כאלו. בגרסה 2.2.0 יש אפשרות חדשה ועדיין ניסיונית של תמיכה ב-Generis או templates בשמם הנוסף. דבר זה יכול להיות יעיל כאשר מתכנתים למשל רשימה של מחלקות.

מהירות:

FPC הוא מהדר מהיר. המהדר מהדר בערך פי 7 פעמים מהר יותר מאשר GCC. הרבה פעמים אנחנו לא רואים במהירות ההידור כדבר חשוב, אבל חשוב לזכור כי הדבר חוסך בסופו של דבר זמן פיתוח. מהירות הקוד כאשר משווים אותה עם המהדר GCC: לפי מבחני "מבחני הריסוק", המהדר FPC 2.0.4 יוצר קוד שהוא ב30% איטי יותר מאשר GCC. אבל מנגד, הקוד של FPC משתמש בהרבה פחות זיכרון, מאשר קוד אשר יוצר ע"י GCC. כאשר משווים את כך לשפות מתפרשות, ניתן לראות כי הקוד של FPC רץ בערך פי 50 מהיר יותר מאשר Ruby לדוגמה. השוני בין PHP לבין Java לעומת זאת קטן יותר, אבל אלו משתמשים פי 14 (PHP) ל 17 (Java) יותר זיכרון מאשר תכנות FPC.

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

ספריות:

כמו שהוזכר קודם לכן, Free Pascal מגיע עם ספריות קוד של RTL ו-FCL. ספריות ה-FCL מגיעות עם רכיבים לגישה עבור מסדי נתונים כדוגמת Oracle, Firebird, MySQL, SQLite, PostgreSQL וכל מסד נתונים הרץ על ODBC. הספרייה גם מכילה קוד עבור XML, תכנות Web כדוגמת CGI ומודולים של Apache. גישה לספריות גרפיות כדוגמת SDL ו-OpenGL. הרבה רכיבים של דלפי גם הם שמישים עם Free Pascal. רכיבי ספריית הגישה למסדי נתונים ZeOS וגם רכיבי הרשת של Indy הם דוגמה לכך. יש גם עליה במספר החברות אשר יוצרות את ספריות הדלפי שלהן נגישות גם עבור Lazarus ו-Free Pascal.

סיכום:

המהדר Free Pascal הנו מהדר בוגר, ומתאים במיוחד עבור פיתוח כל המטלות אשר אנו זקוקים להן. הניצוץ של FPC זוהר במיוחד כאשר יש צורך מתגבר של בניית קוד חוצה פלטפורמות: פיתוח תכנות גם עבור Windows וגם עבור לינוקס נהיה פשוט יותר בצורה מדהימה. על גבי הפרויקט Lazarus ניתן לפתח תכנות גרפיות עבור שולחן העבודה, משהו ש-C ו ++C רק מגרדות על פני השטח בלינוקס. הממלכה הזו בד"כ נשמרת עבור שפות מפורשות כדוגמת C# ו-Java אשר סובלות מבעיות של שימוש מופרז בזיכרון, ריצה אטית, ואף בעיות של תחזוקה. בשורה התחתונה ניתן להגיד של השילוב FPC/Lazarus הוא בחירה מצוינת עבור פיתוח חוצה פלטפורמות.

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s