Ansichten eines Informatikers

Sprachwirrwarr += Scala

Hadmut
9.4.2010 18:22

Langsam krieg ich echt zuviel.

Es gab mal so eine Zeit, da war man mit 4 oder 5 Programmiersprachen gut aufgestellt. C und C++ für “echtes” Programmieren. Bourne- und C-Shell für Unix-Skripten. Perl für Administratives. Fertig.

Irgendwann ging das mal los, daß die Sprachen aus dem Boden schoßen wie blöde. TCL/TK für Graphische Oberflächen. Java und Javascript fürs Web. Lisp für Emacs, Scheme für irgendwas anders. PHP nicht zu vergessen, weil die meisten Apps in PHP sind. Dafür geht vieles jetzt in Python, was doof ist, weil Ruby viel besser ist und zu Rails führt. Microsoft kommt mit C# daher, Occam hab ich auch mal gebraucht. An der Uni programmieren sie Gopher und weiß der Kuckuck was nicht alles. Und für die Texterstellung programmiert man am besten in TeX. Gelegentlich muß man auch noch mal was in Postscript programmieren. Ach ja, und weil Ruby on Rails zu langsam ist und man überhaupt alles noch einmal aufkochen mußte, kam dann noch Groovy mit Grails, läuft auf der JVM. Dazu kommen noch die ganzen proprietären Sprachen in den verschiedenen Anwendungsprogrammen, ob Office, Povray oder was weiß ich nicht alles. Ach ja, Google hat ne Programmiersprache namens Go. Und wer sich mit Apples Betriebssystem, dem iPod oder dem iPhone abgibt, der programmiert natürlich in Objective C. Es sei denn, er macht in SAP, dann nimmt er ABAP.

Und dann kriegt man Krämpfe, wenn man ständig zwischen den Sprachen wechselt. Der eine nimmt geschweifte Klammern, der andere BEGIN END, mal mit, mal ohne Strichpunkt. Mal diese mal jene Syntax. Mal haben Variablen diesen und mal jenen Scope. Irgendwann ist man beim Wechsel der Sprachen so kirre, daß man ständig Syntaxfehler usw. macht.

Nun hab ich mir – auch wegen eines Kommentares hier im Blog – mal etwas von der Programmiersprache Scala angesehen.

Und bin dabei noch über unzählige neue Sprachen gestolpert, von denen ich noch nie etwas gehört habe: F#, nice, Clojure (wird ausgesprochen wie Klotür), loke.

Und angesagt ist jetzt eben Scala. Ich krieg zuviel.

Zugegeben, Scale sieht nicht schlecht aus. Es könnte Java in vollem Umfang kompatibel ersetzen, ist dazu kompatibel, und behebt ziemlich viele der ärgsten Probleme mit Java. Java war noch nie eine gute Sprache, grausam umständlich, von Barbaren ohne Sprachgefühl entwickelt. Scala ist deutlich besser.

Aber nach dem, was ich bisher gesehen habe, ist Scala auch noch nicht so wirklich gut. Eine gute Sprache müßte den ganzen Haufen reduzieren und dazu möglichst mehrere der Sprachen in ihrer Anwendung ersetzten. Das kann aber eine auf Java-VM basierende Sprache nicht leisten. Ich habe die Sprachdefinition noch nicht so richtig gelesen, aber so richtig gut gefällt’s mir bisher nicht. Nicht schön. Aber immerhin so gut, daß es (endlich) Java ersetzen kann. Ein Fortschritt allemal. Aber auf die Java-VM begrenzt und daher nicht allgemeintauglich.

Amüsant jedenfalls, daß man damit auch für das (eigentlich in Java zu programmierende) Android Software erstellen kann. Dann ist man nämlich Java-kompatibel, obwohl sowohl der sprachliche Oberbau Java durch Scala und der Unterbau Java-VM durch die Dalvik-Maschine ersetzt, also beides ent-SUN-t wurde. Wie ein Messer ohne Klinge, dem der Griff fehlt.

Immerhin: Angeblich soll der soundsovielte Rails-Abklatsch, nämlich Lift für Scala, brauchbar und schnell sein. Rails war vieles, nur nie schnell. Was immerhin den Vorteil hätte, daß man einige Sachen (Webanwendungen, Android) in einer gemeinsamen Sprache schreiben könnte. Und das wäre ja auch schon mal was.

Also schaun wir mal…

7 Kommentare (RSS-Feed)

Stefan W.
10.4.2010 6:55
Kommentarlink

Ja, ich arbeite mich so langsam in Java ein, und was ich nicht gut kann, und auch ziemlich hasse, ist Auswendiglernen. Und in anderen Programmmiersprachen ist oft vieles gleich, nur anders – und v.a. die APIs muß man ja auch immer neu lernen.

Daher ist es schon von Vorteil, wenn man mit einer Sprache fast alles erschlagen kann.

