I do agree that each language has it's strengths and weaknesses but they're
(at the least the ones being discussed) all general purpose languages and
there's nothing you can't do with one that you can't do with another. Sure,
most people wouldn't write a web app in C or an operating system in Java
(even though there was at least one already).

But, I don't understand all the FUD on dynamic languages, I don't even have
a preferred language, I work on whatever I get, the language I know better
is by far java as it's the one I've been working with the most. What I'm
trying to say is that I'm not a dynamic language fanboy but I think a lot of
people have some unfounded miss conceptions.

I think most of the languages referred have strong communities and lots of
tools and, apart from Scala which is somehow a recent language, all have
rich histories. And I don't see any difference to other communities on
working together and sharing ideas. Just three weeks ago, I joined a game
coding jam in flash, which is another language with a strong community and a
rich history.

I think that the phrase: Statically typed languages are "enterprisey" and
dynamic languages are not "scalable" in terms of LOC. Is a Myth! If you
tried and failed to built a large and complex project in a dynamic language
that doesn't mean it can't be done.
And so is the Myth that dynamic languages need more tests than static ones.
Nobody in it's right mind would ever test for types. And regarding tests,
they only get easier and faster to write in a dynamic language but you need
tests in any language (people in the Haskell community claim that if your
code compile then it works, but there is a lot more to tests than just
testing your code).

Regarding design, every community around a language has good and bad
programmers. You can make a mess in terms of design in any language. The
compiler can help you out in fixing typing mistakes but not to enforce good
design decisions. At most you can use a tool that statically analyse your
code and that might give you some hints.

What gives performance to the java language is not the language itself but
the VM. if you compare code in clojure, which is a dynamic language, you
will see that the language performs quite well too and when the
invokedynamic is added to the jvm it will boost all dynamic languages that
run in it.

I don't buy the argument that java is better suited for "business sense".
IMO, and if I understood the expression, a language is as good as its
ability to generate good internal DSLs that approximate the domain language
to the programming language (what Eric Evans calls the Ubiquitous Language)
. You can build nice DSLs in java but they require a lot more effort than in
a dynamic language.

About the null type in java:

"There is also a special *null type*, the type of the expression null, which
has no name. Because the null type has no name, it is impossible to declare
a variable of the null type or to cast to the null type. The null reference
is the only possible value of an expression of null type. The null reference
can always be cast to any reference type. In practice, the programmer can
ignore the null type and just pretend that null is merely a special literal
that can be of any reference type." in Java Language Specification, 2nd
Edition

Scala also has similar stuff like the classes scala.Null and scala.Nothing

What Java has that most dynamic languages don't have is an outstanding
refactoring support. Though some plugins for Eclipse and IntelliJ already
give you a lot.

Nuno

On 24 April 2010 17:34, JamesJ <ja...@kybios.com> wrote:

> Much of the discussion so far has focused on which approach is better.  I
> think it is interesting to read some of these knowledgeable, well thought
> out opinions.
>
> I find it valuable to focus the discussion on what each approach does well.
>  I rather like to not limit myself to one approach as the good one.  (E.g.
> think of comparing a hammer vs. pliers.  Do you really have to decide which
> of only one you get to put in you tool box?)  Sometimes the discussions seem
> to veer towards: the hammer was horrible for tightening a loose nut, so now,
> I only use pliers.
>
> Java is a great thread of commonality.  One of it's strengths is it's rich
> history and community.  This community is tied together based on this
> experience.  It has always seemed to draw a large number of people who are
> willing to share ideas and work together.
>
> Lately I have been drawn to Scala because it adds tools to help me be more
> productive in ways that mater to me, but I don't really think that it is for
> everyone.
>
> Statically typed languages (Scala in particular) are my tool of choice by
> far for any new large complicated project.
>
> My experience with dynamic languages was first Perl then later Groovy.  I
> love the Groovy.  If I want to write a quick script and want to be able to
> use my Java libs and skills, then it is great.  By trying it a few times, I
> found that even factoring some time for looking up stuff that I didn't
> understand, I was more productive than with Java. (But a also a little more
> risky and dangerous in my approaches)
>
> My biggest win with a dynamic approach (Groovy) was part of a project to
> represent product specifications and pricing based on configuration of each
> product.  I tried various approaches with XML, Java and hybrids.  But the
> Groovy approach was easier, more readable, and much more compact.  Having
> experienced this, I can see how there are classes of work, like web devel,
> where this flexibility and would be nice.  (I haven't tried to go back and
> try again with Scala, but I will probably look at it some day.)
>
> James
>
> --
> You received this message because you are subscribed to the Google Groups
> "The Java Posse" group.
> To post to this group, send email to javapo...@googlegroups.com.
> To unsubscribe from this group, send email to
> javaposse+unsubscr...@googlegroups.com<javaposse%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/javaposse?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to javapo...@googlegroups.com.
To unsubscribe from this group, send email to 
javaposse+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en.

Reply via email to