Tuesday, November 25, 2008

Ah, I Love the Smell of (mapcar) in the Morning...

I still consider LISP my favorite programming language.  PHP and KixTart are a close second.  The distinction between a "programming language" and a "scripting language" is getting murkier all the time.  (warning: I've had two beers already.  i'm off work until next week)

For all the nay-sayers of LISP, f-u.  Rather:  (defun f-you (princ "that's correct."))

The problem I have with so-called modern languages is that they're designed to be functional first, exploratory second.  That's a buzzkill for making it fun to program.  Anyone out there that remembers SmallTalk or AutoLISP knows what I'm talking about.  If the earliest language you can recall clearly is C++, well, I pity you.  Bjarn called it "C with classes" but I would call it "C with garbage and 400 cooks in the kitchen".  A leap above Pascal without a doubt, but messier than Java or C#.  Oh whatever.  On to the blabbering....

This article on problems with UML is very interesting.  I haven't enjoyed reading a geeky, nerdy, sticky, messy, techy article like that in quite a while.  The mapping of abstract flows and structures to specific domain layers of an architecture is indeed intricate stuff.  The problem is compounded by specific domains (languages) as well as platforms (physical, logical, and virtual), so you can't fault the intent or ideal UML is aiming for.  It's noble.  Damn.  I said "noble" in a sentence.  Heh.  That's what happens when you follow up a Sam Adams' Cherry Wheat Ale with a Hoegaarden Ale.  My mind has wandered indeed.  Ok, where was I...

His third (major) paragraph makes sense to me.  However, the fourth has a slight problem.  For one, UML, like SOAP and other modern idioms, has too many masters and too many servants.  Forget 400 cooks in the kitchen.  The cook now has 400 kitchens.  It's a slightly less broken version of what Ada was trying to accomplish (another failed grand master plan).  For the non-programmers out there, look up Esperanto.

The basic problem is that MBA's continue to walk off of their red-eye flights fresh with ideas from the magazine pocket in front of them.  Usually something like seeking a way to make programmers, network administrators, and systems admins obsolete.  You know, the whole "can't we make computers smart enough to setup themselves and keep themselves running?"  Yes.  They can. They're called Macs, but they suck for business objectives, unless you don't need to run many non-Windows-only applications to get work done.  For everything else they're great.  But I digress.  I'm sure that will incite flames from the Mac fanatics, but I'll say it here:  Windows sucks too.  There.  Have a nice day.

What I miss most about LISP is the flexibility.  It has (had) one of the lowest on-ramps to learning I ever saw.  That is, unless you were already poisoned by a traditional procedural or OO language.   The notion of list constructs, and parsing/tokenizing as first-class operations is weird to those people.  Ascertions like (mapcar) (apply) and (cons), not to mention the plethora of (car/cdr/cadr/caddr/cadar/caadr/cadddr/etc) list plucking functions and the ubiquitous lambda expressions, all are what make LISP like a 40-ton Lego constructor kit.  The kind without any instructions, just a huge box with bins for various blocks by color, shape and type.  That's what I loved about it.  I could explore it and find ways to build new things which never seemed to suffer from the language itself getting in the way.

Alas, it was mired down in geo-political committee goo and fell behind in public favor compared to other languages.  It had everything in place to do what Java was designed to do:  be portable.   It already had a JIT compiler and a mature foundation.  What it lacked was a robust UI API.  Autodesk bolted one on for DCL dialog development but gave up on that too.  Then SharpLISP took another stab at that but the timing was wrong and it fell off the wagon.  The good ole days were pretty cool.  Software used to be exciting and fun to discover.  It seems to have become a chore now.

No comments: