נוסח ההתניה המוכר כ־if-then-else במקור הומצא על ידי מקארתי, הוא הציע לשלב את צורת ההתניה ב-ALGOL אבל הרעיון נדחה. למרות זאת מקארתי הוסיף את הניסוח ב־Lisp כפונקציה ומאוחר יותר אימצו אותו גם ב־Algol 58 כצורת תחביר שהפכה את הניסוח למאוד פופולרי.
Lisp הייתה למקור השפעה מרכזי על אלן קיי, שהיה מחלוצי המפתחים של Smalltalk. מאוחר יותר Smalltalk השפיעה בחזרה על Lisp בכל הנוגע לתכנות מונחה־עצמים לקראת סוף שנות ה־70.
Lisp לראשונה הציגה את מנגנון איסוף הזבל שמתרחש באופן אוטומטי בזמן הריצה ומשחרר זיכרון שכבר אינו נמצא בשימוש או שלחלופין כבר אינו נגיש, ובכך מונע זליגות זיכרון. איסוף הזבל המשיך להתפתח בעיקר ב־Lisp ומאוחר יותר אומץ לשפות שונות.
תחביר וסמנטיקה.
ביטוי־S.
Lisp היא שפה מונחית ביטויים. בניגוד לשפות אחרות, ב־Lisp לא קיימת הבדלה בין ביטוי והצהרה, כל הנתונים והקוד כתובים כביטויים שעוברים הערכה בזמן הריצה. כשביטוי מוערך מקבלים ערך כלשהו. או קבוצת ערכים אם מדובר ב־Common Lisp או בניבים מתקדמים אחרים. הערך שמתקבל גם הוא בסופו של דבר מהווה לחלק מביטוי אחר שגם הוא מוערך באותה צורה בדיוק. כל ערך שמתקבל יכול להיות כל טיפוס נתונים כגון ערך מספרי, רשומה, רשימה, מחרוזת, פונקציה וכו'.
השימוש הנרחב בסוגריים הוא המאפיין הבולט ביותר שמבדיל את משפחת השפות Lisp ממשפחות אחרות. תחביר ביטוי ה־S בעצם זה שהפך את Lisp לכזו שמאפשרת חופש והפשטה מקסימלית עבור המתכנת. ב־Lisp הסוגריים מגלמים את מבנה התכנה כולה באותה החוקיות בדיוק, בניגוד לשפות אחרות שנעשה בהן שימוש נפרד בסוגריים כדי לתאר מבנה אסתטי, ובמקומות אחרים כדי לתאר סדר פעולות.
עם זאת Lisp עדיין איננה מוגבלת לשימוש המסורתי שלה בסוגריים, לדוגמה XMLisp היא תוספת ל־Common Lisp שמאפשרת לגלם ביטויי־S בעזרת תגיות כמו בתקן XML במקום השימוש בסוגריים.
כיוון שב־Lisp הפונקציות כתובות כרשימות נתונים, אפשר לעבד אותן כנתונים. זה מאפשר לכתוב ב־Lisp תוכנה שיכולה לשנות באופן מניפולטיבי תכנות אחרות שגם נכתבו ב־Lisp בעצמאות גישה לתוך הנתונים שלהן ושינוי או הוספת נתונים, שבין היתר מגלמים גם את הפונקציות עצמן. פרדיגמה זו נקראת מטא־תכנות (metaprogramming). ניבים רבים של Lisp מנצלים תכונה זו בעזרת פונקציות מאקרו כדי לאפשר לשפה להתרחב בלי הגבלה.
דוגמאות.
קריאה לפונקציה או למבנה תחבירי תיכתב כרשימה עם שם הפונקציה או האופרטור בהתחלה, והארגומנטים אחר־כך; למשל, פונקציה f שמקבלת שלושה ארגומנטים עשויה להיקרא באמצעות codice_5.
הדוגמה הבאה, סכום שלושה מספרים, ממחישה את השימוש בכתיב הפולני:
יש מספר וריאציות של מבניות זו אשר מאפשרות קיצורים בכתיבה (למשל השמטת סוגריים ושיתוף מידע בין ביטויים). היתרון הגדול של מבנה תחבירי זה הוא שניתן לשנותו בזמן ריצה.
בהתאם לייעודה המקורי כשפת עיבוד רשימות, עושה שפת LISP שימוש רב ברקורסיה.
תוכנית דוגמה לחישוב עצרת, בדיאלקט Common Lisp:
(defun factorial (n)
(if (= n 0)
(* n (factorial (- n 1)))))
שתי פקודות חשובות ב־Lisp הפועלות על רשימות מכל סוג הן car ו־cdr (והמקבילות המודרניות: first ו־rest, בהתאמה). הפקודה car (או first) מחזירה את האיבר הראשון ברשימה, והפקודה cdr (או rest) מחזירה את הרשימה ללא האיבר הראשון.
יתרון בשימוש ב־codice_1 וב־codice_2 הוא שניתן לשכפל את האות האמצעית בפקודות אלו על מנת לבצע הפקודה בצורה רקורסיבית מספר פעמים: אם למשל כותבים codice_8, מקבלים את האיבר הראשון של האיבר הראשון של האיבר הראשון (3 פעמים) של הרשימה המקורית (איבר ברשימה יכול להיות גם הוא רשימה).
בדומה לכך, אם רושמים cddr, מקבלים את הרשימה המקורית ללא שני האיברים הראשונים שלה (שגם הם יכולים להיות רשימות). ניתן גם לערבב: אם רושמים למשל codice_9, מקבלים את האיבר הראשון של שאר הרשימה של האיבר הראשון של האיבר הראשון של שאר הרשימה של הרשימה המקורית, וכן הלאה.
ניבים וסדר יוחסין.
לאורך יותר מ־50 שנות קיומה של Lisp נוצרו לה ניבים רבים בעלי מאפיינים וכללי תחביר שונים, ואפילו נבדלים זה מזה בפרדיגמות סותרות. עם זאת מה שמאפיין את כל הניבים של Lisp ומאחד ביניהם זה השימוש בביטויי־S. השוני בין הניבים כולל לפעמים אפילו מילות מפתח שונות. לדוגמה מילת המפתח codice_10 שמגדירה פונקציה חדשה ב־Common Lisp נקראת codice_11 ב־Scheme ו־codice_12 ב־Clojure. אולם בניבים בעלי תקן אחיד כגון Common Lisp, כל היישומים בנויים על אותה הליבה, אך מציעים ספריות שונות.
במאה ה־21.
למרות הדעיכה של שנות ה־90, העניין ב־Lisp הולך וגובר בקרב מתכנתים רבים בשנים האחרונות. רוב התעוררות והפעילות כיום היא מסביב לניבים Common Lisp, Clojure, Racket, Scheme, ו־Emacs Lisp. הגל החדש מסביב ל־Lisp כולל פיתוח של ספריות חדשות ופיתוח תוכנות.
מתכנתי Lisp חדשים רבים תפסו השראה ממחברים כמו פול גרהם ואריק ס. ריימונד להשיב לתחייה שפות שנתפסו כעתיקות בעיני אחרים. מתכנתי Lisp חדשים מתארים את השפה כחוויה מאירת עיניים ומרעננת ואחרים טוענים שהפיתוח עם Lisp הוא יעיל בהרבה מאשר עם שאר השפות המקובלות כיום.
קהילת הקוד הפתוח פיתחה תשתית חדשה עבור Lisp בשם CLiki, שהיא בעצם ויקי שמציעה מגוון רחב של כלים ומידע הקשורים ל־Common Lisp עבור מתכנתים חדשים, כולל הדרכה ושיתוף של דגימות קוד בין חברי הקהילה. אתר אחר בשם Planet Lisp אוסף תכנים הקשורים ל־Lisp ממגוון בלוגים ומרכז אותם במקום אחד. LispForum מאפשר דיונים בין מתכנתי Lisp בנושאים קשורים. Common-lisp.net מציע אחסן לקוד פתוח עבור פרויקטים שפותחו ב-Common Lisp. ו־Quicklisp מנהל ספריות צד שלישי עבור Common Lisp.
קהילת ה־Scheme מתחזקת באופן פעיל יותר מ20 יישומים שונים. כמה מהמימושים החשובים של Scheme הופיעו רק לאחרונה בשנים האחרונות (Chicken, Gambit, Gauche, Ikarus, Larceny, Ypsilon) הקהילות מסביב ליישומים השונים של Scheme גם הן הולכות ומתרחבות באופן פרטני. תהליך מסביב לתקן חדש של Scheme שהתחיל ב־2003 הסתיים ויצא לאור ב־2007. השימוש ב־Scheme באקדמיה לעומת זאת מעט מאבד ממעמדו, ב-MIT כבר לא משתמשים ב־Scheme בקורסים הראשונים למדעי המחשב כמו בעבר.
מספר ניבים חדשניים של Lisp הופיעו רק בשנים אחרונות כגון Arc, Hy, Nu, Clojure, Liskell, LFE ו־Racket והם מהווים לנקודת ציון חשובה בגל הפופולריות המחודשת של Lisp.
ניבים מרכזיים.
Common Lisp ו־Scheme מייצגים כיום את שני הזרמים העיקריים בפיתוח של Lisp. השפות הללו מגלמות גם שוני מהותי בעיצוב התוכנה זה מזה.
Common Lisp הוא ניב שירש במקור את MacLisp. ההשפעות העיקריות על Common Lisp באו מ־Lisp Machine Lisp, MacLisp, NIL, S-1 Lisp, Spice Lisp ו־Scheme. יש לו את רוב התכונות שיש ל־Lisp Machine Lisp (ניב Lisp מגושם שהשימוש המרכזי בו היה במכונות Lisp), אך בניגוד לו, עוצב כך שיוכל לרוץ באופן יעיל על כל מחשב פרטי. ל־Common Lisp קיים תקן די רחב הכולל בו מגוון טיפוסי נתונים מובנים וכמו כן תמיכה בתכנות מונחה־עצמים (Common Lisp Object System). בניב קיימות גם תכונות מ־Scheme כמו למשל אופטימיזציית הסגור שמאפשרת גישה למשתנים מקומיים שמיוחסים באופן דינאמי מחוץ לפונקציה לסירוגין עם גישה לקסיקלית סטטית.
Scheme הוא ניב Lisp שמתאפיין בתחימה סטטית ואופטימיזציה ייחודית עבור רקורסיית זנב, שפותח על ידי שני בוגרי MIT גיא לואיס סטיל ג'וניור וג'רלד ג'יי זוסמן. הניב עוצב עם תחביר נקי שיאפשר לנסח ביטויים בצורות שונות בסמנטיקה פשוטה וברורה כך שתהיה התאמה בין הניסוח של הביטויים למגוון רחב של פרדיגמות שסותרות זו את זו. Scheme עדין מתפחת גם היום לפי סדרת תקנים.
Clojure הוא ניב Lisp חדש יחסית שבאופן עקרוני מכוון את הקוד ל־Java Virtual Machine וכמו כן גם ל־Common Language Runtime, ל־VM של Python, ל־VM של Ruby (נקרא YARV) וגם מהדר את הקוד ל־JavaScript. הניב עוצב להיות פרגמטי ורב־תכליתי. ל־Clojure קיימת השפעה ניכרת מ־Haskell וישנו דגש חזק על אי־שינוי במצב הנתונים בזיכרון בזמן הריצה (שאופייני לתכנות פונקציונלי טהור). Clojure מספקת גישה לתשתיות וספריות Java בלי הצורך בהשתקפות כדי לאפשר ביצוע מהיר עם פעולות פרמיטיביות תוך כדי שימוש במתודות מתוך ספריות Java.
ניבי Lisp משמשים כשפות תסריט בהרבה תוכנות, כש־Emacs Lisp הוא הניב החלוץ כשפת תסריט כיום (נקרא כך על שם תוכנת העריכה שלו Emacs) אחרי כן AutoLisp ומאוחר יותר Visual Lisp שנעשה בה שימוש ב־AutoCAD, וכמו כן Nyquist ב־Audacity ו־Scheme ב־LilyPond. גודלו הזעיר של מפרשן ה־Scheme הפך אותו למאוד פופולרי כשפת תסריט מובנת.
סוסיתא (להקה)
סוסיתא הוא שמה של להקת רוק מתקדם ישראלית, המשלבת מוזיקה עממית-עברית עם רוק מתקדם במסורת של להקות ישראליות משנות השבעים כששת וקצת אחרת. היא נוסדה בשנת 2003 על ידי חברים מבית הספר למוזיקה רימון. בראשית 2005 יצא אלבומם הראשון והיחיד עד עתה: סוסיתא ובסוף אותה שנה הם חדלו מלהופיע אחרי ארבע שנות הופעה. בשלהי שנת 2009 חזרה הלהקה להופיע.
האלבום.
אלבומה היחיד של הלהקה נקרא "סוסיתא". השירים הכלולים בו הם:
סוסיתא
אגם חבסגל
אגם חֶבְסְגֶל (במונגולית: Хөвсгөл нуур) הוא אגם מים מתוקים במחוז חבסגל במונגוליה. אגם חבסגל הוא אחד העתיקים בעולם; החוקרים מעריכים את גילו בכמה עשרות מיליוני שנים. המונגולים מכנים את האגם: "פנינה כחולה עמוקה" או "אמא".