לדלג לתוכן

OpenLisp

מתוך ויקיפדיה, האנציקלופדיה החופשית
גרסה מ־18:08, 13 בספטמבר 2020 מאת Jona1357 (שיחה | תרומות) (מפתוח דף על ידי דפדפנים אושר.)
הערך נמצא בשלבי עבודה: כדי למנוע התנגשויות עריכה ועבודה כפולה, אתם מתבקשים שלא לערוך את הערך בטרם תוסר ההודעה הזו, אלא אם כן תיאמתם זאת עם מניח התבנית.
אם הערך לא נערך במשך שבוע ניתן להסיר את התבנית ולערוך אותו, אך לפני כן רצוי להזכיר את התבנית למשתמש שהניח אותה, באמצעות הודעה בדף שיחתו.
הערך נמצא בשלבי עבודה: כדי למנוע התנגשויות עריכה ועבודה כפולה, אתם מתבקשים שלא לערוך את הערך בטרם תוסר ההודעה הזו, אלא אם כן תיאמתם זאת עם מניח התבנית.
אם הערך לא נערך במשך שבוע ניתן להסיר את התבנית ולערוך אותו, אך לפני כן רצוי להזכיר את התבנית למשתמש שהניח אותה, באמצעות הודעה בדף שיחתו.

OpenLisp היא שפת תכנות ממשפחת שפות ה- Lisp. היא פותחה על ידי כריסטיאן ג'וליאן מתאגיד Eligis בשנת 1988. היא כתובה ב-C וב- Lisp, ורצה על רוב מערכות ההפעלה הפופולריות. OpenLisp OpenLisp היא מרובת פרידגמות, כלומר, השפה תומכת במספר עקרונות תכנותיים שונים( למשל, תכנות פונקציונלי,תכנות אימפרטיבי ותכנות מונחה עצמים) . היות ואחת ממטרות השפה היא להשתלב באפליקציות בשפות תכנות פופולריות יותר כגון C,C++, Java, Visual Basic וכו' , OpenLisp משומשת פעמים רבות כספריה ( בשפות מבית מיקרוסופט- כ -dll).


שגיאות פרמטריות בתבנית:שפת תכנות

פרמטרים [ שנה ] לא מופיעים בהגדרת התבנית

OpenLisp
פרדיגמות

תכנות פונקציונלי, תכנות אימפרטיבי, תכנות מונחה עצמים, תכנות פרוצדורלי, תכנות רפלקטיבי,

מטא תכנות
מתכנן כריסטיאן ג'וליאן
מפתח כריסטיאן ג'וליאן
גרסה אחרונה 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

היסטוריה

אבני דרך בפיתוח OpenLisp
שנה גרסה פיצ'ר עיקרי
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

ציר זמן של פיתוח ניבי 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 תווים בשורה.

קישורים חיצוניים

OpenLisp, כריסטיאן ג'וליאן