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.

Reply via email to