16 comments

[ 2.9 ms ] story [ 46.8 ms ] thread
Finally we don't have to change the code to run by interpreter or compiler! Fixed one of the most annoying thing for me.
Says our lead programmer: "The new parallel collections are amazing!"
nice to hear that. parallel computing is the reason i choose scala.
> parallel computing is the reason i choose scala.

What?

He said, "parallel computing is the reason [he] chose Scala."

That help? ;-)

I don't think said person of discussion understand what parallelism is. :\",
This to me is amazing in it's brevity:

  //Uses 4 threads
  (1 to 4).par.foreach(x => /*some long computation*/ }
I'd love to see how other languages can do it more tersely with their standard libraries.
In haskell you could write something like this: parMap rseq (\x->/some long computation/) [1..4]

using the standard Control.Parallel.Strategies library (use rwhnf instead of rseq unless you are using v3).

In python:

  from multiprocessing import Pool
  p = Pool(4) # 4 worker threads
  p.map(somefunc, someiter)
Not sure if this is apples-to-apples. Regardless, I'm always skeptical of the behavior of threaded code, even if it's embarrassingly parallel stuff that is divided among workers.
Unfortunately the multiprocessing module is a lot less efficient in many cases. Scala doesn't have to copy the entire collection across process boundaries or launch the runtime multiple times. (In this particular rather trivial example it doesn't matter much because an Int range is used). I'm afraid Python is losing out in the parallel world due to the GIL as more CPU cores become the norm.
anyone know when the pace of evolution of scala will drop?
how could that possibly be known? Hopefully never, if you ask me.
for what it's worth, there's nothing magical (or random) about computer languages - they tend to become more stable over time because they (1) reach some level of internal consistency and (2) become more popular (pressure for backwards consistency).

so yes, it probably is possible to answer this question to some degree if you've been watching scala grow. i haven't, which is why i asked.

I see only library changes in this announcement, so apparently the language itself is rather stable.
I really hate that their collection joining method is called `mkString` instead of `join` like it is in C#, JavaScript, Python, Ruby, and others.
I don't hate it as such, but it did make me do a double-take to figure it out.

THAT part of it I hate; we, as programmers, often rely far too heavily and broadly on mapping what we see to what it means. Call stuff what it is.