Farm Where the Fertilizer is Thickest
Wednesday, May 23, 2007
I didn't go to
POPL 2007; however, some of the presentations from the conference
have now started to
appear. One that struck some chords with me was one given by Chet
Murthy of IBM titled "Advanced Programming Languages in Enterprise
Software: A lambda-calculus theorist wanders into an enterprise
datacenter" in which he describes how one can introduce advanced
programming language techniques to
Enterprise Software. A while back, I wrote a fairly popular (based
on the number of hits it got) post titled
"How to make money with Lisp" in which I described a number of
strategies one could use in order to make a living writing Lisp
code. Well, Chet Murthy's presentation focuses on one specific
technique: using the technical advantages of an advanced programming
language to replace/supplant specific functionality in an Enterprise
System (using the inherent negatives of Enterprise System designs to
add specific, key improvements).
The two key points in his presentation are:
- Advanced Programming Language technology is a secret weapon in enterprise computing
- Farm where the fertilizer is thickest: Enterprise Systems
- Run our world
- Comprise millions of lines of application code
- Written by many thousands of programmers
- Run on sometimes thousands of machines
- Cost many millions of dollars
- Individual layers written by independent teams
- Often written at different times/decades/continents
- Lack of skill/experience results in layer after layer of framework
- Lack of business interest prevents consolidation
- Natural tendency to "wrapper" rather than extend/fix
- Strong functional interfaces separate components
- Side effects in DBs, not program variables
- Dynamic languages, static code
- Component and network interfaces are referentially transparent positions
- The "components" are externally "functional"
- Late-stage large-grain optimization is feasible

Oftentimes, there can be good reasons (and opportunities) to "swap out" a specific component with a faster, more functional, more efficient, and/or more interoperable equivalent. The example he gives is replacing an XSL subsystem with ML to improve XML transformation performance. Although he doesn't talk about web services, these same characteristics have been drivers behind the push for the support of web services in the enterprise as Enterprise Software vendors have attempted to accommodate customer demands for more flexibility and interoperability. So, an enterprising developer (pun intended!) can often make a strong (and valid) case for replacing existing enterprise functionality with a completely different technology solution.
His talk is available as an abstract and as a presentation (either PPT or PDF or ODP) and is another example of how one can incorporate non-mainstream languages and techniques into something as mainstream as Enterprise Software by thinking different!

