Tiobe-Index, Java, Scala & Co

Ich bin ja immer schwerer von Scala überzeugt, leider kommt das aber auch nicht so richtig in die Gänge. Obwohl ich schon zwei Job-Angebote für einen Scala/Play Entwickler bekommen habe.

Von den großen Sprachen ist Java noch so weit vorn, ich glaube, da braucht man keine Angst zu haben.

Bis sich Go oder Skala durchsetzen dauert es - wenn es überhaupt passiert. Die Menge an Plugins, Frameworks und auch Erfahrung ist hier einfach noch zu gering.

Das einige Sprachen mittlerweile schöner sind, möchte ich nicht abstreiten.

[QUOTE=Sym]
Bis sich Go oder Skala durchsetzen dauert es - wenn es überhaupt passiert. Die Menge an Plugins, Frameworks und auch Erfahrung ist hier einfach noch zu gering.

Das einige Sprachen mittlerweile schöner sind, möchte ich nicht abstreiten.[/QUOTE]

Sehe ich auch so. Obwohl bei Scala eigentlich volle InterOp gegeben wäre. Nur ist die Lernkurve so steil, das Typsystem so absurd - und die kleinen Haken beim Parallelbetrieb Java/Scala eben doch vorhanden. Ich habe ungefähr ein halbes Jahr gebraucht, bis mir die implicits in Scala aufgegangen sind, und in der Lernphase verwirren die ohne Ende weil ja überall vorhanden.

Wer weiß, vielleicht wird auch TypeScript oder ES6 irgendwann zu einer typsicheren, multi-threaded Sprache die das DOM mit 60fps im Browser zaubert? Dann wird sich der TIOBE nochmal ganz gewaltig verschieben:)

Dann wohl eher goggles dart, die übrigens sehr stark an Java erinnert.

Ich lerne neben bei auch eine funktional geprägte Sprache (Rust), wie wird man den dieses “typische OO” denken los?

[QUOTE=Prototype]Dann wohl eher goggles dart, die übrigens sehr stark an Java erinnert.

Ich lerne neben bei auch eine funktional geprägte Sprache (Rust), wie wird man den dieses „typische OO“ denken los?[/QUOTE]

Was bei mir funktioniert hat:

die ersten 25 von den 99 Problems in Scala gemacht (S-99: Ninety-Nine Scala Problems) und dabei komplett ohne ein einziges var ausgekommen, ui hammer, da war ich stolz :slight_smile:

immer wieder auf Learn You a Haskell for Great Good! gesurft und ein bisschen weitergelesen

Schaut beides sehr gut aus. Ich muss mich aber erst mal an die hau drauf methode der funktionalen Sprache gewöhnen (Probleme werden so früh wie möglich gelöst, anstatt in X kleine Brocken aufgeteilt zu werden)

Auch die Syntax ist noch etwas hinderlich…

[QUOTE=Prototype]Schaut beides sehr gut aus. Ich muss mich aber erst mal an die hau drauf methode der funktionalen Sprache gewöhnen (Probleme werden so früh wie möglich gelöst, anstatt in X kleine Brocken aufgeteilt zu werden)

Auch die Syntax ist noch etwas hinderlich…[/QUOTE]

nur am Anfang. Gerade bei Haskell ist die Syntax furchtbar einfach. Und bei Scala ist es mehr ein entspanntes Java. Tipp: mach das nur zum Spaß, beruflich bringt dir das wirklich erst mal nix.

Bei Scala hatte ich das Riesenproblem, dass die Fülle der Möglichkeiten, die barocke Auswahl an Sprachfeatures und die Evolution von 2.8->2.10 extrem verwirrend ist und den ganz einfachen Kern völlig vernebeln.

Ich befasse mich seit ca. 2 Jahren nebenbei mit Scala und habe auch mit den 99 Scala Problemen / Projekt Euler beschäftigt und das ist ein guter Anfang (auch um Endrekursion zu lernen [= ohne var auszukommen])

Bleiglanz was meinst Du mit

  • “barocke” Auswahl an Sprachfeatures?
  • Lernkurve so steil
  • das Typsystem so absurd

?

Falk

[QUOTE=Falk]Ich befasse mich seit ca. 2 Jahren nebenbei mit Scala und habe auch mit den 99 Scala Problemen / Projekt Euler beschäftigt und das ist ein guter Anfang (auch um Endrekursion zu lernen [= ohne var auszukommen])

Bleiglanz was meinst Du mit

  • „barocke“ Auswahl an Sprachfeatures?
  • Lernkurve so steil
  • das Typsystem so absurd

?

Falk[/QUOTE]

kennst du

Code Examples for Programming in Scala

Code Examples for Programming in Scala

In Java immer schon eine Kiste ist KEINE Kist, in Scala auf einmal doch. Es dauert bei manchen Leuten (mindestens bei mir), bis man merkt, dass das gut ist!

Also implicits, view-types, existential types, das var key word, lazy evaluation, die feine scope-Steuerung, die multiplen Kopien der ganzen Collections Hierarchie, package-objects, equals wohl noch schwieriger zu implementieren als in Java wg. canEquals, usw. haben mich schon ein bisschen verwirrt am Anfang. Super schön dagegen case classes, val, pattern matching, apply, Tupels, List, Option, @tailrec, … - manche Sachen gehen runter wie ein frisch gezapftes Bier.

Natürlich hat man später hoffentlich mal Einsichten (etwa Traversable - Interable - Seq, wozu Streams,…). Schön, wenn man das halbwegs versteht - aber beim Lernen hinderlich (vor allem wenn man schon Java kann).

Ich sage nicht dass das schlecht ist, oder das man dieses „Problem“ irgendwie lösen kann/soll. Für mich war es halt da. :slight_smile:

Java ist auf dem aktuellen Tiobe-Index wieder vorn. Aber wie steht es um die sehr moderne JVM-Sprache Scala? Was denkt Ihr, schafft Scala den Durchbruch oder bleibt es eine Sprache für wenige Leute? Warum ist Java immer noch so erfolgreich?

Dieser Thread soll eine Diskussion starten und ist des halb in der Spielwiese zu finden.

Fal

[edit SlaterB: ein zweiter Thread mit diesem Posting wurde (nicht von mir) hierher zusammengelegt]

Ich glaube, die Diskussion zu Scala wird unter anderem auch hier geführt.

Da hast Du Recht, ich wollte jedoch eine Diskussion speziell von Scala zu Java in einem separaten Thema anfangen.

@moderatoren: kann man den Scala betreffenden Teil hierher umziehen und ggf. Brüste erwähnen?

Ich denke Java ist noch so erfolgreich, weil es erfolgreich ist. Ähm ok, doofe Erklärung, aber im Professionalen Umfeld, werden einfach noch ziemlich viele Anwendungen in Java Entwickelt bzw wurden Entwickelt und nun gewartet und weiterentwickelt. Es gibt so viele Entwickler die für Java Entwickeln und deswegen wird das nächste Projekt auch wieder in Java Entwickelt, da dort das nötige Know-How da ist. Es gibt eine riesige Anzahl an Frameworks für Java so das man nicht bei jedem Projekt das Rad neu erfinden muss, sondern Frameworks, APIs verwenden kann und so kosten und Zeit reduzieren kann und durch die vielen Anwender des Frameworks, APIs darauf hoffen kann, das diese auch weiter entwickelt werden und Bugs gefixt werden. Was bei Eigenentwicklungen immer selber gemacht werden muss. Und es gibt sicherlich noch eine große weitere Anzahl an Gründen warum Java noch so beliebt ist.

Java könnte sich auch als totaler Schrott noch lange ausruhen, da ist nichts vorzumachen,
deswegen steht da auch simples C vor allen Nachfolgevarianten, seit 1985
(vielleicht dort aber auch ganz anders :wink: )


und das Erscheinen einer neuen Großsprache ist etwas ziemlich schwieriges und seltenes

bei Java vs. C hat es geklappt, unter recht idealen Voraussetzungen:
Java kann alles Wesentliche was C kann, gleiche Sprache, aber sauberer, zig wichtige Dinge besser, dabei auch noch leichter zu erlernen,
in jeder wichtigen Hinsicht besser, keine Diskussionen und Zweifel,

das muss für sich nichts heißen, unter Konkurrenz von vielen und ohne Änderungsnot kann so eine Sprache auch unbedeutend bleiben,
aber Java hatte die 90er und 2000er ziemlich konkurrenzlos Zeit, einen Großteil der Zielgruppe neuer Programmierer einzufangen

auch wurden wesentliche Frameworks wie Webserver, moderne GUIs, Persistenz usw. in dieser Zeit erst so richtig entwickelt,
konnte leicht gleich in Java geschehen, keine immensen Wechsel-Verluste


da sieht es aktuell weitaus schwieriger aus, wo C schon immer schlecht war und Java, nachdem zum Vergleich vorhanden, sofort objektiv besser ,
ist heute Java objektiv immer noch gut für alles,

