New Immissions/Updates:
boundless - educate - edutalab - empatico - es-ebooks - es16 - fr16 - fsfiles - hesperian - solidaria - wikipediaforschools
- wikipediaforschoolses - wikipediaforschoolsfr - wikipediaforschoolspt - worldmap -

See also: Liber Liber - Libro Parlato - Liber Musica  - Manuzio -  Liber Liber ISO Files - Alphabetical Order - Multivolume ZIP Complete Archive - PDF Files - OGG Music Files -

PROJECT GUTENBERG HTML: Volume I - Volume II - Volume III - Volume IV - Volume V - Volume VI - Volume VII - Volume VIII - Volume IX

Ascolta ""Volevo solo fare un audiolibro"" su Spreaker.
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
LISP - Wikipedia

LISP

aus Wikipedia, der freien Enzyklopädie

Lisp

Basisdaten
Paradigmen: objektorientiert, funktional, prozedural
Erscheinungsjahr: 1958
Designer:
Entwickler: John McCarthy, Steve Russell, Tim Hart und Mike Levin
Aktuelle Version:  ()
Typisierung: dynamisch, stark
wichtige Implementierungen:
Dialekte: Common Lisp, Scheme, Emacs Lisp
Einflüsse:
Beeinflusste: Logo, Smalltalk, Scheme, CLOS, Dylan, Python, TCL
Betriebssystem:
Lizenz:
Website:

LISP ist eine Programmiersprache, die 1959 am Massachusetts Institute of Technology (MIT) als Implementierung des Lambda-Kalküls entstand (ANSI INCITS 226-1994 (R1999), Approved American National Standard Information Technology - Programming Language - Common Lisp (formerly ANSI X3.226-1994 (R1999))).

LISP steht für List Processing. Damit waren ursprünglich FORTRAN-Unterprogramme gemeint, mit denen symbolische Berechnungen durchgeführt werden sollten, wie sie im Lambda-Kalkül gebraucht werden. Steve Russell, einer der Studenten von John McCarthy, kam dann auf die fundamentale Idee, einen Interpreter für diese Ausdrücke zu programmieren, womit die Programmiersprache LISP geboren war.

Die Grunddatenstrukturen von LISP sind Einzelwerte (Skalarwerte), die Atome genannt werden und Listen. Die Listen können beliebig verschachtelt werden (Listen von Listen). Damit lassen sich auch leicht Datenstrukturen wie ein assoziatives Array implementieren. Die Listen werden mit runden Klammern dargestellt:

(A B C)

Auch Programmanweisungen sind Listen, was es ermöglicht, Programmteile zur Laufzeit beliebig zu manipulieren. Dies ist beispielsweise wichtig, wenn der Programmierer neue Kontrollstrukturen oder Objektsysteme (OOP) entwickeln will (Metaprogrammierung, Makros).

Lisp bietet dem Programmierer große Flexibilität und weit reichende Einflussmöglichkeiten, weshalb es manchmal auch als „programmierbare Programmiersprache“ bezeichnet wird. Datenstrukturen werden dynamisch aufgebaut, ohne dass der Programmierer explizit Speicherplatz reservieren oder freigeben muss (siehe auch automatische Speicherbereinigung). Deklarationen für Daten sind nicht nötig und ein Lisp-Symbol kann als Variable beliebige Arten von Objekten bezeichnen. Viele dieser Eigenschaften sind im Laufe der Zeit in weitere Programmiersprachen übernommen worden. Anfang der 60er waren sie jedoch ihrer Zeit weit voraus.

Programme in Lisp können interpretiert oder von einem Compiler in effizienten Maschinencode übersetzt werden. Dadurch verbinden sich für den Programmierer die Vorteile einer Interpretersprache (schnellere Entwicklungszyklen, einfachere Testbarkeit, höhere Flexibilität) mit denen einer kompilierten Sprache (Ausführungsgeschwindigkeit).

Das Akronym LISP wird manchmal scherzhaft als „Lots of Irritating Superfluous Parentheses“ (eine Menge verwirrender, überflüssiger Klammern) interpretiert.

Inhaltsverzeichnis

[Bearbeiten] Minimaler Funktionsumfang für Lisp

