a) haskell auf dem mac ist kein problem. es gibt verschiedene implementationen, ich kam mit
HUGS gut zurecht.
b) haskell-kurse sind nur schon deshalb gut, weil sie einem aufzeigen, dass es auch noch andere programmier-konzepte als das ewige prozedurale und objektorientierte, was man sonst immer braucht. und im gegensatz zu prolog und konsorten ist es ein cooles konzept.
c) von allen sprachen, denen ich bisher über den weg gelaufen bin, scheint mir haskell die eleganteste. nicht die schnellste, nicht die praktischte etc., aber die eleganteste.
d) es gibt gewisse bereiche, wo du mit haskell schneller eine implementation beieinander haben wirst ( != eine schnellere implementation). allerdings nur in einigen wenigen bereichen, denn seien wir ehrlich - für grundlegende sachen greift man in c, java & co auf libraries zurück, und bei den nicht grundlegenden sachen kann haskell manchmal ziemlich ein brainfuck sein. schlichtwegs gelogen hingegen scheint mir die aussage, dass man schnell 'features' reinbaut. features - zumindest so wie ich sie verstehe - sind typisch für sprachen, wo man schnell eine routine aufrufen kann oder ein objekt anhängt. haskell-programme sind in aller regel sehr stark auf ein ziel ausgerichtet. und sachen wie desktop-applikationen sind in haskell sehr schnell ein sehr übler murks (ganz im gegensatz zu webapplikationen, wo funktionale sprachen IMHO den üblichen ansätzen zT überlegen sind).
e) und dann der entscheidende punkt, und auch der grund, weshalb ich für meine haskell-einführung dankbar bin, auch wenn ich nicht immer glücklich dabei war: funktionales programmieren gibt dir zwei sehr wesentliche theoretische grundlagen:
- Rekursion - und zwar nicht so triviales zeug wie du im java-grundkurs hast, sondern die wirklich happigen konzepte und anwendungen.
- Currying - ein Konzept welches mittels HighOrderMessaging auch in anderen und durchaus populären Sprachen immer wichtiger wird.
Gerade bei der Rekursion kann man zurecht einwenden, dass sie schlussendlich scheisse sei - dass der code meist weniger effizient, die fehleranfälligkeit dafür höher ist. aber auch wenn man nie mit rekursion programmieren will erachte ich es als wichtig und sinnvoll, dass man das konzept kennt und begriffen und jederzeit zur verfügung hat.
es gibt einen klassischen artikel von
Joel On Software, wo er sich darüber beklagt, dass die Abgänger von reinen Java-Unis im Schnitt schlechtere Programmierer sind. nicht weil java eine schlechtere Sprache ist, sondern weil sie eine leichtere Sprache ist, weil man grundlegende konzepte nicht kapieren muss, und dementsprechend auch keine Selektion innerhalb der Programmierer stattfindet. Dabei konzentriert sich Joel auf zwei Konzepte: Pointer und Rekursion. Konzepte, die im Gegensatz zu simplen Schleifen oder Vererbungen schlicht und einfach nicht jedem Hirn zugänglich sind, und wo der Trennstrich zwischen besserem Webschreiberling und gutem Programmierer gezogen werden kann.
ich empfehle dir deshalb auf alle fälle, dich mit haskell zu befassen. nicht weil du es später brauchen würdest, sondern weil dir die konzepte dahinter später zu gute kommen werden....
und ja, ich weiss, dass ich den joelOnSoftware-Artikel etwas sagen wir mal willkürlich zitiere. sein fokus liegt auf der selektion, meiner im lernen