אייפל (שפת תכנות) – הבדלי גרסאות
תוכן שנמחק תוכן שנוסף
מ ←תרגום לשפת מכונה: זה לא כמו בג'אווה |
Matanyabot (שיחה | תרומות) מ בוט החלפות: על פי, על ידי, תוכנית, אחר כך, זיכרון, תאור\1, אובייקט, מסוי\1, דוגמה\1 |
||
שורה 22:
===design by contract===
"חוזה" הן למעשה קבוצה של התניות שמוגדרות
לכל פונקציה ניתן להצהיר:
*תנאים לפני הרצת הפונקציה (Pre Conditions)
שורה 33:
*ביטויים קבועים לאורך התוכנית (Invariant)
design by contract הינו סימן רשום של Eiffel software והמונח הוטמע והומצא
====
<source lang="eiffel">
שורה 85:
===uniform access principle===
מכיוון שיש שינויים ותוספות של אובייקטים חדשים לשפה, דאגו לעשות שכל הפניות יהיו באותה צורה כדי לחסוך תקלות. ולכן יש מנגנון גישה זהה לכל הפונקציות והמחלקות.
לדוגמה:
(Foo.bar(5
שורה 100:
ניהול זיכרון של תוכנית בשפת Eiffel הינה משימה לא קלה בגלל שלוש סיבות:
א. תוכנית בשפת Eiffel יכולה לקרוא לפונקציות בשפת C, לכן צריך להתחשב בכך שיכולות להיות בתוכנית 2 סוגי זיכרון:
ב. צריך להבחין בין אובייקטים רגילים - אובייקטים בעלי גודל קבוע שנקבע באופן סטטי (בזמן הקומפילציה)
ג. לא מספיק לשחרר זיכרון רק לשם שימוש חוזר בתוכניות בשפת Eiffel, אלא אנו מעוניינים שניתן יהיה להחזיר את הזיכרון אל מערכת ההפעלה לשימוש חוזר גם באפליקציות אחרות.
שורה 115:
כברירת מחדל, כל יישום בשפת Eiffel כולל GC אוטומטי. אבל בכל אופן ניתן לשלוט על מנגנון ניהול זיכרון ולכוון אותו כך שיתאים לצרכים הספציפיים של המתכנת באמצעות פונקציות ופרוצדורות השייכות למחלקה MEMORY, שמאפשרים "להדליק" או "לכבות" את ה GC האוטומטי.
המאפיין הייחודי של ה-GC של Eiffel הוא שה-GC אינו מבצע שחרור זיכרון רק עבור שימוש חוזר
== מבנה השפה ==
שורה 141:
=== אובייקטים ===
נקראים גם REFERENCE ומכילים
<source lang="eiffel">i: MYoBJ</source>
שורה 183:
t: TUPLE [name: STRING; weight: REAL; date: DATE]
</source> יכול להוות תאריך או רשומה
["Brigitte", 3.5, Last_night]
שורה 299:
== מנגנון ניהול חריגות ==
לשפה יש מנגנון מאוד יעיל של ניהול חריגות שעובד בצורה כזאת שהוא משתמש בבדיקת ה-post condition שלו, ובמקרה שזה לא עובר, הוא עושה את הפונקציה מחדש בשביל לנסות שוב לפי מספר הניסיונות שהוגדרו לו מראש.{{ש}}
connect_to_server (server: SOCKET) -- Connect to a server or give up after 10 attempts.
require
שורה 326:
קוד ששונה "הותך", ועל ההרצה שלו מופקד המפרש של השפה.
היתרון של הטכנולוגיה, הוא שהיא נותנת לנו להנות מכל העולמות - מהירות הריצה שמספק קוד שכבר תורגם במלואו לשפת מכונה
==תרגום לשפת מכונה==
באייפל יש שני שלבי תרגום:
החלק הראשון הוא הידור לקוד ביניים בעזרת מהדר, עליו רץ מפרש.
ע"פ מתכנני השפה, מטרת התרגום לשפת C כשפת ביניים, הוא ניצול שיטות הייעול הקיימות במהדרי שפת C. (לטענת מעצבי השפה, קוד בשפת Eiffel יכול להיות יעיל כאילו נכתב בשפת C עצמה או Fortran)
שורה 354:
*אין נגישות למערך אחרי הגדרתו. יש לעשות CREATE לאובייקטים כגון מערכים, קבצים וכו'.
*בטיפוס מסוג אובייקט בצורה דפולטיבית השמה מחזיר פוינטר לאובייקט ולכן אם הוא נמחק קיים פוינטר מתנדנד ולכן רצוי להשתמש ב בCLONE או COPY
* קיים קושי במציאת מדריך שפשוט מראה פקודות ולא רק מדבר על
* פתיחת קבצים נעשית בצורה שונה מתוכניות אחרות, צריך להכניס את מיקום הקובץ למשתנה ורק אחרי זה להתחיל לפעול עליו.
* מערכת שונה של החזרת ערך מהפונקציה במקום לעשות return מכניסים את הערך שרוצים אל המשתנה result. (בדומה לPL/SQL)
|