In the long term, visual languages may also prove to be useful tools for expert programmers who do operating systems work and develop large application programs. Already, expert programmers are turning to graphical user interfaces and symbolic debuggers to make their work easier. And as visual languages develop, they may enable the development of visual software engineering environments as well. But visual languages are not without limitations. Some of the characteristics that make visual languages powerful and easy to learn also limit their usefulness as general purpose languages.
Visual languages are easy for nonprogrammers to understand because they are very concrete.
However, because these languages are so concrete, it is difficult to develop an abstract semantic model for them. This limits the use of visual languages for large programming problems that benefit from the liberal use of abstraction. In addition, the non-linearity of visual languages makes it difficult to build formal grammars and compilers for them. While text strings only allow concatenation in two places before a character and after a character visual languages allow an infinite number of concatenation options, as shown in Figure 4. Another problem with most existing visual languages is that they are hard to understand when used to create large programs.