ISLISP

ISLISP היא שפת תכנות ממשפחת שפות Lisp אשר כתובה על פי תקנים וסטנדרטים שנקבעו על ידי ארגון התקינה הבינלאומי (ISO) והנציבות הבין-לאומית לאלקטרוטכניקה (IEC). מטרת הסטנדרטים האלו היא להגדיר שפת ליבה קצרה על מנת לגשר בין ההבדלים בין ניבי Lisp השונים. לשם כך, הסטנדרטים נקבעו על פי המאפיינים המשותפים של שפות התכנות EuLisp, Le Lisp, Scheme ו- Common Lisp ממשפחת Lisp.

ISLISP היא שפה מרובת פרדיגמות, כלומר, היא תומכת בכמה עקרונות תכנותיים (יותר מעיקרון אחד):
* תכנות פונקציונלי (באנגלית: Functional Programming) – תכנות פונקציונלי שם דגש על קריאה לפעולות ופישוטן כביטויים.
* תכנות פרוצדורלי (באנגלית: Procedural Programming) – בתכנות פרוצדורלי, כל תוכנית מחולקת לתת תוכניות הנקראות פרוצדורות (שגרות).
* מטא תכנות (באנגלית: Metaprogramming) – בפרדיגמה זו, ניתן להתייחס לתוכניות (קטעי קוד) כמידע, ולערוך אותן. כך ניתן גם ליצור, לנתח, ולשנות תוכנות אחרות, ואף לשנות את התוכנה עצמה בזמן ריצה.
* תכנות מונחה עצמים (באנגלית: Object Oriented Programming) – שימוש במבני נתונים אשר מכילים תכונות ופעולות, על מנת לייצג את המתרחש במציאות בצורה פשוטה, מסודרת ויעילה יותר. למשל, על מנת לייצג בן אדם, נוכל ליצור מחלקה (תבנית של תכונות ופעולות) בשם Person ולהוסיף לה תכונות כגון שם, גובה, משקל, צבע עיניים, וכו׳. נוכל גם להוסיף פעולות: אדם יכול לדבר, לאכול, לרוץ, ללמוד, וכדומה. לאחר יצירת המחלקה, נוכל ליצור מבני נתונים מסוג המחלקה Person ולתת להם למשל תכונות אשר אופייניות להם. מבני נתונים כאלה נקראים אובייקטים – מכילים תכונות ופעולות בהתאם לסוג המחלקה שלהם.

== מטרות בתכנון השפה ==
להלן כמה מן המטרות העיקריות שלפיהן עוצבה ISLISP:
* על השפה להיות מתאימה לניבי Lisp מודרניים אחרים ככל האפשר.
* עליה לתמוך בתכנות מונחה עצמים
* על השפה להיות מעוצבת כך שיהיה ניתן להרחיב אותה בעתיד.
* תעדוף צרכים תעשייתיים על פני צרכים אקדמאיים
* קידום מימושים ואפליקציות יעיליות.

המערכת המובנית לתמיכה בתכנות מונחה עצמים נקראת ILOS (בשמה המלא: ISLISP Object System), היא בעיקר תת-קבוצה של המערכת המובנית לתמיכה בתכנות מונחה עצמים בניב Common Lisp ששמה Common LIsp Object System, או בקיצור: CLOS.

== ציר זמן של ניבי Lisp ==
{| class="wikitable"
|+ציר זמן של ניבי Lisp
!1955
!1960
!1965
!1970
!1975
!1980
!1985
!1990
!1995
!2000
!2005
!2010
!2015
!2019
|-
! colspan="3" |LISP 2, LISP 1.5, LISP 1
| colspan="10" |
|-
| colspan="2" |
! colspan="5" |Maclisp
| colspan="6" |
|-
| colspan="3" |
! colspan="5" |Interlisp
| colspan="5" |
|-
| colspan="4" |
! colspan="5" |Lisp Machine Lisp
| colspan="4" |
|-
| colspan="4" |
! colspan="4" |Scheme
! colspan="2" |R5RS
! colspan="1" |R6RS
! colspan="3" |R7RS small
|-
| colspan="4" |
! colspan="2" |NIL
|-
| colspan="5" |
! colspan="2" |Franz Lisp
|-
| colspan="5" |
! colspan="9" |Common Lisp
|-
| colspan="5" |
! colspan="9" |Le Lisp
|-
| colspan="6" |
! colspan="3" |T
| colspan="4" |
|-
| colspan="6" |
! colspan="8" |Emacs Lisp
|-
| colspan="6" |
! colspan="8" |AutoLISP
|-
| colspan="6" |
! colspan="8" |PicoLisp
|-
| colspan="7" |
! colspan="6" |EuLisp
|-
| colspan="7" |
! colspan="8" |<big>ISLISP</big>
|-
| colspan="7" |
! colspan="8" |OpenLisp
|-
| colspan="7" |
! colspan="4" |PLT Scheme
! colspan="3" |Racket
|-
| colspan="7" |
! colspan="7" |GNU Guile
|-
| colspan="9" |
! colspan="5" |Visual LISP
|-
| colspan="10" |
! colspan="2" |Qi, QiII
! colspan="2" |Shen
|-
| colspan="10" |
! colspan="4" |Clojure
|-
| colspan="10" |
! colspan="4" |Arc
|-
| colspan="10" |
! colspan="4" |LFE
|-
| colspan="11" |
! colspan="3" |Hy
|}

== מימושים ==
{| class="wikitable sortable"
|+ISLISP implementations
!Name
!Creator
!Complete ISLisp
!Architecture
!כתוב ב
!מערכות הפעלה
!רישיון
!קוד מקור זמין
|-
|OpenLisp
|תאגיד התוכנה Eligis
|כן
|מפרש, מהודר ל-C
|C, Lisp
|Windows, macOS, Linux, BSD, AIX, Solaris, QNX
|Proprietary
|חלקי
|-
|OKI ISLISP
|Kyoto University and Oki Electric Industry Co.
|כן
|Bytecode machine, מהודר ל-bytecode
|C
|Windows
|?
|לא
|-
|PRIME-LISP
|מיכאל סמנאוב
|כן
|מפרש
|C#
|Windows
|Proprietary, Shareware, freely redistributable binaries
|לא
|-
|Iris
|מאסאיה טאנגוצ׳י
|לא
|מפרש
|Go
|כל מערכת הפעלה
|Free, Mozilla Public License 2.0
|לא
|-
|Iris web REPL
|מאסאיה טאנגוצ׳י
|לא
|מפרש, מהודר ל-Javascript
|Go, JavaScript
|רץ בדפדפן
|Free, Mozilla Public License 2.0
|כן
|-
|Kiss
|יוג'י מינג׳ימה
|עדיין לא
|מפרש
|C, Lisp
|כל מערכת הפעלה
|Free, GPL v3+
|כן
|-
|ISLisproid
|הירושי גומי
|לא
|מפרש
|Java
|אנדרואיד
|Proprietary
|לא
|-
|dayLISP
|מת׳יו דנסון
|לא
|מפרש
|Java, Lisp
|כל מערכת הפעלה
|Free, BSD
|כן
|-
|Easy-ISLisp
|קניצ'י סאסגאווה
|כן
|מפרש, מהודר ל-C
|C, Lisp
|Windows, Linux
|Free, BSD
|כן
|}

קטגוריה:שפות תכנות פונקציונליות
קטגוריה:ניבי Lisp
קטגוריה:תכנות מונחה-עצמים