Hacker News new | ask | show | jobs
by penland 4465 days ago
Man that's a bad post about Scala. Scala has a lot to love and a bunch to hate within the language itself, but writer doesn't appear to have the ability to actually discuss it.
4 comments

I completely disagree. The blog entry contains enough details to make me think that Graham actually understands Scala. And he raises valid complaints:

* Compile-time is slow * IDE support is more poor than Java * Overuse of operator overloading is confusing * Implicit confusing

I don't necessarily agree with all of these criticisms, but it's a very valid piece of "feedback" to the Scala community.

Scala doesn't have operator overloading btw. It just doesn't restrict method names very much. This is very different from how C++ treats operators as special cases.

If you give your methods bad names, it really is not the language's fault. You can probably find a way to make a bad API even if you are limited to a-zA-Z0-9 ...

If a library has an inscrutable set of method names blame the lib not the language.

Operators are treated specially in scala. Methods with certain names have wildly different precedence rules.

The special operator rules allow library authors to create a "DSL" without using the (difficult) macro system. This almost never ends well.

I know that, and I use the term only because the author did. I agree that it's the fault of library designers not on the core language, but it is still a legitimate issue to raise.
Fortunately it's feedback that the community has taken to heart. 2.11 should improve compile times, as will new incremental compilation features in SBT 0.13. IntelliJ's Scala support has gotten much better recently and the official Scala plugin for Eclipse has also made major strides. (Though I still use vim)

Odersky has taken an official stance against symbolic method names, especially in libraries, and many of the most famous offenders (Dispatch's absurd periodic table) are rightly ridiculed within the Scala community.

I don't have anything to add on implicits. They've certainly tripped me up a few times but generally it's just a matter of finding the right import, though I have been cursing Play's implicit JsValueWrapper the last few days.

Thanks. I should add that dispatch has long abandoned their periodic table (before they got called on it last Scala Days, actually).
That's good to know. I haven't used Dispatch since 2011 when I first started using Scala (that was a rough introduction). I'm looking forward to Play moving their WS package out of the core though—right now we've basically written a few wrappers around AHC in their style for the pure Akka parts of our stack but we'd love to standardize.
Agreed, his terse ~5000 word post to describe what you did in ~120 characters was well thought out.
I found it quite interesting how the Scala community reacted to such rants in the past -- mature & civilized, actually discussing pros & cons.
Feel like actually discussing the article instead of attacking the author?
Why?