Have been reading Guns, germs and steel by Jared Diamond, a highly fascinating book that explores a variety of themes on evolution. One of the topics was the evolution of written language. Diamond identifies three strategies that humans have taken to evolve written forms of language i) Alphabet, the form most of us are familiar with ii) Logograms, a single sign representing a whole word like Chinese and iii) Syllabaries, a single sign stands for a syllable. Apart from the seeming validity of his propositions what struck me was the parallels in how programming languages have evolved.
The first strategy is perhaps the most popular paradigm followed by most programming languages, if one can look at the keywords of any language as constituting the alphabets. The ancient egyptian hieroglyphs are no archaic languages, they are just a different set of symbols like perhaps that used by the Chinese today.
What is amazing is that the process by which an idea or thought is communicated in written form seems similar for all languages, whether intended to communicate with machines or humans. The componentization and encoding of thought seems an universal skill that is deeply embedded in humans. And of course we always make our machines in our own image!
Maybe its a perception thing but after going through Diamond’s book am inclined to view UML and other diagramming notations in a new light, or should I say a clearer light. Each language has a character that makes it suitable for a particular task – Ancient greek or sanskrit for epic poetry, UML swim lanes for parallel processes and so on. Instead of discrete islands of written forms of human and machine languages I now see an entire continuum of techniques to transcribe thought into communication.