פתיחת התפריט הראשי

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

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

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

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

עדה פותחה בעקבות מכרז של משרד ההגנה האמריקני כדי להחליף יותר מ־450 שפות תכנות שהיו בשימוש צבאי בארצות הברית.[1] התהליך כלל הוצאת מסמכי דרישות עבור השפה וארבעה צוותים אזרחיים נתנו מענה. לאחר מספר חזרות על התהליך, נבחרה הצעתם של מדען המחשב היהודי־צרפתי[2] ז'אן דויד איצְ'בִּיה (Jean Ichbiah) וצוותו מצרפת, שכונתה "גְרִין" בשנת 1979. החל מ־1983 עדה נכנסה לשימוש צבאי בארה"ב ובצבאות נאט"ו וחברות אזרחיות נאלצו לתכנת עם השפה כל רכיב חומרה או תוכנה שנועדו לשימוש צבאי בארה"ב, אך הדרישה נזנחה עם השנים עקב מחסור במתכנתי עדה. החל מהתקן השני של עדה שהופיע ב־1995, המתכנן והמעצב המרכזי שלה הוא מדען המחשב האמריקני ס' טָאקֶר טָאפְט[3].

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

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

היסטוריהעריכה

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

בשנת 1975 משרד ההגנה האמריקני הקצה קבוצת עבודה ייעודית למשימה למצוא או לאפיין שפת תכנות שתחליף את כל השפות המיושנות בהתאם לדרישות שהציבו משרד ההגנה האמריקני ומשרד ההגנה הבריטי. לאחר חיפושים ומספר עיצובים מתחרים שעברו שינויים עבור השפה האידאלית שתענה לכל הדרישות, נולדה ב־1983 שפת התכנות עדה שעברה תקינה בינלאומית באותה שנה והחליפה בהדרגה יותר מ־400 שפות תכנות שהיו בשימוש צבאי בארה"ב עד לשנת 1996.

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

ארבעה צוותים נענו למכרז והצעותיהם כונו:

  1. Red מ־Intermetrics (אנ') בראשות בֶּנְגָ'מִין בְּרוֹסְגוֹל.
  2. Green מ־CII Honeywell Bull (אנ') בראשות ז'אן איצְ'בִּיה.
  3. Blue מ־SofTech (אנ') בראשות ג'וֹן גוּדְאִינַף.[6]
  4. Yellow מ־SRI International (אנ') בראשות גֵ'יי סְפִּיצְזֵן.

באפריל 1978 רק ההצעות Red ו־Green עלו לשלב הבא. במאי 1979 זכתה Green, הצעתו של איצ'ביה, וקיבלה את השם עָדָה (באנגלית Ada) על שם הרוזנת עָדָה לָאבְלֵייס שנחשבת למתכנתת הראשונה בהיסטוריה.[7] עיצוב זה הושפע משפת התכנות LIS(אנ') שפיתחו איצ'ביה וצוותו במהלך שנות ה־70. מדריך ההוראות עבור שפת התכנות עדה פורסם לראשונה ביוני 1979 על ידי ACM. ב־10 בדצמבר (יום הולדתה של הרוזנת עדה) בשנת 1980 משרד ההגנה האמריקני תיקנן באופן רשמי את השפה בתקן MIL-STD-1815 המציין את שנת הלידה (1815) של הרוזנת עדה לאבלייס במספר התקן. בשנת 1981 ניצל טוני הואר את ההזדמנות בטקס זכייתו בפרס טיורניג כדי למתוח ביקורת על שפת התכנות עדה שהיא מורכבת למדי ולכן לא אמינה. [8] אבל מאוחר יותר חזר בעצמו כשכתב הקדמה לספר לימוד עבור עדה.[9]

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

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

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

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

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

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

תודות ליכולתה של עדה לאכוף תנאי פיתוח החיוניים לבטיחות גורלית, השפה אומצה גם בפרויקטים מסחריים ללא מטרות צבאיות היכן שקריסת מערכות עלולה לעלות בחיי אדם או בנזקים כלכליים אדירים כגון בתעשיית התעופה האזרחית, מערכות לפיקוח טיסה, משגרים מסחריים כגון ה־Ariane 4 ו־5(אנ'), לוויינים ומערכות חלל אחרות, תחבורת רכבות, ובנקאות.[5] לדוגמה מערכת בקרת הטיסה של מטוס הנוסעים הידוע בּוֹאִינְג 777 פותחה בעדה ואינו פרויקט צבאי.[17][18][19] מערכות פיקוח הטיסה של קנדה ובריטניה פותחו אף הן בעדה.[20] דוגמה נוספת לשימוש אזרחי בעדה שאינו בענף התעופה היא מערכות האיתות ברכבת המהירה TGV של צרפת, והרכבות התחתיות של לונדון, פריז, ניו יורק, והונג קונג.[5][21]

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

מאפייניםעריכה

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

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

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

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

תקינהעריכה

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

  • 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: עבר, הווה, עתיד", מעשה חושב, פברואר 1985.

קישורים חיצונייםעריכה

הערות שולייםעריכה

  1. ^ אוניברסיטת מישגן, The Ada Programming Language (באנגלית)
  2. ^ אודות חיו של ז'אן איצ'ביה, AdaIC (באנגלית)
  3. ^ Tucker Taft, www.adahome.com
  4. ^ Industries - AdaCore, www.adacore.com
  5. ^ 5.0 5.1 5.2 5.3 Who's Using Ada?, www2.seas.gwu.edu
  6. ^ Carnegie Mellon University, John Goodenough (באנגלית)
  7. ^ 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
  8. ^ C.A.R. Hoare, The Emperor's Old Clothes, Communications of the ACM, 1981
  9. ^ D.A. Watt, B.A. Wichmann and W. Findlay, Ada: Language and Methodology., Prentice-Hall, 1987
  10. ^ 10.0 10.1 10.2 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
  11. ^ 11.0 11.1 11.2 J.-P. Rosen, The Ada paradox(es), ACM SIGAda Ada Letters 29, 2009-09-25, עמ' 28 doi: 10.1145/1620593.1620597
  12. ^ קובץ הז'ארגון, The Jargon File, ‏1991 (באנגלית)
  13. ^ SOFTECH INC WALTHAM MA, Ada Compiler Validation Summary Report: NYU Ada/ED, Version 19.7 V-001., oai.dtic.mil, ‏11.4.1983 (באנגלית)
  14. ^ 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
  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. ^ The Boeing 777 Flies on 99.9% Ada, archive.adaic.com
  18. ^ Alexander Wolfe, There's still some life left in Ada, Queue 2, 2004-10-01, עמ' 28 doi: 10.1145/1035594.1035608
  19. ^ Rehmer, Karl, Beautiful Teams: Inspiring and Cautionary Tales from Veteran Team Leaders, O'Reilly, 2009, פרק The HADS Team, עמ' 299–312
  20. ^ AdaCore, GNAT Pro Chosen for UK’s Next Generation ATC System, www.adacore.com, ‏June 19, 2007 (באנגלית)
  21. ^ AdaCore, Look Who’s Using Ada, www.adacore.com, ‏2006 (באנגלית)
  22. ^ Ada Standards: Past, Present, and Future, www.adaic.org