Thursday, January 17, 2008

Language Abstraction Layers

Those who follow what I write and speak about realize that I return to several themes consistently: polyglot programming, domain specific languages, and dynamic languages. At some point, I thought I should tie those things together. And then someone did it for me better than I could have myself. My fellow ThoughtWorker, Ola Bini, writes brilliantly about the intersection of these topics in this blog post.

Ola is probably best known recently as one of the committers on the JRuby project. He's also a bigger language geek than me (no small feat). I think he correctly identifies the future abstraction stack in software: more strongly typed "verifiable" languages on the bottom (ironically implemented in looser typed languages like C for historical reasons), dynamic languages on top for getting real work done, and DSLs for abstractions on top of those to get us closer to the problem domain.

2 comments:

Unknown said...

Neal,

Why do I suddenly feel like we're headed down a dangerous path of L2EE? That is Language 2.0 Enterprise Edition...

J2EE was an error in over-abstraction (if you will). But we did it with frameworks and architectural layers.

Similar mistakes are possible at the language level, where abstractions leak over time, to the point of creating more complexity than they were intended to solve.

Let's be sure to use DSLs and any language abstractions judiciously. As leaders in the community, let's be sure not to oversell it to those who are at risk of overusing it!

Cheers dude. :-)

Clinton

Neal Ford said...

Spoken like a man who has created frameworks!

>>>>>>>>>>
Let's be sure to use DSLs and any language abstractions judiciously. As leaders in the community, let's be sure not to oversell it to those who are at risk of overusing it!
<<<<<<<<<<

Oh, absolutely. We must be careful to use this for good, not evil. No matter what "solution" you choose, there is always the potential to go too far.