Sometimes I think about what a bliss computers are. I don’t mean in a way of how they have improved our quality of life (which they did) and I’m not trying to disregard of the fact that they have had and will continue to have lots of implications on our social interactions and sociatal perception. What I mean is the fact that we now have these machines which obey exactly the way as we tell them to.
In my case this insight is mainly derived from the fact that I work with computers as a developer. I take for granted that commands are executed the way I tell the computer, in order I tell it to (or sometimes out of order, but in an intentional way). Intention is the keyword here. For one thing, we, users of computers, have become speakers of the machine language on various levels of abstractions. And to a certain extent we take it for granted that computers do as we please. That’s why we invested hours and days into learning their ways and mastering their language. On the other hand though, except for very few individuals who work on the lowest of levels, we have not actually learned the language of the computer, but we have learned the language of the person who learned the ”language of the computer”.
I do not want to start a discussion about how higher-level functions and languages give up control for comfort. But rather, how far is programming just shaping the intention of authors of the foundational (as-in low abstraction) languages into our intentions. What if the foundations had entirely different intentions that promoted certain kinds of thinking?
I don’t believe this to be a hypothetical question, but what actually happens. Any (programming) language favours a certain kind of thinking. There has always been a discussion between functional and procedural languages, OOP and other paradigms. We have probably reached a point where we can say domain-specific languages can easily be generated and provide lots of benefits inside their domain, and a few strong languages for the general use cases have crystalized themselves. Language evolves slowly over decades. Programming languages evolve faster, probably due to our experience with natural languages, but also because they are a lot closer to mathmatical contexts and thus make it easier to derive from these other aspects of science. Which is not to say that natural languages don’t, they just do it slower. My theory is that they evolve implicitly during use, whereas programming languages evolve explicitly, with use in mind. And we have an explicit versioning system for languages, telling us this code was written in language version X.Y, so the compiler needs to support that. For natural languages we only differentiate between “old” and “new” speech, and the language itself. A programming language can introduce compatibility breaking behaviour, the switch from python2 to python3 comes to mind most prominently. Natural languages can introduce such a change as well, but usually not within a group of speakers, but between two groups of speakers. And over a long period of time. For example the fragmentation of the chinese language or all the european languages derived from proto-indo-european. It can cause strong tribalism and language plays a major part in our cultural identity.
This interplay between natural and programming languages is very interesting, and although I’m only passively taking part in it (as a user of both), I am very keen on their developments. There are a few questions that I have for the future:
- With programming languages evolving so fast, will we see them influencing natural languages? Speeding up language change, incorporating elements or just making up new ways to convey meaning and intention that get adopted because they just make sense?
- Do Emojis already count here? 🤔
- Will we have paradigm-shifting / mind-blowing moment like in the film Arrival that may change the way we program entirely? And thus change the way we think about programming?
- Will the improved understanding of languages also improve natural language processing? And will better understanding of natural language processing also bring nautral languages closer to programming languages?
We definetly have not reached the end of our current paths of exploring languages. But I hope there is an entirely different approach that we just never needed to explore that will one day seem totally obvious to us now.