<p>Turing complete languages are <a href="https://en.wikipedia.org/wiki/Undecidable_problem" rel="nofollow noreferrer">undecidable</a>: it can be proved that some algorithm cannot always work as expected for all possible inputs. I believe that most of these problems have to do with deciding if another algorithm can or cannot do something. </p>

<p>An undecidable (programming language) grammar means that you cannot be certain what the meaning of a given program (source code) is just by looking at the code. Look at the answers of <a href="https://stackoverflow.com/questions/794015/what-do-people-mean-when-they-say-c-has-undecidable-grammar">this question</a> for examples.</p>

<p>A classic example of undecidability is the <a href="https://en.wikipedia.org/wiki/Halting_problem" rel="nofollow noreferrer">halting problem</a>:</p>

<blockquote>
  <p>In computability theory, the halting problem is the problem of determining, from a description of an arbitrary computer program and an input, whether the program will finish running or continue to run forever.</p>
</blockquote>

<p>For completeness also read <a href="https://en.wikipedia.org/wiki/Universal_Turing_machine" rel="nofollow noreferrer">this</a>, especially the "Mathematical theory" section.</p>

<p>In contrast a decidable programming language can mathematically prove that a program will always have the expected results; e.g. a smart contract written for Tau-chains can be proved that it will not suffer the halting problem before deploying it. It is my understanding that it <em>just</em> helps you reduce possible bugs.</p>

<p>Note, that in Ethereum the halting problem is not a such a big issue since the contract will eventually run out of gas, but it would be good to catch it before deploying it <em>forever</em> in the blockchain!</p>

<p>Having said that, in Tau-Chain they use Ontologies and RDF and in my experience it is much <em>much</em> harder to code anything using RDF and reasoners (although reasoners do allow for <em>smarter</em> programs but I cannot comment more since I do not know the Tau-Chain language's semantics). </p>

<p>Also read <a href="https://docs.google.com/document/d/16239hEjL_IgXYsk2I6RMjMKhmUte30leYI3jJ-Vgp3M/edit" rel="nofollow noreferrer">this</a> for a comparison between Ethereum and Tau-Chain, from the Tau-Chain guys perspective.</p>

CC BY-SA 3.0
2016-05-30T14:20:49.580Z
2016-05-30T14:20:49.580Z
2017-05-23T12:34:59.703Z
karask
<p>I'm currently doing some research on <a href="http://www.idni.org/tauchain" rel="nofollow">Tau-Chain</a> and its various claims. One of the biggest ways it tries to differentiate itself looks to be the focus on decidable programming languages, instead of turing-completeness. However, I can't seem to find any straightforward example of what practical benefits does that add over the conventional solutions.</p>

<development><altcoin>
What benefits does Tau-Chain add over conventional solutions?
ThePiachu
# What benefits does Tau-Chain add over conventional solutions?

(Asked by: username_0 on 2016-05-29)

I'm currently doing some research on [Tau-Chain](http://www.idni.org/tauchain) and its various claims. One of the biggest ways it tries to differentiate itself looks to be the focus on decidable programming languages, instead of turing-completeness. However, I can't seem to find any straightforward example of what practical benefits does that add over the conventional solutions.

**Tags:** development, altcoin


---

## 1 answers

### Answer by username_1 on 2016-05-30. Score: 1

Turing complete languages are [undecidable](https://en.wikipedia.org/wiki/Undecidable_problem): it can be proved that some algorithm cannot always work as expected for all possible inputs. I believe that most of these problems have to do with deciding if another algorithm can or cannot do something.

An undecidable (programming language) grammar means that you cannot be certain what the meaning of a given program (source code) is just by looking at the code. Look at the answers of [this question](https://stackoverflow.com/questions/794015/what-do-people-mean-when-they-say-c-has-undecidable-grammar) for examples.

A classic example of undecidability is the [halting problem](https://en.wikipedia.org/wiki/Halting_problem):

> In computability theory, the halting problem is the problem of determining, from a description of an arbitrary computer program and an input, whether the program will finish running or continue to run forever.

For completeness also read [this](https://en.wikipedia.org/wiki/Universal_Turing_machine), especially the "Mathematical theory" section.

In contrast a decidable programming language can mathematically prove that a program will always have the expected results; e.g. a smart contract written for Tau-chains can be proved that it will not suffer the halting problem before deploying it. It is my understanding that it *just* helps you reduce possible bugs.

Note, that in Ethereum the halting problem is not a such a big issue since the contract will eventually run out of gas, but it would be good to catch it before deploying it *forever* in the blockchain!

Having said that, in Tau-Chain they use Ontologies and RDF and in my experience it is much *much* harder to code anything using RDF and reasoners (although reasoners do allow for *smarter* programs but I cannot comment more since I do not know the Tau-Chain language's semantics).

Also read [this](https://docs.google.com/document/d/16239hEjL_IgXYsk2I6RMjMKhmUte30leYI3jJ-Vgp3M/edit) for a comparison between Ethereum and Tau-Chain, from the Tau-Chain guys perspective.


---

