People wonder: what's the difference between Bitcoin and Ethereum? The common answer is that we can program Ethereum smart contracts with a language that is Turing Complete.
What's wrong with that? That is one of the most noticeable differences between scripting functionality on the two blockchains. And these Turing Complete languages can loop. Isn't that important?
Yes, but the "main" functionality we need to write powerful DApps is rather first-class-citizenship of smart contracts. Since contracts are first-class-citizens, they can call functions from other contracts and even generate contracts automatically.
First-class-citizenship is a general property of language design. E.g. we call functions "first-class-citizens" in functional programming-- you can define a function within a function and you can pass functions as parameters...
What are the common examples/use cases of smart contracts?
- Voting systems
- Payment processing
In summary, "autonomous services that remove the middleman."
Autonomous services? i.e. they self-execute, a corrupt power cannot interfere. We also need them to handle complexity and large amounts of data.
Their performance relies heavily on the fact that separate contracts can interact with each other-- one part of the flow/pipeline can be delegated to a specific contract.
Also if set up correctly, faulty code can be replaced.
Contract A needs Contract B to do some heavy lifting? Great. But we found a bug in B! Ok, create a Contract C and make A point to C after its deployed.
New contracts can leverage contracts that are already deployed on-chain.
In short, the most powerful ways to leverage Ethereum are direct results of contracts being able to store data, implement complex logic, and make calls to other contracts. The choice in design to implement contracts as first-class-citizens is crucial. On the other hand, loops afforded by a Turing complete language are not core to Ethereum's design philosophy-- at most, they make certain complex functions convenient to program.
Feel the Branding Power of @goldhash