OpenLisp

OpenLisp
פרדיגמות תכנות פונקציונלי, תכנות אימפרטיבי, תכנות מונחה-עצמים, תכנות פרוצדורלי, תכנות רפלקטיבי, מטא תכנות
תאריך השקה 1988
מתכנן כריסטיאן ג'וליאן
מפתח כריסטיאן ג'וליאן
גרסה אחרונה 10.9.0‏ (8במאי 2020.)
טיפוסיות דינמית,חזקה
הושפעה על ידי Lisp,‏ ISLISP
http://www.openlisp.org/home
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית

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

ניתן להריץ את 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

*הדוגמה הבאה נלקחה מהאתר הרשמי של מפתח שפת 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, רוב מערכות ההפעלה ממשפחת יוניקס (במשפחה זו כלולים MacOS ולינוקס), DOS ועוד.

מהדר

דוגמה לקוד מקור

רקורסיה במדעי המחשב בדרך כלל מתייחסת לקריאה לזימון של הפעולה בתוך הפעולה עצמה, בדרך כלל בהינתן תנאי עצירה לסיום הקריאות.

הגדרת פעולה רקורסיבית לסדרת פיבונאצ'י ב-OpenLisp:

(defun fib (n)
 (cond ((eq n 1) 1)
 ((eq n 2) 1)
 (t (+ (fib (- n 1)) (fib (- n 2))))))

פעולה זו תקבל מקום (אינדקס) בסדרת פיבונאצ'י ותחזיר את הערך במקום זה. בכל הרצה של הפעולה, אם האינדקס הנוכחי n שווה ל-1 או ל-2, ערך הביטוי יהיה 1. אחרת, הביטוי יצטמטם לסכום הזימון של הפעולה עם אינדקס n-1 וזימון של הפעולה עם אינדקס n-2, שכן זו ההגדרה הרקורסיבית של סדרת פיבונאצ'י: כל איבר שווה לסכום האיבר הקודם והאיבר הקודם לאיבר הקודם. ההתניה מבוצעת באמצעות אופרטור cond (המקביל של המילה השמורה "if" לצורך התניות בחלק מניבי Lisp). המהדר מתרגם את קוד המקור לקוד ביניים, וכן מבצע אופטמיזציה בטכניקת 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.

Symbol slot Define form Access form Modification form Test form Unbound form
name - symbol-name - - -
property list - symbol-plist set-symbol-plist - -
package defpackage symbol-package set-symbol-package - -
function defun symbol-function set-symbol-function fboundp fmakunbound
macro defmacro macro-function set-macro-function macro-function fmakunbound
dynamic value defdynamic symbol-value set-symbol-value boundp makunbound
global value defglobal symbol-global set-symbol-global gboundp gmakunbound
constant value defconstant symbol-global - constantp gmakunbound

פעולות מובנות ב-OpenLisp

<set symbol value) -> <object)

פעולת set משנה את הערך של משתנה דינמי בשם המשתנה (symbol) לערך הנתון (value).

(<concat symbol1 … symbolN) -> <symbol)

concat (מהמילה concatenate) – מחזיר את השרשור של הערכים המוכנסים לפעולה. שרשור היא פעולה בינארית אשר מאגדת את שני האופרנדים. לדוגמה, כאשר נשרשר את המילה hello עם המילה world נקבל helloworld.

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

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

הערות שוליים

Read other articles:

English noblewoman and artist Not to be confused with Diana Beauclerk, Duchess of St Albans; Diana de Vere Beauclerk; or Diana, Princess of Wales. Portrait of Lady Diana Beauclerk by Joshua Reynolds, 1763–1765 Lady Diana Beauclerk (née Lady Diana Spencer; other married name Diana St John, Viscountess Bolingbroke; 24 March 1734 – 1 August 1808) was an English noblewoman and celebrated artist. Early life Beauclerk was born into the aristocratric Spencer family as the daughter of Charles, 3...

 

 

Type of ancient Egyptian heraldic crest For the character in the Schechter Letter, see Serakh. Serekh in hieroglyphs (Unicode: 𓊁 )srḫ/ serekhfaçade (of the palace) Horus serekh, heavily embellished form In Egyptian hieroglyphs, a serekh is a rectangular enclosure representing the niched or gated façade of a palace surmounted by (usually) the Horus falcon, indicating that the text enclosed is a royal name. The serekh was the earliest convention used to set apart the royal name in ancien...

 

 

Timor Leste padaParalimpiadeBendera Timor LesteKode IPCTLSKPNComité Paralimpico Nacional de Timor-LesteMedali 0 0 0 Total 0 Penampilan Musim Panas2008201220162020Penampilan terkait lainnya Atlet Paralimpiade Perseorangan (2000) Timor Leste mula-mula mengirim para kompetitor ke Permainan Paralimpiade untuk Permainan Musim Panas 2000 di Sydney. Negara tersebut pada masa itu belum diakui sebagai negara berdaulat, dan para atletnya berpartisipasi sebagai Atlet Paralimpiade Individual. Hanya...

