1. Foren
  2. Kommentare
  3. Software-Entwicklung-Forum
  4. Alle Kommentare zum Artikel
  5. › Software…

Was ist mit funktionalen Sprachen

Neue Foren im Freiraum! Raumfahrt und freie Software haben jetzt einen Platz, die Games tummeln sich jetzt alle in einem Forum.
  1. Thema

Neues Thema


  1. Was ist mit funktionalen Sprachen

    Autor: Psi70 25.09.18 - 12:58

    Natürlich sind die meisten mit den verbreiteten Sprachen gut bedient, aber gerade bei der App Entwicklung sind Sprachen wie Elm gut geeignet um Business Logik abzubilden. Viele Tutoren berichten, dass Teilnehmer ohne Programmiererfahrung häufig besser mit dem Konzept zurecht kommen als andere.

  2. Re: Was ist mit funktionalen Sprachen

    Autor: Gamma Ray Burst 25.09.18 - 13:09

    Funktionale Sprachen sind sehr gut - meiner Meinung nach - erfordern aber ein Umdenken gegenüber imperativen Sprachen.

    Sind gut geeignet für asynchrone Umgebungen wie Cloud Services.

  3. Re: Was ist mit funktionalen Sprachen

    Autor: Username321 25.09.18 - 13:09

    Ganz ehrlich, wer anfängt zu programmieren soll sich überlegen in welchen Bereich er möchte und dann die für den jeweiligen Zweig verbreiteste Sprache wählen. Bevor man nicht vertraut mit dem Kontrollfluss, Klassen/Instanzen etc.. ist, brauch man nicht anfangen sich auf ein spezielles Framework oder eine exotische Sprache einzuschiessen.

  4. Re: Was ist mit funktionalen Sprachen

    Autor: Gamma Ray Burst 25.09.18 - 15:29

    Username321 schrieb:
    --------------------------------------------------------------------------------
    > Ganz ehrlich, wer anfängt zu programmieren soll sich überlegen in welchen
    > Bereich er möchte und dann die für den jeweiligen Zweig verbreiteste
    > Sprache wählen. Bevor man nicht vertraut mit dem Kontrollfluss,
    > Klassen/Instanzen etc.. ist, brauch man nicht anfangen sich auf ein
    > spezielles Framework oder eine exotische Sprache einzuschiessen.

    Toller Rat ... gilt nur nicht für jeden ... und hält auch nicht ewig. Deswegen ist die Fähigkeit Neues zu lernen so wichtig.

  5. Re: Was ist mit funktionalen Sprachen

    Autor: twiro 25.09.18 - 20:17

    Man sollte unbedingt Scala probieren und beispielsweise bei der Webentwicklung gleich von PHP auf PlayFramework (mit Scala) umsteigen! (Wenn man nicht schon der nächsten Web-Typenunsicheren Variante Javascript mittels NodeJs verfallen ist).

    Scala ist vollständig funktional, jedes Nicht-Schlüsselwort könnte bei Bedarf erweitert werden. Es benötigt im allgemeinen weniger Code-Zeilen als vergleichbare Sprachen (wie in diesem Fall Java oder Kotlin) und ist damit wartungsärmer! Hinzu kommt vollständige Typensicherheit (kann also kompiliert werden), Traits (der beste Ansatz um die Vorteile von Mehrfachvererbung zu bekommen OHNE die Nachteile mitzunehmen). Sehr hohe Ausführungsgeschwindigkeit (da auf JVM basierend, siehe auch https://www.techempower.com/benchmarks/ )
    Case Classes(, die das ganze new-Zeugs abkürzen), Companion-Objekte (kurz: Klassen mit dynamischen und statischen Abschnitt) uvm. Außerdem kann sbt (kurz gesagt der Compiler) auch Java-Dateien mitkompilieren, falls man mal eine Lib braucht oder 'nen paar Zeilen Java von irgendwo herkopieren möchte.

    Mit Scala lässt sich auch sehr gut Geld verdienen, da man es quasi für alles was mit Java funktionieren würde verwenden kann und zusätlich auch noch für's Web (mittel Play Framework). In der Firma kombinieren wir es sogar mit React.

    Zum Testen sollte man die IDE Intellij Idea nutzen, da sie eine vollständige Hilfe bietet auch mit der aktuellsten Scala-Version.

  6. Re: Was ist mit funktionalen Sprachen

    Autor: Hello_World 25.09.18 - 21:02

    twiro schrieb:
    --------------------------------------------------------------------------------
    > Scala ist vollständig funktional,
    Äh, nö. In den meisten Scala-Programmen ist es durchaus üblich, dass Funktionen Seiteneffekte haben. Im von Dir erwähnten Play Framework kann man eigentlich nicht richtig funktional programmieren, glücklicherweise gibt es dafür Http4s. Grundlegende Abstraktionen wie Future sind nicht referentiell transparent. Nehmen wir folgenden Code:

    for {
    a <- foo(many, different, params)
    b <- foo(many, different, params)
    yield bar(a, b)

    Das sollte ich umschreiben können zu

    val bla = foo(many, different, params)
    for {
    a <- bla
    b <- bla
    } yield bar(a, b)

    Mit Futures funktioniert dieses Refactoring aber so nicht, das Verhalten des Programms ändert sich, und das ist Käse. Verwendet man stattdessen IO von cats-effect (oder scalaz-zio), so bleibt die Semantik erhalten. Und als netten Bonus muss man nicht immer noch ständig einen ExecutionContext mit sich herumschleppen.

    > Hinzu kommt vollständige Typensicherheit
    Schön wär's. 1 == "2" ist kein Compile-Fehler. List(1,2,3).contains("4") auch nicht. Besonders hässlich ist das, wenn sich der beispielsweise der Typ einer Variablen a bei einem Refactoring vom Typ Int zum Typ Option[Int] verändert. Wenn dann vorher irgendwo if (a == 42) … stand, muss ich das zu if (a.contains(42)) ändern, aber der Compiler sagt mir das nicht. Aus dem Grund haben wir == komplett aus unserer Codebasis verbannt und benutzen stattdessen === aus der cats-Bibliothek. Ein Äquivalent zu contains gibt es darin meines Wissens leider nicht…

    > (kann also
    > kompiliert werden), Traits (der beste Ansatz um die Vorteile von
    > Mehrfachvererbung zu bekommen OHNE die Nachteile mitzunehmen). Sehr hohe
    > Ausführungsgeschwindigkeit (da auf JVM basierend, siehe auch
    > www.techempower.com )
    > Case Classes(, die das ganze new-Zeugs abkürzen), Companion-Objekte (kurz:
    > Klassen mit dynamischen und statischen Abschnitt) uvm.

    > Außerdem kann sbt
    > (kurz gesagt der Compiler) auch Java-Dateien mitkompilieren, falls man mal
    > eine Lib braucht oder 'nen paar Zeilen Java von irgendwo herkopieren
    > möchte.
    Na ja, mittlerweile hat man bei sbt die schlimmsten Sünden entfernt, so Sachen wie <++= oder erzwungene Leerzeilen gehören mittlerweile der Vergangenheit an. Ich habe meinen Frieden damit gemacht und wegen der vielen verfügbaren Plugins benutzt man es halt, aber da gibt's trotzdem noch eine Menge Verbesserungspotential.
    http://www.lihaoyi.com/post/SowhatswrongwithSBT.html
    Abgesehen davon: wenn maven im Vergleich schnell wirkt, hat man irgendwas falsch gemacht (wobei die Trägheit auch auf den Scala-Compiler zurückzuführen sein dürfte).

    > Mit Scala lässt sich auch sehr gut Geld verdienen, da man es quasi für
    > alles was mit Java funktionieren würde verwenden kann und zusätlich auch
    > noch für's Web (mittel Play Framework). In der Firma kombinieren wir es
    > sogar mit React.
    >
    > Zum Testen sollte man die IDE Intellij Idea nutzen, da sie eine
    > vollständige Hilfe bietet auch mit der aktuellsten Scala-Version.


    Aber um nach all dem Bashing mal zum Thema zurückzukommen: Trotz alledem ist Scala in meinen Augen immer noch besser als das meiste andere, was da draußen so herumkreucht. Aber für Einsteiger? Vergiss es. Die Sprache ist schlichtweg zu komplex für Einsteiger, speziell die Kombination von Subtyping mit Higher Order Kinds. Mal abgesehen davon, dass auch die Syntax eher mäßig gelungen ist.

    Einsteiger könnten es zum Beispiels mal mit Purescript probieren.



    1 mal bearbeitet, zuletzt am 25.09.18 21:04 durch Hello_World.

  7. Re: Was ist mit funktionalen Sprachen

    Autor: Dieselmeister 26.09.18 - 06:55

    Sorry, aber Klassen und Instanzen sind Konzepte eine objektorientierten Programmiersprache. Auch wenn ich seit 13 Jahren C# entwickle, sind diese Konzepte eben nicht Bestandteil von voll funktionalen Programmiersprachen. Ich weiß gerade F# extrem zu schätzen. Da kann man zwar auch Klassen erzeugen, macht es aber eigentlich sehr selten.

    Nein Klassen und Instanzen existieren dort nicht. Dort gibt es nur Funktionen und Werte, wobei auch Funktionen Werte sein können.

  8. Re: Was ist mit funktionalen Sprachen

    Autor: Dieselmeister 26.09.18 - 07:00

    Du gehst schlichtweg nur von der JVM Welt aus. Es gibt andere tolle funktionale Programmiersprachen. F# für die dot-net Welt. Haskell als pure funktionale Programmiersprache.

    Ich selbst entwickle seit langen in der dot-net Welt. F# ist da einfach nur genial. Allerdings verdiene ich mir meine Brötchen mit C#. Es ist schwer funktionale Programmiersprachen in Teams einzubringen. Ich glaube das trifft sowohl auf die JVM als auch auf dot-net gleichermaßen zu.

  9. Re: Was ist mit funktionalen Sprachen

    Autor: minnime 26.09.18 - 10:24

    Viele programmieren funktional ohne es zu wissen, mit Excel (oder einer anderen Tabellenkalkulation). Im Grunde ist das funktional in Reinform wird aber von jedem Verstanden, sogar von Sekretärinnen.

  10. Re: Was ist mit funktionalen Sprachen

    Autor: Dieselmeister 26.09.18 - 11:06

    +1... word

  11. Re: Was ist mit funktionalen Sprachen

    Autor: Psi70 26.09.18 - 12:47

    minnime schrieb:
    --------------------------------------------------------------------------------
    > Viele programmieren funktional ohne es zu wissen, mit Excel (oder einer
    > anderen Tabellenkalkulation). Im Grunde ist das funktional in Reinform wird
    > aber von jedem Verstanden, sogar von Sekretärinnen.

    Genau deshalb ist es durchaus eine Möglichkeit damit anzufangen.
    "x = x + 1" ist einfach eine Verkürzung, die bei imperativen Sprachen eingeführt wurde, wer noch keine Ahnung vom Programmieren hat tut sich damit schwer.

    Ich liebe F#, muss aber auch eingestehen, dass meine Anfänge sehr zäh waren, da die strenge Typisierung auch eine gewisse Frustrationstoleranz voraussetzt, aber inzwischen sind die Fehlermeldungen deutlich besser geworden.

  12. Re: Was ist mit funktionalen Sprachen

    Autor: Hello_World 26.09.18 - 14:19

    Dieselmeister schrieb:
    --------------------------------------------------------------------------------
    > Du gehst schlichtweg nur von der JVM Welt aus.
    Ich habe auf einen Beitrag geantwortet, in dem es um Scala ging, und entsprechend auf einige Probleme in Scala hingewiesen. Dein Vorwurf ist allein deshalb Blödsinn, weil ich am Schluss meines Beitrags auch auf Purescript hingewiesen habe, welches nicht auf der JVM läuft.

  13. Re: Was ist mit funktionalen Sprachen

    Autor: ShalokShalom 26.09.18 - 19:11

    Wieso sollte man sich zwanghaft auf einen Bereich fokosieren, statt auf sich selbst?

    Gehen sie in eine Bar und bestellen sie ein Bier via "Ein Bier bitte, alkoholfrei" oder geben sie dem Barkeeper genaue Anweisungen, wie er sich zu bewegen hat?

    Deklarative Sprachen sind sehr viel natürlicher.

    Und F-Sharp ist dank .Net ebenso zugänglich fürs Geld verdienen wie in vielen Fällen Elm fürs Web development und Elixir sowie Clojure sind auch nicht gerade selten in den Job-Angeboten.

    Die JVM ist auch für Eta (Haskell mit freundlichen Fehlermeldungen), Ceylon und so weiter da.

    Kotlin, Rust und viele andere lassen sich funktional/deklarativ verwenden.

    Wieso also gegen den Instinkt handeln?

  1. Thema

Neues Thema


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Sie müssen ausserdem in Ihrem Account-Profil unter Forum einen Nutzernamen vergeben haben. Zum Login

Stellenmarkt
  1. Systemverantwortlicher (m/w/d) Modul - Ultrasonic Parking Functions
    IAV GmbH, Berlin, Chemnitz, Gifhorn
  2. IT Support Mitarbeiter (m/w/d) im 2nd/3rd Level
    igus GmbH, Köln
  3. DevOps Engineer im Bereich Medizinische Forschung
    Universitätsklinikum Frankfurt, Frankfurt am Main
  4. IT-Systemadministrator (m/w/d) First-Level-Support
    MVZ Labor Münster Hafenweg GmbH, Münster

Detailsuche


Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Spiele-Angebote
  1. 6,99€ statt 19,99€
  2. 30,99€ statt 99,99€
  3. 35,99€ statt 39,99€


Haben wir etwas übersehen?

E-Mail an news@golem.de


Linux: Nvidias große schöne Open-Source-Schummelei
Linux
Nvidias große schöne Open-Source-Schummelei

Die Kunden nerven, die Konkurrenz legt vor und die Linux-Entwickler bleiben hart. Das führt zu einem Wandel bei Nvidia, der gerade erst anfängt.
Eine Analyse von Sebastian Grüner

  1. Linux-Kernel Netfilter-Bug gibt Nutzern Root-Rechte
  2. Linux Kernel-Hacker veröffentlichen Richtlinie für Forschung
  3. Dirty Pipe Linux-Kernel-Lücke erlaubt Schreibzugriff mit Root-Rechten

Superbooth: Technikparadies für Musiknerds
Superbooth
Technikparadies für Musiknerds

Von klassischen E-Pianos bis zu Musikstudios in DIN-A5: Bei der Synthesizer-Messe Superbooth haben Hersteller zum Ausprobieren eingeladen.
Ein Bericht von Daniel Ziegener


    1More Evo im Test: Preiswerte Alternative zu Apples Airpods Pro
    1More Evo im Test
    Preiswerte Alternative zu Apples Airpods Pro

    Die Evo-Stöpsel von 1More bieten eine Besonderheit der Airpods Pro und liefern mehr Komfort als die Apple-Konkurrenz.
    Ein Test von Ingo Pakalski

    1. Pixel Buds Pro Googles erste Bluetooth-Hörstöpsel haben ANC-Technik
    2. Momentum True Wireless 3 im Test Sennheiser liefert Top-ANC-Leistung und tollen Klang
    3. Echo Buds 2 im Test Amazon setzt gegen Airpods Pro auf Mittelmaß