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

מתוך ויקיפדיה, האנציקלופדיה החופשית
עדה
Ada
פרדיגמות תכנות מונחה-עצמים, תכנות מובנה, תכנות אימפרטיבי, תכנות מרובה פרדיגמות עריכת הנתון בוויקינתונים
תאריך השקה 1980 עריכת הנתון בוויקינתונים
מתכנן Jean Ichbiah, S. Tucker Taft עריכת הנתון בוויקינתונים
מפתח Jean Ichbiah, S. Tucker Taft עריכת הנתון בוויקינתונים
הושפעה על ידי ALGOL 68, Java, אייפל, אלגול 60, Green, Smalltalk, מודולה־2, C++, פסקל, Ada 95 עריכת הנתון בוויקינתונים
www.adaic.org
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית

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

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

היסטוריה[עריכת קוד מקור | עריכה]

העילה לפיתוח השפה[עריכת קוד מקור | עריכה]

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

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

המכרז (1975–1980)[עריכת קוד מקור | עריכה]

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

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

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

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

השקה (1980–1983)[עריכת קוד מקור | עריכה]

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

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

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

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

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

דעת קהל[עריכת קוד מקור | עריכה]

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

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

עדה 1983 (1983–1995)[עריכת קוד מקור | עריכה]

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

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

עדה 1995 (1995–2005)[עריכת קוד מקור | עריכה]

עדה 2005 (2005–2012)[עריכת קוד מקור | עריכה]

עדה 2012 (2012–2022)[עריכת קוד מקור | עריכה]

עדה 2022 (2022–כיום)[עריכת קוד מקור | עריכה]

עיצוב[עריכת קוד מקור | עריכה]

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

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

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

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

מודולריות[עריכת קוד מקור | עריכה]

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

תת-תוכניות (שגרות)[עריכת קוד מקור | עריכה]

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

משימות[עריכת קוד מקור | עריכה]

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

הכרזות[עריכת קוד מקור | עריכה]

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

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

פקודות[עריכת קוד מקור | עריכה]

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

חריגות[עריכת קוד מקור | עריכה]

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

טיפוסיות[עריכת קוד מקור | עריכה]

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

טיפוסי הנתונים הבסיסיים של עדה[17]
סיווג שם פעולות בתים טווח
סקלרי מספרי שלם Integer
נקודה צפה Float
אורך זמן Duration
נמנים בוליאני Boolean
תו Character
מורכב מחרוזת

בקרת זרימה[עריכת קוד מקור | עריכה]

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

ייצוגים[עריכת קוד מקור | עריכה]

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

קלט ופלט[עריכת קוד מקור | עריכה]

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

תחביר[עריכת קוד מקור | עריכה]

אסימוני השפה[עריכת קוד מקור | עריכה]

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

