From Esolang
Jump to: navigation, search

Turing complete?

I don't think it's Turing complete, as no matter what you do, you can only create a finite number of variables, and you cannot access the unbounded memory needed for Turing completeness. --Taneb 19:34, 22 April 2012 (UTC)

No, I didn't know that you thought that --C-=C-C-- only allows a finite number of variables. It still allows as many variables as C/C++ allows (which probably is infinite), and maybe, due to int and char not being built-in types, --C-=C-C-- may even allow "char" and "int" variables. --NSQX 08:59, 23 April 2012 (UTC)
All variables have to be declared at compile time hence there is only a finite amount of variables. That means, you don't have infinite memory available. Unless you allow random memory accesses through pointers, of course. -- Feuermonster 12:23, 23 April 2012 (UTC)
and according to the description, there is no dereferencing whatever. -- Feuermonster 12:24, 23 April 2012 (UTC)
You do technically have access to an infinite number of variables, if an infinitely-deep call stack is allowed. However, you can only access this memory according to a stack discipline, so --C-=C-C-- is probably a push-down automaton. On the other hand, if void permits arbitrarily large integers as values, then it's probably Turing complete. —ehird 15:12, 23 April 2012 (UTC)

Not Turing Complete

I agree that the definition as provided falls short of Turing complete. Being bounded by the variable names does not allow you to access any more memory than what is available by the given names. This is a serious limitation. Also, where is the input? Typically the programs must be algorithmic and initializing the variables in the code does not allow you to implement MANY algorithms. Yes, you can code exactly one problem instance (no input, constant in code) of the algorithm with a fixed output, but that is not really going to get you Turing Complete. Another problem is the lack of some iteration/recursion. Without recursion or some form of loop, then you are far from Turing Complete.

The minimal programmatic facilities for Turing Complete require: Assignment to 0, Increment, While-loop with a test for 0. Any of the missing features must be able to be replicated by replacements. The While-loop can be replaced with a recursive parameterized function call which can be exited by a test for non-zero values, for instance. Of course, you must have the ability to input a finite but unbounded parameter list, as well as be able to output a finite but unbounded result list. I don't see these facilities in the given definition. (JWJ, 2014/10/02)

void main()

I'm a bit disappointed that the declaration of main() is completely incompatible with --C-=C-C--'s predecessor, C. It will need be int main(void) to be compatible. Otherwise, cool language. :P T.J.S.1 (talk) 18:45, 1 September 2013 (UTC)