11 Stimmen

Angewandte funktionale Programmierung

Ich interessiere mich schon mein ganzes Leben lang für die Programmierung und habe in den letzten 6 Jahren fast ausschließlich mit Java gearbeitet. Ich habe gerade mein Studium beendet und arbeite als Java-Entwickler in einem Unternehmen.

All die Jahre war das Programmieren ein Hobby und eine beliebte Freizeitbeschäftigung, was sich aber insofern etwas negativ auswirkte, als ich mich so sehr an Java gewöhnt habe, dass ich mich nie über diese Programmiersprache hinausgewagt habe. Ich habe zwar versucht, mein Wissen zu erweitern, indem ich reguläre Ausdrücke und SQL lernte und mich ein wenig mit XML beschäftigte, aber ich konnte mich nie genug auf eine neue Sprache einlassen, um zu lernen, wie man sie richtig einsetzt, und da sie sich im Kern alle so sehr ähneln, fand ich die Lernkurve jeder neuen Sprache irritierend. Ich hatte das Gefühl, dass ich den ganzen Prozess durchlaufen musste, um am Ende genau da zu stehen, wo ich angefangen hatte, da ich das Gefühl hatte, dass andere imperative Sprachen mir nichts mehr zu bieten hatten (ich weiß, dass diese Aussage einen Streit auslösen kann, das ist nicht meine Absicht).

Deshalb habe ich irgendwann beschlossen, die magische Welt der funktionalen Programmierung zu erkunden. Ich begann ein Buch über Haskel zu lesen und fand es aus akademischer Sicht sehr interessant (ich habe Mathematik studiert), konnte aber keine praktischen Anwendungen finden, die mich dazu gebracht hätten, die Sprache zu lernen.

Jetzt, wo Java der Hauptbestandteil meines Tages ist, da ich dafür bezahlt werde, in Java zu programmieren (und es mir genauso viel Spaß macht wie damals, als es nur ein Hobby war), hatte ich das Bedürfnis, meinen Horizont zu erweitern, und wieder scheint funktionale Programmierung eine gute Idee zu sein.

Ich dachte, ich würde mit Scala beginnen, da ich Java-kompetent bin (machen den Übergang einfacher und mehr wiederverwendbar, da sie miteinander "sprechen" können) und so meine Frage ist: Macht das Erlernen einer funktionalen Sprache Ihrer Erfahrung nach "Sinn"? Gibt es irgendwelche Anwendungen im wirklichen Leben, bei denen die Kenntnis dieses Paradigmas nützlich sein könnte? Nicht nur zur persönlichen Unterhaltung, sondern auch als "Profi" in der Industrie?

8voto

javier-sanz Punkte 2434

Meiner Meinung nach ist das Erlernen der funktionalen Programmierung nicht nur eine gute Idee, weil man dadurch ein besserer Programmierer wird (dem ich natürlich zustimme), sondern auch, weil es scheint, dass es in naher Zukunft sehr populär werden wird.

Viele "Gurus" sagen, dass dies die einzige Möglichkeit ist, das Mooresche Gesetz am Leben zu erhalten. Die Taktrate von Computern hat einen Höchststand erreicht, und die einzige Möglichkeit, die Geschwindigkeit von Prozessoren zu erhöhen, besteht darin, immer mehr Kerne hinzuzufügen. In diesem Szenario wird die funktionale Programmierung praktisch, da in diesen Sprachen Daten unveränderlich sind und sie daher sehr einfach paralellisiert werden können (dies kann sogar automatisch geschehen).

Schauen Sie sich die folgenden Referenzen an

Buff, ich hoffe, es war nicht zu langweilig ;-)

7voto

rtperson Punkte 11506

