I have a very simple question for Venkat. What is different in Scala? Why learn another language? I have attended many seminars and speaker sessions and one thing I see in everything is change. Every year I see a new language, a new paradigm being introduced.
Even though I know I can learn a new language. The company management (of course, I am not the boss!) would not allow me to introduce new aspects so easily. I understand there are "some new features" but then there is a learning curve (and I am tired with my Groovy learning curve) There there are plugins and documentation - most of which have one line code and I have raised issues about it. Do I get to concentrate on my business logic?
I would say:
* Sophisticated type system
* Functional Programming concepts
* Pure OO
* Runs in the JVM (industrial strength GC and JIT optimizations)
* In the CLR too!
* Oriented to embedded DSLs creation
* Lift web framework
Everything you would ask to the next Java and more!
Different topics in this forum discuss the reasons for Scala. Here I will
address your question in general rather than specific to Scala.
I think of a language as a tool. When I am in my workshop, I can't imagine
declaring I will only use a hammer. I would switching between using a
hammer, a chisel, a screwdriver, etc. depending on the task on hand.
The reason to select a tool is that it is the right one for the job.
A few years ago, you had mostly one language to program on the JVM (not
considering SQL, XML, etc.). If someone wanted to take advantage of
another paradigm or framework because it make them productive, the only
option they had was to leave the Java platform. Quite a number of good
programmers I know did that.
Today, we have the benefit of staying on the rich powerful platform while
taking advantage of languages, libraries, and frameworks that can make
It is important to keep learning. However, I am not a fan of jumping
on the next new languages or framework. It is important to learn and
experiment with different things on the side. Once you get a good
grasp of the main benefits, you should begin to use it on real projects
when and only when the gains clearly outweigh the cost.
We should take the time to learn different languages and at the same
time have the wisdom to chose the right ones for the problem on hand.
Vyas Sanzgiri wrote:I have a very simple question for Venkat. What is different in Scala? Why learn another language? I have attended many seminars and speaker sessions and one thing I see in everything is change. Every year I see a new language, a new paradigm being introduced.
What is your argument?
Seems to me you answered your own question. Even if you can't move to another language, learning a new on teaches you different ways of thinking about programming (a new paradigm) which you can probably apply in whatever language you're using. Even if you can't do it directly (no closures in Java yet) you can still think about different ways to approach a problem which can lead to better (cleaner and faster) solutions.
Just my two cents, but it works for me.
SCJP, SCJD, SCEA 5 "Any sufficiently analyzed magic is indistinguishable from science!" Agatha Heterodyne (Girl Genius)
Venkat and Burk, thanks for your inputs. I was actually more interested in the 4 points I listed since there are some (prob many) aspects beyond a Simple Junior Developer's control.
Joined: Oct 01, 2001
By "4 points" I assume you meant these:
Vyas Sanzgiri wrote:1. Learning curve
2. Bugs and Issue list
3. Infrastructure environment
4. Proof of concept
Every language and framework has to go through phases and evolves around the user community. Where does Scala stand?
I'm not a Scala expert, so I can't address Scala specifically, but here's my take on it anyway:
1) It seems to me that the learning curve for any language depends on who's doing the learning and what their background is. For example it's probably easier for a C++ programmer to learn Java than it is for a Cobol programmer because they're both OO and the syntax is similar.
2) If you go to http://www.scala-lang.org/node/218 which is part of the official Scala web site, you can see that they're tracking all reported bugs and letting people see what's being worked on and by whom. There's a public process in place for reporting bugs and tracking their status.
3) Not sure what you mean by infrastructure, but if you go to the web site I listed above and check out the home page, you can see that there's a pretty good community around Scala. There's online documentation (as well as printed books, forums for developers, sample code, and plugins for IDE's (Eclipse and NetBeans) to make it easier to develop using Scala.
4) I have no idea what you mean by proof of concept, but as I mentioned in #3, the Scala web site includes sample code, as does Venkat's book. Is that what you meant?