Welche Funktionale und Logisch Programmiersprache als ...

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

...als Ergänzung zu Python

Hallo, ich hab da eine frage:

Ich würde auch gerne mal in die Funktionale Programmierung und Logische Programmierung (http://de.wikipedia.org/wiki/Logische_Programmierung) reinschnuppern. Aber ich weiß nicht was ich da nehmen sollte, weil es auf diesen Gebiet einfach zu viele Sprachen gibt.

An der Logischen Programmierung interessiert mich das man einfach alle Fakten und Kriterien eingibt, und dann ne Anfrage stellt die das alles löst. Ich denke damit lässt sich viel Schreibkram sparen, wenn es darum geht "nur" Daten auszuwerten oder Mathematische Sachen zu lösen.

Die Funktionale Programmierung interessiert mich weil ich mit dem Paradigma bisher nichts zu tun hatte und es auch noch nicht richtig verstehe. Ich denke es würde mir weiter helfen wenn ich nebenbei mit so einer Sprache ein wenig Spiele, um dann zu verstehen wie das ganze richtig funktioniert, damit ich so was auch in Python benutzen kann :)

Ja (^^), am besten wäre es sicherlich wenn es eine Logisch und Funktionale Sprache gibt, dies sich mit Python verbinden lässt :)

LG Xtra
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

XtraNine hat geschrieben:Aber ich weiß nicht was ich da nehmen sollte, weil es auf diesen Gebiet einfach zu viele Sprachen gibt.
Okay, zuerst einmal das übliche Mantra der meisten Informatikstundenten: "Uhh, Sprache X ist ja grauenhaft". Für Sprache X darfst du nun quasi jede nicht-Mainstream-Sprache einsetzen ;) - Was ich damit sagen will: funktionale Programmierung ist anfangs sehr ungewohnt, und die Wege etwas zu lösen scheinen sehr seltsam. Das ist recht unabhängig von der verwendenten Programmiersprache (wie du im Thread reduce_str gesehen hast, sind die rekursiven Lösungen von BlackJck und von mir beide etwas ungewohnt - und ich habe dafür vergleichsweise lange gebraucht).
Ansonsten habe ich eine kleine Liste von funktionalen Programmiersprachen die du dir mal ansehen könntest:

O'Caml, dessen Compiler unglaublich schnellen Code produziert, unter allen möglichen Betriebssystemen läuft und das sowohl funktional als auch zum Beispiel objektorientiert verdendet werden kann. Es gibt auch einige Bücher dazu, zum Beispiel ein etwas älteres von O'Reilly.

Haskell, eine rein funktionale Sprache von der Python vieles gelernt hat, zum Beispiel ist dort die LC-Syntax entliehen. Sie ist schön standarisiert (Haskell'98) und hat mehrere hochqualitative Compiler/Interpreter, ist aber auch sehr aktiv in Entwicklung. Die Lernkurve ist jedoch vergleichsweise steil.

Lisp, ein Oberbegriff für viele Dialekte, von denen die interessantesten Common Lisp und Scheme sind. CL ist das Ultra-Schwergewicht unter den Programmiersprachen, hat viele brauchbare Implementationen und dessen Killer-App ist das CAS Maxima. Scheme ist ein leichgewichtiger Dialekt von Lisp, der einfacher zu lernen ist. An Lisp ist es schön, dass man dort auf Dinge trifft die in Python identisch sind - weil Python auch von Lisp gelernt hat. Beide Sprachen haben mehr oder weniger umfassende Dokumentation, man darf sie natürlich nicht mit der Dokumentation von Python oder gar Java vergleichen.
XtraNine hat geschrieben:Die Funktionale Programmierung interessiert mich weil ich mit dem Paradigma bisher nichts zu tun hatte und es auch noch nicht richtig verstehe. Ich denke es würde mir weiter helfen wenn ich nebenbei mit so einer Sprache ein wenig Spiele, um dann zu verstehen wie das ganze richtig funktioniert, damit ich so was auch in Python benutzen kann :)
Stimmt - die Idee ist natürlich sehr gut, denn aus der funktionalen Programmierung kann man sich tatsächlich einige Konzepte ausleihen und sie in Python verwenden. Das haben sich auch schon andere wie die PSF gedacht und das Modul functools hinzugefügt, ebenso wie Google mit Goog-Goopy.
XtraNine hat geschrieben:am besten wäre es sicherlich wenn es eine Logisch und Funktionale Sprache gibt, dies sich mit Python verbinden lässt :)
Der erste Prolog-Interpreter wurde tatsächlich in Lisp implementiert. Und du kannst Scheme vermutlich über seltsame Wege auch mit Python verbinden, wie zum beispeil ein .NET Assembly mit Bigloo erstellen und es dann mit Python.Net oder IronPython verwenden.

