The idea that computer programs should be represented by a structure, not simply a long text string.

Multiple views, editors.

Tools which can refactor large parts of the code at once.

Examples :

Recent Debates

I may be wrong about this, but my understanding is that mathematics has unified geometry and algebra so that statements and proofs in one can be reformulated in the other.

Which suggests to me that there's nothing you can express diagrammatically that can't be equally well expressed in symbols.

So it then boils down to convenience for the writer and the reader. What's the best UI?

Hinting with colour may mean less typing, but if I have to take my hand off the keyboard to grab the mouse to pop-up a colour picker it sure ain't faster or more convenient than a few extra keystrokes which I've probably cognitively chunked as part of my program-typing skill.

Until now, given that every computer has been equipped with a typewriter-like input and a character displaying output (teletype or voice if not screen), then text has been the most conveniently general purpose representation.

We also have a very rich ecosystem of tools and techniques to work with it. Not just text editors or IDEs with syntax checking / colouring, autocomplete etc. But text search, grep, diff tools, patch management, distributed source control like Git. Macros, templates, text rewrite rules, regular expressions, code-generation, compilers. The Unix pipe to compose multiple textual tools together (which can be used in both composition and analysis of textually represented programs).

Compare :

Contrast :