Warum sollte man "Haskell, OCaml, Scala & Co" lernen?



  • Jetzt geht's hier aber um die Rechthaben-Diskussion. Man wird wohl nicht von der Hand weisen können, dass Seiteneffektfreie Programme und (strikt) funktionale Programme eng miteinander verwoben sind. Man wird auch nicht von der Hand weisen können, dass Seiteneffektrei mit Zustandsfrei viel zu tun hat.
    Die einzige Frage die ich mir hier stelle ist, inwiefern Interfaces Seiteneffekte oder Zustände vermeiden.



  • in einem System von n wechselwirkenden Komponenten können sich O(n^2) Paare von Komponenten gegenseitig beeinflussen. Durch Kapselung und Zugriff über Interfaces läßt sich das reduzieren, und Wechselwirkungsmöglichkeiten werden durch Definition von Interfaces explizit gemacht.



  • 5. Warum sollte man eine funktionale Programmiersprache lernen?

    Es wird oft gesagt, dass funktionale Programmiersprachen den Horizont erweitern. Ich habe etwa 2x ehrlich versucht den Sinn von FP zu verstehen. Ich bin aber nie bis zum Schluss der Weisheit durchgekommen, wohl auch weil ich nicht mit letzter Konsequenz durchgezogen habe. Um das zu tun muss man allerdings enorm viel Zeit investieren. Ich weiss nicht, ob sich das lohnt. Für FP gibt es wirklich so gut wie keine Job-Aussichten. Bei manchen seltenen Stellenausschreibungen werden Kenntnisse in Haskell/Schme/Scala als Plus aufgeführt.

    Meine bisherige Quintessenz aus FP ist die, dass sich verschiedene Dinge gut für konkurrente Programmierung verwenden lassen: Immutable Objects, non-destructive Programming, Rekursionen (weil so Zugriff auf gemeinsame Daten minimiert wird und damit die Fehleranfälligkeit wegen unvollständiger Synchronisierung).

    Es gibt einen guten Spruch von Andrej Breslav (Entwickler von Kotlin): FP makes many things simpler, sometimes at a high price. Ich denke, dass er da recht hat. An einem vernünftigen Punkt mit FP Schluss machen und mit imperativer Programmierung weitermachen.

    -- Oliver



  • Saxo schrieb:

    Es gibt einen guten Spruch von Andrej Breslav (Entwickler von Kotlin): FP makes many things simpler, sometimes at a high price.

    🤡



  • Saxo schrieb:

    Meine bisherige Quintessenz aus FP ist die, dass sich verschiedene Dinge gut für konkurrente Programmierung verwenden lassen: Immutable Objects, non-destructive Programming, Rekursionen (weil so Zugriff auf gemeinsame Daten minimiert wird und damit die Fehleranfälligkeit wegen unvollständiger Synchronisierung).

    interessant, daß du in diesem zusammenhang Rekursion erwähnst.

    Die Speicherung von Zuständen wird auf Logikgatter-Ebene nämlich durch Rekursion bzw Zyklizität modelliert. Ein abstraktes Schaltnetz in Form eines gerichteten *azyklischen* Graphen ist zeitinvariant und kann keinen inneren Zustand speichern.

    Ein Flipflop zur Speicherung von 1 bit ist ein Beispiel für ein zyklisches Schaltnetz mit innerem Zustand.

    sprich, Zustände erfordern auf Logikgatter-Ebene Rekursion, und Funktionale Programmierung will doch gerade Zustände vermeiden - eine gewisse Widersprüchlichkeit. Rekursion in der funktionalen Programmierung scheint mir je nach Aufgabenstellung hin und wieder eher notwendiges Übel als Vorzug zu sein; nämlich, um Zustände zu vermeiden.



  • Zustände erfordern auf Logikgatter-Ebene Rekursion, und Funktionale Programmierung

    Man kann vieles in einen Topf werfen, trotzdem kommt nur Gruetze bei raus. Hier beispielsweise mit Logikgatter und FP. Jeder Integer mit hat einen Wert, also auch einen Zustand. Warum sollte das vermieden werden?

    FP makes many things simpler, sometimes at a high price.

    Meinungen sind wie ... Was fuer ein Preis? Wo sind die Fakten?

    Ich weiss nicht, ob sich das lohnt. Für FP gibt es wirklich so gut wie keine Job-Aussichten.

    Nun, wenn deine Motivation Geld ist, dann unterscheidest du dich wohl kaum von einer Prostituierten.

    kann man das auch in anderen Prog.Sprachen tun

    Ja, man kann auch in anderen Sprachen funktional programmieren. Das ist der Hauptgrund, sich mit FP zu beschaeftigen: Die Erkenntnisse in anderen Sprachen nutzen.



  • knivil schrieb:

    Zustände erfordern auf Logikgatter-Ebene Rekursion, und Funktionale Programmierung

    Man kann vieles in einen Topf werfen, trotzdem kommt nur Gruetze bei raus. Hier beispielsweise mit Logikgatter und FP. Jeder Integer mit hat einen Wert, also auch einen Zustand. Warum sollte das vermieden werden?

    es geht hier um zeitvariable Zustände, also solche, die eine Speicherung erfordern. Ein Integer ist ebenso wie ein azyklisches Schaltnetz zeitlos.

    FP makes many things simpler, sometimes at a high price.

    Meinungen sind wie ... Was fuer ein Preis? Wo sind die Fakten?

    und wo sind die Fakten pro FP ?



  • großbuchstaben schrieb:

    und wo sind die Fakten pro FP ?

    Immutable Objects, non-destructive Programming, Rekursionen



  • knivil schrieb:

    Ich weiss nicht, ob sich das lohnt. Für FP gibt es wirklich so gut wie keine Job-Aussichten.

    Nun, wenn deine Motivation Geld ist, dann unterscheidest du dich wohl kaum von einer

    soll das ein witz sein? warum arbeiten menschen? ein kleiner teil arbeitet, weil ihm/ihr die arbeit spaß macht. der restliche, große teil arbeitet, weil er geld braucht/verdienen will.

    außerdem funktionieren halt so die sozialistischen (nein, ich meine nicht "soziale"!) wirthschaftsmodele auf der welt. wer arbeit anbieten kann, die ein anderer nicht machen kann, bekommt wahrscheinlich mehr geld. das gilt in allen bereichen.

    es spricht nichts dagegen, zu arbeiten, um geld zuverdienen, genauso spricht nichts dagegen, zu arbeiten, weil man einem die arbeit spaßmacht. aber das sind wohl eher einzelfälle.

    oder gehst du gerne zur arbeit?



  • gehts noch? schrieb:

    oder gehst du gerne zur arbeit?

    Ja. Auch ging es nicht um Arbeit, sondern der Motivation/Warum man Dinge lernt. Mit wesentlich weniger Lernaufwand kann schneller Erfolg/Geld erziehlt werden.



  • knivil schrieb:

    gehts noch? schrieb:

    oder gehst du gerne zur arbeit?

    Ja.

    dann bist du wahrscheinlich eine große ausnahme.

    ich glaube oft, dass Hobbes schon recht hatte: der mensch ist von natur aus böse und egoisisch, vielleicht auch asozial und faul.



  • knivil schrieb:

    gehts noch? schrieb:

    oder gehst du gerne zur arbeit?

    Ja. Auch ging es nicht um Arbeit, sondern der Motivation/Warum man Dinge lernt. Mit wesentlich weniger Lernaufwand kann schneller Erfolg/Geld erziehlt werden.

    ok, aber würdest du auch ohne entgeld arbeiten? an wochenenden? ohne urlaub?



  • knivil schrieb:

    großbuchstaben schrieb:

    und wo sind die Fakten pro FP ?

    Immutable Objects, non-destructive Programming, Rekursionen

    das geht auch in anderen Prog.Sprachen, teils bei entsprechender Selbstbeschränkung. Rekursion = Vorzug von FP 😮 ?



  • großbuchstaben schrieb:

    das geht auch in anderen Prog.Sprachen, teils bei entsprechender Selbstbeschränkung. Rekursion = Vorzug von FP 😮 ?

    Liesst du ueberhaupt meine Beitraege? Ich hasse es, wenn ich mich selbst zitieren muss.

    ok, aber würdest du auch ohne entgeld arbeiten? an wochenenden? ohne urlaub?

    Das ist doch wie in Startrek etc. Angenommen deine Grundbeduerfnisse sind befriedigt, also Essen, Trinken und Dach uebern Kopf. Was wuerdest du mit deiner Zeit anstellen?



  • knivil schrieb:

    ok, aber würdest du auch ohne entgeld arbeiten? an wochenenden? ohne urlaub?

    Das ist doch wie in Startrek etc. Angenommen deine Grundbeduerfnisse sind befriedigt, also Essen, Trinken und Dach uebern Kopf. Was wuerdest du mit deiner Zeit anstellen?

    ein nettes gedankenspiel, das allerdings niemals wirklichkeit werden wird.

    schuld ist der mensch selbst. das problem am ganzen ist die allgemeine "Befriedigung der Grundbedürfnisse". Wir leben in einer ungerechten Welt, sowohl sozial als auch finanziell. solange es in afrika arme leute gibt, die hungern und an irgendwelchen krankheiten sterben, werden wir wohl weiterhin arbeiten.

    außerdem kann eine welt ohne geld nicht funktionieren. geld ist arbeitsanreiz. anders gesagt: ohne geld rür ich keinen finger.
    ich arbeite nicht, um zu arbeiten.

    außerdem gibt es genug leute, die, auch wenn die grundbedürfnisse befriedigt sind, nicht arbeiten. das trifft genau Hobbes idee.

    wenn die ungerechtigkeit aus der welt geschafft wurde (was unmöglich ist), könnte ein solches gedankenspiel wahr werden, also wenn alle menschen auf der welt gleich viel geld, gleich viele besitztümer haben. und das sind nur die weltlichen dinge. liebe lässt sich nicht gerecht teilen. somit kann ein zustand der absoluten gerechtigkeit nie erreicht werden.



  • knilch schrieb:

    knivil schrieb:

    gehts noch? schrieb:

    oder gehst du gerne zur arbeit?

    Ja.

    dann bist du wahrscheinlich eine große ausnahme.

    Das glaube ich nicht. Ich geh sehr zur Arbeit, und viele Kollegen/Bekannte auch. Das hat auch nur am Rande damit zu tun, ob man auch am Wochenende oder im Urlaub arbeiten will. Wenn man etwas gern macht, heißt es noch nicht, dass man es auch rund um die Uhr machen will/sollte.



  • Ich gehe auch gerne zur Arbeit und noch viel gerner wieder nach Hause!



  • solange es in afrika arme leute gibt, die hungern und an irgendwelchen krankheiten sterben, werden wir wohl weiterhin arbeiten

    Diesen Zusammenhang kann ich fuer mich nicht herstellen.

    ich arbeite nicht, um zu arbeiten.

    Ich werde fuer mein "Hobby" bezahlt. Ich Weiss, nicht jeder hat solch ein Glueck.

    Ich gehe auch gerne zur Arbeit und noch viel gerner wieder nach Hause!

    Willst du deswegen aber immer zu Hause bleiben?

    gleich viel geld, gleich viele besitztümer haben ... gerechtigkeit

    Alles gleich zu machen, ist fuer mich nicht Gerechtigkeit.



  • knivil schrieb:

    solange es in afrika arme leute gibt, die hungern und an irgendwelchen krankheiten sterben, werden wir wohl weiterhin arbeiten

    Diesen Zusammenhang kann ich fuer mich nicht herstellen.

    naja, der punkt ist, dass die industrie-nationen, wenn man eben diese absolute gerechtigkeit erreichen will, etwas an ärmere länder abgeben müssen. damit meine ich nicht nur spenden, sondern "richtig", d.h. ein bestimmter prozentsatz des bruttolohnes. das ist dann der ausgleich für nicht gewährte chancengleichheit.
    aber man muss natürlich erstmal genug geld verdienen, damit man was abgeben kann. ein "1-Euro-Jobber" kann das nicht, was aber nicht seine schuld ist, d.h. wir müssen alle mehr arbeiten.

    gleich viel geld, gleich viele besitztümer haben ... gerechtigkeit

    Alles gleich zu machen, ist fuer mich nicht Gerechtigkeit.

    was denn dann? gerechtigkeit bedeutet für mich, wenn alle die gleichen chancen haben, aber auch, dass geld gerecht auf der welt verteilt ist.



  • Keine Ahnung was das alles mit der Ausgangsfrage des Threads zu tun hat. Wenn du das diskutieren willst, dann mach deinen eigenen Thread auf.


Anmelden zum Antworten