אסימונים בעדה[19]
סיווג הגדרה דוגמה
תוחם[20] הופעה של כל אחד מהתווים הבאים: & ` () * +, - . / : ; < = > וכמו כן התו לסימן קריאה !. או הופעה של כל אחד מרצפי זוגות התווים הבאים: => .. ** := /= >= <= << >> <> =
מזהה שם רצף של תווי אותיות אלפבית לטיניות, קו תחתון _, וסיפרות עשרוניות, כשהתו הראשון מוכרח להיות אות. X_1
מילה שמורה[21] if
ערך ערך מספרי[22] מספר שלם רצף סיפרות עשרוניות וקו תחתון להפרדה בין הסיפרות. אפשרות למעריך בכתיב מדעי הנכתב עם האות E ומיד אחריו מספר המעריך ברצף ספרות עשרוניות. 1_024

2E+10

מספר ממשי רצף סיפרות עשרוניות, קו תחתון להפרדה בין הסיפרות, ותו נקודה עשרונית (.). אפשרות למעריך בכתיב מדעי הנכתב עם האות E. בינו לבין מספר המעריך ברצף ספרות עשרוניות מופיע סימן חיובי (+) או שלילי (-). 3.1415
בסיס שונה מספר מ־1 עד 16 המגדיר את הבסיס, לאחר מכן התו # או נקודתיים :, לאחר מכן רצף של ספרות עשרוניות והתווים מ־A עד F (תלוי בבסיס), לאחר מכן שוב התו # או נקודתיים : (באופן עקבי עם ההופעה הראשונה), ואז מעריך אפשרי בכתיב מדעי עם האות E עם סימון בהתאם למספר שלם או מספר ממשי. גם מספר המעריך יופיע על אותו בסיס. 16#FF#16:FF:
ערך תו אחד מ־95 תווי ה־ASCII הנראים מוקף בין שני תווי מירכה בודדת '. 'A'
ערך מחרוזת רצף תווי ASCII נראים מוקפים בין שני תווי מירכאות ". כל הופעה של שני תווי מירכאות צמודים ("") בתוך המחרוזת ייחשבו לתוו מירכאות אחד שיהיה חלק מהמחרוזת עצמה. לא ניתן להכניס שבירת שורה לתוך אסימון של מחרוזת. תו שבירת שורה תמיד מפריד בין אסימונים. במקום זאת, צריך לחבר מחרוזות קצרות כל אחת באורך שורה באמצעות הפעולה שנועדה לכך (&). "Hello world!"
הערה כל רצף תווים שמתחיל בשני תווי קו מפריד -- עד לסוף אותה שורה (אך לא בתוך מחרוזת). -- TODO
הוראה המילה השמורה pragma ואחריה האסימון המזהה של הוראה כלשהי, ולאחר מכן שורת פרמטרים אפשריים לאותה הוראה מוקפים בין סוגריים עגולים (). פרמטרים מופרדים זה מזה באמצעות פסיק ,. הוראה יכולה להופיע רק לאחר נקודה ופסיק ; בסוף שורה. קיימות הגבלות נוספות למיקום ההוראות. pragma OPTIMIZE(TIME)

מילים שמורות[עריכת קוד מקור | עריכה]

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

  1. abort
  2. abs
  3. accept
  4. access
  5. all
  6. andקשר לוגי: וגם
  7. array
  8. at
  9. begin
  10. body
  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

הכרזות[עריכת קוד מקור | עריכה]

עצמים[עריכת קוד מקור | עריכה]

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

Jane_Doe : Student

ניתן להקצות לו ערך ראשוני, אך אין חובה לעשות זאת, אלא אם כן זהו משתנה קבוע.[18]

Jane_Doe : Student := new Student();

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

Jane_Doe : constant Student := new Student();

תת-תוכניות[עריכת קוד מקור | עריכה]

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

שימוש[עריכת קוד מקור | עריכה]

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

שימוש צבאי[עריכת קוד מקור | עריכה]

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

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

שימוש אזרחי[עריכת קוד מקור | עריכה]

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

תקינה[עריכת קוד מקור | עריכה]

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

  • 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

לקריאה נוספת[עריכת קוד מקור | עריכה]

קישורים חיצוניים[עריכת קוד מקור | עריכה]

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

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ אודות חיו של ז'אן איכביה, באתר AdaIC (באנגלית)
  2. ^ 1 2 3 G. Goos, J. Hartmanis (ע), Foreword, The Programming Language Ada Reference Manual, כרך 155, Berlin, Heidelberg: Springer, 1983, Lecture Notes in Computer Science, עמ' i, ISBN 978-3-540-12328-6. (באנגלית)
  3. ^ אוניברסיטת מישגן, The Ada Programming Language (באנגלית)
  4. ^ Tucker Taft, www.adahome.com
  5. ^ 1 2 3 4 5 J.-P. Rosen, The Ada paradox(es), ACM SIGAda Ada Letters 29, 2009-09-25, עמ' 28-35 doi: 10.1145/1620593.1620597
  6. ^ הקבוצה כונתה "High Order Language Working Group"
  7. ^ ארבעת הצוותים שנענו למכרז והצעותיהם כונו: "Red" מחברת Intermetrics (אנ') בהובלת בֶּנְגָ'מִין בְּרוֹסְגוֹל. "Green" מחברת CII Honeywell Bull (אנ') בהובלת ז'אן איכביה. "Blue" מחברת SofTech (אנ') בהובלת ג'וֹן גוּדְאִינַף. ו־"Yellow" מחברתSRI International (אנ') בהובלת גֵ'יי סְפִּיצְזֵן.
  8. ^ J. Fuegi, J. Francis, Lovelace Babbage and the creation of the 1843 'notes', IEEE Annals of the History of Computing 25, 2003-10, עמ' 16–26 doi: 10.1109/MAHC.2003.1253887
  9. ^ C.A.R. Hoare, The Emperor's Old Clothes, Communications of the ACM, 1981
  10. ^ D.A. Watt, B.A. Wichmann and W. Findlay, Ada: Language and Methodology., Prentice-Hall, 1987
  11. ^ 1 2 3 Ricky E. Sward, The rise, fall and persistence of Ada, Proceedings of the ACM SIGAda annual international conference on SIGAda - SIGAda '10, ACM Press, 2010 doi: 10.1145/1879063.1879081
  12. ^ SOFTECH INC WALTHAM MA, Ada Compiler Validation Summary Report: NYU Ada/ED, Version 19.7 V-001., oai.dtic.mil, ‏11.4.1983 (באנגלית)
  13. ^ Robert B. K. Dewar, Gerald A. Fisher, Edmond Schonberg, Robert Froehlich, The NYU Ada translator and interpreter, Proceeding of the ACM-SIGPLAN symposium on Ada programming language - SIGPLAN '80, ACM Press, 1980 doi: 10.1145/948632.948659
  14. ^ קובץ הז'ארגון, באתר The Jargon File, ‏1991 (באנגלית)
  15. ^ משרד ההגנה האמריקני, The Congressional Ada Mandate, AdaIC, ‏1991 (באנגלית)
  16. ^ Babiak, Nicholas J., Ada, the New DoD Weapon System Computer Language – Panacea or Calamity, Air University (United States Air Force), 1989, עמ' 39–40
  17. ^ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 G. Goos, J. Hartmanis (ע), Introduction, The Programming Language Ada Reference Manual, כרך 155, Berlin, Heidelberg: Springer, 1983, Lecture Notes in Computer Science, עמ' 1-9, ISBN 978-3-540-12328-6. (באנגלית)
  18. ^ 1 2 3 4 5 6 7 8 9 G. Goos, J. Hartmanis (ע), Declarations and Types, The Programming Language Ada Reference Manual, כרך 155, Berlin, Heidelberg: Springer, 1983, Lecture Notes in Computer Science, עמ' 21-63, ISBN 978-3-540-12328-6. (באנגלית)
  19. ^ 1 2 3 4 5 6 G. Goos, J. Hartmanis (ע), Lexical Elements, The Programming Language Ada Reference Manual, כרך 155, Berlin, Heidelberg: Springer, 1983, Lecture Notes in Computer Science, עמ' 11-19, ISBN 978-3-540-12328-6. (באנגלית)
  20. ^ הרבה מן האסימונים בקטגוריה הזאת מהווים לפעולות בשפה. כמה תווים בקטגוריה הזאת אינם נחשבים לתוחמים אם הם נמצאים בסמיכות לערך מסוימים, כגון ערכים מספריים.
  21. ^ על פי המדריך של עדה 1983, מילים שמורות של השפה הן מסווגות כסוג של מזהים.
  22. ^ בעדה ניתן להשתמש בתו קו תחתון (_) בתוך מספרים כדי לשפר את קריאות הקוד.
  23. ^ 1 2 3 4 Who's Using Ada?, www2.seas.gwu.edu
  24. ^ Industries - AdaCore, www.adacore.com
  25. ^ The Boeing 777 Flies on 99.9% Ada, archive.adaic.com
  26. ^ Alexander Wolfe, There's still some life left in Ada, Queue 2, 2004-10-01, עמ' 28 doi: 10.1145/1035594.1035608
  27. ^ Rehmer, Karl, The HADS Team, Beautiful Teams: Inspiring and Cautionary Tales from Veteran Team Leaders, O'Reilly, 2009, עמ' 299–312
  28. ^ AdaCore, GNAT Pro Chosen for UK’s Next Generation ATC System, www.adacore.com, ‏June 19, 2007 (באנגלית)
  29. ^ AdaCore, Look Who’s Using Ada, www.adacore.com, ‏2006 (באנגלית)
  30. ^ Ada Standards: Past, Present, and Future, www.adaic.org