Evolution of Languages
Disclaimer : The content of this article is purely a logical analysis of mine and may or may not contain any factual data for it. It is logically based on my understanding of things.
We started off well with logical gates to program a computer, to perform some pre-defined tasks. It was the need of the Industrial Revolution to automate mundane or repetitive tasks. We could do that because all repetitive tasks have some pattern which can be translated into a program. Slowly, we created languages to ease our understanding of things so that we could commercialize the programming part of it. We needed people to quickly learn to program a computer.
The evolution took place from Assembly Language to C or C++. We wanted more from computers to solve some very complex problems and to map those complex problems we created Object Oriented Languages. Now, when we had many skilled software developers we created something called ‘functional languages’ which are more concise. Can you see a pattern here? We are moving up the ladder towards more concise way of programming a computer. We call the current trend as high-level languages having foundation of low-level languages.
Plain English Language
Still, when we look at a software program, whether it’s written in Java, Scala or Groovy, it feels as if we are handling state and behavior via some logical rules. We still cannot program a computer using simple plain English language (or any human language for that matter). We get the requirement from business to write a program which is translated into a bunch of logical state behavior.
I agree that we have some domain specific languages (DSL), which are very good, SQL for that matter. It seems to be a language which is closer to human communication (SELECT * FROM TABLE Employee). Can we think of a way that we could write a program which is in simple plain English?
Do we need to think differently on this?
We have always focused on the purely technical aspect while evolving the languages. Can we consider simplicity as a factor? If Languages, like Gherkin, can be created, then can we not create a language which will help us write a program as simply as I am writing this article?
Now, based on our logical analysis someone will think:
What is the current need that is triggering this? I think we are striving hard to communicate with computers. Technologies are evolving rapidly. Hence, something which we programmed today may not be relevant in the near future. How could we bridge the gap between requirements in plain English to a Technical Computer Program?
The gap is not only driven by mapping factor but also has a time factor associated. This achievement will surely reduce the time to market.