- About Scala
- In the Enterprise
- Scala Community
- Language Research
- In the Press
- The Scala Team
- Scala's Prehistory
- Contact Us
- Learning Scala
- Tour of Scala
- Scala API
- Setup & Getting Started
- Programming Guides
- Other Guides
- Code Examples
- Scala Developers
Is Scala the Next C++
I have recently seen a number of discussions around issues like "is
Scala too complex, "is Scala too hard to learn," "Thinking in a
language vs. thinking into a language." etc.
I find these discussions fascinating as I often find myself on both
sides of the fence. At times I find coding in Scala increasingly
seductive and satisfying, at other times I try to read some of the
advanced code and concepts I see people discussing and I feel like a
moron who has no hope to ever grok what they mean, let alone simply
understand it. Often I just have to be satisfied that I get the gist
This sort of reminds me of my experience with C++. I started trying
the language as soon as there were competent compilers available and
enjoyed the new learning experience, trying to sample as many new
language features as I could and was generally able to master most of
them. However, after a while I was not writing code as often and ever
time I tried to start some new little project I found the start-up
cost of having to relearn C++ too high and switched back to C as much
as possible. My experience was that unless I used C++ continuously,
the overhead of coding was too high.
Eventually I took a class from Scott Meyers. My takeaway point from
that class was that there were programmers and there were type
designers. Type designers had to be very very good at type design. On
the other hand, with well designed type libraries and APIs, being a C+
+ programmers was not so bad after all.
After a while I did not do much C++ because I moved on to Objective-C
because I drank of the NeXT Cool-Aid. I really took to Objective-C
because it was was so much more simple to think in that language than C
++, and the NeXT types and APIs were awesome.
Eventually I moved on to Java and almost immediately became addicted
to the simplicity (over C++) and power (close to C++), but mostly to
the garbage collection. There was a reason I used to love writing code
Eventually I had a job where I had to look at some C++ code again, but
by then it was Microsoft C++ with ATL/COM. My first reaction was WTF?
How did this language get so messed up? Fortunately I was senior
enough I could just say "no way I am touching that!"
Eventually Java became my de facto language and I became increasingly
proficient with it. Then I started looking at Groovy and really liked
how much more expressive Groovy was, with minimal added complexity. I
found it hard to do much with Groovy because I could not convince my
colleagues of its value. Then I found Scala and tried to learn it but
had to bail because it was too confusing. But Scala is seductive!
Eventually I found my way back and became relatively proficient with
it. Yes, I can even write in a functional style and comprehend the
value of it. But I still cannot convince my colleagues of its value
Martin Odersky's Levels http://www.scala-lang.org/node/8610 reminds me
very much of what I learned from Scott Meyers - that you do not need
to grok all of Scala to be proficient and productive in using it. I
personally hope to be able to transition some day from Java to Scala
as my main working language, but at the same time I am mindful of what
became of C++ because the geniuses who came up with ATL and COM.
What I am hoping we might debate is: what is to prevent Scala from
going the route of C++ (and maybe other trials and tribulations of
learning and using Scala). What are the barriers to adopting Scala,
and what compelling advantages does Scala offer to seduce us past
those barriers. Every week I see more barriers coming down because the
keepers of Scala work hard to remove them, but almost as often I see
people pointing out new barriers. Has Scala reached critical mass, or
are we still waiting for it?