In more than two decades of my combined career as academic and practitioner I saw lack of understanding about programming across professions, including within the field of computer programming. I’ve done all my best to correct several misconceptions. At the late of 2016 I get the idea of explaining macro perspective macro about programming. This macro perspective complements the micro perspective about programming. (VOpTOq as programming theory is micro perspective about programming).
Figure 1 Programming Quartet
I formulate this macro perspective about programming in two principles. The first principle is: theorize and practice programming like theorizing and practicing human languages. The second one: the difference of programming-languages from human languages are: programming-languages are formal, while human languages are informal. With all these two principles, let us see each member of Programming Quartet.
The analogue of programming theory is theory about human languages. Any human language –Indonesia, Japanese, English, Chinese, Arab, French – there must be concepts of noun (abstract and concrete), verb, number, adjective, and punctuators. I formulate six main concepts of programming with similar purpose as the one served by concrete noun, abstract noun, verb, number, adjective, and punctuator for human languages.
How is it relevant to master the programming? My invented programming theory named VOpTOq can be formulated this way: any symbols in the source-code, intermediate-code, and runnable-code from any programming language is mappable to the VOpTOq six main concepts. The six main concepts are value, operation, punctuator, type, or qualifier. This is similar to the fixed categories of words invented by linguists.
Figure 1 shows a sample programming theory book. Its literal title is not Programming Theory. The next figures will show the books for other items in the Programming Quartet.
Figure 2 Sample book about Programming Theory
In any human language there are syntax and semantics for sentences. English has its syntax and semantics for sentences, Indonesia does too, and so do the others. Let us see two examples.
Figure 3 First sample book about Programming-language
One of Indonesia syntax for sentences is noun verb noun adjective. Sample sentence: Saya beli sepatu baru. One of English syntax for sentences is noun verb adjective noun. Sample sentence: I buy new shoes. Those two sentences are essentially the same. Japanese syntax is yet different from English and Indonesia.
How is this relevant to mastering programming-language? Mastering a programming-language is mastering its lexic, syntax, and semantic. Figure 3 and Figure 4 exemplify the syntax of two programming-languages.
Figure 4 Second sample book about Programming-language
An analogue of programming library is vocabulary. Vocabulary is collection of abstract nouns, concrete nouns, verbs, articles, adjectives, and (possibly less likely) punctuators. Mastering a programming library is similar to adding the vocabulary.
For example, a person’s initial nouns are limited to I, we they, you, shoe. His verbs is limited to eat, and his adjective is limited to new. Adding the vocabulary with nouns such as Microsoft and Linux, is analogous to mastering a programming-library. Adding the vocabulary with verbs such as sleep, drink, and shower is analogous to mastering a programming-library.
Figure 5 Sample book of programming-library
Packages and Types Reference’ is an effort to master a programming-library, neither an effort to master a programming theory nor an effort to master a programming-language. The book in Figure 4 does not explain the syntax of Oracle PL/SQL; it’s the book in Figure 3 that explains the syntax of PL/SQL.
An analogue of programming-tool is a translator, a human translating sentences in one human language to another. The human translators translate documents and speeches of high rank officials or several persons that do not share a common human language. While human translator translates human language, the code-translator translates (code written in one) programming-language (to another).
How is it relevant to programming? The most important programming-tools are code-translators (Compiler, Linker, Interpreter, CompileLinker, LinkRunner); followed by text editor, make/build utility, debugger, and others. Mastering a programming-tool is mastering how to use products like Visual Studio, Android Studio, Eclipse, NetBeans, etc. Mastering a programming-tool is neither mastering a programming theory, nor a programming-language, nor a programming-library. Figure 6 exemplifies a book about programming-tool.
VOpTOq and derived concepts
The big deal of VOpTOq and its derived-concepts is their universality to all programming-languages. The book of concepts in Figure 1 is not universal. The terms and definitions in that book are not universally applicable to all programming-languages like C#, Java, shell, etc.
The three pictures above are the cover of programming-theory books I wrote. The terms and definitions in the basic and advanced level of that programming-theory (books) are almost universal. There are very few exceptions, if any. Terms and definitions in the third book (advanced level) are less universal, but fairly universal for general-purpose and object-oriented programming-languages.
For more than two decades I’ve been in IT industry, I’ve never found explanations like this Programming Quartet ini. I hope you find this brief introduction useful. Keep in touch.