OpenLisp
![]() |
הערך נמצא בשלבי עבודה: כדי למנוע התנגשויות עריכה ועבודה כפולה, אתם מתבקשים שלא לערוך את הערך בטרם תוסר ההודעה הזו, אלא אם כן תיאמתם זאת עם מניח התבנית.
| |
הערך נמצא בשלבי עבודה: כדי למנוע התנגשויות עריכה ועבודה כפולה, אתם מתבקשים שלא לערוך את הערך בטרם תוסר ההודעה הזו, אלא אם כן תיאמתם זאת עם מניח התבנית. | |
OpenLisp היא שפת תכנות ממשפחת שפות ה- Lisp. היא פותחה על ידי כריסטיאן ג'וליאן מתאגיד Eligis בשנת 1988. היא כתובה ב-C וב- Lisp, ורצה על רוב מערכות ההפעלה הפופולריות. OpenLisp OpenLisp היא מרובת פרידגמות, כלומר, השפה תומכת במספר עקרונות תכנותיים שונים( למשל, תכנות פונקציונלי,תכנות אימפרטיבי ותכנות מונחה עצמים) . היות ואחת ממטרות השפה היא להשתלב באפליקציות בשפות תכנות פופולריות יותר כגון C,C++, Java, Visual Basic וכו' , OpenLisp משומשת פעמים רבות כספריה ( בשפות מבית מיקרוסופט- כ -dll).
שגיאות פרמטריות בתבנית:שפת תכנות
פרמטרים [ שנה ] לא מופיעים בהגדרת התבנית
![]() | |
פרדיגמות |
תכנות פונקציונלי, תכנות אימפרטיבי, תכנות מונחה עצמים, תכנות פרוצדורלי, תכנות רפלקטיבי, מטא תכנות |
---|---|
מתכנן | כריסטיאן ג'וליאן |
מפתח | כריסטיאן ג'וליאן |
גרסה אחרונה | 10.9.0 (8 במאי ,2020.) |
טיפוסיות | דינמית,חזקה |
הושפעה על ידי |
Lisp , ISLISP |
http://www.openlisp.org/home | |
![]() ![]() |
ניתן להריץ את OpenLisp במצב קונסולה- במערכת ההפעלה windows בשורת הפקודה ובמערכות הפעלה ממשפחת Unix כגון MacOS ו 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
*הדוגמה הבאה נלקחה מהאתר הרשמי של מפתח שפת OpenLisp.
#!/usr/bin/env openlisp -odsp
<?xml version="1.0" encoding="UTF-8"?>
<!-- OpenLisp Server Page Sample - (c) C. Jullien 2001/09/12 -->
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>OpenLisp Server Page Sample</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
<meta http-equiv="Pragma" content="no-cache" />
<!-- meta http-equiv="refresh" content="5" -->
<meta name="Generator" content="OpenLisp Server Page" />
<meta name="robots" content="noindex,follow" />
</head>
<body>
<p>
<?openlisp
(require 'datetime)
(let ((val (machine-info)))
(format (standard-output) "~A on ~A~%" (current-date) (elt val 1)))
?>
</p>
<p>
Openlisp v<?openlisp (prin (version)) ?> Server Page, computes Fib serie:
<br />
<br />
<table border = "1"
bordercolor = "#000000"
cellpadding = "4"
cellspacing = "1"
>
<tbody>
<?openlisp
;; nice way to WEB around!!!
(require 'cgi) ;; not really needed for this sample
(defun fib (n)
;; Standard function with integer argument
(cond ((= n 1) 1)
((= n 2) 1)
(t (+ (fib (1- n)) (fib (- n 2))))))
(for ((i 1 (1+ i)))
((> i 20))
(format (standard-output)
"<tr><td>(fib ~D)</td><td>~D</td></tr>~%" i (fib i)))
?>
</tbody>
</table>
</p>
</body>
</html>
בקטע הקוד לעיל, שילבנו את OpenLisp ב-HTML, כתבנו באופן רקורסיבי את סדרת פיבונאצ'י, והשתמשנו בפעולה זו. יש לשים לב כי את הקוד ב-OpenLisp נכתוב בתוך התגית :
<? openlisp
?>
היסבים
משמעות המושג היסב במדעי המחשב הוא מימוש תוכנה בפלטפורמה מסוימת. לתוכנות עם היסבים למערכות הפעלה רבות, ישנו קהל משתמשים גדול יותר.
ל-OpenLisp ישנם יותר מ-90 היסבים[1] במערכות הפעלה ופלטפורמות שונות, כגון 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 תווים בשורה.
קישורים חיצוניים