The lsnguage you mention most is C.  Why not learn advanced C?

Seriously, You wanted to take the Pragmatic Programmers' advice, so take it.  I
don't remember the book saying anything about needing to interface to C.  The
point is to *learn* another language, and *learn* something from it.  If you
learn Haskell, you will think differently about the C code you write.  *That*'s
the main point.

I'm afraid I can't agree with anything you say below :)

Gavin

----- Original Message -----
From: "William Djaja Tjokroaminata" <billtj / y.glue.umd.edu>


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

Stop yabbering and learn it.

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

Progress penalty = time for reflection on what you've learned.

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

Performance isn't an issue until you've proved it's an issue.  For network
engineering, fair enough, but there's more to programming than that.

> I have some doubt with functional programming languages.  Can Haskell or
> any of them be interfaced with C/C++/Java (at the linking level)?

Who cares?

> To me,
> the benefits in learning the new concepts are diminished by not being able
> to explicitly code in that language in practice.

Rubbish.

> (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.)

You're not stuck with Haskell; you can port it to Ruby.  Or 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.

You mean the old, stale, difficult, low-level, inflexible, unforgiving,
well-known, library-poor, high-performance C?

> In some sense, Tcl, Perl,
> Python, and Ruby can be regarded as some C libraries, although what
> wonderful libraries they are!

Say what you like about Tcl, Perl and Python, but Ruby is in no way, shape or
form a C library.  The point you are conciously failing to accept in this whole
discussion is that computer languages differ most importantly in the type of
abstractions they provide.  C offers functions, structs, and pointers.  Ruby
offers ... well, learn some Ruby and find out.  See ruby-talk:1-45000.

> Probably then I am just not pragmatic
> enough...

No.  Not in the Pragmatic Programmer sense, anyway.

> Regards,
>
> Bill
>
> PS: My background and work is more in (network) engineering, and probably
> that's why I cannot be as pragmatic...

There is help for you... ;)

Gavin