...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
Welche Funktionale und Logisch Programmiersprache als ...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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).XtraNine hat geschrieben:Aber ich weiß nicht was ich da nehmen sollte, weil es auf diesen Gebiet einfach zu viele Sprachen gibt.
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.
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: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
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.XtraNine hat geschrieben:am besten wäre es sicherlich wenn es eine Logisch und Funktionale Sprache gibt, dies sich mit Python verbinden lässt
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
-
- 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
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
Bei der logischen Programmierung ist Prolog wohl die "Vorzeigesprache". Ist jedenfalls Bestandteil vieler KI-Einführungsveranstaltungen an Unis.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 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.
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.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.
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.Ja (^^), am besten wäre es sicherlich wenn es eine Logisch und Funktionale Sprache gibt, dies sich mit Python verbinden lässt
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.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Eine Anleitung steht übrigens im PythonInfo-Wiki unter Using both Python & Haskell with ctypes.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.
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
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich lege da auch noch ein paar meiner mit ocaml getaggten Bookmarks dazu.mawe hat geschrieben:OCaml
Ebenso die haskell-getaggten Bookmarksmawe hat geschrieben:Haskell
Ansonsten ist die Dokumentation zu Haskell meiner Meinung nach (noch) etwas dürr.
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.
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: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.
Im Moment nicht, da ich eben durch Practical OCaml ziemlich enttäuscht bin.mawe hat geschrieben:@Leonidas: Was ist aus deinem OCaml-Projekt geworden? Machst du da noch was?
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
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi Leonidas!
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
On Lisp ist sehr gut, aber nix für schwache Nerven (sprich: Anfänger)Leonidas hat geschrieben:Gut soll auch das Buch vom Lisp-Guru, Paul Graham sein.
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 geweintLeonidas hat geschrieben:Ich habe mich eigentlich schon ziemlich auf das Buch gefreut und es schon lange in meinen Amazon-Bookmarks gehabt,
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
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
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
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.