So, und nun ist es spät, ich überlasse damit das Wort an Leute die mehr Erfahrung mit funktionalen Programmiersprachen haben als ich.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Danke dir für die schnelle Antwort Leo :) Ich werde mir mal die von dir genanten Sprachen ansehen.

So, ich sag mal auch gn8, ist schon recht Spät geworden.

LG Xtra
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Die Auswahl von Leonidas ist schon mal nicht schlecht ;)
Von den genannten Sprachen ist mein Favorit OCaml.

Ein paar Links:

OCaml:
* An Introduction to the Objective Caml Programming Language
Sehr gutes, aktuelles Tutorial/Buch.
* Developing Applications with Objective Caml
Tja, wenn man ein Buch ausführlich nennen will, dann dieses :)

Haskell:
Damit hab ich mich bisher kaum genauer beschäftigt, aber vor kurzem 2 interessante Links gesehen:
* Writing a Lisp Interpreter in Haskell
* Write Yourself Scheme in 48 hours

Lisp
* Practical Common Lisp
Geniales Buch!

PS: Vor kurzem ist das OCaml-Pendant zu Practical Common Lisp erschienen (Practical Ocaml). HÄNDE WEG! Das ist wohl das schlechteste Programmierbuch das ich je gelesen habe.

@Leonidas: Was ist aus deinem OCaml-Projekt geworden? Machst du da noch was?

Gruß, mawe
BlackJack

XtraNine hat geschrieben:Ich würde auch gerne mal in die Funktionale Programmierung und Logische Programmierung (http://de.wikipedia.org/wiki/Logische_Programmierung) reinschnuppern. Aber ich weiß nicht was ich da nehmen sollte, weil es auf diesen Gebiet einfach zu viele Sprachen gibt.
Bei der logischen Programmierung ist Prolog wohl die "Vorzeigesprache". Ist jedenfalls Bestandteil vieler KI-Einführungsveranstaltungen an Unis.

Bei funktionalen Sprachen würde ich Haskell und/oder Scheme empfehlen.

Auch ganz interessant ist die Sprache Oz die OOP, funktionale verteilte, logische und Constraint-Programmierung verbindet.

Und in diesen ganzen ähnlichen Threads kam Erlang noch nicht zur Sprache, eine funktionale Sprache, speziell für verteilte Programme von Ericsson entwickelt.
An der Logischen Programmierung interessiert mich das man einfach alle Fakten und Kriterien eingibt, und dann ne Anfrage stellt die das alles löst. Ich denke damit lässt sich viel Schreibkram sparen, wenn es darum geht "nur" Daten auszuwerten oder Mathematische Sachen zu lösen.
In die Ecke dieser deklarativen Sprachen gehört übrigens auch SQL -- man sagt nur was man haben will, aber nicht wie die Daten aus den Tabellen geholt werden sollen.
Ja (^^), am besten wäre es sicherlich wenn es eine Logisch und Funktionale Sprache gibt, dies sich mit Python verbinden lässt :)
Bei den Sprachen die in "native" Binärdateien übersetzt werden können, lassen sich unter Umständen DLLs/Shared Objects erzeugen und über ctypes oder Pyrex mit Python verbinden. Der GHC Haskell-Compiler bietet zum Beispiel Schnittstellen für C-Programme.

Ansonsten gibt's noch eine Lisp-ähnliche Sprache Noodle, die in Python Bytecode übersetzt wird und für logische bzw. Constraint-Programmierung gibt's ein Python-Modul von Logilab namens logilab-constraint.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:Bei den Sprachen die in "native" Binärdateien übersetzt werden können, lassen sich unter Umständen DLLs/Shared Objects erzeugen und über ctypes oder Pyrex mit Python verbinden. Der GHC Haskell-Compiler bietet zum Beispiel Schnittstellen für C-Programme.
Eine Anleitung steht übrigens im PythonInfo-Wiki unter Using both Python & Haskell with ctypes.

