Gor Gyolchanyan:

> Can anyone help me out in this quest of enlightening people?

Talking about "enlightening people" means assuming a bad starting point, where 
you are as much religious as them.

And regarding them, I think that reading books and articles helps widen the 
mind a bit. But people have families, children and many hours of work every 
day. They are often stopped training their brains as they used to do in very 
good schools. Pushing new knowledge into a middle aged brain requires energy 
and a bit of pain, not everyone is willing to endure this year after year, in 
presence of all other kinds of family and work and health problems. Reducing 
the amount of daily work hours to something like 6 helps leave some time to 
read books too.

-----------------------

Marco Leise:

>The point is, that companies want a language that does things one way. It is 
>easy to share code this way and to train programmers in that language. There 
>is no "oh what is that construct doing?" in Java because the language is 
>primitive and pretty verbose. It is also easier for me to only have a few 
>concepts in my head when I write code.<

When I program in D I often find several different ways to solve a problem, 
with a functional, or with an OOP solution, or with a high level one, or with a 
lower level one, or with generic code. Often my first solution is not the best, 
and I rewrite the code in a different way. A language that offers only one 
programming paradigm avoids this, and this is has its advantages.

Single-paradigm languages (Smalltalk, Haskell) and multi-paradigm ones (Oz, D, 
Scala) have both advantages and disadvantages. A language like Scala (and in 
past CommonLisp) is very good in the hands of an expert programmer, able to 
make it sing like a Stradivari violin. But in the hands of a less skilled 
programmer, or a skilled programmer that needs to write certain commercial 
programs, a less flexible language is often better.

Regarding Java, it's simpler, but this is especially true if you have to use it 
to solve simple problems. If you have to implement a complex algorithm that 
works with differently shaped trees, efficiently, doing pattern matching on 
them, etc, then a language like OcaML becomes more appreciable that what it 
usually is.

The Java simplicity forces you to push part of the program complexity out of 
the language and into conventions, patterns, IDE skills, IDE shorcuts, that 
increase again the apparent simplicity of Java coding. Generally it's hard to 
destroy the complexity, you often just move it around.

Bye,
bearophile

Reply via email to