By
•
3 minutes
I watched “The Imitation Game” yesterday. Generally, it was a good movie and it conveyed the life story of Alan Turing pretty well, although it was a bit too fast-paced. I expected it to give more insights into how the Bombe worked or the intense of working on a very important project while keeping so many layers of secrets, much like a Nolan movie, but instead everything seemed to be superficial.
Anyway, the most important thing was that it reminded me of the Turing completeness in computability theory, and I posed the question of whether Turing completeness can help define a better line between LCNC tools and non-LCNC tools.
If you don’t know what Turing completeness is, I’d recommend watching some Computerphile videos about the topic. I’ll skip the explanation and goes straight to the analysis for the sake of focus of this blog.
This is the graph from my previous blog “Is Figma no-code”, which positions different tools and platforms along the axes of no-code-ness and generality.
In the blog, I also discussed the term “5th generation programming language”, which was used to describe a lot of LCNC tools. Pay attention to the phrase “programming language”.
In general, almost all programming languages are Turing complete, which is essential as they all need to solve complex computational problems. A Turing incomplete language would be less useful and more specific towards a niche. A lot of languages used in daily lives are not Turing complete, and usually not considered a “programming language”, e.g. SQL, HTML. SQL is called a “query language”, while HTML is a “markup language”. They in general cannot be used to purposefully and powerfully solve logical and computational problems.
Disclaimer: I am in no position to lecture Turing completeness to my readers. I’m purely a Maths enthusiast which means that I love Maths superficially but when it comes to true logical debates and problem solving I will be numb. I may not understand Turing completeness in full, so please take it with a grain of salt.
In my previous blog, I also defined LCNC as tools that can help solve logical problems and are presented as high-level programming languages. As such, the more capable of solving logical problems, the more “no-code” the tools become. As a result, the powerful LCNC tools tend to lean towards being Turing complete:
Then, you have tools and platforms on the other end:
In conclusion, the closer to being Turing complete, the more “no-code” a tool/platform becomes, as it stays truer to its promise: allowing people to program without using code. And, program per se, means to solve computational problems.