Peta menunjukan lokasi Santiago Data sensus penduduk di Santiago City Tahun Populasi Persentase 199598.542—2000110.5312.49%2007126.2441.85% Untuk ibu kota negara Chili, lihat Santiago de Chile. Santiago City adalah kota yang terletak di provinsi Isabela, Filipina. Pada tahun 2010, kota ini memiliki populasi sebesar 126.244 jiwa atau 27.538 rumah tangga. Pembagian wilayah Secara administratif Santiago City terbagi menjadi 37 barangay, yaitu: Abra Ambalatungan Balintocatoc Baluarte Bannawag N...

 

 

Vice President of India from 2007 to 2017 Mohammad Hamid AnsariAnsari in 201612th Vice President of IndiaIn office11 August 2007 – 11 August 2017PresidentPratibha PatilPranab MukherjeeRam Nath KovindPrime MinisterManmohan SinghNarendra ModiPreceded byBhairon Singh ShekhawatSucceeded byM. Venkaiah NaiduPermanent Representative of India to the United NationsIn officeJanuary 1993 – January 1995PresidentShankar Dayal SharmaPreceded byC.R. GharekhanSucceeded byPrakash ShahAmb...

 

 

Cet article est une ébauche concernant un coureur cycliste letton. Vous pouvez partager vos connaissances en l’améliorant (comment ?). Pour plus d’informations, voyez le projet cyclisme. Dainis OzolsInformationsNom court Дайнис ОзолсNaissance 11 septembre 1966 (57 ans)SmilteneNationalités soviétique (jusqu'au 24 décembre 1991)lettonne (depuis le 25 décembre 1991)Équipes professionnelles 1994Trident-Schick1995Novell1997-1998Mroz2000MAT-Ceresit-CCCmodifier - mod...

Halo, Plastikspork, Selamat Datang di Wikipedia Bahasa Indonesia! Memulai Memulai Anda sebagai pengguna baru dapat melihat Pengantar terlebih dahulu. Untuk mencoba-coba menyunting, silakan gunakan bak pasir. Tuliskan juga sedikit profil Anda di Pengguna:Plastikspork, halaman profil dan ruang pribadi Anda, agar kami dapat lebih mengenal Anda. Baca juga Pancapilar sebelum melanjutkan. Ini adalah lima hal penting yang mendasari hari-hari Anda bersama Wikipedia di seluruh dunia. Bantuan Bantuan ...

 

 

1981 studio album by Adam and the AntsPrince CharmingStudio album by Adam and the AntsReleased6 November 1981StudioAir Studios, London, EnglandGenreNew waveLength37:21LabelCBSProducerChris HughesAdam and the Ants chronology Kings of the Wild Frontier(1980) Prince Charming(1981) Friend or Foe(1982) Singles from Prince Charming Stand and DeliverReleased: 1 May 1981 Prince CharmingReleased: 4 September 1981 Ant RapReleased: 4 December 1981 Prince Charming is the third and final album by...

 

 

这是马来族人名,“尤索夫”是父名,不是姓氏,提及此人时应以其自身的名“法迪拉”为主。 尊敬的拿督斯里哈芝法迪拉·尤索夫Fadillah bin Haji YusofSSAP DGSM PGBK 国会议员 副首相 第14任马来西亚副首相现任就任日期2022年12月3日与阿末扎希同时在任君主最高元首苏丹阿都拉陛下最高元首苏丹依布拉欣·依斯迈陛下首相安华·依布拉欣前任依斯迈沙比里 马来西亚能源转型与�...

Australian rules football club This article is about the Australian rules football team. For the defunct baseball team, see Gold Coast Suns (baseball). Australian rules football club Gold Coast SunsNamesFull nameGCFC Limited, trading as Gold Coast Suns[1]Nickname(s)Suns, Sunnies, Coasters2023 seasonHome-and-away seasonAFL: 15thLeading goalkickerAFL: Ben King (40 goals)Gold Coast Suns Club ChampionAFL: Noah AndersonClub detailsFounded2009; 15 years ago (2009)Colours&#...

 

 

Close friend of Anne Frank (1928–2022) and Holocaust survivor Hannah Pick-GoslarPortrait of Hannah Pick-Goslar in the Anne Frank House in October 2012, photographed by Cris Toala OlivaresBornHanna Elisabeth Goslar(1928-11-12)12 November 1928Tiergarten, Berlin, GermanyDied28 October 2022(2022-10-28) (aged 93)Jerusalem, IsraelOther namesHanneliEducation6th Montessori SchoolMontessori Lyceum AmsterdamOccupationNurseKnown forFriendship with Anne FrankSpouseWalter Pinchas PickChil...

 

 

This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Kōhaku Uta Gassen – news · newspapers · books · scholar · JSTOR (September 2018) (Learn how and when to re...

Greek geographer, philosopher and historian (64/63 BC–c.24 AD) This article is about the Greek geographer. For other people called Strabo, see Strabo (disambiguation). Strabo16th-century engraving of StraboBorn64 or 63 BCAmaseia, Pontus(modern-day Amasya, Turkey)Diedc. AD 24(aged c. 87)Roman EmpireOccupationsGeographerPhilosopherHistorian Strabo[n 1] (/ˈstreɪboʊ/; Greek: Στράβων Strábōn; 64 or 63 BC – c. 24 AD) was a Greek geographer, ...

 

 

Place in Minas Gerais, BrazilMunicípio de Carangola FlagSealLocation in the state of Minas GeraisCoordinates: 20°43′58″S 42°01′44″W / 20.73278°S 42.02889°W / -20.73278; -42.02889CountryBrazilStateMinas GeraisSettled07/01/1882Government • MayorPaulo Petersen (2017-2020)Elevation399 m (1,309 ft)Population (2020 [1]) • Total33,011 • DemonymcarangolenseTime zoneUTC−3 (BRT)Postal Code (CEP)36800-0...

 

 

三井倉庫ホールディングス株式会社MITSUI−SOKO HOLDINGS Co.,Ltd. 本社ビル外観種類 株式会社市場情報 東証プライム 93021950年4月21日上場 大証1部(廃止) 93022013年7月12日上場廃止 略称 三井倉庫HD、MSH本社所在地 日本〒105-0003東京都港区西新橋三丁目20番1号設立 1909年10月11日業種 倉庫・運輸関連業法人番号 2010401046416 事業内容 グループの経営管理、不動産事業代表者 古賀博文�...

FC LorientSaison 2014-2015 Généralités Couleurs Tango, noir et blanc Stade Stade du Moustoir (18 500 places) Président Loïc Féry Entraîneur Sylvain Ripoll Résultats Championnat 16e 43 points (12V, 7N, 19D)(44 buts pour, 50 buts contre) Coupe de France Trente-deuxièmes de finale (éliminé 1-0 face à l'US Avranches (Nat)) Coupe de la Ligue Huitièmes de finale (éliminé 1-0 face à l'AS St-Étienne) Meilleur buteur Jordan Ayew (12) Meilleur passeur Jordan Ayew (6) Maillots Dom...

 

 

Championnats d'Europe de natation en petit bassin Généralités Sport Natation sportive Création 1991 Organisateur(s) Ligue européenne de natation Périodicité Annuelle Site web officiel len.eu Palmarès Meilleure nation Allemagne Pour la compétition en cours voir : Championnats d'Europe de natation en petit bassin 2023 modifier Les Championnats d'Europe de natation en petit bassin sont une compétition de natation sportive organisée annuellement par la Ligue européenne de n...

 

 

Vollgummireifen für Lkw (1919) Vollgummireifen an Schubkarre Vollgummireifen sind eine Bauart von Reifen, die seit 1871 für verschiedene Fahrzeugarten benutzt werden. Vollgummireifen sind im Gegensatz zu Luftreifen pannensicher, haben eine hohe Tragfähigkeit, dagegen einen schlechteren Dämpfungsgrad und eine geringere Traktion. Der Vollgummireifen verursacht beim Überfahren eines kleinen Hindernisses bei gleicher Belastung dreimal stärkere Vertikalstöße.[1] Ein im 19. Jahrhund...

Sacra Famiglia con san Giovannino, san Giacomo Maggiore e san Marco (nota come Pala Fugger dal nome della committenza)AutoreGiulio Romano Data1521-1522 Tecnicasconosciuto Ubicazionechiesa di Santa Maria dell'Anima, Roma Pala Fugger è un dipinto di Giulio Romano. Intorno al 1520, Jakob Fugger (1454-1525), facoltoso banchiere di Augusta, commissiona il dipinto per l'altare della cappella di famiglia che dedica a San Marco in Santa Maria dell'Anima, chiesa dei cattolici di lingua tedesca. All'i...

 

 

Der Titel dieses Artikels ist mehrdeutig. Weitere Bedeutungen sind unter Mailand (Begriffsklärung) aufgeführt. MilanoMailand MilanoMailand (Italien) Staat Italien Region Lombardei Metropolitanstadt Mailand (MI) Lokale Bezeichnung Milan Koordinaten 45° 28′ N, 9° 11′ O45.46259.1863888888889120Koordinaten: 45° 27′ 45″ N, 9° 11′ 11″ O Höhe 120 m s.l.m. Fläche 182 km² Einwohner 1.349.930 (31. Dez. 2022)[...