Das Erlernen einer funktionalen Sprache ist von großem Vorteil, unabhängig davon, ob Sie diese Sprache jemals in Ihrer täglichen Arbeit verwenden werden oder nicht. Bedenken Sie das Folgende:

  1. Eine der wichtigsten Empfehlungen für eine erfolgreiche nebenläufige Programmierung besteht darin, veränderbare Zustände in Ihren Thread-Objekten so weit wie möglich zu vermeiden. In der funktionalen Programmierung lernen Sie, wie Sie dies tun können.
  2. Die meisten funktionalen Programmierer behaupten, sobald sie die nicht unerhebliche Lernkurve überwunden haben, dass sie mit ihren Techniken weitaus produktiver sind als mit den üblichen imperativen Sprachen. Ihr Code ist fehlerfreier und nur einen Bruchteil so groß wie der anderer Sprachen. Denken Sie an den Produktivitätsschub, den Sie bekommen haben, als Sie endlich reguläre Ausdrücke verstanden haben. Und jetzt setzen Sie das auf Steroide. Das ist wie sich FP anfühlen kann.
  3. Funktionale Techniken halten immer mehr Einzug in die imperative Programmierung. Denken Sie an Closures in C# und Javascript und bald (vielleicht, wenn wir Glück haben) auch in Java. Es ist sehr wahrscheinlich, dass die beiden Welten bald zusammenkommen werden.
  4. Und schließlich werden Sie sich bei Vorstellungsgesprächen durch die Kenntnis einer funktionalen Sprache von einem durchschnittlichen J2EE/.NET-Klon abheben können. Es kennzeichnet Sie als Selbststarter, disziplinierten Lerner und leidenschaftlichen Programmierer - unabhängig davon, ob Sie eines dieser Dinge tatsächlich sind oder nicht. Werden Sie nur nicht zu einem weiteren schmierigen Scala-Fanboy, der Ihren zukünftigen Chef darüber beschimpft, dass er die besten Programmiertechniken verpasst, seit... Sie wissen schon. Es ist nie gut, einen potenziellen Arbeitgeber zu beleidigen.

Durch das Studium von Haskell hat das Programmieren für mich viel mehr Spaß gemacht als früher. Vielleicht macht es das auch für Sie. Viel Glück!

2voto

Daniel C. Sobral Punkte 290004

Die funktionale Programmierung ist im Finanzsektor auf dem Vormarsch. Das ist nicht wirklich überraschend, wenn man bedenkt, dass Finanzanalysten seit Jahren in Excel "programmieren", das im Wesentlichen ein funktionales Paradigma ist (genauer gesagt, funktional reaktiv).

Also, ja, Kenntnisse in funktionaler Programmierung können einige Türen öffnen, die OO nicht öffnen kann, und solche Jobs können sehr interessant sein.

Als reiner Java-Programmierer werden Sie Techniken lernen, die Sie im Alltag in Java einsetzen können (auch wenn Sie eine bessere Collections-Bibliothek benötigen). Techniken, die die Anzahl der Bugs in Ihrem Code verringern, Multithreading und Multitasking erleichtern und Ihren Code näher an die Geschäftsregeln bringen, die er implementiert, als an die Mechanik seiner Implementierung.

Nun, es gibt noch andere Gründe, Scala zu lernen. Die oben genannten sind jedoch meine Gründe, warum Sie funktionale Programmierung lernen sollten.

1voto

Norman Ramsey Punkte 193087

Das Erlernen einer funktionalen Sprache ist auf jeden Fall sinnvoll. Wie Eric Raymond sagt, wenn Sie eine funktionale Sprache lernen, es macht Sie zu einem besseren Programmierer in der Sprache Ihrer Wahl.

Aus Sicht der Industrie werden Sie, wenn Sie guten Code in einer funktionalen Sprache wie Haskell oder Objective Caml schreiben können, plötzlich für eine sehr kleine Anzahl von Stellen sehr gefragt sein. Es ist nicht klar, ob irgendeine vernünftige Person in Betracht ziehen würde

1voto

Pavel Minaev Punkte 97251

Ja, das ist absolut sinnvoll und für einige gängige Aufgaben, die Ihnen in der Produktion begegnen könnten, sofort nützlich (selbst wenn Sie sie in Java schreiben). Wenn Sie zum Beispiel jemals einen Parser schreiben müssen (z. B. für eine DSL), werden Sie feststellen, dass die Verwendung funktionaler Techniken zu einem viel saubereren und prägnanteren Code führt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X