Scala macht mir definitiv mehr Spaß, und ich kann das ganze API-Wissen aus der Javawelt mitnehmen, das ist ein großer Vorteil.

Es gab auch eine Implementierung für .net – ob die fortgeführt wird, zweiter Klasse fährt oder eingestellt ist weiß ich gar nicht. Ich bin jedenfalls mächtig verstört wenn ich Console.writln (“foo”) oder derartiges lese. 🙂

Zu lesen finde ich Scala schwieriger als Java, und es heißt, dass viel mehr Zeit auf das Lesen des Codes verwendet wird, als auf das Schreiben, so dass das auf den ersten Blick gegen Scala zu sprechen scheint, aber wenn man eine Sprache neu lernt braucht man natürlich auch länger, um sie zu lesen. Mit mehr Routine wird man scala vielleicht auch schneller lesen können. Teils verdampft der Overhead ja gewaltig.


Enno
10.4.2010 10:24
Kommentarlink

Stefan, du hast ja mein Entsetzen beim Anblick von J/K-Code live erlebt. Ich weiss nicht, ob wir das dem Hausherren zumuten können. Produktiv ists allemal, wenn man die Project-Euler-Probleme als Maßstab nimmt.


Hadmut
10.4.2010 11:10
Kommentarlink

Ich hab gerade gestrichen die Schnauze voll vom Debuggen unter C++. Ich suche ein undokumentiertes Detail im Programm digikam. Ein Molloch in C++, allein die Compileraufrufe belegen fast eine Bildschirmseite.

Und weil man es nie geschafft hat, für C++ eine ordentliche Standard-Library zu schreiben, verwenden viel (insbesondere aus dem KDE-Umfeld) die Klassenbibliotheken von Qt. Was aber dann wieder bedeutet, daß man selbst dann, wenn es nicht um eine GUI, sondern um gewöhnliche Library-Funktionen zum Zugriff auf Dateien geht, die Bibliothek einer graphischen Benutzeroberfläche mit einbinden muß.

Das ist ein so unglaublicher Mist…

Wir haben heute keine einzige ordentliche und brauchbare Programmiersprache.


yasar
10.4.2010 11:49
Kommentarlink

Eine weitere Programmiersprache, die vielleicht endlich die ersehnte eierlegende Wollmilchsau ist (oder auch nicht), wird das Problem aber trotzdem nicht lösen können, zumindest nicht in der Zeit, die Leute unseren Alters noch erleben werden. Dazu ist das beahhrungsvermögen, um nicht zu sagen die Faulheit, der Programmierer zu groß. Die meisten programmieren in den Sprachen mit denen sie “aufgewachsen” sind, und behalten diese Angewohnheit bei. Ich selber programmiere ja kaum noch und wenn, hack ich das meist in C, bash-script, Perl o.ä schnell zusammen, als mir den Aufwand zu machen mich in die neuen tollen Programmiersprachen einzuarbeiten. Natürlich habe ich da mir die ein oder andere mal angeschaut, aber richtig da drin zu arbeiten erfordert halt mehr Aufwand und Zeit, die mir für andere Sachen wichtiger ist. Und ich denke, daß es anderen auch nicht besser geht.

Außerdem wieder die vorhandene Codebasis nicht von heute auf morgen verschwinden, d.h. die Leute werden noch Jahrzehntelang die Altlasten mit herumschleppen, genauso wie es heute immer noch Anwendungen gibt, die in Fortran und Cobol geschrieben sind und weitergepflegt werden.

Von daher kann man einfach nur hoffen, daß da einen zweiten Linus irgendwann gibt, der eine Initialzündung auslöst und damit eine Revolution einleitet, die alte Paradigma ablöst.


Stefan W.
11.4.2010 20:59
Kommentarlink

Da ich von APL/J/K keinen blassen Schimmer habe, und nur diese Minimalprogramme im projecteuler gesehen habe, werde ich das kaum jmd. empfehlen.

Oben das sollte nat. heißen “…arbeite mich in Scala ein” nicht ‘in Java’ – das macht ja gar keinen Sinn, nicht. 🙂


Tom Hoefer
13.5.2010 14:26
Kommentarlink

dem kann ich nur zustimmen… wir an der uni dürfen uns als semesterprojekt nicht mal selbst die programmiersprache aussuchen. unser prof. will nur python… da kriegst die krise…

alles in allem habe ich auch mal mit scala angefangen und finde es eigentlich ganz cool. ich hab auch nicht wirkilcih was gegen java an sich, nur nervt mich dieses ewiglange getippe.

ansonsten bin ich von ruby/rails absolut überzeug – rails wird mit rails3 auch schnell – bzw. war es mit jruby eigentlich schon immer…


Hadmut
13.5.2010 14:29
Kommentarlink

Welcher Wahnsinnsknoten von Professor verlangt denn Python?