1

After studying both Solidity and Vyper, I really like Vyper's strong security and simplicity. However one thing got me somehow worried, is that unlike Solidity, Vyper is not a Turing Complete language. Now from what I learned back in the school days, any single Turing Complete language is mathematically proven to be able to do everything that any other Turing Complete language can do. That means I know that at least in theory, anything that C, C++, Java, JavaScript can accomplish, Solidity can accomplish too. The only limit is the block gas limit (which is kind of a resource limit that all computer programs need to work with anyway), the language itself is not limited, just like Brainfuck is mathematically proven to be able to accomplish anything that C/C++/Java can accomplish despite it being an extremely barebone language.

However, since Vyper is not Turing Complete, that means that there are things that cannot be accomplished with Vyper, for example, a loop of indefinite size for the most obvious case. The indefinite-sized loop may not be something too useful or cannot be worked around with, however, I wonder if there's some way to tell if Vyper can or cannot work for a certain scenario so that when faced with certain project requirements, I will be able to tell whether I can accomplish them with Vyper or not. I'd rather not take the risk to develop with Vyper and only halfway into the project find out that there is something in the language itself that prevent me from fulfilling certain critical project requirements.

For Turing Complete languages, I have the guarantee that I can accomplish anything that any other mainstream language can accomplish, but for non-Turing Complete languages, how do I tell whether there's something in the requirements of a project that are not supported by the design of the language itself?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.