Nur ganz wenige Operatoren und ein allgemeiner Mechanismus zur Funktionsdefinition sind nötig, um ein minimales Lisp-System zu implementieren. Die folgenden Funktionen sind im ursprünglichen Bericht von McCarthy enthalten:

  • first (gibt das erste Element einer Liste zurück; hieß ursprünglich car)
  • rest (gibt die Restliste (ohne das erste Element) zurück; hieß ursprünglich cdr)
  • cons (verknüpft zwei Listen)
  • quote (verhindert die Auswertung des nachfolgenden Objekts)
  • eq (Test auf Gleichheit)
  • cond (bedingte Ausführung)
  • Mechanismus zur Funktionsdefinition

Bereits mit diesen Sprachmitteln kann ein bemerkenswerter Teil der Funktionen, die übliche Lisp-Systeme mitbringen, definiert werden. Typischerweise besteht ein Lisp-System auch aus einem kleinen, oft in C implementierten Kern, und einer großen Bibliothek von weiteren Lisp-Definitionen.

[Bearbeiten] Bedeutung

Historisch war LISP zusammen mit Prolog eine der Programmiersprachen der künstlichen Intelligenz.

Im Unterschied zu Europa, wo Programmiersprachen wie Assembler, Fortran oder Pascal als klassische Vertreter der Familie der prozeduralen Programmiersprachen gelehrt wurden, war und ist zum Teil bis heute in den USA LISP die erste gelehrte Programmiersprache. Das hatte einen großen Einfluss, da es sich bei den klassischen Vertretern der prozeduralen Sprachfamilien um Vertreter einer statischen Verarbeitungsweise von Daten handelt, während dagegen unter anderem Lisp ein strikt dynamisches Konzept vertritt.

[Bearbeiten] Zitat

Lisp is a programmable programming language. (Lisp ist eine programmierbare Programmiersprache) Edsger Dijkstra, CACM, 15:10 – wird auch anderen, wie John Foderaro, zugeschrieben. [1]

[Bearbeiten] LISP-Dialekte

Heute verwendete Dialekte:

  • Common Lisp beruht auf ZetaLISP, Franz Lisp und einigen Einflüssen von InterLISP und ist heute der Industriestandard, was die praktische Anwendung angeht. Der Standard ist sehr umfangreich und bietet Unterstützung für prozedurale (unhygienische) Makros, lexikalische wie dynamische Variablenbindung und vieles mehr.
  • Scheme ist eine akademische, minimale und elegante Variante, die Continuations unterstützt. Im Gegensatz zu Common Lisp kennt sie nur lexikalische Variablenbindung und hygienische Makros. Sie findet aufgrund ihrer Einfachheit häufig in der Lehre Gebrauch, obgleich auch produktive Programmierung mit ihr möglich ist und praktiziert wird.
  • Emacs Lisp ist die Skriptsprache des Emacs-Editors.
  • Jess ist ein verbreiteter LISP-Dialekt auf Java-Basis zur regelorientierten Erstellung von webbasierten Expertensystemen.

Andere LISP-Varianten:

Bekannte Abkömmlinge:

[Bearbeiten] Programmbeispiele

Das berühmte Hallo-Welt-Programm in Common-Lisp:

(format t "Hallo Welt!~%")

Iteration durch eine Liste

(dolist (elem '(ROT BLAU GRÜN)) (print elem))

ergibt als Resultat

ROT 
BLAU 
GRÜN 
NIL

(ROT BLAU GRÜN) ist eine Liste. Der Anführungsstrich vor der Liste (Quote) bedeutet, dass die Liste direkt ohne Auswertung übernommen werden soll. Wenn das Quote nicht stehen würde, dann würde das bedeuteten, dass ROT als Befehl mit den Argumenten BLAU und GRÜN interpretiert würde. Das NIL im Resultat stammt nicht vom Listendurchlauf, sondern ist der Rückgabewert des gesamten Ausdrucks.

Ein Lisp-Programm zur Berechnung der Fakultät (nach den Semikola folgt ein einzeiliger Kommentar):

(defun ! (n)
   (cond ((= n 0) 1)                   ; 0! = 1
         ((> n 0) (* n (! (- n 1)))))) ; n! = n * (n - 1)!

Aufruf:

(! 6)

[Bearbeiten] Weblinks

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu