<p>If a language is not Turing complete, there are computational problems it cannot solve. So, purely from a view internal to the language, you can't necessarily do everything you want. If you want to use a non-Turing complete language to design some kind of computer architecture, you'll also run into problems.</p>

<p>In order to express or simulate something that is Turing complete, your language needs to also be Turing complete. Python, C, and Java are all Turing Complete, so you can't write compilers for those languages in a language that isn't. The video games Minecraft and Dwarf fortress can simulate Turing machines, so you can't program those games in a language that isn't Turing complete. Powerpoint slide transitions are Turing complete, so you can't write Microsoft Office in a language that isn't Turing complete, or run it on a system that isn't Turing complete.</p>

<p>A programming language that isn't Turing complete isn't a "full programming language" in a sense, and someone who is telling you that a programming language is Turing complete is assuring you that this language can in fact do all of the things that the standard programming languages can.</p>

CC BY-SA 4.0
2018-07-17T16:19:50.020Z
Thanks, Stella!  it makes a lot of sense. I was also wondering if there are any possible practical scenarios when one would prefer to use non-turning complete (or turning incomplete ) languages?
n0unc3
CC BY-SA 4.0
2018-07-17T16:20:32.320Z
Is it when halting/termination is an absoulte must ?
n0unc3
CC BY-SA 4.0
2018-07-18T19:46:31.570Z
Non-TC languages can be useful when it's important to be able to *prove* termination in many different contexts. In practical contexts you can usually "know" if it'll converge for your context even if you can't prove it in general.
Stella Biderman
CC BY-SA 4.0
2018-07-17T15:51:08.327Z
2018-07-17T15:51:08.327Z
Stella Biderman
<p>I get what a Turing machine is and what language is a Turing-complete language but when someone introduces me to a new programming language (like Solidity) and says it is Turing complete, what am I supposed to infer? What is the most important feature/advantage of a Turing complete? Is being Turing complete also a type of standard/benchmark for new languages?</p>

CC BY-SA 4.0
2018-07-17T15:54:02.263Z
Some related half-troll: people are fine with finite automaton as long as finite is big enough :) https://cstheory.stackexchange.com/questions/2547/maximum-computational-power-of-a-c-implementation
holf
CC BY-SA 4.0
2018-07-17T19:37:24.060Z
The more important question here is: why should we use total (i.e. non-Turing complete) languages?
xrq
<fl.formal-languages><pl.programming-languages><turing-machines><regular-language>
What is the practical importance of making or using a Turing complete language?
n0unc3
# What is the practical importance of making or using a Turing complete language?

(Asked by: username_0 on 2018-07-17)

I get what a Turing machine is and what language is a Turing-complete language but when someone introduces me to a new programming language (like Solidity) and says it is Turing complete, what am I supposed to infer? What is the most important feature/advantage of a Turing complete? Is being Turing complete also a type of standard/benchmark for new languages?

**Tags:** fl.formal-languages, pl.programming-languages, turing-machines, regular-language

> **Comments:**
> **username_1**: Some related half-troll: people are fine with finite automaton as long as finite is big enough :) https://cstheory.stackexchange.com/questions/2547/maximum-computational-power-of-a-c-implementation  
> **username_2**: The more important question here is: why should we use total (i.e. non-Turing complete) languages?  

---

## 1 answers

### Answer by username_3 on 2018-07-17. Score: 0 | Accepted answer

If a language is not Turing complete, there are computational problems it cannot solve. So, purely from a view internal to the language, you can't necessarily do everything you want. If you want to use a non-Turing complete language to design some kind of computer architecture, you'll also run into problems.

In order to express or simulate something that is Turing complete, your language needs to also be Turing complete. Python, C, and Java are all Turing Complete, so you can't write compilers for those languages in a language that isn't. The video games Minecraft and Dwarf fortress can simulate Turing machines, so you can't program those games in a language that isn't Turing complete. Powerpoint slide transitions are Turing complete, so you can't write Microsoft Office in a language that isn't Turing complete, or run it on a system that isn't Turing complete.

A programming language that isn't Turing complete isn't a "full programming language" in a sense, and someone who is telling you that a programming language is Turing complete is assuring you that this language can in fact do all of the things that the standard programming languages can.

> **Comments:**
> **username_0**: Thanks, Stella!  it makes a lot of sense. I was also wondering if there are any possible practical scenarios when one would prefer to use non-turning complete (or turning incomplete ) languages?  
> **username_0**: Is it when halting/termination is an absoulte must ?  
> **username_3**: Non-TC languages can be useful when it's important to be able to *prove* termination in many different contexts. In practical contexts you can usually "know" if it'll converge for your context even if you can't prove it in general.  

---

