Im Gegensatz zum ach-so-beliebten Java *kann* man in Lisp z.B. das Range-Checking von Arrays abschalten. Der Ruf, Lisp sei eine langsame Sprache rührt im wesentlichen von zwei Punkten:
1. Es geht immer noch das Gerücht um, Lisp sei interpretiert, dabei waren effiziente Lisp-Compiler schon lange üblich, bevor Java das Licht der Welt erblickte.
2. Es ist in Lisp so bequem für alles (langsame) Listen zu nehmen. In der Tat hatte Lisp in den 60ern nicht viel mehr zu bieten. Heute bietet z.B. Common-Lisp mehr effiziente Datenstrukturen als die meisten populären Skript- oder Implementierungssprachen, darunter natürlich Vektoren, Arrays, Hash-Maps, Bitfelder, etc.
Die Liste der falschen Vorurteile gegen Lisp ist so lange wie seine Geschichte. Hier ein paar Beispiele:
Falsch ist: Lisp ist eine funktionale Programmiersprache Wahr ist: Man kann in Lisp funktional Programmieren, aber auch imperativ, objektorientiert, deklarativ und mit einigen anderen Paradigmen
Falsch ist: Lisp ist ausschließlich für KI geeignet Wahr ist: Lisp wurde tatsächlich gerne in der KI benutzt, weil man in der KI abstrakte und komplexe Probleme effizient lösen musste. Es gibt heute aber Unterstützung für "alltägliche" Programmierung, skalierbare Server-Anwendungen und viele Spezialgebiete
Falsch ist: Lisp ist unleserlich weil es viele Klammern und Prefix-Notation verwendet Wahr ist: In der Tat hat Lisp eine sehr einfache konkrete Syntax, die vor allem auf Klammern basiert. Dies macht Lisp-Code sehr leicht zu parsen, zu generieren und durch eine IDE zu unterstützen. Durch einen guten Editor und etwas Übung lernt man Lisp-Code viel schneller zu lesen als üblichen Infix-Code. Die Prefix-Notation macht es überflüssig Operator-Prezedenzen und viele syntaktische Ausnahmen auswendig zu lernen, weshalb man sich viel leichter auf das eigentlich Problem konzentrieren kann statt durch syntaktische Details der Sprache abgelenkt zu werden
Falsch ist: Lisp hat Makros, das ist böse, wie man z.B. an C/C++ sehen kann Wahr ist: Lisp hat Makros. Diese sind aber nicht vergleichbar mit C/C++ Makros, denn im Gegensatz zu diesen sind sie nicht nur mächtiger, sondern auch weit weniger gefährlich. Sie beruhen nämlich nicht auf schlichter Textsubstitution, sondern sind "Programme, die Programme schreiben", was ja auch durch Model Driven Architecture (MDA), Domain-Specific-Languages und die vielen populären Code-Generatoren belegt wird.
Lisp ist eine der modernsten (nicht populärsten) Programmiersprachen, die es heutzutage gibt. Das liegt auch daran, dass man in Lisp extrem einfach die Sprache erweitern kann, was in Perl, Java und vielen anderen Sprachen nur durch Modifikation des Compilers/Interpreters möglich ist. Es gibt wohl keine Sprache, die in dieser Hinsicht an Lisp heranreicht.
Gruß von einem, der sein Geld (leider) mit Java verdient...
Im Gegensatz zum ach-so-beliebten Java *kann* man in Lisp z.B. das Range-Checking von Arrays abschalten. Der Ruf, Lisp sei eine langsame Sprache rührt im wesentlichen von zwei Punkten:
1. Es geht immer noch das Gerücht um, Lisp sei interpretiert, dabei waren effiziente Lisp-Compiler schon lange üblich, bevor Java das Licht der Welt erblickte.
2. Es ist in Lisp so bequem für alles (langsame) Listen zu nehmen. In der Tat hatte Lisp in den 60ern nicht viel mehr zu bieten. Heute bietet z.B. Common-Lisp mehr effiziente Datenstrukturen als die meisten populären Skript- oder Implementierungssprachen, darunter natürlich Vektoren, Arrays, Hash-Maps, Bitfelder, etc.
Die Liste der falschen Vorurteile gegen Lisp ist so lange wie seine Geschichte. Hier ein paar Beispiele:
Falsch ist: Lisp ist eine funktionale Programmiersprache
Wahr ist: Man kann in Lisp funktional Programmieren, aber auch imperativ, objektorientiert, deklarativ und mit einigen anderen Paradigmen
Falsch ist: Lisp ist ausschließlich für KI geeignet
Wahr ist: Lisp wurde tatsächlich gerne in der KI benutzt, weil man in der KI abstrakte und komplexe Probleme effizient lösen musste. Es gibt heute aber Unterstützung für "alltägliche" Programmierung, skalierbare Server-Anwendungen und viele Spezialgebiete
Falsch ist: Lisp ist unleserlich weil es viele Klammern und Prefix-Notation verwendet
Wahr ist: In der Tat hat Lisp eine sehr einfache konkrete Syntax, die vor allem auf Klammern basiert. Dies macht Lisp-Code sehr leicht zu parsen, zu generieren und durch eine IDE zu unterstützen. Durch einen guten Editor und etwas Übung lernt man Lisp-Code viel schneller zu lesen als üblichen Infix-Code. Die Prefix-Notation macht es überflüssig Operator-Prezedenzen und viele syntaktische Ausnahmen auswendig zu lernen, weshalb man sich viel leichter auf das eigentlich Problem konzentrieren kann statt durch syntaktische Details der Sprache abgelenkt zu werden
Falsch ist: Lisp hat Makros, das ist böse, wie man z.B. an C/C++ sehen kann
Wahr ist: Lisp hat Makros. Diese sind aber nicht vergleichbar mit C/C++ Makros, denn im Gegensatz zu diesen sind sie nicht nur mächtiger, sondern auch weit weniger gefährlich. Sie beruhen nämlich nicht auf schlichter Textsubstitution, sondern sind "Programme, die Programme schreiben", was ja auch durch Model Driven Architecture (MDA), Domain-Specific-Languages und die vielen populären Code-Generatoren belegt wird.
Lisp ist eine der modernsten (nicht populärsten) Programmiersprachen, die es heutzutage gibt. Das liegt auch daran, dass man in Lisp extrem einfach die Sprache erweitern kann, was in Perl, Java und vielen anderen Sprachen nur durch Modifikation des Compilers/Interpreters möglich ist. Es gibt wohl keine Sprache, die in dieser Hinsicht an Lisp heranreicht.
Gruß von einem, der sein Geld (leider) mit Java verdient...