ISLISP

מתוך ויקיפדיה, האנציקלופדיה החופשית
ISLISP
פרדיגמות מרובת פרדיגמות: תכנות פונקציונלי, תכנות פרוצדורלי, תכנות מונחה עצמים, תכנות רפלקטיבי, מטא תכנות
שנה 1997 עריכת הנתון בוויקינתונים
ניבים dayLISP, Easy-ISLisp, Iris, ISLisproid, Kiss, OKI ISLISP, OpenLisp, PRIME-LISP
הושפעה על ידי Common Lisp, EuLisp, Le Lisp, Scheme
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית OOjs UI icon info big.svg

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[עריכת קוד מקור | עריכה]

ציר זמן של ניבי Lisp
1955 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2019
LISP 2, LISP 1.5, LISP 1
Maclisp
Interlisp
Lisp Machine Lisp
Scheme R5RS R6RS R7RS small
NIL
Franz Lisp
Common Lisp
Le Lisp
T
Emacs Lisp
AutoLISP
PicoLisp
EuLisp
ISLISP
OpenLisp
PLT Scheme Racket
GNU Guile
Visual LISP
Qi, QiII Shen
Clojure
Arc
LFE
Hy

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

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 כן