Let's say you want to express hints to the compiler about what paths are common. And you like the idea of expressing that with tinted blocks. Here's what you have to do to make that work:
- rejigger your editor to input and save such tint blocks in the code;
- convince everyone else using your language to use your editor, or make similar modifications to their editor;
- ignore the cases where you don't have a particular editor available, such as SSH'ing into a minimally configured machine;
- exclude color-blind and blind programmers;
- abandon the convenience of being able to view your source code in pagers like less, diff tools, revision control tools, web browsers, IRC, instant messaging, and web services that allow you to paste snippets of code.
Or, you could:
- add a new keyword to your language.
- add a new syntax coloring rule / code folding rule to your editor, and get almost exactly the same effect.
We have a basic information science problem here. Every feature of the programming language is going to have some concrete representation as a stream of bytes anyway. As long as we use multiple tools and environments to manipulate and view that stream of bytes, it makes sense for the representation and the serialization to be identical -- that is: plain text.
However, there's no reason why we can't have the odd unicode character in source code, as long as there were some well-known shortcuts for typing. A lambda symbol would be wonderful for many languages. Similarly, a Chinese programmer ought to be able to define variable names and strings directly in Chinese.