Buch zu Lisp
-
Prolog und Lisp sind keine Scriptsprachen, mit Scriptsprachen bezeichnet man eher so Dinge, wie ShellSkripte, Perl, Ruby, Python etc.
Ich lese als Lisp Buch Paradigms of AI Programming, dass Buch ist relativ gut, aber auch ziemlich komplex und zeigt dir auch praktische Anwendungen für Lisp (naja, wenn du AI Probleme als praktisch ansiehst ;)). Wird aber ein richtiger Hammer, so dass ich es bisher nicht komplett gelesen habe. Eine Einführung in Prolog (mit einer Lisp-Like Syntax, da auch ein Prolog Interpreter/Compiler entwickelt wird) und Scheme ist auch enthalten.
-
Thx kingruedi,
ich seh' schon... Es wird ein teurer Kauf werden ~~... Werd mir zwei Bücher zulegen
mfg,
lispnoob
-
ich schätze mal, der weg über python wird aber einfacher sein, weil python ja auch noch prozedurale programmierung unterstützt, wäre also dann ein fließender übergang von c/c++ zum funktionalen lisp...
-
nach meiner erfahrung gibt es keinen wie auch immer gearteten "fließenden" übergan g von c++ zu lisp.. auch nicht über python

entweder man stellt sich drauf ein, was vollkommen neues zu lernen und zu denken, oder man wird lisp nicht verstehen.
so long.
-
otze schrieb:
ich schätze mal, der weg über python wird aber einfacher sein, weil python ja auch noch prozedurale programmierung unterstützt, wäre also dann ein fließender übergang von c/c++ zum funktionalen lisp...
Erstens ist Lisp nicht funktional, zweitens unterstützt Lisp auch prozedurale Programmierung.
-
Erstens ist Lisp nicht funktional
Ich kann auch sagen, Java ist nicht OO, sondern erst SmallTalk. Ähnlich verhält es sich IMHO mit LISP gegenüber sagen wir Haskell. Bei weitem nicht so funktional, aber irgendwie doch funktional.
-
Java-Programme (von Anfänger-Werken abgesehen) sind in der Regel OO, Lisp-Programme (von Uni-Beispielen abgesehen) sind in der Regel nicht funktional. Das ist das entscheidende Kriterium.
-
Erstens ist Lisp nicht funktional
LISP ist die Sprache und steht nicht für ein in LISP geschreibenes Programm, oder? Also geht es darum, ob die Sprache funktional ist. Jetzt müsste man natürlich genau definieren, wann eine Sprache funktional ist und wann nicht, aber LISP erfüllt immerhin die grundlegenden Ansprüche, die ich an eine funktionale Sprache stelle.
Aber so wie ich dich verstehe, sind die merkmale einer Sprache irrelevant. Das einzig wichtige ist, wie die Mehrheit der Benutzer mit der Sprache umgehen.
-
Richtig, die Nutzer machen die Sprache, wenngleich das immer noch nicht absolutistisch zu sehen ist. Aber Lisp ist erstens keine Mainstream-Sprache wie Java, so dass du davon ausgehen kannst, dass ein signifikanter Teil der Lisp-Programmierer wirklich Ahnung hat. Zweitens ist Lisp schon relativ alt, eine Riege mit Fortran, Cobol und den anderen Dinosauriern. Es steht also nicht zu befürchten, dass plötzlich noch irgendwer paradigmenverändernde Entdeckungen, vergleichbar mit generischer Programmierung in C++ (mal kurz denken ... Templates Ende der 80er eingeführt, 94 wurde die STL schon in den Standard aufgenommen) o.ä. macht.
Welche anderen Definitionen gibt es noch? Man kann danach gehen, was sich der Erfinder der Sprache gedacht hat. John McCarthy hat mal gesagt, er hatte den Lambda-Kalkül nicht wirklich verstanden, als er LISP entwickelt hat. LISPs LAMBDA hatte außer dem Namen nicht viel mit Churchs λ zu tun.
Man kann danach gehen, welche Features die Sprache unterstützt. OK Lisp hat Funktionen höhrer Ordnung und anonyme Funktionen, aber wenn ich mich in C++ nur hart genug anstrenge, bekomme ich da auch sowas in der Art.
Vielleicht auch danach, welche Features sie nicht hat -- funktionale Programmierung zeichnet sich durch Abwesenheit von Zuweisungen aus. Lisp hat SETQ und Konsorten, eigentlich hat nur Haskell keine Zuweisung, seh ich das richtig? Nach der Definition wär SML imperativ. Vielleicht steht auch was in der Sprachdefinition. Die Hyperspec schweigt sich leider aus, "Common Lisp - The Language 2" ebenfalls. Gibts noch mehr? IMHO ist einfach die Definition über die übliche Praxis die nützlichste.
-
Lisp hat SETQ und Konsorten, eigentlich hat nur Haskell keine Zuweisung, seh ich das richtig?
Nein, XSL(T) hat AFAIK auch keine Zuweisung

-
Nach der Definition wär SML imperativ.
Meiner Meinung nach ist SML sowohl imperativ, als auch applikativ.
Ansonsten stimme ihc dir nun zu.