Scala ist eine von vielen Alternativen, welche soll sich durchsetzen?
Verteilung macht alle schwach und stärkt die Einzelkonkurrenz (siehe auch Apple vs. Android-Varianten :wink: ),

die imperative Sprachwelt zu verlassen ist sehr sportlich,
trotz klarer Einzelvorteile, wie schon immer von funktionalen Sprachen bekannt, ist die allgemeine Programmierung darin zweifelhaft, ich glaube nicht daran

Scala ist schwer zu erlernen, selbst für vormalige Java-Profis, und das ist auch bedenklicherweise die Hauptrekrutierungsquelle,
welcher Neuling sollte so anfangen? welche Uni würde auf Scala setzen?

‚universität scala‘ in Suchmaschinen findet ein Praktikum und einen Workshop, sonst mau,
da müssen schon auf der ersten Seite Ergebnisse wie ein Professor namens Klaus Scala, oder Besuch der WDR-Musiksendung Scala an einer Uni herhalten…

ist natürlich immer der Teufelskreis, warum etwas pushen was klein ist → und bleibt damit klein,
aber Java wurde gegenüber C gepusht, weil es eine natürliche Notwendigkeit und keinerlei Zweifel an Überlegenheit gab,
beides fehlt zu Scala, der Programmieransatz ist vielleicht eher einer Gefahr als Fortschritt :wink:

Brüste

@CyborgGamma : Kannst du bitte einen anderen Benutzernamen wählen, oder die Mods darum bitten, oder deinen Account einfach stelllegen, dann gibt es keine Verwechslungsgefahr, wenn wir ohnehin keine gemeinsame Schnittmenge haben. Dankeschön.

[edit SlaterB: Anmerkung intern weitergeleitet (edit: als berechtigtes Problem ähnlicher Namen)]

@SlaterB : Ein sehr guter Beitrag auf so eine allgemeine Frage! Du hast sehr viele Aspekte mit eingebracht.

Ich denke, um heutzutage Java ‘abzulösen’ müsste eine Sprache mindestens genauso einfach sein (Syntax und damit Erlernbarkeit) und dazu die aktuellen Herausforderungen VIEL besser lösen können (eventuell ausdrucksstärker sein, aber das ist bei einfacher Syntax schwer möglich).

Java wird in 10 Jahren einen ähnlichen Stellenwert wie heute COBOL. Im Grunde ist das auch jetzt schon so, die Projekte die in Java gemacht werden sind zum größten Teil im Finanz/Versicherungsumfeld, also genau dort wo früher COBOL eingesetzt wurde. In solchen Bereichen zählt Kontinuität und Sicherheit.

Bei hippen, neuen Sachen spielt JavaScript (nodejs) und auch wieder zunehmend PHP (dank Facebook) eine Rolle. Der Grund dafür ist meiner Meinung nach, dass es dabei häufig um “Time to market” geht. Sprich man kann wahnsinnig schnell Sachen auf die Beine stellen und vor der Konkurrenz am Markt sein.

Ich sehe kaum Bedarf für Scala. Es ist ein nette Sprache und mit dem Playframework kann man relativ schnell was machen. Aber es ist für Banken ist es zu unsicher, wie es in 10 Jahren mit Support aussieht und für Startups sind nodejs und PHP einfach noch attraktiver.

Es wird sicherlich ein paar Scala-Projekte geben, aber ich glaube nicht, dass da noch ein großer Boom kommt.

Java wird in 10 Jahren einen ähnlichen Stellenwert wie heute COBOL. Im Grunde ist das auch jetzt schon so, die Projekte die in Java gemacht werden sind zum größten Teil im Finanz/Versicherungsumfeld, also genau dort wo früher COBOL eingesetzt wurde. In solchen Bereichen zählt Kontinuität und Sicherheit.

Bei hippen, neuen Sachen spielt JavaScript (nodejs) und auch wieder zunehmend PHP (dank Facebook) eine Rolle. Der Grund dafür ist meiner Meinung nach, dass es dabei häufig um “Time to market” geht. Sprich man kann wahnsinnig schnell Sachen auf die Beine stellen und vor der Konkurrenz am Markt sein.

Ich sehe kaum Bedarf für Scala. Es ist ein nette Sprache und mit dem Playframework kann man relativ schnell was machen. Aber es ist für Banken ist es zu unsicher, wie es in 10 Jahren mit Support aussieht und für Startups sind nodejs und PHP einfach noch attraktiver.

Es wird sicherlich ein paar Scala-Projekte geben, aber ich glaube nicht, dass da noch ein großer Boom kommt.