June 30, 2020
Newfound Appreciation: Noam Chomsky
We have all been there, sitting in class thinking to ourselves, “I will never use this in real life.” However, life has a way of proving us wrong.
Enter Noam Chomsky
As a computer science graduate, I took quite a bit of math and computing classes. One name that I heard over and over was Noam Chomsky. In class, he seemed to be this vague, academic figure that created some structures to define a language, aka the hierarchy of languages and theories of automata.
Now that I’ve had some time away from school, and have spent a little more time in the real world of software development, I’ve developed an appreciation for Noam Chomsky as a person, what he accomplished, and his contributions to modern computing.
Who is Noam Chomsky
In 1956, Chomsky developed a way to quantify language into a simplified rule, a universal grammar that underlies all languages. He went a step further and broke language down into categories based on the number of constraints placed on it.
According to Chomsky’s rule, all languages can fit into one of 4 categories:
- Recursively enumerable
- Context-sensitive
- Context-free
- Regular
While we just explored Anomaly Detection as one of the uses of this model, look for its other applications such as Dimensionality Reduction, Information Retrieval, and Machine Translation, etc.
You can find out more about these levels of language here: https://www.geeksforgeeks.org/chomsky-hierarchy-in-theory-of-computation/
For me, this was an interesting academic point, but not particularly useful. The idea that all language, across all the history of humanity, could be boiled down to some fundamental truths is interesting, but I’m no linguist, and it didn’t change my day-to-day.
When things came together for me was in the practical application of theory in a course where we were required to build a compiler. A compiler is a tool that converts a programming language into a set of machine instructions.
To achieve this, I had to create a language that contained all my necessary instructions, was understandable for an end-user to read, and was never ambiguous. If I learned one thing from that course, it’s that ambiguity is the enemy, if your instruction is unclear in any way, how is the compiler going to know what to do with it? During this assignment is where understanding how language and grammar work at a fundamental level really pays off.
My main take away from this duo of courses was all programming languages fall into these categories and leverage the context and syntax rules Chomsky created. These languages can be classified into the above categories and utilized in different ways, based on what you are trying to accomplish as a programmer.
Moral of the story: surprise, surprise, your teachers know what they are talking about and how it will help you. While at the time, I may have thought, “Why bother?” I now have a profound and deep respect for the foundation Chomsky laid in linguistics and how it has advanced the world as a whole.
Did you enjoy this content? Follow our linkedin page!