News for hackers. Stuff that matters.
Re:In Defense of Scala. Response to “I Don’t Like Scala” by kasey_junk on Wednesday January 29, 2014 @09:51AM (#7144110)
The scala collections (even the mutable ones) generate tons of garbage (e.g. getting a value out of a map automatically creates another new object). Scala hashmaps (even the mutable ones) are much slower than equivalent java collections.
Re:In Defense of Scala. Response to “I Don’t Like Scala” by sukaka on Wednesday January 29, 2014 @09:57AM (#7144150)
A recent comparison was made with scala and java collections. Lots of interesting tidbits. http://www.takipioncode.com/2014/01/23/java-scala-guava-and-...
Re:In Defense of Scala. Response to “I Don’t Like Scala” by thescrewdriver on Wednesday January 29, 2014 @09:54AM (#7144124)
It seems that the performance difference has little to do with temporary objects, but is to be fixed 2.11 anyway: https://groups.google.com/forum/#!msg/scala-internals/Fw37Nm...
Re:In Defense of Scala. Response to “I Don’t Like Scala” by ionforce on Wednesday January 29, 2014 @10:23AM (#7144322)
> getting a value out of a map automatically creates another new object

Do you have a code sample for this?

Re:In Defense of Scala. Response to “I Don’t Like Scala” by kasey_junk on Wednesday January 29, 2014 @10:30AM (#7144377)
From MapLike.scala

def apply(key: A): B = get(key) match { case None => default(key) case Some(value) => value }

From HashMap.scala

def get(key: A): Option[B] = { val e = findEntry(key) if (e eq null) None else Some(e.value) }

Re:In Defense of Scala. Response to “I Don’t Like Scala” by azth on Wednesday January 29, 2014 @06:51PM (#7148046)
Out of curiosity, how would you rather have them be implemented? You either return an Option, or you will have to deal with null pointers.
Re:In Defense of Scala. Response to “I Don’t Like Scala” by kasey_junk on Wednesday January 29, 2014 @10:30PM (#7148910)
Not sure how familiar you are with the Scala syntax, but that code actually has null pointer problems. The apply function turns Options into null pointers. They've given me the worst of both worlds, not only do I get null pointers, I get to have extra garbage created to accomplish it.
Re:In Defense of Scala. Response to “I Don’t Like Scala” by azth on Thursday January 30, 2014 @04:05PM (#7153358)
Yep I get that point. However, how would you avoid extra allocations and maintain safety (no nulls)?
Re:In Defense of Scala. Response to “I Don’t Like Scala” by kasey_junk on Thursday January 30, 2014 @10:43PM (#7155110)
I actually have no problem with the extra allocations if they maintain safety (that's not quite true, I actually need to break safety occasionally).

The problem is that the incoherent design of the collections library means that it is not clear to the programmers of the default mutable hash map lookup what they are striving for.

If they were striving for performance they would use a model that allowed for NPE against safety, that had allocation semantics that were sensible. Conversely, if safety was the overriding concern they wouldn't allow for the NPE.

Instead, in one of the most central data structures of the language we get unreasonable behavior. This is clearly a sign of bad design, thus reputing the original assertion that the Scala collections library were a good example of type programming.

PS: To trivially answer your question, they should have inverted the implementation here. A NPE throwing method for lookup wrapped with option sugar would make way more sense than the inverse.

Re:In Defense of Scala. Response to “I Don’t Like Scala” by azth on Saturday February 01, 2014 @01:58PM (#7162838)
Makes sense, thanks for your answer :)