> 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. > 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. > 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 :) > 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. > 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. Bye, Mario Fusco twitter: @mariofusco -- 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.
