Equational languages are the second-most widespread language type in the world (coming right after verbicentric langauges). Reminder: verbicentric languages are those that set a sentence with a verb, i.e., a special word that tells “what’s happening” in the sentence and governs the actants (doers and doees).
Unlike them, equational languages introduce a sentence by equating two expressions. If we compare verbicentric and equational languages, then equational essentially are the languages that have only one “verb”: to be.
Q: Second-most widespread, huh? Well, go dignify me with an example – but please not some Papuan dialect with ten speakers. Something I heard of…
No “Papuan” here – in fact, I am not aware of a single spoken equational language. However, equational languages include:
1. Mathematical language. Yes, the one we all use to write math and physical formulae:
34 + x = 40
x = 6
F = mg
arr = Array.new(3, “hint”)
num = 1
elem_two = arr[num]
3. One artificial spoken tongue I am currently inventing
As you can see, heaps of languages indeed. And we all use them, while some tech guys even “live’ them and know better than their mother tongues Notice how similar is the structure of every equational language: right expression, left expression, and the equator wordie in the middle.
How does equational language work?
While a speaker of verbicentric-language, in order to compose a sentence, identifies what is happening in the described situation and who participate in it (i.e., looks for verb and its “doers”), a speaker of equational language aims to compare. Seek for two parts that are equal, and equate them.
Equational language is a static language. It states what is what and what equals to what. There are no verbs in it, the very idea of them is alien to such language. Most of its vocabulary are so called variables, which are analogous to nouns. In addition to them, a vast arsenal of modifiers may be present – sort-of adjectives. Also, there are operators in all programming languages: they are similar to conjunctions. A popular example are conditional operators if, then, else.
Last but definitely not the least, there is the most important, governing part of speech, which is represented by one word, equals sign, and its partial synonyms: “≈”, “>”, “<” etc.
*Inequality signs, such as “<” and “>”, are in fact a “sub-species” of equals sign: “A > B” can be unwound as “A = something_larger_than_B”
In English, it doesn’t translate as “Numero is a random number”, but “Make Numero a random number”. We do not state that one equals the other, but assign one variable through the other. The majority of expressions in programming languages work so. From that, an interesting property of equational languages follows: transformabiliy of word meanings along with the text’s progression. The change of a variable’s meaning is a piece of cake:
x = 16
x = x/2
x = x + 1
z = x + 7
Similar manipulations happen in verbicentric languages:
I put on a hat, went outside. Then I’d met Bob. Suddenly, the wind had blown my hat away. And then, I’d met Tony.
(“Me wearing a hat” met Bob, but “me not wearing a hat” met Tony. Both are referred to as “I”, but the exact meaning has been modified by context)
But in equational languages, such transformations are FAR more formalized.
Q: I am a programmer and can say with certainty that there are verbs in programming languages. A shitload of them. Cut, print, downcase, flatten, do and so on…
How do you judge where’s a verb in programming language and where’s not? Based on spelling? Well, “do” in Ruby is spelled like English “to do” verb, that’s true. But it means nothing – it’s just letters. Rename ‘do’ into ‘yt’ or whatever – the Ruby language will still work.
Now to the point. Words like “flatten”, “downcase”, “split” etc are nothing but modifiers. By nature, they are closest to adjectives or participles. Exempli gratia (Ruby):
a = b.reverse
Literally: а equals to b reversed (not “reverse b, please”)
array_b = array_a.push(5)
Literally: array_b equals to array_a with a “5” added as the last element (not “add a five to the array, please”)
Words like “do”, “end”, “loop” etc are operators. Somewhat similar to English conjunctions or address words.
Q: I’ve seen expressions in programming languages without equals sign at all.
Sometimes it’s hidden:
1 + 5
In this example, the result will be shown on console, not stored in a variable.
Literally: to_show_on_console equals to 1 + 5
We often hide verbs in spoken languages as well. Say, the sentence “I Chris.” is weird but understandable in English, and similar sentences are considered perfectly normal in some European languages.
Perhaps, there are sentences in programming that do not have even a hidden equals sign. But so there are verbless sentences in verbicentric languages. Language is a flexible tool – exceptions can happen.
Q: Equational languages are harmonic, beautiful and effective. Why don’t we speak equational languages?
Any language is the reflection of thoughts of the speakers and their lifestyle. A human is an active creature, constantly doing something. And perceives the world not as a static system, but dynamic and full of events and actions.
Additionally, equational language tells us to equate things, while outside of maths and programming there’s simply nothing to equate. The world around us is irregular – have you ever seen two identical apples?
And yet, pseudoequational constructions are very important to us, hence they are so popular, and “to be” verb is the most frequent. But that’s as far as it gets…
One more reason for equational languages to be underappreciated is their beautiful property called “dynamic vocabulary assignment”. Remember the property of vocabulary transformation? Well, equational languages in fact treat words even more easily: they introduce new pieces of vocabulary right in the middle of context and discard them like crap whenever there’s no more need for them. Take two different programs in Python – perhaps, at most 30% of their vocabulary would be common. Most of the variables would be program-specific. It is very effective when unleashing the ultimate power of maths and programming – the speaker is free to introduce any highly-specialized terms whenever there’s the need, and transform them when the code requires. But… a PC has perfect memory. As for humans, learning words is in fact the biggest problem about learning languages. Students can’t learn how to spell 5000 words in a decade – imagine what would happen if they were forced to learn new words every day. Starting a conversation with “Let kubutika be sleeping on sofa, and butubuka be sleeping on the floor, and itiburuk – a person from 15 to 25 years old” and then discussing how kubutika is better to itiburuk than butubuka is simply beyond our abilities…