A Year Of Scala
blog.joa-ebert.com
blog.joa-ebert.com
Also, the team as a whole prefers Python to Scala... I took pleasure in learning how to express my code in increasingly functional and compact ways, but my coworkers found struggling with the type system to be too much of a headache. In particular, there are rough edges when you are integrating Scala code with Scala types and data structures with Java code with Java types and data structures. In any case it will be easier to find programmers who write in Python than those who might write Scala.
Scala gave me more personal pleasure to write in, but Python isn't bad either. I miss the type system and the many classes of errors it could help prevent at compile time, but I appreciate being able to change Python code and put it to the test immediately. The loss of expressiveness is probably made up in part by being forced to write code that is more easily read. I still hope I will be able to find a job writing in a functional language in the future...
I'm a huge Scala fan but even after a year of hobby programming here and there I feel like a beginner...
The Scala language designers took a long time examining the shortcomings of java and other languages and ended up improving them, and at the same time coming up witha much smaller language specification.
If anything, Java was the C++ and Scala is the C.
"Much smaller language specification" is a red herring. The issue is (practical) comprehension.
"C was a well designed language that was later added onto haphazardly and you ended up with C++."
http://www.amazon.com/Design-Evolution-C-Bjarne-Stroustrup/d...
I've read that book. (Have you?) Nothing "haphazard" about C++.
However, in context of OP's comment above, the strong suggestion made was that shorcoming == poorly designed.
And that is a completely wrong assessment of Java and its designers. It is an exceptionally well thought out system and language. Again, the proof is in the pudding. Google and Oracle are not fighting over scala ...
A language designer must make choices. 2 choices have been identified as "shortcomings" (in the sense of this thread). Empirical evidence suggests that they indeed picked a very productive sweet spot.
As an aside, the current disfavor of "crowds" for Java is all together too familiar to the past fervor of "crowds" for Java. You may wish to reflect on that.
You seem to be arguing that popularity and quality are synonymous. I do not think that is a very useful way to evaluate programming languages.
Do you have actual data showing productivity gains for using Java over Scala or other languages that run on the JVM? How about Java and non-JVM languages? Even anecdotal evidence? You are advocating for empirical evidence, but are not providing much in this discussion that I can see.
No. And yes, of course. (Java is not exactly "popular" these days.)
"Do you have actual data showing productivity gains for using Java over Scala or other languages that run on the JVM?"
Do you have actual data from a study that shows such studies are worth their virtual ink? Cite it, please. Lets pretend we have an actual market economy in this country: How many businesses have shot themselves in the foot with Java? How many have bet the farm (IBM, Oracle, even Google has hedged on this tech) on Java? Are they all idiots who do not appreciate the grave "shortcomings" of Java and its impact on the "productivity" of their workers ants? Are you kidding me?
"You are advocating for empirical evidence, but are not providing much in this discussion that I can see."
One needs to point out the overwhelming presence of Java in OSS? Well, consider it pointed out. Pretty darn good showing for a language with such serious "shortcomings".
Anecdotal? Have been programming since 16. That was 30 years ago. Have done/seen enough to have a reasonably informed opinion regarding languages. Everyone of them has its set of issues. Java included. But it is actually one of the most productive languages I have worked with to date.
Because of the language design, or because of the libraries and the jvm (GC, the fact that it's bytecode, etc)?
Do you think Scala would make you less productive?
The "shortcoming" of Java is due to none other than the JVM:
http://java.sun.com/developer/technicalArticles/DynTypeLang/...
>Even the required detour of multi-core resulted in the industry's gold standard of memory models: JMM.
Which has absolutely zero to do with java the language. Did you forget what we were talking about in your second sentence?
1) Rewriting code to make fewer memory allocations or, in some cases, allocate memory for shorter periods of time (so it doesn't get promoted to a longer lived heap)
2) Garden variety GC tuning. Tune the various heap sizes, and GC algorithms used.
This is getting tiring:
public class MyGraphThingee extends Graph<Foo, Bar>