שאלות נפוצות
ציר זמן
צ'אט
פרספקטיבה

עדה (שפת תכנות)

שפת תכנות מוויקיפדיה, האנציקלופדיה החופשית

Remove ads

עָדָהאנגלית: Ada) היא שפת תכנות עילית, מובנת, אימפרטיבית, מונחת עצמים עם טיפוסיות סטטית. עדה הורחבה מפסקל ושפות אחרות. עדה תומכת בתכנות לפי חוזה, טיפוסיות חזקה מאוד, הקבלת תהליכונים, ותכנות אי דטרמיניסטי (אנ'). עדה פותחה במקור על ידי מדען המחשב היהודי צרפתי ז'אן דויד אישביה (אנ') בעקבות מכרז של משרד ההגנה האמריקני על מנת להחליף מעל 450 שפות תכנות שהיו בשימוש צבאי בארצות הברית.[1][2][3] החל מהתקן השני של עדה שהופיע ב־1995, המתכנן והמעצב המרכזי של עדה הוא מדען המחשב האמריקני טָאקֶר טָאפְט.[4]

עובדות מהירות פרדיגמות, תאריך השקה ...

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

Remove ads

היסטוריה

סכם
פרספקטיבה

העילה לפיתוח השפה

בשנות השבעים משרד ההגנה האמריקני התמודד עם יותר מ־450 שפות תכנות בחומרה ותוכנה שהיו בשימוש צבאי בכל הזרועות של ארצות הברית.[דרוש מקור] חלקן היו מיושנות, קשות לתחזוקה או תלויות בחומרה. אף אחת מאותן שפות מיושנות לא נתנה מענה לתכנות מודולרי בטוח שיאפשר שימוש חוזר בקוד ופיצול צוותי הפיתוח מבלי לסרבל את תהליך התחזוקה ואמינות הקוד.

בשנת 1974[2] משרד ההגנה האמריקני הקצה קבוצת עבודה[6] ייעודית למשימה כדי למצוא או לאפיין שפת תכנות שתחליף את כל השפות המיושנות בהתאם לדרישות שהציבו משרד ההגנה האמריקני ומשרד ההגנה הבריטי.

המכרז (1975–1980)

Thumb
אוֹגוּסְטָה עָדָה קִינְג, רוזנת לאבְלֵייס. על שמה נקראת שפת התכנות עדה.

בשנת 1978 משרד ההגנה האמריקאי פרסם באופן סופי את הדרישות לעיצוב והתכנון של השפה באפיון שכונה אפיון סטילמן.[2]

ארבעה צוותים נענו למכרז, והצעותיהם כונו באופן אנונימי בארבע צבעים באנגלית: אדום, ירוק, כחול, וצהוב.[7] באפריל 1978 רק ההצעות ירוק ואדום עלו לשלב הבא. במאי 1979, ההצעה "ירוק" בהובלת ז'אן אישביה זכתה בתחרות וקיבלה את השם עדה (באנגלית Ada) על שם הרוזנת עדה לאבלייס שנחשבת למתכנתת הראשונה בהיסטוריה.[8] העיצוב של אישביה הושפע משפת התכנות LIS (אנ') שאישביה וצוותו פיתחו במהלך שנות ה־70.[9]

בשנת 1979 בחודש ביוני, ACM פרסמו לראשונה מדריך ההוראות עבור שפת התכנות עדה.[דרוש מקור]

השקה (1980–1983)

בשנת 1980 בחודש יולי הופיעה ההצעה הראשונה לתקן רשמי עבור השפה.[5] באותה שנה ב־10 בדצמבר (יום הולדתה של הרוזנת עדה), משרד ההגנה האמריקני תיקנן באופן רשמי את השפה בתקן MIL-STD-1815 המציין את שנת הלידה (1815) של הרוזנת עדה לאבלייס במספר התקן.

בשנת 1981 ניצל טוני הואר את ההזדמנות בטקס זכייתו בפרס טיורניג כדי למתוח ביקורת על שפת התכנות עדה שהיא מורכבת למדי ולכן לא אמינה.[10] אך מאוחר יותר חזר בעצמו כשכתב הקדמה לספר לימוד עבור עדה.[11]

החל משנת 1983 עדה נכנסה לשימוש צבאי בארצות הברית ובצבאות נאט"ו וחברות אזרחיות נאלצו לתכנת עם השפה כל רכיב חומרה או תוכנה שנועדו לשימוש צבאי בארצות הברית, אך הדרישה נזנחה עם השנים עקב מחסור במתכנתי עדה.

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

בשנת 1983 אושר היישום החוקי הראשון של עדה שעמד במבחן האימות וכל התקנים: NYU Ada/Ed Translator (כיום מכונה GNAT). היישום פותח באוניברסיטת ניו יורק.[13] המהדר פותח בשפת התכנות SETL (אנ') שהייתה מבוססת על תורת הקבוצות במתמטיקה ופותחה גם היא באוניברסיטת ניו יורק.[14]

דעת קהל

עדה משכה תשומת לב בקרב מתכנתים רבים בתחילת דרכה. תומכיה ואחרים טענו שעם הזמן היא תהפוך לשפה פופולרית גם בשימוש כללי למטרות אזרחיות.[12] אישביה הכריז אז שבתוך עשור תהיינה רק שתי שפות שתשרודנה והן עדה ו־Lisp.[5] לעומת זאת, בקובץ הז'ארגון של מונחי ההאקרים שהצטבר מהשנים 1975–1983 תוארה השפה באותם ימים בקרב האקרים כך:[15]

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

עדה 1983 (1983–1995)

בשנת 1991 משרד ההגנה האמריקני דרש לראשונה שכל תוכנה המיועדת לשימוש צבאי תהיה חייבת להיות מתוכנתת בעדה,[16] עם זאת נתנו אישורים מיוחדים למקרים חריגים לעיתים קרובות. הדרישה נזנחה באופן הדרגתי ופסקה בשנת 1997 כשמשרד ההגנה הראה מגמה עולה באימוץ רכיבי מדף שלא היו מתוכנתים בעדה.[12][17] במדינות נאט"ו הייתה דרישה דומה עבור מערכות פיקוד ובקרה. עדה הייתה השפה המועדפת למטרות הגנה במדינות כמו שוודיה, גרמניה וקנדה.[18]

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

עדה 1995 (1995–2005)

עדה 2005 (2005–2012)

עדה 2012 (2012–2022)

עדה 2022 (2022–כיום)

Remove ads

שימושים

סכם
פרספקטיבה

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

שימוש צבאי

Thumb
החמקן האמריקני F-22 מתוכנת בעדה.[19] הוא נחשב לחמקן המתקדם והיקר בעולם, ונמצא בשירות בלעדי בארצות הברית. מכירתו נאסרה אפילו לבעלות ברית קרובות של ארצות הברית.

עדה ראתה שימוש צבאי נרחב ברכיבי חומרה ותוכנה בין היתר עבור חמקנים, מפציצים, מטוסי קרב, מסוקי קרב, כטב"מים, כלי שריון, צוללות, מערכות מכ"ם, ולוחמה אלקטרונית במדינות נאט"ו ובמיוחד בארצות הברית.[20][19][21]

שימוש אזרחי

הודות ליכולתה של עדה לאכוף תנאי פיתוח החיוניים לבטיחות גורלית, השפה אומצה גם בפרויקטים מסחריים ללא מטרות צבאיות היכן שקריסת מערכות עלולה לעלות בחיי אדם או בנזקים כלכליים אדירים כגון בתעשיית התעופה האזרחית, מערכות לפיקוח טיסה, משגרים מסחריים כגון אריאן, לוויינים ומערכות חלל אחרות, תחבורת רכבות, ובנקאות.[19][21] לדוגמה מערכת בקרת הטיסה של מטוס הנוסעים הידוע בּוֹאִינְג 777 פותחה בעדה.[22][23][24] מערכות פיקוח הטיסה של קנדה ובריטניה פותחו אף הן בעדה.[25] דוגמה נוספת לשימוש אזרחי בעדה שאינו בענף התעופה היא מערכות האיתות ברכבת המהירה TGV של צרפת, והרכבות התחתיות של לונדון, פריז, ניו יורק, והונג קונג.[19][26]

Remove ads

עיצוב

סכם
פרספקטיבה

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

עקרונות הנדסת תוכנה רבים נאכפים בעדה כדי לשמור על "הרגלים טובים". בין ההרגלים האלה ניתן למנות: משתנה לולאת For מוכר רק בתוך הלולאה, ולא ניתן לשנות אותו; במשפט Switch/Case חייבים למלא Case-ים עבור כל הערכים האפשריים; כשמבצעים השמה למבנה, חייבים למלא את כל השדות; שינוי ערכם של מצביעים אפשרי, אך הוא מורכב ולא נפוץ.

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

עדה תומכת בריבוי משימות, כולל אובייקט סנכרון שנקרא ”מפגש“ (בין Task-ים).

מודולריות

כמו תוכניות במודולה-2, שפה שנתנה השראה לעדה,[9] תוכניות בעדה הן מודולריות, וכל יחידת קוד מקור בתוכנית עוברת הידור נפרד.[9] בעדה קיימים ארבעה סוגי יחידות קוד בסיסיים: תת תוכנית, חבילה, משימה, ויחידה סוגנית (יחידה גנרית).[9] תת תוכניות הן שגרות שמכילות קוד אימפרטיבי עם פקודות לביצוע, או קוד פונקציונלי שמוביל לחישוב של ביטוי. חבילות הן יחידות שמכילות הגדרות של עצמים ונתונים, כגון טיפוסים. כמו כן, חבילות יכולות להכיל גם תת-תוכניות. משימות הן יחידות שמגדירות אוסף תהליכים שניתן לבצע באופן בו זמני עם משימות אחרות. יחידות סוגניות הן יחידות שמסוגלות להגדיר תת תוכניות וחבילות באופן סוגני. באופן דומה לשפות כמו C++, כל יחידה בעדה היא מורכבת משני רבדים: רובד האפיון, ורובד המימוש. רובד האפיון מכיל קוד הכרזתי בלבד על מה שיש ליחידה להציע לשאר התוכנית, ועל מה שצפוי מהמימוש של אותה יחידה. רובד זה חשוף ליחידות בתוכנה. לעומת זאת, רובד המימוש ממש את רובד האפיון, הוא פרטי ליחידה ואינו חשוף לשאר התוכנית.[9] כמו כן, עדה מפצלת גם בכל יחידת קוד בין החלק ההצהרתי (הכרזות על משתנים וכדומה) והחלק הביצועי (פקודות, בקרת זרימה וכדומה).[9] הפיצול בין ארבעת סוגי היחידות וכמו כן בין האפיון למימוש בכל יחידה מאפשר לצוותים ומתכנתים שונים לעבוד באופן נפרד ומקביל על חלקים שונים של התוכנית.

תת-תוכניות (שגרות)

בעדה קיימים שני סוגים של תת תוכניות (שגרות): תהליך ופונקציה.[9] ההבדל המרכזי בין תהליך ופונקציה הוא שפונקציה חייבת להחזיר ערך כלשהו.[9]

חבילות

חבילות בעדה הן יחידות שמכילות בהן מבנים שונים כגון משתנים, שגרות, וטיפוסים.[9] כמו כן, חבילות מגדירות את החשיפה של כל רכיב בתוכן לשאר התוכנית.[9]

משימות

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

הכרזות

בעדה, הכרזות נמצאות בקטע נפרד והצהרתי בכל יחידת קוד עם הפקודות שעושות שימוש בהן.[9] באותו קטע נפרד, ניתן להגדיר משתנים ועצמים חדשים ולתת להם שמות בתחום ההכרזה. תחום ההכרזה בעדה הוא לקסיקלי. עם זאת, ניתן להגדיר גם בתוך תחום הכרזה חדש שמקונן שוב קטע הצהרתי עם הכרזות חדשות ומיד אחריו קטע ביצועי שעושה שימוש באותן הכרזות.[9] כמעט עבור כל סוגי ההכרזות לעצמים ומספרים ניתן להכריז על מספר משתנים מאותו סוג בבת אחת.[27] תהליך האתחול שבו הכזרה הופכת לעובדה בזיכרון התוכנית בזמן ריצה נקראת בעדה שִפְרוּט.[27] סוגי ההכרזות בעדה:[27]

  1. עצם - הכרזה על משתנה עבור עצם מטיפוס מסוים. ניתן להקצות ערך ראשוני באדגום. ניתן להפוך אותו לקבוע.
  2. מספר - הכרזה על מספר קבוע.
  3. טיפוס - הכרזה על טיפוס חדש, כולל רשומות וטיפוסי מערכים, או על טיפוס נגזר (ללא פולימורפיזם).
  4. תת טיפוס - הכרזה על תת-טיפוס של טיפוס קיים.
  5. תת תוכנית
  6. חבילה
  7. משימה
  8. הכרזה סוגנית
  9. חריגה
  10. אדגום סוגני
  11. שינוי שם
  12. קבוע

הכרזת קבועים

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

פקודות

בעדה, פקודות מתבצעות בכל תת-תוכנית לפי סדר הופעתן, אלא אם כן נעשית קפיצה, יציאה או עצירה ידנית.[9] סוגי פקודות בעדה:[9]

  1. הקצאה - פקודה שמקצה ערך חדש למשתנה כלשהו.
  2. ניתוב מקרים - פקודת בקרת זרימה בו כל האפשרויות מותנות בתוצאה של אותו הערך.
  3. תנאי - פקודת בקרת זרימה על פי תנאי של ערך אמת או שקר.
  4. לולאה - פקודת בקרת זרימה לחזרה על רצף פקודות. לולאה עוצרת עם באמצעות פקודת יציאה.
  5. תחום הכרזה - בתחום הכרזה ניתן להכריז על משתנים מקומיים שאינם נגישים מחוץ לו.
  6. עיכוב - פקודה זמינה רק למשימות. מעכבת את המשך ביצוע המשימה לפי זמן מוקצב מראש.
  7. המתנה - פקודה זמינה רק למשימות. מעכבת את המשך ביצוע המשימה עד שמשימה אחרת גם פוגשת את אותה פקודת המתנה. לאחר מכן שתי המשימות יכולות להמשיך.

חריגות

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

טיפוסיות

עדה היא שפה עם טיפוסיות סטטית וחזקה. לפיכך, כל עצם בשפה מסווג לפי טיפוס כלשהו. בעדה קיימים ארבעה סוגי טיפוסים: טיפוס סקלרי (הכולל טיפוס מספרי וטיפוס נמנים), טיפוס מורכב, טיפוס גישה, וטיפוס פרטי.[9] טיפוס נמנים מגדיר מראש קבוצת ערכים מספריים עם מזהים ששייכים לו. לדוגמה, טיפוס בוליאני (Boolean) וטיפוס תו (Character) הם טיפוסי נמנים בעדה.[9] בעדה מוגדרים מראש טיפוסים מספריים יסודיים: טיפוס מספר שלם (Integer), טיפוס נקודה צפה (Float), וטיפוס אורך זמן (Duration).[9] הטיפוסים מספר חיובי (Positive) ומספר טבעי (Natural) הם תת טיפוסים של טיפוס המספר השלם (Integer) בעדה כשמאולץ עליהם טווח שונה. טיפוס אורך זמן, לעומת זאת, מוגדר כטיפוס נקודה קבועה עם דיוק של 0.000000001 בשנייה. טיפוסים מורכבים כוללים בהם בין היתר מערכים ורשומות, וכמו כן את טיפוס המחרוזת.[9] בעדה ניתן להגדיר גם תת טיפוסים על טיפוסים. לדוגמה, טיפוס מספרים טבעיים יהיה תת-טיפוס של מספרים שלמים עם אילוץ על טווח הערכים המותר שלו.[9][27] כאמור, באמצעות יחידות סוגניות ניתן להגדיר גם טיפוסים סוגניים.[9] בעדה ניתן להגדיר טיפוסים נגזרים, אך אלה הם אינם טיפוסים שתומכים בפולימורפיזם, ההפך, הם טיפוסים שנועדו למנוע תאימות אבל ליצור טיפוס דומה למטרת שימוש שונה.[27] בעדה ניתן לעשות שימוש גם בטיפוס נקודה קבועה, אך חובה להכריז על טיפוס כזה ולהגדיר את מידת הדיוק שלו בהתאם לשימוש הנדרש. לפיכך עדה לא מספקת טיפוס מוכן מראש לנקודה קבועה. בטיפוסי רשומה, ניתן להרכיז על מבחינים, שהם מתנהגים באופן דומה לפרמטרים סוגניים ברשומה. באמצעותם ניתן להתנות או לאפיין את המרכיבים בתוך הרשומה.[27]

מידע נוסף , ...

בקרת זרימה

בעדה, פרמטר של לולאה הוא תמיד קבוע.[27]

ייצוגים

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

קלט ופלט

הספרייה הסטנדרטית של עדה מספקת שגרות וטיפוסים מיוחדים עבור קלט ופלט.[9]

תכונות

בעדה, מאפיינים שהמהדר מספק את המידע שלהם אודות עצמים שונים וטיפוסים בתוכנית נקראים תכונות.[דרוש מקור] הגישה לתכונות היא באמצעות תו מירכאה בודד '. לדגמה, Integer'Last ישיב את הערך הגדול ביותר שניתן להכניס במשתנה מסוג Integer.[27] חלק מהתכונות נחשבות לפונקיות, לדוגמה Integer'Image היא פונקציה שתקבל פרמטר מסוג Integer ותחזיר מחרוזת שהערך יוצג בו.[27]

Remove ads

תחביר

סכם
פרספקטיבה

מטבע תכליתה, התחביר של עדה הוא מפורש, מורכב ממילים באנגלית, ונמנע משימוש בסימנים או תחביר מרומז כדי למנוע טעויות אנוש.[9]

אסימוני השפה

תווים חוקיים בעדה כוללים בהם את תווי ASCII הנראים, ובינם התווים האלפאנומריים (A–Z ו־0–9), שורת תווי סימנים, ומספר תווים בלתי נראים שהם נחשבים לתווי רווח ותווי שבירת שורה.[30] אסימון הוא שורת תווים חוקיים שיוצרים יחד אחת משבע האפשריות ההבאות: תוחם, מזהה, ערך מספרי, ערך תו, ערך מחרוזת, הערה, או הוראה (למהדר). להערות אין שום השפעה על התוכנית.[30] תווי רווח נחשבים תמיד לתווים שמפרידים בין אסימונים, אלא אם כן הם מופיעים בתוך הערות או מחרוזות.[30] לעומת זאת, תווי שבירת שורה נחשבים בכל מצב לתווים שמפרידים בין אסימונים.[30] בעדה ניתן להוסיף אפסים מקדימים בערכים מספריים.[30]

מידע נוסף סיווג, הגדרה ...

מילים שמורות

בעדה לא ניתן להשתמש במילים שמורות כשמות.[30] בעדה 1983 הופיעו לראשונה 63 מילים שמורות:

  1. abort
  2. abs
  3. accept
  4. access
  5. all
  6. andקשר לוגי: וגם
  7. array – הכרזת מערך או טיפוס מערך
  8. at
  9. begin – פתיחת קטע פקודות בשפה; גם סגירת תחום ההכרזה ביישום מבנים עם תחום הכרזה כגון חבילות ופונקציות
  10. body – הכרזה על מימוש החבילה (מופיע בקובצי adb)
  11. case
  12. constant – הכרזת קבוע
  13. declare
  14. delay
  15. delta – הכרזה על טיפוס נקודה קבועה, וקביעת הערך הקטן ביותר בטיפוס זה.
  16. digits – קביעת רמת הדיוק של ערך בנקודה צפה. מיושן בגרסה הנוכחית של עדה.
  17. do
  18. else – נסיגת תנאי
  19. elsif – שרשור תנאי
  20. end – סגירת קטע פקודות, תחום הכרזה, ומבנים רבים בשפה
  21. entry
  22. exception
  23. exit
  24. for – פקודת לולאה
  25. function – הכרזת פונקציה (שגרה שמחזירה ערך)
  26. generic – הכרזת פרמטרים סוגניים בחבילות
  27. gotoקפיצה
  28. if – פתיחת תנאי
  29. in – בשגרות, הכרזה על פרמטר כפרמטר במצב פורמלי לקריאה בלבד
  30. is – פתיחת תחום הכרזה
  31. limited
  32. loop – פתיחת קטע פקודות בלולאה (לאחר פקודת לולאה)
  33. mod
  34. new – בהכרזת טיפוסים, הכרזה על טיפוס נגזר חדש
  35. not – קשר לוגי: לא
  36. null
  37. of
  38. or – קשר לוגי: או
  39. others
  40. out
  41. package
  42. pragma
  43. private
  44. procedure – הכרזת שגרת תהליך (פרוצדורה)
  45. raise
  46. range – הגדרת טווח של משתנה, מערך, או תת-טיפוס בהכרזה
  47. record – הכרזת טיפוס מסוג רשומה
  48. rein
  49. renames
  50. return – החזרת ערך ויציאה מפונקציה
  51. reverse
  52. select
  53. separate
  54. subtype – הכרזת תת-טיפוס חדש
  55. task
  56. terminate
  57. then
  58. type – הכרזת טיפוס חדש
  59. use – שימוש בחבילה מתוך מודול
  60. when – פתיחת מקרה בפקודת ניתוב מקרים
  61. while
  62. with – ייבוא מודול
  63. xor

הכרזות

הכרזת טיפוסים

בעדה הכרזת טיפוסים חדשים נעשית באמצעות המילה השמורה type. באופן דומה, הכרזת תת טיפוס חדש נעשית באמצעות המילה השמורה subtype.[27]

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

type Radian is new Float range 0.0 .. 2.0 * 3.141592653589793;
type Degree is new Float range 0.0 .. 360.0;

במספרים שלמים, ניתן להגדיר טיפוס נגזר בקיצור באמצעות טווח בלבד, ללא שימוש במילה השמורה new. לדוגמה, לא קיים בעדה טיפוס מספרי באורך בית (Byte), למטרה זאת נהוג להכריז על טיפוס נגזר של מספרים שלמים (Integer) בטווח מ-0 עד 255.

type Byte is range 0 .. 255;

טיפוס נמנים מוגדר בעדה באמצעות רשימת מזהים חוקיים, או באמצעות רשימת ערכי תווים.[27]

type Color_Format is (RGB, HSV, HSL);

הכרזת טיפוסי נקודה קבועה

בעדה ניתן להכריז על טיפוס נקודה קבועה באמצעות המילה השמורה delta.[27] בניגוד לנקודה צפה, טיפוסים אלה שומרים על דיוק קבוע לפי הערך הקטן ביותר שמוגדר באמצעות delta.

type Radian is delta 0.00001 range 0.0 .. 2.0 * 3.14159;
type Degree is delta 0.00001 range 0.0 .. 360.0;

הכרזת משתנים

בעדה מכריזים על משתנים באמצעות שם המשתנה והטיפוסיות שלו.[27]

Red : Color;

הגדרת טווח בטיפוסים סקלריים

בהכרזת תת-טיפוס, טיפוסים נגזרים, ובהכרזת משתנים עם ערכים סקלריים, עדה מאפשרת להגדיר טווח באמצעות המילה השמורה range.[27]

R, G, B, A : Integer range 0 .. 255 := 0;

אדגום עצמים

לאחר הכרזה, ניתן לאדגם את העצם, איך אין חובה לעשות זאת אלא אם כן זהו קבוע.[27] לדוגמה, אדגום של רשומה במחסנית נעשה בעדה באמצעות ביטוי מִצְרָף:[דרוש מקור] דוגמה לאדגום של צבע מסוים:

Red : Color := (R => 255, G => 0, B => 0, A => 255);

קבוע לעצמים מוכרז באמצעות המילה השמורה constant לפני הטיפוס.[27]

Red : constant Color := (R => 255, G => 0, B => 0, A => 255);

מספרים קבועים

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

Pi : constant := 3.14159;

הכרזת מערכים וטיפוסי מערך

הכרזת מערכים בעדה יכולה להיות בזמן הכרזת משתנה כמו בשפות תכנות רבות, או באמצעות הכרזת טיפוס מערך לשימוש חוזר.[27] כמו כן, עדה מאפשרת להכריז על מערכים רב-ממדיים באותה צורה עם הפרדה של פסיק , בין הטווחים, ולהכריז על טווח פתוח באמצעות הערך <> בטווח.[27] בטיפוסי מערכים עם טווח פתוח, ניתן להכריז על שימוש עם טווח סגור באדגום.[27] בנוסף, ניתן לסגן טיפוסי מערך בתוך חבילות סוגניות. לדוגמה, במישורים, לטיפוס מערך כמו וקטור יהיו רק שני ערכים, אבל במרחבים, לאותו הטיפוס יהיו שלושה ערכים. דוגמה להכרזה על טיפוס מערך וקטור סוגני:

type Vector is array (Natural range 1 .. Dimension) of Float;

הכרזת רשומות

הכרזת רשומות בעדה נעשית באמצעות המילה השמורה record. המרכיבים של הרשומה לא חייבים להיות מאותו טיפוס. וכל מרכיב יכול להגדיר לעצמו טווח שונה.[27]

type Date is record
    Day   : Integer range 1 .. 31;
    Month : Integer range 1 .. 12;
    Year  : Integer;
end record;

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

type Date (Planet : Planets) is record
	Year : Integer;
	case Planet is
		when Earth =>
			Month : Integer range 1 .. 12;
			Day : Integer range 1 .. 31;
		when Mars =>
			Sol : Integer range 1 .. 669;
	end case;
end record;

שגרות

בשגרות, ניתן להכריז על פרמטרים לקריאה בלבד באמצעות in.[27]

Remove ads

תקינה

משנת 1983, לעדה יצאו שלוש הרחבות משמעותיות ועוד מספר תְקִינוֹת ביניים. התקן המקורי שאושר על ידי משרד ההגנה האמריקני הוא Ada 1983.[34]

  • Ada 1983 - תמכה תמיכה חלקית בתכנות מונחה עצמים עם יכולות של ADO, ADT, פולימורפיזם, יצירת אופרטורים ועוד.
  • ISO/8652:1987 - תקינת Ada 83 על ידי ISO.
  • Ada 1995 - שהוסיפה את התמיכה ביכולות של הורשה ובמרבית הטכניקות של תכנות מונחה עצמים.
  • ISO/IEC 8652:1995/COR.1:2001 - תיקונים ושינויים ל־Ada 95.
  • Ada 2005 - התומכת בין השאר באובייקטים מוגנים להגנה על משאבים בעת ריבוי משימות.
  • ISO/IEC 8652:1995/AMD 1:2007 - הוספות ל־Ada 2005.
  • Ada 2012 - תמיכה בתכנות לפי חוזה בהשראת שפת התכנות Eiffel.
  • ISO/IEC 8652:2012/COR 1:2016 - תיקונים ושינויים ל־Ada 2012.
  • Ada 2022
Remove ads

לקריאה נוספת

קישורים חיצוניים

ויקישיתוף מדיה וקבצים בנושא עדה בוויקישיתוף

הערות שוליים

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads