In all fairness, UML wasn't meant to express things like individual "for" loops. It's utility is at a much higher level. However, some of its formalisms, such as class diagrams and statecharts are very much one-to-one with actual code. (See this http://www.codeproject.com/Art... for an example.)
And if you need any more reasons to understand why graphical languages didn't make it, just consider the fact that most of the silly icons had a text window behind them where you could put specific text, even short scripts. Why was that needed if graphical programming was so complete? Just like CASE tools and object databases, graphical programming was just an attempt by vendors to shake some more money loose from unsuspecting clients.