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