Frage

Diese Tage, die ich bin, sich ernsthaft in die funktionale Programmierung.

Während ich bin wirklich begeistert über Haskell und die Möglichkeiten, die es scheint zu bieten, kann ich auch jetzt sehen, dass es wird eine Weile dauern, um zu lernen.In einer SO-Frage auf Wie Lerne Haskell eine Antwort, die besagt, dass es werde Monate dauern, wenn nicht Jahre, um tatsächlich "master" es.

Nun, ich weiß, C, PHP, einige Objekt-orientierte Sachen, etc.Und haben gesagt, dass Haskell nicht viel verwendet da draußen in der "realen Welt", werde ich besser dran, meine Fertigkeiten zu verbessern in der regulären Sprachen, die ich kenne?Ist Haskell lohnt sich der Kampf?

In dieser Frage auf Warum die Leute denken, funktionale Programmierung, wird fangen auf die Schlussfolgerung scheint zu sein, dass die funktionale Programmierung wird "fangen".Aber sicher prozeduralen Programmierung wird bleiben auf die top, right?

EDIT:keparo schön klärt meine Frage: Im Gegensatz zu prozeduralen Sprachen, wird es wertvoll für mich, um zu studieren Haskell und funktionale Programmierung-Paradigmen?

War es hilfreich?

Lösung

Haskell ist nicht so schwer wie die Leute zu machen, zu lernen.Haskell eröffnet sich eine neue Welt, die Sie nie wusste, Bestand für Sie.Es ist so wertvoll, zu lernen, wie jede andere Sprache.Sie kann nicht einen job finden, dass Sie zu tun Haskell-Programmierung, aber bedeutet dies wirklich eine Sprache ist nicht wertvoll?

Haskell wird Ihnen beibringen, eine Menge neuer Sachen, und es wird Ihnen zeigen, wie Sie das Programm noch besser in den Sprachen, die Sie /tun/ arbeiten mit.Sie können haben Ihre eigenen persönlichen Projekte, die in Ihrer Freizeit mit es.

Haskell ist nicht wirklich viel verwendet in der "realen Welt", wenn Sie definieren "realen Welt" als "cash-generator".Also, wenn das dein Ziel ist, dann haben Sie vielleicht zu überdenken, Ziele :p

Auch, ich weiß nicht wirklich wie, dass ein Teil der gewählten "how to learn haskell" beantworten.Es dauert Monate bis Jahre zu meistern, jeder Sprache, nicht nur Haskell.Je nachdem, wie definieren Sie "master".Ich kann die Verwendung von Haskell zu einer Recht guten Wirkungsgrad, und ich habe nur lernen, es für einen Monat, und ich habe mit der Einnahme es langsam auch.

Andere Tipps

Wenn nichts anderes, wird die änderung in der Denkweise, dass das lernen von Haskell bietet, wird Ihnen helfen, wenn Sie haben, um zurück zu gehen, um mit diesen prozeduralen Sprachen, die immer noch verwendet in die Arbeitsplatz.

Die funktionalen Paradigma ist Anfang zu machen, es ist so in verschiedenen mainstream-Anwendungen und Sprachen - Auch C++ wird werden hinzufügen ein (verkrüppelt) lambda-Ausdruck in C++0x.

Sie können auch wollen Blick auf einige der hybrid-Sprachen wie Scala oder in OCaml.Scala ist auf Twitter und OCaml verwendet wird bei Jane Street in einer Finanz-trading-Plattform.

Sie wahrscheinlich sollte nicht erwarten, dass die Verwendung Haskell annähernd so oft als ein C-Familie, Sprache in beruflichen Einstellungen.Wenn die Frage ist, ob es für Sie wertvoll zu studieren, Haskell und funktionale Programmierung-Paradigmen, die Antwort ist ja.Können Sie Ihre bereichert das Verständnis der Programmierung, um alle Ihre Arbeit.

Ich lernte, Haskell, denn es war mit Abstand der beste funktionale Sprache, die ich ausprobiert Scala, Clojure, OCaml und Schema, aber ich hatte nicht ernsthaft erwarten, es zu benutzen für die Arbeit.

