ממתק תחבירי

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

בתחום שפות התכנות, מכונים מבנים תחביריים אשר הופכים קוד לקריא, פשוט או ברור יותר מכונים "ממתקים תחביריים". (Syntactic sugar)

תיאור מקובל נוסף לממתק תחבירי הוא כל תוספת לשפה אשר אינה מרחיבה את יכולות השפה, אך מאפשרת כתיבת קוד קריא יותר.

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

המושג ממתק תחבירי נטבע לראשונה על ידי פיטר לנדין בשנת 1964 במטרה לתאר את השימוש בתחשיב למדא בשפת ALGOL[1][2].

שפות מאוחרות כדוגמת CLU, ML, ו-Scheme הרחיבו את משמעות המונח לכל תחביר פנימי של שפה אשר ניתן לתיאור על ידי חלקיה האחרים של השפה. לכן, ניתן להפחית את מתיקותו של כל ממתק תחבירי באמצעות פעולות אלה.[3]

דוגמאות בולטות[עריכת קוד מקור | עריכה]

  • פקודות השמה מקוצרת כדוגמת a += b שקולות לa = a + b בשפת C ובשפות דומות אחרות.[4][5]
  • בשפת Perl, ניתן לכתוב unless (condition) {...} במקום הביטוי if (not condition) {...}. יתר על כן, תנאי יכול לעקוב אחר כל הוראה, כך שהביטוי statement if condition שקול ל-if (condition) {statement}, אך הראשון טבעי יותר לקריאה.
  • בשפת C, הסימון a[i] הוא ממתק תחבירי עבור *(a + i)[6] בדומה, הסימון a->x הוא ממתק תחבירי עבור (*a).x לגישה לשדה של אובייקט נתון.
  • ההוראה using בשפת C# מבטיחה שחרור אובייקט מהזיכרון. (וחוסכת קוד שמוודא זאת בין אם התהליך הגיע לסופו ובין אם לאו)
  • הוראות List Comprehension בפייתון מהוות ממתק תחבירי.

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

  1. ^ Landin, Peter J. (1964). "The mechanical evaluation of expressions". The Computer Journal (Computer Journal) 6 (4): 308–320. doi:10.1093/comjnl/6.4.308. בדיקה אחרונה ב-21 ביולי 2014. 
  2. ^ Abelson & Sussman 1996, Chapter 1, footnote 11.
  3. ^ Barbara Liskov, "A History of CLU", MIT Laboratory for Computer Science Technical Report 561 (1993)
  4. ^ "C Compound Assignment". msdn.microsoft.com. Microsoft. בדיקה אחרונה ב-20 ביוני 2016. However, the compound-assignment expression is not equivalent to the expanded version because the compound-assignment expression evaluates expression1 only once, while the expanded version evaluates expression1 twice: in the addition operation and in the assignment operation. 
  5. ^ Garavaglia, Emilio (26 ביולי 2015). "Why are shortcuts like x += y considered good practice?". stackexchange.com. בדיקה אחרונה ב-20 ביוני 2016. optimization can [be done] if 'finding x' has no side effects 
  6. ^ Eric S. Raymond (11 באוקטובר 1996). The New Hacker's Dictionary – 3rd Edition. MIT Press. עמ' 432. ISBN 978-0-262-68092-9. בדיקה אחרונה ב-5 באוגוסט 2012.