Lately, I can't seem to get my head out of the clouds. I'm having a bad case of Architecture Astronaut-itis lost in my own delusional mental world of Meta Programming.
It started a few weeks back with the usual complaint.... Why is writing software difficult? By difficult, I mean, beyond the concept and prototype, why do we spend inordinate amounts of time fighting with byzantine syntax, performance and scaling problems, poor test coverage and typos that make our code explode? Why is expressing an asynchronous message ugly and why use text in an arcane and byzantine programming language syntax at all? The world of computer programming is crazy I tell you!!
So I get hung up on MDA, Case Tools and such. I also think back on the code bases I tangle with (literally)... why is it challenging to port to newer platforms? Just push a button and it should work right? C++ to Java? Should be a no-brainer. Why is it hard to de-tangle spaghetti code and refactor? Throw the spaghetti in the DRYer and be done. Push the button. Percolate out some pure functions, apply some spaghetti de-tangling shampoo, and be done.
So here is my next question... what interface would I like to use to resolve my real software problems and where do Eclipse, other IDE's and tools fall short? Well... I've come up with a few answers to that. Got quite disgusted when I saw the wise and all knowing (ha!) Patent office gave out a 2007 patent for using a central model for 'core constructs of all sequential programming languages' for universal programming language conversion (a bit obvious).
Anyway, I'll share my thoughts on my dream software development interface and all the bits and pieces out there that already exist to facilitate it in another post... and all the Intellectual Property fortresses making sure it can't happen in the next 20 years.
Chapter 1 of Ansi Common Lisp
3 weeks ago