On 8 August 2010 11:23, Mario Fusco <[email protected]> wrote:

> > 1. Conciseness :  You can always have bad code regardless of conciseness,
> > see Perl or APL for good examples.  I don't buy this argument at all.
> Good
> > Java development can produce very concise code already.  This is not a
> > winning argument
>
> Of course you can write awful code regardless of the language.
> Nevertheless conciseness can be a winning factor especially in the
> long terms. The cost to maintain a software is directly proportional
> to the number of its LOCs.


e.g.

compare an idiomatic join in SQL (declarative)
to the equivalent code written using cursors (imperative)

Which is more concise? Which is more readable?  Which can be optimised most
effectively?  Which would you rather maintain?


> 2. Productivity: The argument of individual productivity is completely
> > irrelevant. You have to look a teams and indeed whole firms on this point
>
> Productivity is the real winning point of Scala if you use it in the
> right way. A few examples to justify this statement:
>
> a. The most important part of any meaningful application is its
> business model. Try to leverage the Scala features in order to write a
> small DSL implementing that business model and let the other guys of
> your team to use your DSL. The result will be an higher productivity
> and an easier to read and to maintain source code.
> b. Scala is the most extensible language I know. It allows to abstract
> the most common patterns you use in your code and to define your own
> keywords and constructs. In turns that allows you to reduce code
> repetitions (conciseness) and to avoid to reinvent the wheel day by
> day (productivity).
> c. The actor model, when you master it, is less error prone and more
> productive than the multithreading features (based on synchronization)
> natively provided by Java.


Examples:
ScalaTest: http://www.scalatest.org/getting_started_with_feature_spec

Akka actors in Java: http://doc.akkasource.org/untyped-actors-java
and in Scala: http://doc.akkasource.org/actors-scala

<http://www.scalatest.org/getting_started_with_feature_spec>

> > 3. Complexity:  Java is less complex this is a plus point fact.
>
> Yes, Scala is more powerful and then more complex than Java. In my
> opinion this is a pro. If I didn't like complexity I'd program in
> VisualBasic :)


Scala is "differently" complex, it depends on your definition of the term :)



> > 4: Open Source momentum:  Even though you have interop the opensource
> Java
> > Libraries will all feel more natural in the pure Java world.
>
> Java is around from 15 years and has millions of developers. Of course
> you have more tools and libraries in Java than in Scala. Anyway some
> of those libraries are there only to overcome some Java limitations
> (mine, lambdaj, is a valid example of that) and others could be more
> powerful and easier to be used thanks to better Scala extensibility.
> The wonderful Akka project ( http://akkasource.org/ ) is a good
> example of that. It is just a matter of time and in the meanwhile you
> can still use the Java libraries with a not so big effort.


I'm finding I can "pimp" existing Java projects with a bit of Scala magic,
to make them *more* usable
Take a look at scalaj-Time, which is a wrapper for JodaTime:
http://github.com/scalaj/scalaj-time


> 5. Functional Programming:  Most developers see this as a big plus point
> but
> > one must keep asking why, as functional programming has been around for
> > donkeys years, has it still had little impact to date?
>
> Why do object oriented vs functional programming discussions often
> sound so similar to catholics vs muslims ones? Scala is the
> demonstration that the two programming models can coexist in the same
> language.
>
> Why does functional programming still has a so little impact? Well,
> probably for the same reasons why Windows is still far more used than
> Unix-based operating systems:
>
> a. It is less powerful and then less complex. People are lazy and
> don't want to put their brain at work. But we, as developers, should
> let our brains working.
> b. It is easily available. The biggest part of the pc are sell with
> Windows already installed. In the same way managers and companies ask
> for Java developer since they are easier to be sell.
> c. For some reason, especially in our field, the best technology is
> rarely the winning one.
>

functional programming is just a subset of declarative programming.
I would argue that SQL, a declarative language, is one of the most
successful of our time!


-- 
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