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

Except your argument is invalid because java has continued to add features and keywords to address its flaws.

It is moving towards scala, just at an incredibly slow rate.



But moving at an incredibly slow rate is exactly what the Gosling document says: Java will only implement features that are familiar and proven, namely years after they've been introduced. Also, Java's philosophy says that no feature is to be adopted, no matter how nice, unless it solves a very, very, very painful problem. Many people, myself included, think it's a very wise stance for such a widely adopted language.

Scala is first and foremost a research language. It has some very good features and some terrible features. Also it is completely unopinionated. But that's how it's supposed to be: as a research language, its main goal is to figure out what works and what doesn't, so that mainstream languages years from now will know what works and what doesn't.


Sure, Scala is used for research, it came from research, but I don't think it's accurate anymore to say it's a research language. Some of our clients are doing some really cutting edge stuff, but I wouldn't call them research institutes. I'm of course biased as well, but I'd say Scala's been maturing nicely with 2.10.x and (soon!) 2.11.0.

For example, which of the official new features in Scala 2.11.0 is research-y, would you say? We worked on faster incremental compilation, started modularizing the standard library, improved our infrastructure for better integration builds with SBT & Scala IDE. We did add experimental support for SAM types -- is it "research" to prepare for Java 8 interop? The main experimental features are of course reflection and macros, developed at EPFL. I'd say we've been pretty clear about labeling these experimental bits "experimental".


If java was taking things out as it added new things in, then we'd have a good debate on our hands. Alas, they don't seem to be taking this stance, and instead are adding in more and more (just slowly) without removing any of the cruft.

Despite reading your many "scala" rants on HN, I still don't know which features you think are 'terrible', just that you think there are some that confuse you and/or are allow you to something multiple ways (abstract classes vs. interfaces with concrete implementations say what???).

Care to actually articulate the 'terrible' features this time?


Java can't take stuff out, at least not anything major. Java's adoption is two or three orders of magnitude higher than most languages out there (except C/C++); you can't make so many millions of developers go back and change 10 or 15 year-old code. One of the reasons it's this popular is that it's consistently backwards compatible.

I don't want to be dragged into the Scala discussion again (after all, these are just opinions; I realize some people really like Scala, but for some reason, Scala people just find it hard to accept the very real fact that some people don't like it, and it's not because they haven't tried it or don't understand it).


FYI: The comment was put there to stimulate discussion. Thanks for the perspective and reading material provided.




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

Search: