Turing’s single-celled millions-old ancestors are Turing-complete. Oxytricha and Stylonychia, two ciliated protozoans, are Turing-complete biocomputers that rewrite their DNA to perform calculations. They’ve been at it for several million years. Keen. Link Discuss (via Coherence Engine) via [Boing Boing Blog]
“….even though he’s been programming in a loosely-typed environment (Ruby) for quite a while now, he’s not found himself making the stupid mistakes that the strongly-typed environment is supposed to be protecting us from….” via [The Mountain of Worthless Information]
The other day, while trying to enumerate the advantages of strong typing, it struck me that the biggest practical advantage of strong typing may be IntelliSense.
Glenn Vanderburg has a Weblog devoted to computer languages. Subscribed.
F#: Microsoft’s new language is CAML for .NET. CAML is a functional language, a family of languages that include Scheme, Miranda, and Haskell, and which emphasize the evaluation of expressions, rather than the execution of commands. If that seems esoteric, it’s because functional programming is more of a mindset than a technology: you can write functionally in an imperative language like C# and, for that matter, you can write imperatively in a functional language like CAML. The big thing about functional programming is that you concentrate on “the left-hand side of things” — what is returned by a function call, rather than side-effects rising from manipulation of state on “the right hand side.” If that’s still too esoteric, try this: there are no assignments, once x is set to a value, it doesn’t change.
F# doesn’t (yet?) have an interactive console for defining and modifying code on the run, which strikes me as an important benefit of most traditional functional systems. (If you’ve used Python or Smalltalk, you know how nice an interactive console is.)
I’m not sure that I’d go so far as to say that there is a particular class of problem that functional languages absolutely solve better than imperative languages, but I think I can accurately say that functional programming and imperative programming engage the mind in different ways. To me, the biggest hope of the .NET CLR is that it will foster different programming paradigms, while providing the complete power of the API. Object-oriented imperative languages are great, but for Pete’s sake, they aren’t the ultimate expression of programming.
I’ve pretty much given up on the community starter kit from asp.net. I’m building a site dedicated to software for the Tablet PC (InkPositive.com), and hoped the starter kits could jumpstart me, especially regarding discussion boards. But in addition to being buggy (the kits are still in beta, and I would say they have at least 2 major revs before primetime), they are not componentized. I spent most of a day just switching from table-based to CSS-based layout (so that Tablet users can choose right- or left-handed navigation); something’s wrong when display is so tied to function. But when I began work on an ink-supporting discussion board I quickly realized that it would be quicker to just start from scratch.
There’s some lesson here about Web programming versus application programming. Maybe it ties in with the failure of XSL, too.
P.S. You do know that if you write an XSL-based Website, Google won’t spider any links in the XSL stylesheet, don’t you?