Concurrent Tautologys (all happening together at once)
I step away from the inkernet for five minutes and of course I miss six million little things. L Sharp .NET is "a powerful Lisp-like scripting language for .NET."Chickenfoot is "a Firefox extension that puts a programming environment in the browser's sidebar ... a superset of Javascript that includes special functions specific to web tasks." (meanwhile i still haven't gotten dirty with grease monkey...)hAxe is an OO language that can compile to js, flash or server-side byte code on apache webservers. It's strictly typed, but uses type-inference (...not unlike Ruby, F#, Powershell... and C# 3.0 ;-) ) .Livewriter is a microsoft tool for bloggin. Looks buggy for now but bound to be popular later.Marcos Meli seems to have done a nice logo for the larkware 1000 competition.hanselman gets into dynamic languagesEric Sink thinks you might as well get into multi-core programming.
Multi-core programming... concurrent programming... It's coming at us from three different directions now:
- Your next computer will have 32 or so processors
- Your server-side code may get to execute across hundreds or thousands of machines
- Your ajaxian scripts could share their processing load over hundreds of zombie client machines
(Yeh, okay, one of those is pure sci-fi)
On J.Spolsky's advice I read a lot of steve yegge stuff recently (particularly here and here), wherein he discusses the sort of problems you have at a server-side monster like Amazon. He keeps coming back to functional programming. (Lisp in particular, for him.)
The new client-side multi-core scenario is also tilted toward functional programming.
To that end, and of course by popular demand, the next 3 minute tutorial will be on F#. It's taken me a lot longer than three minutes to write of course, and it isn't ready yet. But it will be soon enough.
Meanwhile, here's a quote that keeps running around in my head.... Wirth's Law:
"Software gets slower faster than hardware gets faster."
solve: one squared plus two squared plus three squared plus four squared equals three cubed plus three.
'Des Traynor' on Sun, 20 Aug 2006 20:44:42 GMT, sez: Your "particularly here" link is broken in the article.
Des
'lb' on Sun, 20 Aug 2006 20:54:18 GMT, sez: thanks Des. btw, I loved your gtd tips the other week. Very practical stuff.
'Pitarou' on Mon, 21 Aug 2006 00:13:56 GMT, sez: That's what I love about the software industry. If some academic in his ivory tower has a great idea, it often gets incorporated into mainstream, enterprise-class products within, oooh, maybe 5 decades?
Okay ... so I'm a bitter man: but I never exaggerate. The first paper describing Lisp was published in 1958.[1] The first complete, self-hosting Lisp compiler was implemented in 1962, and it could do tricks that Ruby, Perl, C# et al *still* haven't learned in 2006.
For those wanting to ride this latest wave of "innovation" as it breaks across our industry, I implore you to learn how to use these new tools effectively. That means going back to basics. If you don't, you'll end up banging screws into the wall with the handle of your cordless drill.
I recommend reading the first few chapters of _The Structure and Interpretation of Computer Programs_[2] (SICP), which is freely (as in beer) available at:
http://mitpress.mit.edu/sicp/
SICP assumes no prior programming experience, but teaches good program design through the medium of Scheme, a popular dialect of Lisp. SICP doesn't actually *teach* Scheme; it just implements the examples in Scheme, and explains what the code means as it goes along. Scheme is so easy to learn that I reckon this should be sufficient to get you ahead of the game.
But if SICP whets your appetite, your next port-of-call should be http://www.schemers.org/ where you can *really* learn Scheme. And then ... well, let's just say that those guys in their ivory towers haven't been sitting idle since 1958. Haskell (http://www.haskell.org/) will blow your mind.
But please be careful. Don't get *too* used to these wonderful new toys. You won't be allowed to use them at work, and then you'll get all bitter and twisted like me.
--
[1] That's not a typo. Nineteen fifty-eight.
[2] Although SICP assumes no programming experience, it does assume a bit of Math in the examples. If "numerical differentiation" means nothing to you, I am told that _How to Design Programs_ -- freely available at http://www.htdp.org/ -- is just as good.
|