More on the definition of low-code/no-code

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:

  • Bubble, Xano, WeWeb, etc are rightfully Turing complete. They can easily simulate a Turing machine.
  • Form builders, chatbots, API automations (Zapier, Make), etc are rarely Turing complete. They seem to be similar to SQL, as they serve a niche purpose and have something to do with data manipulation. However, with a bit of a twist, they can become Turing complete as in the case of n8n.io which supports loops and conditionals very well. Similarly, T-SQL, is Turing complete.
  • Website builders tend to help abstract the work with building interfaces rather than solving logical problems, so they are “less” no-code in that sense. However, with the popularity of JS in websites, those website builders all support abstracted JS functions to a certain extent, making most of them Turing complete.

Then, you have tools and platforms on the other end:

  • Productivity tools in general don’t have the ability to simulate a Turing machine. Some might be equipped with automations yet all automations are determined to halt. This is applicable to automations in other tools like email or payment gateways as well.
  • Design tools like Figma cannot be given instructions to begin with, so they cannot be Turing complete.

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.

Have project in mind? Let’s talk.

Our team will contact you within hours.