It's Like Déjà Vu All Over Again
"You could probably waste an entire day on the preceding links alone. But why take chances? We also give you Paul Snively..." — John Wiseman, lemonodor
The majority of my all code involves simple types of mappings.
I mean this in a discrete math sense, and not a cartography sense. (Similarly, 'function' in math and in coding are different terms.) Input sets get mapped to some other output sets. Repeat forever. Bigger mappings are composed of steps using smaller mappings.
It's what makes a big map costly to write, though simple in concept. Handling all the cases as fast as possible takes a lot of custom code. But as a design, the overall plan should be very simple in concept. Using a functional language, the result can be wonderfully concise. However, such brevity can hide too many of the costs involved. [David McCusker]
Once again, David is correct, particularly with respect to data structures: manipulating data structures in functional languages can be extremely inefficient if you aren't careful about managing copy costs, among other costs. Thankfully, there are excellent texts such as Purely Functional Data Structures to help with this, but the fact just reinforces David's point, which is that a naïve user of a functional language will end up with some very lovely but non-performant code.
8:23:03 AM
I love math, but I see many programmers are not very good at it.
Those who are often like and advocate using functional languages. But um, you can't use these correctly when you don't get math. So that kinda leaves out a majority of today's coding practitioners. I'm totally puzzled when folks think functional languages will rule. [David McCusker]
I'm afraid David's got me here. Not so much that I think functional languages will rule—Lisp has had longer than any other language besides FORTRAN to rule—but just a niggling sense of astonishment that so many programmers that I know who are smart and curious and driven can't even be bothered to give functional languages a look. And I don't mean Lisp, which is notorious for making people feel like an afterthought by parenthesizing them to death, but languages with perfectly Algol-inspired syntax like Haskell or Standard ML or Objective Caml or Concurrent Clean or Erlang or Oz.
If you strive, as I do, to adhere to Alan Perlis' dictum that "a language that doesn't change the way you think about programming isn't worth learning," you owe it to yourself to check out at least one of the above-mentioned languages. There aren't any in the list that aren't guaranteed mind-bombs.
8:17:55 AM
A Wheel Comes OffIs Microsoft getting ahead of itself?. As the software giant prepares to launch the first trials of its .Net My Services, key details of the plan are still "not figured out." [CNET News.com]... Overall this is just the first wheel to come off the web services hype machine. We'll see many more before too much longer. [Inspirational Technology]
To the extent that we allow web services to be identified with Microsoft, perhaps. And it's not clear that having the hype machine collapse is a bad thing. The cycle seems to be: hype, which builds awareness and interest and, crucially, funds development. Then reality sets in with its attendant disillusionment. By that time, the savvy developers, who didn't buy into the hype and planned for that huge initial investment to carry them through the "__________ Winter," have enough momentum that they can actually ship something realistic that does something that people want—even if that something doesn't reflect the hype. Cynical? After almost 20 years of experience in the software industry, call me a realist.
7:52:59 AM