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

Was ist mit funktionalen Sprachen

  1. Thema

Neues Thema Ansicht wechseln


  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?

Neues Thema Ansicht wechseln


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Zum Login

Stellenmarkt
  1. CYBEROBICS, Berlin
  2. Netze BW GmbH, Karlsruhe
  3. Ryte GmbH, München
  4. BWI GmbH, Bonn

Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Top-Angebote
  1. (aktuell u. a. Monitore, Mäuse, CPUs)
  2. mit Gutschein: NBBCORSAIRPSP19
  3. (heute u. a. Saugroboter)
  4. (u. a. Seasonic Focus Gold 450 W für 46,99€ statt über 60€ im Vergleich)


Haben wir etwas übersehen?

E-Mail an news@golem.de


Minecraft Dungeons angespielt: Fehlt nur noch ein Klötzchen-Diablo in der Tiefe
Minecraft Dungeons angespielt
Fehlt nur noch ein Klötzchen-Diablo in der Tiefe

E3 2019 Von der Steuerung bis zu den Schatzkisten: Minecraft Dungeons hat uns beim Anspielen bis auf die Klötzchengrafik verblüffend stark an Diablo erinnert - und könnte gerade deshalb teuflisch spaßig werden!

  1. Augmented Reality Minecraft Earth erlaubt Klötzchenbauen in aller Welt
  2. Microsoft Augmented-Reality-Minecraft kommt zum zehnten Jubiläum
  3. Jubiläum ohne Notch Microsoft feiert Minecraft ohne Markus Persson

WD Blue SN500 ausprobiert: Die flotte günstige Blaue
WD Blue SN500 ausprobiert
Die flotte günstige Blaue

Mit der WD Blue SN500 bietet Western Digital eine spannende NVMe-SSD an: Das M.2-Kärtchen basiert auf einem selbst entwickelten Controller und eigenem Flash-Speicher. Das Resultat ist ein schnelles, vor allem aber günstiges Modell als bessere Alternative zu Sata-SSDs.
Von Marc Sauter

  1. WD Black SN750 ausprobiert Direkt hinter Samsungs SSDs
  2. WD Black SN750 Leicht optimierte NVMe-SSD mit 2 TByte
  3. Ultrastar DC ME200 Western Digital baut PCIe-Arbeitsspeicher mit 4 TByte

Wolfenstein Youngblood angespielt: Warum wurden diese dämlichen Mädchen nicht aufgehalten!?
Wolfenstein Youngblood angespielt
"Warum wurden diese dämlichen Mädchen nicht aufgehalten!?"

E3 2019 Der erste Kill ist der schwerste: In Wolfenstein Youngblood kämpfen die beiden Töchter von B.J. Blazkowicz gegen Nazis. Golem.de hat sich mit Jess und Soph durch einen Zeppelin über dem belagerten Paris gekämpft.
Von Peter Steinlechner