A lot of the "OMG Scala <3" stuff being written recently comes from people who have written Scala books and therefore kind of have an agenda.<p>The essential idea behind the post is this: using a language like Scala can make you use a mainstream language like C# or Java differently. By using a language that makes immutability the default it teaches you when mutable state is actually necessary and when it isn't. This will lead you to write code in whatever normal language that also has less mutable state, and fewer side effects. It will therefore be easier to test and have fewer bugs.<p>And, no, I have not written any Scala books and have no Scala-related products/services to sell you.
I can't describe how happy I'll be when we have lambdas in C++. Them + the STL will be a very lightweight gateway drug into functional programming for a lot of programmers.
1. "I enjoy the benefits of static typing such as types as documentation"<p>Documentation as a side effect of types is somehow better than a system designed for good documentation?<p>"code completion in IDE"<p>See 1<p>"execution speed"<p>See LuaJIT, Self, Javascript ... etc<p>The reasons people often give to justify losing (types) so much flexibility (late binding) never add up to me.
I have no idea why anyone would use ++i (though technically correct) instead of i++ in a for loop's incrementation clause since the incrementation is done <i>after</i> the loop body, not before... That just seems like willfully confusing intuition.