
Why we write code and don't just draw diagrams - nreece
http://blog.objectmentor.com/articles/2007/09/06/why-we-write-code-and-dont-just-draw-diagrams
======
phaedrus
Exactly. This is why all the UML-mania is b.s. A UML diagram of the high level
classes in a project? Yes that is useful. And guess what? You can generate
that automatically from the code. But doing the entire app in UML, as some
people would have us do? Yeah you can generate code from a UML diagram, but it
is infinitely faster to type code than it is to dink around with funny Visio
widgets and try to click inside tiny text boxes & select types from a drop
down.

My college recently dropped Java from CS 1 and 2; instead they decide to use
Alice (a graphical toy language) to teach all CS concepts. You want a loop?
You drag a loop block on to the page. Need a condition on the loop? Select it
from the drop down. Sounds neat and it is an interesting concept, but
ultimately it's just a pain in the ass. Once a method gets bigger than a few
lines, it's almost impossible to position the mouse to make the item drop in
the right place. And writing a complex loop condition can be a tedious maze of
drop down menus.

Purely visual code input methods are just not an efficient way to enter code.
It's as hard to use as trying to crack eggs to make an omelet while only
touching the eggs with a pair salad tongs.

These environments don't even address the central issue. Changing the
representation of the code is just lipstick on a pig; the real problem is that
_software is hard_. There is an essential something to a program (like QWAN)
that can't be reduced. Wrapping it in goofy modeling doesn't change the
essential difficulty.

In fact, software modeled graphically is actually _harder_ to understand than
the text version, because software is full of relationships that are semantic
not spatial. The relationships are not 3 dimensional or 2 dimensional and
trying to squish that onto a visual representation just makes things worse. On
the other hand, humans have this wonderful ability to comprehend nuances of
semantic meaning in prose. The textual representation of software is the
"right" model for it.

