Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

One of the key design principles behind Java was to be a cleaner C++: remove all the hippie stuff which make programs too hard to read back, which makes one thing look like it's something else entirely, etc. The result is a boring but reliable language, which gave birth to a wide ecosystem of good quality libraries.

Scala puts back all the hippie stuff into Java. Together with them, it brings back the associated problems which plagued C++. OK, some stuff are done in a less broken way in Scala, largely because they don't try to be a superset of C. But still, we end up with a language hard to read, hard to trust, hard to support for IDEs... not something you want to use for big teams or long-term programming.



And my natural question is: have you actually used Scala for real work, or are you just theorizing?


I had to make some evolutions in an Eclipse plug-in which was written in Scala (the module wasn't intended to manipulate Scala code, it just happened to be the implementation language). I initially had a positive prejudice, as a OCaml enthusiast who used to get paid for developping in OCaml; moreover, as someone who's been exposed to languages with serious abtraction power, I easily get irritated by Java.

The code was a true pain in the ass to work with: integration with OSGi was cumbersome, lots of black magic features were used gratuitously, the possibility to define stuff-which-look-like-methods-yet-aren't-in-the-class made quite a mess of code exploration, and of course tooling support was abysmally bad.

I know the usual rebuttal: it's the bad developer's fault, not the language's. I don't buy this, a "good" language for which you can't find decent coders isn't any good.

- Scala-like languages tend to attract guys who will mess with all the quirky features of the language;

- In real life, developers are a given and the language is the adjustment variable, not the other way around. Most people don't have the luxury of only working with rockstars, and most of the cornerstones of the Internet haven't been developed by rockstars anyway.

- The average developer will do an average job of writing maintainable Java, and an awful job of writing acceptable Scala, if only because there's no widespread consensus ov what it means for Scala code to be acceptable. Java is dull and uneventful, and I'd rather take over a syntactically dull and uneventful code base than an "interesting" one.

- I've heared several times that "you can use Scala as a Java with closures". It's a variant of the argument that there's a 5 times smaller language hidden in C++ that's beautiful: nobody ever agreed over which 20% should be selected.

The two languages which gave me the impression of trying to support every feature ever invented, and of making it very difficult for people to acquire and share a notion of standard, maintainable code are C++ and Scala. An iconic counter-example would be Python.

More anecdotically, I spent a couple of days studying how Lift works, for personal curiosity. I found the code hard to navigate into. due to too many non-orthogonal ways of composing code together. A good tooling support would have helped, but if it doesn't exist after all those years, I might mean that there's something wrong with the language: it's not as if the need wasn't clearly perceived.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: