Haskell oder Scheme als "erste" Sprache?

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Benutzeravatar
Mugen
User
Beiträge: 17
Registriert: Mittwoch 24. September 2008, 23:28

Hi,

ich stelle mir schon seit längerer Zeit die Frage, welche Sprache ich von beiden als erstes "richtig" lernen soll.
Warum ich solch eine blasphemische Frage in einem Pythonforum stelle (ja, ich weiß dass die meisten der Nutzer sowieso mehrsprachig programmieren :P) liegt hauptsächlich daran, dass ich es in den vergangenen Jahren nicht auf die Reihe bekommen habe, eine Programmiersprache zu erlernen (mit Python bin ich bisher am weitesten gekommen, zumindest bis zu einem halb funktionierenden Snake-Klon und sonstigen Mini-Projekten, die auch im Forum zu finden sind).

Das liegt vermutlich daran, weil ich oft die Motivation verliere (gerade OOP hat mich in Python ziemlich verwirrt, aber irgendwie wollte ich das unbedingt in meinen Lernprojekten anwenden, vor allem weil's z.B. spätestens ab mittelgroßen Spielen unerlässlich wird (?)) und es für die Industrie-/Mainstreamsprachen meiner Meinung nach kaum Bücher gibt, die einem außer der Sprache auch fundamentale Elemente der Programmierung beibringen (ich hab zum Beispiel das Python 3-Buch von Michael Weigend durchgearbeitet - ja, sogar mit den meisten Aufgaben - doch trotzdem hatte ich nicht das Gefühl, richtig "drin" in der Materie zu sein).

In SICP bin ich bisher zur Herleitung des Wurzelziehens gekommen (danach sollen die Beispiele ja ziemlich interdisziplinär werden, was vielleicht etwas zu viel Aufarbeitung für 'nen Oberstufenschüler wie mich wäre) und hab mir auch kurz HtDP angeschaut, was mir allerdings zu langsam voranschritt und auch die Vorangehensweise, mit Animationen und Bildern die Sprache zu veranschaulichen (die Rakete etc.), gefiel mir nicht recht.
Mit der Präfixnotation und den Klammern kann ich mich ansonsten anfreunden :mrgreen: und es kam mir bisher auch so vor, dass es für Scheme und dessen Implementationen auch genug Literatur gibt (sitze momentan vor'm Little Schemer).

Nun hab ich jedoch gelesen [https://groups.google.com/forum/#!topic ... flalRW4Mys], dass Haskell ebenfalls eine gute Einsteigersprache sei und der Einstieg zumindest einfacher sei, je weniger Vorerfahrung man mit Programmiersprachen habe.
Kann man das so unterstreichen und wenn ja, was für Literatur für Einsteiger gäbe es für Haskell?


Wie man sehen kann bin ich relativ unentschlossen, aber da ich nun mal auf dieses Forum gestoßen bin und ich von Idiomen bzw. Pattern erfahren habe, überkommt mich ein gewisser Perfektionismus, sodass ich mehr oder weniger nichts "falsch" lernen möchte (bezogen auf Anfängerfehler, nicht auf die Programmiersprachenauswahl), was sich wohl jedoch nicht gänzlich in der Anfangsphase verhindern lässt (?).

Es sei vielleicht noch anzumerken, dass es mir (mittlerweile) relativ egal ist, wie schnell ich produktiv werde bzw. wie schnell Erfolge zu verzeichnen sind - ich möchte einfach mal endgültig den (optimalen) Einstieg in die Informatik haben und da scheint mir Scheme bzw. Haskell wegen seiner nicht ganz so starken multiparadigmatischen Ausrichtung naheliegend.

Was könnt ihr mir nun also empfehlen?
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Hallo Mugen.

Nachdem ich eine ganze Weile über deine Frage nachgedacht habe, ist meine Empfehlung, erstmal bei SICP und Little Schemer zu bleiben, zumal dir die Päfixnotation nichts ausmacht. Scheme halte ich für eine der besten Sprachen überhaupt, um zum Kern dessen zu gelangen, worum es beim Programmieren geht, weil es praktisch keine Syntax besitzt und man deswegen durch nichts nebensächliches bzw. oberflächliches abgelenkt wird.

Wenn du - wie ich - gerne Vorträge von schlauen Leuten ansiehst (und dir Englisch nichts ausmacht), empfehle ich dazu auch die SICP-Videos von Abelson und Sussman.

Alan Kay sagt immer "the most disastrous thing that you can ever learn is your first programming language", manchmal mit dem Zusatz "even if it's a good one". Um zu lernen, dass Programmierung auf viele verschiedene Weisen funktionieren kann, vielleicht gleich anschließend Seven Languages in Seven Weeks. Darüber habe ich gutes gehört/gelesen, allerdings habe ich es selbst noch nicht in der Hand gehabt.

Solltest du bei dieser Lektüre an Prolog Gefallen finden, empfehle ich zur Vertiefung The Art of Prolog von Sterling und Shapiro. Es ist eines der besten Bücher über Computing, das ich kenne.

Danach solltest du IMO auch irgendwann C lernen. Und natürlich vertieft Python, denn es läuft auf allen wichtigen Betriebssystemen, ist multiparadigmatisch, hat wenig, aber klare Syntax, ermöglicht verschiedene Arten der Metaprogrammierung, von Operator Overloading bis hin zu Metaklassen und Import-Hooks und hat eine sehr umfangreiche, einfach zu verwendende und ausgetestete Standard Library. Zudem gibt es massenhaft sehr gute Libraries für alle möglichen Bereiche, zB. Number Crunching (numpy, scipy), Verarbeitung natürlicher Sprache (nltk), Bildbearbeitung (PIL), grafische Benutzeroberflächen (tkinter, wxwindows, pyqt, pyside, pygtk), Webprogrammierung (wsgi, django) und vieles mehr. Und es gibt eine große Community, die einem hilft, wenn man irgendwo feststeckt.
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
Mugen
User
Beiträge: 17
Registriert: Mittwoch 24. September 2008, 23:28

Danke für die Antwort.

Dann werde ich wohl erst mal mit dem Little Schemer weitermachen.
Wäre man denn für das Niveau von SICP bereit nach TLS oder ist The Reasoned Schemer ebenfalls Pflichtlektüre?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

The Reasoned Schemer hat mit funktionaler Programmierung nichts zu tun, da geht es eher um logische Programmierung mit Kanren. Für logische Programmierung empfinde ich allerdings Prolog als besseren Einstieg. Der 2. Teil von The Little Schemer ist The Seasoned Schemer und ob die Sachen die darin vorgestellt werden so wichtig sind steht auf einem anderen Blatt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten