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

People should be investing time in Scala (compiler and tooling, e.g. IDE support) instead of designing their own language that probably won't get a lot of traction.


I'm not sold on Scala and my colleagues aren't either.

For an outsider it looks like a C++ for JVM: A language of endless short-sighted features that's going to bury yourself under it.

It's not even Haskell because Haskell strives to be elegant.


Actually C++ looks simple compared to Scala. E.g. C++ iterators seem complex and tricky compared to say Lua's.

But let's just look at one element of Scala's truly byzantine iteration logic collection: Iterable

Inherited: Iterable IterableLike Equals GenIterable GenIterableLike Traversable GenTraversable GenericTraversableTemplate TraversableLike GenTraversableLike Parallelizable TraversableOnce GenTraversableOnce FilterMonadic HasNewBuilder AnyRef Any

Implicitly: by traversable2opsby MonadOpsby any2stringaddby any2stringfmtby any2ArrowAssocby any2Ensuringby alternateImplicit

Source: http://www.scala-lang.org/api/current/index.html#scala.colle...

..and now explain what all these aspects actually do! And that's just one small element!

And look at the method set of that thing.. Whoa! Again C++ suddenly seems minimalist.


To be fair, this is a list of everything inherited, not just one level up, but the full transitive closure. All of the Gen* classes arrived with 2.9 when parallel collections were added.

Also, the implicits shown are any implicits which can be invoked on Iterable, which includes all implicits which can be invoked on Any.


Am I supposed to be intimidated by a list of 100 things you can do with an Iterable? Each one seems pretty reasonable. The C++ stdlib has 100 things you can do with iterators, too.


Scala is one of the best languages out there if your job is to write code. If you spend a non-trivial amount of time reading it, it depends on which of the sublanguages the original writers used.

If Scala is used as "ML with OO features when really needed but not otherwise" it's quite nice, but I would not advise using Scala without a style guide for a multi-developer project.


What happens is that every single bit of functionality is split up and abstracted away, so that code duplication is kept at a minimum.

Considering that Scala ships with BOTH tons of collection types AND tons of useful operations, this seems to be a sane thing to do.

Scala manages ...

- to make both adding a new operation AND adding a new type not suck too much

- to retain the “best” collection type through operations, without duplicating code left and right

Most other languages fail already at point number one. No other language has managed to achieve point number two, let alone both.


To be honest, neither am I. I've done small projects in Scala (+libraries) and the amount of clever small features makes for short (maybe sometimes even elegant) code, but readability is a nightmare.

Front and foremost, though, I found tooling to be lacking. Reading a stack trace is horrible, the compiler is slow and the two most mature IDEs (IntelliJ IDEA and Eclipse) both have problems highlighting/checking and completing code.

For now, I'll probably stick with plain old Java.


For now, I'll probably stick with plain old Java.

You should consider Clojure. The community is evolving in a way that compensates for some of the tool chain problems, and Leinengen is definitely more intuitive than SBT.

My traditional bias favors static typing, but I think Clojure might beat Scala because for most web applications, runtime typing (you can implement similar guarantees as in compiled languages; however, checking isn't at compile-time and therefore your testing will be less performant) is good enough.


Been there and done that. However, designing languages to push the state of affairs forward is more my cup of tea (working on Scala helped with a lot of ideas though).

Writing tooling is incredibly difficult, especially when Eclipse isn't really designed to support new JVM languages. It is easier to write an IDE for your language than to plug into Eclipes.




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

Search: