From: Gavin Sinclair Date: 2002-08-23T00:54:53+09:00 Subject: Re: A Repeat: New Language After Ruby? 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" > 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