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
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
···
----- Original Message -----
From: “William Djaja Tjokroaminata” billtj@y.glue.umd.edu