Wie es sich herausstellt, ist es perfekt für alle Arten von ungeraden jobs, die zu klein sind für ein team und wäre einfach zu zeitaufwendig in Java.So weit, ich haben verwendet es für ad-hoc-Daten-Migrationen d.h.mangeln CSV-Export in ein anderes format, batch-Konvertierungen von XML (HXT ist präziser und leistungsfähiger als XSLT), screen-scraping off die internet und software Projekt Schätzung inklusive Modellierung Gefahr mit der Wahrscheinlichkeit Monade und Herstellung optimale gantt-Diagramme mit backtracking.Diese ist alle wirkliche Arbeit, die notwendig zu tun, das hätte ich mir nicht mal die Mühe gemacht, zu versuchen und zu tun in Java als wäre es ein mehrtägiges Unterfangen.

Jetzt verwende ich es anstelle von Excel für die etwas vage mathematisch-es ist etwas mehr Aufwand zu erstellen, die eine Liste von Werten in haskell-Quellcode in einem Texteditor, als es ist, geben Sie Sie in Excel.Einmal in haskell, dann kann ich das tun alle Arten von Magie wie backtracking, Wahrscheinlichkeitsverteilungen usw..Excel kann das nicht tun.Wenn ich ein Diagramm dann ich Spucke die Werte, die als CSV - (2 Zeilen) und laden Sie Sie in Excel.

Der einzige Nachteil ist, dass es mehrere Monate dauern, Sie zu beherrschen, aber der Mühe Wert, IMHO.

Im Gegensatz zu prozeduralen Sprachen, wird es wertvoll für mich, um zu studieren Haskell und funktionale Programmierung-Paradigmen?

Bei einer erweiterten Fähigkeiten, die wertvoll ist, dann:ja.

Ein Vorteil, den Sie vielleicht abholen:parallel and concurrent programming.Prozedurale Sprachen von der Vergangenheit neigen dazu, haben keine klare Vorstellung von dem haben Nebenwirkungen, als ein Ergebnis, das schreiben paralleler Programme, die in Ihnen ist schwer zu tun, richtig.Funktionale Sprachen (insbesondere diejenigen, die Grenze Nebenwirkungen wie Haskell) haben viel mehr zu sagen über produktive parallele Programmierung.

Mit diesem skill up your sleeve kann nicht Schaden.

Ich kann sehen, dass die funktionale Programmierung kann ein plus in einer Produktionsumgebung, wenn es ist sehr einfach zu bedienen, die von nicht-funktionalen code.MS konnte sehen, dass auch, wenn Sie kam, F#, denke ich.

Da Sie beide kompilieren, IL, können Sie Probleme beheben, Fragen Sie nach einem funktionalen Ansatz der funktionalen und verwenden Sie diese Lösungen sehr einfach in Ihrer prozeduralen code.

In, dass Weg, funktionalen code kann leicht finden Sie Ihren Weg in einer Produktionsumgebung ein wenig in einer Zeit

Deshalb, und da die userbase von MS ist, dass große, meine Vermutung ist, dass, wenn F# will nicht fangen Sie in sehr Naher Zukunft, dass Haskell nicht.

Ich denke, es ist die Anstrengung Wert. Es wird Ihnen helfen, zu verstehen, wie Probleme gelöst werden und nicht nur wie ein computer funktioniert.

Vielleicht ein besonderes problem ist Haskell selbst, Als eine rein funktionale Sprache, es ist ein bisschen "hardcore" auf der anderen Seite auch die Dinge zu komplizieren.

Funktionale Programmierung statt, kann äußerst nützlich sein, eine sehr pragmatische Art und Weise - Viele OO/imperativen Sprachen haben nun enthalten die funktionalen Elemente aus diesem Grund (Linq, anonyme Funktionen, readonly Werte, Funktionszeiger/Delegierten, Typ-Inferenz):Sie können sich auf das konzentrieren, was getan werden sollte, die ermöglicht Sie zu express mehr in kürzerer code (das ist sogar weniger Fehler-anfällig).

Nicht-rein funktionalen Programmiersprachen (standard funktionalen Sprachen) wie Scala oder F# können integriert werden in bestehende Java-oder .NET-Projekten, so können Sie verbinden die Vorteile beider Paradigmen, wo Sie gebraucht werden.Für die typischen Vorteile von funktionalen Programmiersprachen, siehe dieser thread.Denken Sie nur an äußerst leistungsstarken Analyse (Monadischen parser-combinators / Parsec) oder concurrent Programmierung ist möglich mit funktionalen Sprachen, und Sie werden sehen, wie nützlich Sie sind.