Ich habe auch überlegt, ob es mit OCaml möglich ist, aber man kann bei OCaml nur mit Hilfe des Tools 'ODLL' DLLs erstellen - und sperrt damit andere Betriebssysteme aus, da es 'ODLL' im Moment nur für Windows gibt. VIelleicht wird sich das in Zukunft ja ändern - aber im Moment kann OCaml selbst es noch nicht. Schade, denn geschwindigkeitskritischen Code in OCaml auslagern ist eine sehr verlockende Idee - pycaml habe ich leider nicht zum laufen bekommen und es scheint etwas 'eingeschlafen' zu sein.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

mawe hat geschrieben:OCaml
Ich lege da auch noch ein paar meiner mit ocaml getaggten Bookmarks dazu.
mawe hat geschrieben:Haskell
Ebenso die haskell-getaggten Bookmarks
Ansonsten ist die Dokumentation zu Haskell meiner Meinung nach (noch) etwas dürr.
mawe hat geschrieben:Lisp
* Practical Common Lisp
Geniales Buch!
Ja, darüber habe ich viel gutes gelesen, wenn man mit CL starten will sicher eine gute Basis (gibts bei Apress übrigens inzwischen auch kostenlos als PDF). Gut soll auch das Buch vom Lisp-Guru, Paul Graham sein. Link ist wieder mal in meinen Bookmarks.
mawe hat geschrieben:PS: Vor kurzem ist das OCaml-Pendant zu Practical Common Lisp erschienen (Practical Ocaml). HÄNDE WEG! Das ist wohl das schlechteste Programmierbuch das ich je gelesen habe.
Bei Amazon.com hat es tatsächlich nur einen von fünf möglichen Sternen, trotz gutem technischen Reviewer. Die anderen Reviews fallen nicht besser aus - leider. Ich habe mich eigentlich schon ziemlich auf das Buch gefreut und es schon lange in meinen Amazon-Bookmarks gehabt, aber wenn es wirklich so schlecht ist, macht das keinen Sinn.
mawe hat geschrieben:@Leonidas: Was ist aus deinem OCaml-Projekt geworden? Machst du da noch was?
Im Moment nicht, da ich eben durch Practical OCaml ziemlich enttäuscht bin.

Was aber ein unglaublich gutes Buch sein soll, welches in den 20 Jahren legendären Status erreicht hat, ist "Structure and Interpretation of Computer Programs" welches auf duetsch beim Stringer-Verlag unter dem Titel "Struktur und Interpretation von Computerprogramen" erschienen ist - darin geht es weniger um das lernen von Scheme als um das lernen von Progrmmieren und ein tieferes Verständnis von Informatik. Ist allerdings ein sehr umfangreiches Werk, dafür gibt es die englische Fassung auch online zu lesen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi Leonidas!
Leonidas hat geschrieben:Gut soll auch das Buch vom Lisp-Guru, Paul Graham sein.
On Lisp ist sehr gut, aber nix für schwache Nerven (sprich: Anfänger) :)
Leonidas hat geschrieben:Ich habe mich eigentlich schon ziemlich auf das Buch gefreut und es schon lange in meinen Amazon-Bookmarks gehabt,
Ich auch. Ein Freund von mir hat sichs gekauft. Ich war ganz aufgeregt, wie er's mir gezeigt hat. Nachdem ich's durchgeblättert habe, hab ich geweint :cry:
Wie ich schon gesagt habe, das ist das (mit Abstand) schlechteste Programmierbuch das ich je gelesen habe. Ich verstehe auch Apress nicht. Dort muss doch irgendjemand das Buch gelesen haben, bevors veröffentlicht wird. Und selbst wenn ich nix vom Programmieren verstehe, stellts mir dabei die Haare auf :) Naja.

Schau dir aber mal das Tutorial (ist von der Länge her eher ein Buch) das ich im vorigen Post erwähnt habe an. Ist wirklich gut.

Und du hast natürlich recht, mit SICP sollte sich jeder Programmierer mindestens einmal beschäftigen :)

Gruß, mawe
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Wow, vielen Dank Leute :) Dann habe ich kommende Woche einiges zu tun.

Dan werde ich mir mal erstmal Prolog, Haskell und Schemel anschauen um jedes Gebiet getrennt von einander zu betrachten.

Nochmals vielen Dank und LG
XtraNine
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Dieser Kollege hat ein Python-Script gebastelt, dass mehr oder weniger das Einbetten von Haskell ermöglicht. Leider habe ich es seit damals immer noch nicht wirklich ausprobiert, da ich mit Haskell selbst noch nicht sonderlich weit gekommen bin.
Antworten