Something about the recent (not just this particular discussion) debates about Scala and Java has been bothering me. Something isn't sitting right. I think I may have figured it out. Scala is being advertised as a functional language. That's all fine and good, except one can't really compare it to languages like Erlang. Why? Because the real functional benefits Erlang is famous for do not extend to Scala, as far as I know. I may be wrong here, but given the fact that Scala compiles into standard JVM bytecode and interoperates with normal Java API (bidirectionally) tells me that even though one programs in Scala in a functional manner, it's actually run the same way as any other bytecode-based software on the JVM -- imperatively.
Just like we have to be careful about distinguishing between Java-the- language and Java-the-virtual-machine, we need to understand the reality of what "functional" means when it relates to Scala. I have yet to see easy parallelism solutions coming from Scala out of the box. Yes, we get to use lambda-oriented syntax and an arguably better type system, but we're not really talking about a total shift in thinking. Some people have already mentioned how familiarity with Scala made them better Java programmers as they were able to bring some of the good concepts/patterns into their Java code. It's possible to program in a kind-of sort-of functional style in Java. Plain and simple. And rightfully people say that doesn't make it a real functional language. Scala seems nice and I want to invest time into it for my own personal betterment and maybe use it in the "real world" as I better understand its strengths, but it's not a functional language. At best, it's a functional mask on top of the same old imperative bytecode-driven VM with the same old runtime advantages and hiccups we've come to expect from Java code. At worst, it's a bunch of performance sacrifice in order to achieve the above. I fully admit that as a longtime Java developer, having achieved a good level of proficiency, I can be intellectually lazy when considering becoming a near-total newbie with a new language. But that's not everything. I also am cautious about mixing up buzzwords with facts and getting swept up in emotionally charged debates over technology. On the one hand, emotions are important because sometimes they are symptoms of real arguments we're not yet able to articulate properly. On the other hand, there's evidence that sometimes people are less than forthright when evangelizing technology (the recent Go! article seems like a prime example of this). Complexity of a language seems like a pretty tough thing to try to quantify. The best I could do I think is to provide real-world examples like Dick's. Then people can debate how well those examples fit their circumstances and whether the way they were solves was indeed the simplest/fastest/best/whatever way. Otherwise, we're just kind of pissing in the wind, if you pardon the expression. On Aug 6, 6:07 pm, Kevin Wright <[email protected]> wrote: > You can't claim that the numbers I posted are subjective, I counted > them fair and square! > *this* post however, will be subjective. > > The idea that all kids go to "high school" and have a "grade 11" is > also subjective :) > I give you... Kojo!http://netbeans.dzone.com/learn-scala-with-kojo > > It's also subjective to simply discredit any methodology that happens > to disagree with your gut feelings. > > Incidentally, the "few object-oriented features" in Scala amount to a > more complete/purer OO language than the entirety of Java. > i.e. > all values are objects (no primitives) > all members are defined on an *instance* of some class, and are > capable of inheritance/overriding (no statics) > > The way I see it is that Scala = Java > - the non-OO bits > - other boilerplate > - frustrating restrictions > + FP > + a world class type system > > and yes, that's subjective. At least until someone comes up with > measurable criteria for "frustrating restrictions" :) > > On 06/08/2010, ADRA <[email protected]> wrote: > > > > > This whole topic is by its nature subjective. Its not like Scala and > > Java are exact language fits for one another. As I see it, Scala is a > > functional language that has some object oriented features. Java is an > > object oriented language with a few procedural features (baggage) and > > will eventually have a few functional features. If you want to ask > > which one is easier, ask yourself if you like Wrox or Head start > > books. Each book conveys the information to you in the end, but each > > person reading them will have wildly different takes on each style of > > presenting the content. > > > If you really want a quantifiable result, then get a pilot program > > with two high school grade 11 classes and teach one class Java and the > > other Scala. Personally, I find Java vastly simpler understand and use > > vs Scala, but I come from a solid procedural foundation long before I > > touched java. To forget the educational background of the person in > > question is a horrible mistake to make in this topic. > > > -- > > You received this message because you are subscribed to the Google Groups > > "The Java Posse" group. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > For more options, visit this group at > >http://groups.google.com/group/javaposse?hl=en. > > -- > Kevin Wright > > mail/google talk: [email protected] > wave: [email protected] > skype: kev.lee.wright > twitter: @thecoda -- You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/javaposse?hl=en.
