"Why do we have a special syntax for arrays in the language while collections are implemented in on top of the language? And isn't a bit irritating to convert them from one to another all the time?"
Perhaps it's just me, but I do not convert collections to arrays "all the time". I can't remember the last time I did so. It seems that the author has some bad experiences with certain libraries, but he shouldn't assume that it is part of the standard java experience.
I also don't see why this:
for(int idx = 0; idx < names.length; ++idx)
System.out.println(names[idx] + ": " + ages[idx]);
}
is "surprisingly tough to implement cleanly" compared to: names zip ages foreach {p => println(p._1 + ": " + p._2)}
The second syntax may be clear to Scala programmers, but I think the Java version can be understood by most programmers