DISCLAIMER+SPECIAL NOTE: If your initial reaction to the titled attempt at a Scheme expression was: “That doesn’t even make any sense!” my response to you would be,

  • Firstly, how many people on this planet actually know that, technically speaking, it’s complete non-sense?
  • Secondly, you try writing a title for a piece using a technically correct scheme expression that includes a function, list, a lambda expression, and its evaluation expression, and then come back and tell me that it technically doesn’t make any sense! ;)
  • Oh, and before you snap open DrScheme, there fly-boy, remember that your technically correct expression must all fit on one line! ;)

[Post]

Dare Obasanjo recently had this to say about multithreaded-programming,

Dare Obasanjo aka Carnage4Life - (thread.Priority = ThreadPriority.BelowNormal) is Bad?

This is yet another example of why multithreaded programming is the spawn of Satan.

Eric Fleischman then followed-up with,

FWIW, there is something worse than multithreaded programming….distributed programming. Concurrency on a node is hard, concurrency across N nodes is even harder. :)

To be fair, I don’t completely disagree with either of their points. That said, I also don’t completely agree, either.

Here’s why,

PLEASE NOTE: I don’t want to take things out of context, nor suggest that Eric is stating something that he’s not. With this disclaimer in place, my own interpretation of his point was that the alternative — in essence, a synchronous-only programming methodology — is the better choice. [see: Synchronous vs. asynchronous for more detail.]

Well, like I said, I don’t completely disagree: From an atomic level (speaking in terms of the hardware side of any given device, and even more particular, low-level bus operations), I really have no choice but to agree with Eric. But from a distributed computing, and in particular, a distributed programming methodology perspective, the notion of using a synchronous-only approach to the sending and receiving of messages between nodes sends shivers of pure, unfiltered fear down my (functional)XML hacking spine.

[OffTopic.Commentary.Start()]
I don’t know if you have ever experienced shivers of pure, unfiltered fear before, but let me just state that while I’ll claim you’re a liar, driven by politically-based intentions if you were to tell them I said this,

(((5 sisters) + (18 years)) == A personal, forever lasting foundation built upon shivers of pure, unfiltered fear) = true ; I mean false! I MEANT FALSE!!!! ***
[OffTopic.Commentary.End()]

Moving on! >>

Even with my spine still tingling, Eric’s comment does provide a fantastic example as to the importance of things likes closures and continuations. In short,

If multithreaded programming is the spawn of Satan, and (apparently) distributed programming Satan himself…

If nothing else, at least we can rest, reasonably assured that goodness will prevail, by containing the evilness (e.g. side effects) of multi-threaded, asynchronous programming methodologies to then continue forward in such a manner as to implement an atomic operation approach to asynchronous distributed programming.

Of course this is nothing new or revolutionary; as the title suggests, there’s a word for this kind of programming methodology: Functional

Enjoy your ((fun)ctional)) Saturday!

*** NOTE: For you Scheme purists out there, while you’ll need to place some additional restraint upon your desire to open up DrScheme to showcase, yet again, how the expression itself is worthless, syntactically offensive foo, please note the clever placement of the semi-colon before rescinding my claim of booleanic truth!

Of course, while it is only you and I that know the clever little trick I just pulled on the compiler, I can promise you one thing: Not even one of my sisters were fooled. Trust me on this: Regardless of whether the compiler took note of the switch, I can assure you that each and every one of them took note of each and every attempt to stear them off course, compiling whichever pieces “THEY DAMN WELL PLEASE!!!” into their newly versioned program: “Beat Mark Senseless (Without Ever Lifting A Finger)” version 2007 (thats the actual version number, not the year of its release. For you confused Microsofties: You’re just going to have to trust me on this one. ;) Extended Note: For you confused Unix-weenies, maybe “Beat Mark Senseless (Without Ever Lifting A Finger)” version 0.2007.0.0 will help? :D).

In short: I’m a dead man.

Again. (and again, and again, and a …)

Bye :)