Kevin Greer's Stuff
[ start | index | login ]
start > 2006-08-25 > 1

2006-08-25 #1

Created by kgr. Last edited by kgr, one year and 333 days ago. Viewed 471 times. #2
[diff] [history] [edit] [rdf]
labels
attachments

Writing Software the Wrong Way

When asked ">>What Do You Believe Is True Even Though You Cannot Prove It?", >>Charles Simonyi, (formerly of PARC and Microsoft, now of >>Intentional Software) said:

I believe that we are writing software the wrong way. There are sound evolutionary reasons for why we are doing what we are doing—that we can call the "programming the problem in a computer language" paradigm, but the incredible success of Moore's law blinded us to being stuck in what is probably an evolutionary backwater.

What he's proposing is what he calls >>intentional programming or what Sergey Dmitriev of >>JetBrains calls >>Language Oriented Programming. In either case, the idea is to create many domain specific languages (DSL's) which are custom designed to model each aspect of your system. The idea is to encode your intent rather than the actual implementation. Generators would then either compile your DSL to some underlying language or else just interpret it directly. By encoding your intent directly you can update the way that your code is generated (say to fix a bug or else use a more efficient method) or migrate to new platforms (C# to Java or Oracle to MySQL for example) by just modifying or replacing your generators. Your original intent, encoded in your DSL's, would remain unchanged. The proposition is to create an environment where developers are more productive and systems are more resilient to change without porting.

Lisp programmers say that they've been doing this forever with macros but I don't see that it is the same thing. A Lisp macro gets expanded in-place whereas an intent could become manifest in many different components of a system. If you record your intent that a customer should have a telephone number, then this should affect your SQL, HTML UI, GUI, XML support, database layer, ORB layer, data-model, etc. No single macro expansion can reach all of these places.

To me, language oriented programming looks like what >>Douglas Engelbart was >>doing with "special purpose languages" in the 1960's. If Englebart was doing it forty years ago then it's probably about time for the rest of us to start giving it a look now.

This topic has been discussed on >>Lambda the Ultimate.

one comment (by kgr) | post comment
peerbox.com | Copyright 2005-2006 Kevin G. R. Greer