Auf dem Weg zur Demystifizierung von Scala

Hartmut Schlosser

„Alle, die sagen, Scala sei wie EJB2, verbreiten FUD“ (Fear, Uncertainty and Doubt), twitterte Scala-Gründer Martin Odersky am vergangenen Dienstag. Die heftige Reaktion richtet sich an Stephen Colebourne, das von vielen geschätzte Mitglied der Java-Community, der in seinem viel beachteten Blogeintrag „Scala feels like EJB 2, and other thoughts“ darlegt, warum er Scala nicht mag.

So deutlich wie Colebourne hat selten jemand seine Abneigung gegen den von vielen als potenziellen Nachfolger von Java gehandelten Sprachneuling ausgedrückt:

I don’t like Scala. And that dislike is increasing. Specifically, I do not want to spend any of my future working life having to write code in it. Stephen Colebourne

Scala Kritik

Colebourne begründet sein Urteil. Scala schlage den falschen Weg für die Zukunft der Prorammierung ein.

There is lots to say about Scala, and very little is good. Stephen Colebourne

Zum einen fehlt Colebourne ein richtiges Modul-System in Scala. Während Java selbst seit Jahren damit kämpfe, ein geeignetes System zur Modularisierung einzuführen, werde immer klarer, dass ein Modulsystem bereits zum Anfang eines Sprachdesigns mit bedacht werde müsse. Bei Scala wäre dies möglich gewesen, sei aber nicht geschehen – die Integration mit Lösungen wie Ivy und Maven genüge nicht.

Ein zweiter Kritikpunkt Colebournes richtet sich an die Concurrency Features in Scala. Obwohl Scala stets die Wichtigkeit hervorhebe, Konstrukte für nebenläufige Programmierung bereit zu stellen, werde das eigentliche Problem nicht angegangen: der geteilte, veränderbare Zustand.

Bittere Worte fallen zum Typensystem in Scala. Dieses sei so komplex, dass die Mühe, die man damit habe, in keinem Verhältnis zu dessen Nutzen stehe. Zudem sei die Scala-Syntax
generell so offen angelegt, dass ein Scala-Programm nur schwer zu entschlüsseln sei.

Auch die Scala-Community ist Colebourne unsympathisch: laut und schnell bereit, Kritiker auseinanderzunehmen. Zudem bestehe eine gewisse Tendenz, dass vor allem solche Entwickler sich Scala zuwenden, die von der mathematischen Seite der Programmierung fasziniert sind, die sich gut in Typen-Theorie auskennen und funktionale Hardcore-Programmierung lieben. Müßige Diskussionen über richtige Lösungswege würden geführt, und dabei seien einige schnell bereit, sich anderen Teilen der Programmier-Community, die mehr Wert auf Produktivität legen, überlegen zu fühlen.

Colebourne´s Kritik gipfelt in einem unrühmlichen Vergleich: Er nehme Scala so wahr wie seinerzeit EJB2: Statt Komplexität zu reduzieren, mache Scala wie früher EJB2 alles nur schwieriger. Wie EJB2 sei auch Scala der gut gemeinte Versuch, etwas mit einem höheren Abstraktionsniveau zu schaffen. Das Ergebnis allerdings erzeuge mehr Komplexität als es vermeide und adressiere obendrein nicht die wirklichen Probleme.

Colebournes Fazit:

Of course the upside for Scala of my EJB 2 comparison is that EJB 3 is a lot better. Thus, it is conceivable that Scala could reinvent itself. But I would point out that EJB 2 and 3 are essentially utterly different approaches, happening to share a common name. I would say that Scala would need a similar reinvention from scratch to solve its problems. Stephen Colebourne

Reaktionen

Erwartungsgemäß erntet Colebourne in seiner exponierten Stellung heftige Kritik:

  • Syntax:

    Scala’s syntax is specified by a relatively small number of well-defined rules. Once you learn those rules, it is easy to read. sreque

  • Typensystem:

    I agree the type system can be daunting at times but you don’t need to understand all of it to be productive in the language. It does truly scale to developer needs. The problem is we have a lot of well-meaning blog posts and articles that are basically treatises on type theory and IMHO they detract from mainstream usage of the language. eaparnell

  • Concurrency:

    Scala handles concurrency better than any other JVM language right now. On the other hand, the only languages I know of that track purity are Haskell and DMD. Once again, Scala is pretty much state of the art here and the „weaknesses“ he points out really aren’t weaknesses. sreque

  • Modulsystem:

    The phrase „module system“ is heavily overloaded and different communities mean different things by it. Scala people mean something like the SML module system, Stephen means something more like OSGi or Jigsaw. Neither is particularly more correct usage of the phrase – both have a lot of history behind them. James Iry

  • EJB2 = Scala:

    Scala CUTS DOWN boilerplate. EJB2 on the other hand INTRODUCES MORE boilerplate. So, the comparison is incorrect. NikT

  • Scala Community

    I have found the discussions on the mailing lists to be very helpful, and questions are generally answered very quickly. [.] I totally take the point that there are one or two quite vocal people on the lists that can give people a bad impression of Scala. Every community has a few of those, but they are also a minority. The ones on the Scala lists also post very interesting things too.
    Retro Programmer

Scala allows you to just start writing it tomorrow into your existing java projects and ide’s… it has enough „cred“ that you can convince your management to allow you to do it… and it fixes many of the real problems that exist in java. Darren

Die Demystifizierung von Scala

Colebourne hat auf die Kritik reagiert und in einem Folgebeitrag dargelegt, dass der Blogpost aus einem rein fachlichen Anliegen heraus geschrieben wurde und nicht mit der Absicht, FUD zu verbreiten. Colebourne selbst promoted die Sprache Fantom, in der er viele interessante Ansätze sieht. Auch für die vielen zustimmenden Kommentare bedankt sich Colebourne. Denn mag Colebourne mit seiner persönlichen Einschätzung Recht haben oder nicht – auf der Haben-Seite kann er verbuchen, so etwas wie ein goldenes Kalb vom Sockel gestoßen zu haben. Vielen galt Scala als so unantastbar, dass Kritik daran auf das eigene Unvermögen zurückgeführt wurde, die Sublimitäten der Sprache voll zu verstehen.

Rückendeckung bekommt Colebourne übrigens auch von Alex Blewitt, der in einem InfoQ-Artikel die Praxis im Scala-Entwicklerteam bemägelt, die Binärkompatibilität in jedem neuen Release zu brechen. Nehme Scala die Kritik aus der Community nicht ernst, könne es den Vorsprung verspielen und andere Sprachen wie Fantom oder Xtend beflügeln. Oder Java selbst könnte nach einigen weiteren Releases – mit Closures und einem State-of-the-Art-Modulsystem – auch die Scala-Affinen wieder fesseln.

Wie dem auch sei: Vielleicht beginnt mit der Kritik Colebournes ein Art Scala-Demystifizierung, die dazu führt, die verbale Hochrüstung abzubauen, den Hype-Faktor zu überwinden und zu konstruktiver Kritik überzugehen. Der Professionalisierung von Scala, die im Rahmen des Typesafe Scala-Stacks ja in vollem Gange ist, täte es gut. Und dass man daran arbeitet, die Produktivität mit Scala zu erhöhen und – wenn gewünscht – Komplexität zu verbergen, deutet Odersky in seinem Tweet an, in dem er auf das vor Kurzem ins Scala-Lager gewechselte Play!-Framework hinweist:

Scala is @playframework. Anybody saying it feels like EJB 2 has understood nothing or is spreading FUD. Martin Odersky

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.