Emacs Lisp

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

Emacs Lisp הוא ניב של שפת התכנות Lisp המשמשת כשפת תסריט עבור Emacs (משפחת עורכי טקסט הכוללת בה את GNU Emacs ו- XEmacs, ופיצולים רבים אחרים). רוב הפונקציונליות של העורך עצמו נכתבה בניב זה על פני מפרש Lisp וליבה שנכתבו ב-C. Emacs Lisp לפעמים מכונה כ-Elisp, למרות שקיים ניב Lisp קדום יותר עם אותו שם, אך אין קשר בין השניים.[דרוש מקור][מפני ש...]

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

Emacs Lisp יכולה גם לשמש כשפת תסריט כללית מעבר לעורך עצמו, בדומה ל-bash המצוי ברוב מערכות Unix או בדומה לשפות תסריט עיליות כגון Perl ו-Python על ידי זימון המפרשן של Emacs במצב אצווה Batch mode דרך שורת הפקודה. אין ממשק משתמש גרפי כאשר המפרש שלEmacs Lisp רץ במצב אצווה, המפרש מבצע את התסריט, מציג פלט ויוצא.

לעומת ניבי Lisp אחרים[עריכת קוד מקור | עריכה]

Emacs Lisp קרובה ביותר לניב Maclisp, אך קיימת גם השפעה מאוחרת יותר מ Common Lisp.[1] הניב תומך בפרדיגמות תכנות אימפרטיבי פונקציונלי ו-פרוצדורלי. ריצ'רד סטולמן בחר את ליספ כשפת הרחבה כששכתב מחדש את Emacs (עורך הטקסט המקורי הוא TECO (Text Editor and Corrector), ובמכונות ה-Lisp כ-Zmacs) כשפת ההרחבה שלו בגלל התכונות החזקות שלה, כולל היכולת לטפל בפונקציות כנתונים. למרות ש-Lisp עוד לא עברה תקנון כ-Common Lisp, הניב Scheme כבר היה קיים בזמן שסטולמן היה משכתב את Gosling Emacs לתוך GNU Emacs. הוא בחר שלא להשתמש ב-Scheme לאור הביצועים הנמוכים שלה על מחשבים תעשייתים (בניגוד למחשבים זעירים שהיו ביתם המסורתי של עורכי Emacs לאורך ההיסטוריה), מאחר שהוא רצה ניב Lisp חסכוני עם ביצועים שניתן לשפר אותם בקלות. [2]

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

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

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

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

  1. ^ "GNU Emacs Lisp is largely inspired by Maclisp, and a little by Common Lisp. If you know Common Lisp, you will notice many similarities. However, many features of Common Lisp have been omitted or simplified in order to reduce the memory requirements of GNU Emacs. Sometimes the simplifications are so drastic that a Common Lisp user might be very confused. We will occasionally point out how GNU Emacs Lisp differs from Common Lisp." – from the "History" section of the "Introduction" to the Emacs Lisp Manual, as of Emacs 21
  2. ^ Richard Stallman, My Lisp Experiences and the Development of GNU Emacs, www.gnu.org, ‏28 אוקטובר 2002
P Computer-science.svg ערך זה הוא קצרמר בנושא מדעי המחשב ובנושא תוכנה. אתם מוזמנים לתרום לוויקיפדיה ולהרחיב אותו.