Thinking about this issue further, it seems to me that being pragmatic is
harder than being practical.  I realize that learning a language such as
Haskell will definitely bring a lot of benefits, but probably for me the
cost/reward ratio is just too high.

Probably then to me the most important criterion is 3), the ability to be
interfaced with C/C++ or Java, because, I think, then criteria 1), 2), 4),
and 6) simply follow, because we can always decide whether to program in
that language or in C/C++/Java and even keep switching between the two
without any progress penalty.

Ruby seems to have been a real jackpot.  It really teaches a lot of new
things.  Of course, since the beginning we knew that all its good stuff
comes with execution and memory performance penalty.  But it is not a
problem at all, because we can always optimize it with C/C++.

I have some doubt with functional programming languages.  Can Haskell or
any of them be interfaced with C/C++/Java (at the linking level)?  To me,
the benefits in learning the new concepts are diminished by not being able
to explicitly code in that language in practice.  (My concern is, if I
really write a Haskell code for a project, then I am stuck with Haskell, I
cannot switch parts of it to C.)

I learned Tcl, Perl, Python, and Ruby because they can be interfaced to C,
knowing that whenever I am stuck in them, I can always switch to the old,
well-known, library-rich, high-performance C.  In some sense, Tcl, Perl,
Python, and Ruby can be regarded as some C libraries, although what
wonderful libraries they are!  Probably then I am just not pragmatic
enough...

Regards,

Bill

PS: My background and work is more in (network) engineering, and probably
that's why I cannot be as pragmatic...
============================================================================
Dave Thomas <Dave / pragmaticprogrammer.com> wrote:
> " JamesBritt" <james / jamesbritt.com> writes:

>> Pragmatic versus exotic; use the pragmatic approach in day-to-day work, and
>> explore exotic tools by night.

> Well.. I'd say learning Haskell, or OCaml, or Ruby, is pragmatic. Each
> of these teaches us something about the nature of programming, and
> each improves us as programmers. I too take issue with the OPs
> criteria: choosing what to learn based solely of the prosaic is unlikely
> to achieve the kind of benefits he's looking for.


> Dave