From: Francis Cianfrocca Date: 2006-08-09T22:08:51+09:00 Subject: Re: Language chatter On 8/9/06, Simen Edvardsen wrote: >>>If the "natural" way of modeling computation is that of moving around bits in memory and doing trivial operations on them, we wouldn't be building all these kinds of fancy abstractions, now would we? Also, Ruby is full of higher order functions, so saying FP is not for mainstream use but Ruby is a step in the right direction seems a bit od<<< Give that a bit more thought. Most of the "fancy abstractions" are attempts to map aspects of particular problem domains into language constructs. And what are the typical things we do with our fancy abstractions? They are mostly about *transport* and communications. We create purchase orders and store them in databases, then we email them to vendors. We make accounting calculations and then generate reports. We send email and instant messages to each other. These operations are undertaken primarily for the side effects they generate (or alternatively, the persistent changes they make to the computational environment). Constructing mathematical fields to solve these problems rather than scripting them imperatively is arguably a less natural approach. True functional languages do not have side effects at all, or they are considered hybrid if they do (SML for example). Now you and many others may argue with much justification that true FP is just as valid for constructing nontrivial programs and in many ways better. Fair enough. But in the real world, I've become convinced that more programmers will do "better" work (where "better" is defined in economic terms as high quality at low cost) with imperative languages. And the reasons why are certainly of interest, but only of theoretical interest. Ruby's "higher order functions": aren't you confusing the true functional style with the simple ability of Ruby (and many other imperative languages) to treat functions and closures as objects?