Fog Creek Software
Discussion Board

Making Design look like Code

Has anyone heard of this project by Charles Simonyi, the aim of which is too drastically reduce the complexity in software?

Do most people believe that software is a technology that is collapsing under its own weight due to complexity; and that a revolution in programming is needed?

Monday, July 12, 2004

I realize that the topic should be "Making code look like design"; Sorry about that.

Monday, July 12, 2004

I certainly believe that.  Furthermore, as I have said several other times, I think that we could have fully automated coding systems within 10 years, where we literally draw all of it, and no one codes in languages anymore.  Of course, that would be ideal for me! :)

Monday, July 12, 2004

I couldn't help but notice that they don't actually have a picture of the software 'looking like the design' on that site... which makes me really skeptical.  One of the hardest things from my experience is to automatically arrange the little boxes, lines, etc. so that the lines are short, but the design legible, lines don't overlap, and it makes a neat pattern, etc.

Monday, July 12, 2004

There is no silver bullet.

Mr. Fancypants
Monday, July 12, 2004

If I can draw a really poor analogy:
- Software is 'like' auto-racing.

We've been racing cars for nearly 100 years now. Most race cars, are still cylinder-piston' ... yah, so we complicated soem things w/ the OHV, fuel injection ... thrown a supercharger or turbo-charger ... definitely tacked on a TON of sensors, computers and fancy steering wheels ( but, in effect, it's still built on the fundamentals:
- Mixing gas and air. Igniting. Repeat.

We've been coding for nearly 60 years now. But, most code is still 'low level' ... yah, so we complicated some things with the 4GL, OOP ... thrown in a runtime or a garbage collector ... deifnitely tacked on a TON of component-based technologies, low-level code generation (compilers) and fancy IDEs ( but, in effect, it's still built on the fundamentals:
- Mixing code and data. Outputting. Repeat.

Summing up my really poor analogy . . . much like auto-racing is concerned . . . the revolution will likely come about via a 'grandeur' revolution in computing itself. Auto-Racing will definitely be usurped by "racing 'round the moon and back" via some cool x-prize like shuttle. Computer programming will be usurped by "some type" of new software developmental strategy itself. Hell, who's to say it'll be "software" to begin with . ..

In the meantime, stick to your C#, Java, RDBMS's and enjoy the current millenia.

Monday, July 12, 2004

As Fred Brooks has pointed out, the complexity of software is an intrinsic property.  Software takes inputs from a complex reality, implements complex business rules or processes, and produces a (hopefully) simple output.

The process that does this is going to have to deal with complexity.  The best way to deal with complexity that we have found so far is through building a hierarchy of knowledge.

"Making the code look just like the design", or vice-versa, does not seem to address this yet.  It is certainly a noble goal, to have a picture of some description 'compile' into executable code.  It has been a holy-grail of programming for some time.

Unfortunately, the site mentioned seems full of noble goals, but very little information about how to achieve them.  As such, the term 'vapor-ware' may be a little strong, but could be applied.

I still havn't forgiven Simonyi for creating 'Hungarian Notation' -- though it looks like they are starting to let go of it in favor of more generic object-oriented implementations.

Monday, July 12, 2004

If you look at the proliferation of languages, each trying to cover a "paradigm," it appears clear that complexity is exploding.

But I think that's a good thing, because it confirms that programming is interesting.

This is why I use a mutable language, which lets me build syntax that describes a domain well. I really expect that new paradigms will not come from the compsci world, but from other peoples' domains. (As someone said to me last night, objects are so 19th century. ;)

I've already started recording talks from the lisp meetings I visit, so hopefully I'll have some examples to offer about real-world multiparadigm programming for clients.

Tayssir John Gabbour
Monday, July 12, 2004

Hungarian is what Simonyi is best known for (and I and some other people still like it and use it) but his real contribution was realizing that you could have very large teams working on one piece of software. The Henry Ford of computing, we could say.

Stephen Jones
Tuesday, July 13, 2004

"objects are so 19th century."

Very funny.

Tuesday, July 13, 2004

I'd actually like to learn enough science and philosophy history to really understand that statement...

This was the same guy who claimed programming was applied philosophy, instead of applied math (as many compsci people treat it, subliminally or otherwise).

Tayssir John Gabbour
Tuesday, July 13, 2004

Honestly, I found the phrase "Making Design look like Code" much more interesting than "Making Code look like Design".
That reminds me of UMLGraph (, which I found brilliant, when I discovered it. In fact, I could not decide if it was brilliant or stupid. On one hand, I'd rather use this than fight with Visio to draw a diagram. On the other hand, I might as well write the damn code.
(Anyway, I generally don't use design tools -apart from pencils- so don't take my opinion too seriously).

Tuesday, July 13, 2004

*  Recent Topics

*  Fog Creek Home