Im Gegensatz zu prozeduralen Sprachen, wird es wertvoll für mich, um zu studieren Haskell und funktionale Programmierung-Paradigmen?

Nicht, es sei denn, Sie möchten, unglücklich zu sein.Luke Pflanze sagt, in der Warum lernen Haskell/Python macht Sie ein schlechter Programmierer:

Also, lernen Sie Python und Haskell hat entmutigt mich und ermutigt mir, code zu schreiben, ist bizarre und schwer zu verstehen...

(Dies ist nicht ganz ein Scherz.)

Den Horizont erweitern hilft Ihnen, ein besserer Programmierer, egal welche Sprache Sie gerade verwenden im moment.Du wirst niemals sehen Programmierung die gleiche Weise, nachdem Sie geschrieben habe, Lisp-Makros, zum Beispiel.Nachdem Sie beginnen zu denken, dass in Haskell-Begriffe, finden Sie sich selbst Komponieren Funktionen und wollen für Verschlüsse in weniger entwickelten Sprachen.

Ausgehend von leckereien in C# wie lambdas, type inference, Verschlüsse, und so auf, lernen Haskell wird Ihnen ein Bein-up auf, tomorrow ' s cutting edge in mainstream-Sprachen.

Einige Leute genießen Programmierung in Haskell.Wenn Sie die Möglichkeit haben, Ihre Umwelt und Genuss in Erwägung ziehen, dann sollten Sie vielleicht hop in.

Viele Programmierer sind nicht in der Lage, wählen Sie Ihre Werkzeuge, und der Genuss ist nicht ein Faktor für Ihre Entscheidungen.Viele von Ihnen erhalten, zu C/Java/etc an Ihrem Arbeitsplatz für die "Kern-source-Projekt", dann aber auch wählen müssen oder die Verwendung von Python für die "scripts", wie build-Skripte mit SCons, andere Skripts generieren von Java - /etc code -, Test-Systeme, proofs-of-concepts, etc..Und in anderen Orten Python ist auch in der "core-Projekt".

In 8 Jahren wird es sein, Haskell, nicht Python, die "zu dir kommen".Aber Sie kann es kommen, früher.

Kombinieren Sie die Verwendung von funktionellen Programmierung und pragmatisch sein, über die Sprache.

Alle modernen Skriptsprachen s.ein.JavaScript oder Lua ermöglichen eine Nutzung der funktionalen Paradigma.

Das funktionale Konzept ist, kommen auf starke.Hinweis: die Flut von Aktivität und Interesse rund um Ruby.Ich habe auch bemerkt, dass ein bisschen mehr Interesse in JavaScript über eine bloße browser-scripting-Sprache in letzter Zeit.Sie bekommen vor dem Spiel Tauchen Sie ein in den Moment, wenn die Zeit investiert, kann nicht zahlen sich aus diesem oder im nächsten Jahr.

Es hängt von Ihrem Allgemeinen plan für das Spiel.Sind Sie in der Programmierung als Selbstzweck oder als Mittel zum Zweck?Wenn es ersteres ist, gehen Sie Nüsse mit Haskell.Wenn die zweite, stick mit mainstream "beschäftigungsfähig" Sprachen.Warten Sie, bis Haskell zu nehmen off und dann stürzen.

Warum prozedurale und nicht Objekt-Orientiert, nicht gesehen prozedurale seit vielen Jahren, abgesehen von C.

Kommerziell gesehen.Ich würde mit Java oder C#.Egal, welche beide zahlen gut, und die Fähigkeiten, die sind austauschbar mit anderen Gleichgesinnten Sprachen wie python, Ruby und JavaScript.

Haskell-ist es Wert die Zeit und Mühe, es ist zwar sehr akademisch, einige Banken nutzen es, obwohl viele in Europa und Großbritannien bewegen sich die code-Basis über F#.

Ich glaube nicht, dass FOP wird sich an der großen Geschwindigkeit, kommerziell zu sprechen.Aber die Techniken sind definitiv einen Auftritt in der Haupt-bleiben Sie Sprachen.Vor allem bei Multi-Core-chip-designs und machen die code run parallel auf Sie.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top