OpenLisp
![]() |
הערך נמצא בשלבי עבודה: כדי למנוע התנגשויות עריכה ועבודה כפולה, אתם מתבקשים שלא לערוך את הערך בטרם תוסר ההודעה הזו, אלא אם כן תיאמתם זאת עם מניח התבנית.
| |
הערך נמצא בשלבי עבודה: כדי למנוע התנגשויות עריכה ועבודה כפולה, אתם מתבקשים שלא לערוך את הערך בטרם תוסר ההודעה הזו, אלא אם כן תיאמתם זאת עם מניח התבנית. | |
OpenLisp היא שפת תכנות ממשפחת שפות ה- Lisp. היא פותחה על ידי כריסטיאן ג'וליאן מתאגיד Eligis בשנת 1988. היא כתובה ב-C וב- Lisp, ורצה על רוב מערכות ההפעלה הפופולריות. OpenLisp OpenLisp היא מרובת פרידגמות, כלומר, השפה תומכת במספר עקרונות תכנותיים שונים( למשל, תכנות פונקציונלי,תכנות אימפרטיבי ותכנות מונחה עצמים) .
שגיאות פרמטריות בתבנית:שפת תכנות
פרמטרים [ שנה ] לא מופיעים בהגדרת התבנית
![]() | |
פרדיגמות |
תכנות פונקציונלי, תכנות אימפרטיבי, תכנות מונחה עצמים, תכנות פרוצדורלי, תכנות רפלקטיבי, מטא תכנות |
---|---|
מתכנן | כריסטיאן ג'וליאן |
מפתח | כריסטיאן ג'וליאן |
גרסה אחרונה | 10.9.0 (8 במאי ,2020.) |
טיפוסיות | דינמית,חזקה |
הושפעה על ידי |
Lisp , ISLISP |
http://www.openlisp.org/home | |
![]() ![]() |
ניתן להריץ את OpenLisp במצב קונסולה- במערכת ההפעלה windows בשורת הפקודה ובמערכות הפעלה ממשפחת Unix כגון Mac ו Linux ב-Terminal.
;; OpenLisp v10.x.y (Build: XXXX) by C. Jullien [Jan 01 20xx - 10:49:13]
;; Copyright (c) Eligis - 1988-20xx.
;; System 'sysname' (64-bit, 8 CPU) on 'hostname', ASCII.
;; God thank you, OpenLisp is back again!
? (fib 20)
;; elapsed time = 0.003s, (0 gc).
= 6765
? _
בנוסף, ניתן לכתוב ולהריץ את OpenLisp באמצעות עורך הטקסט Emacs, או באמצעות סביבת פיתוח משולבת אשר תומכת בכך כגון LispIDE
היסטוריה
שנה | גרסה | פיצ'ר עיקרי |
---|---|---|
1988 | 1.0 | OpenLisp החלה בשם MLisp (קיצור של Minimal Lisp) על מנת לערוך ניסויים על רעיונות משפת ISLISP |
1993 | 3.3 | שם השפה שונה ל-OpenLisp, ונוצר ההיסב הראשון למכונה של 64 סיביות (DEC Alpha OSF/1) |
1994 | 4.0 | השימוש המסחרי הראשון |
1995 | 4.5 | תמיכה ב-Socket Streams |
1997 | 5.7 | OpenLisp הפכה לשפה הראשונה ממשפחת Lisp אשר מימשה את התקן ISLISP ISO/IEC |
1998 | 5.8 | תמיכה אופציונלית ביוניקוד |
2000 | 6.6 | מהירות השפה הוכפלה פי 2. |
2003 | 7.5 | Lisp to C backend; able to compile an application with many Lisp files to a standalone executable; speed improved from 10x to 20x |
2007 | 8.7 | Changes to match ISO/IEC 13816:2007(E) revision |
2010 | 9.2 | Native integer arbitrary-precision arithmetic support |
2020 | 10.9 | הגרסה האחרונה |
היסבים
משמעות המושג היסב במדעי המחשב הוא מימוש תוכנה בפלטפורמה מסוימת. לתוכנות עם היסבים למערכות הפעלה רבות, ישנו קהל משתמשים גדול יותר.
ל-OpenLisp ישנם היסבים במערכות הפעלה רבות, כגון Windows, רוב מערכות ההפעלה ממשפחת יוניקס (במשפחה זו כלולים Mac ולינוקס), DOS, ועוד.
מהדר
קוד מקור ב-OpenLisp
קטע קוד לסדרת פיבונאצ׳י:
(defun fib (n)
(cond ((eq n 1) 1)
((eq n 2) 1)
(t (+ (fib (- n 1)) (fib (- n 2))))))
המהדר מתרגם את קוד המקור לקוד הביניים הבא, וכן מבצע אופטמיזציה בטכניקת Peephole Optimization. הנה הקוד לאחר האופטמיזציה:
((fentry fib 1 0 0)
(param 0)
(jeq _l004 '1)
(jneq _l003 '2)
(move a1 '1)
(return)
_l003
(gsub1 a1)
(recurse 1)
(move a2 a1)
(param 0)
(gsub a1 '2)
(recurse 1)
(gadd a2 a1)
_l004
(return)
(end))
לאחר מכן, מתורגם הקוד לשפת התכנות C:
static POINTER
OLDEFCOMPILED1(olfib_00, p1) {
POINTER a1;
POINTER VOLATILE a2;
ollapenter(SN_OLFIB_00);
a1 = p1;
if (eq(a1, olmakefix(1))) goto _l004;
if (!eq(a1, olmakefix(2))) goto _l003;
ollapleave(SN_OLFIB_00);
return olmakefix(1);
_l003:
a1 = ollapgsub(a1, olmakefix(1));
a2 = olfib_00(a1);
a1 = ollapgsub(p1, olmakefix(2));
a1 = olfib_00(a1);
a1 = ollapgadd(a2, a1);
_l004:
ollapleave(SN_OLFIB_00);
return a1;
}
משפחת שפות Lisp
1955 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2019 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
LISP 1, 1.5, LISP 2(abandoned) | ||||||||||||||
Maclisp | ||||||||||||||
Interlisp | ||||||||||||||
Lisp Machine Lisp | ||||||||||||||
Scheme | R5RS | R6RS | R7RS small | |||||||||||
NIL | ||||||||||||||
Franz Lisp | ||||||||||||||
Common Lisp | ||||||||||||||
Le Lisp | ||||||||||||||
T | ||||||||||||||
Chez Scheme | ||||||||||||||
Emacs Lisp | ||||||||||||||
AutoLISP | ||||||||||||||
PicoLisp | ||||||||||||||
EuLisp | ||||||||||||||
ISLISP | ||||||||||||||
OpenLisp | ||||||||||||||
PLT Scheme | Racket | |||||||||||||
GNU Guile | ||||||||||||||
Visual LISP | ||||||||||||||
Qi, QiII | Shen | |||||||||||||
Clojure | ||||||||||||||
Arc | ||||||||||||||
LFE | ||||||||||||||
Hy |
מוסכמות כתיבה
אורך שורת הקוד
אם כי ניתן לכתוב מספר בלתי מוגבל של תווים בשורה, מומלץ לכתוב עד כ-80 תווים בשורה.