Ethereum is very simple in essence: it's a Turing-complete version of Bitcoin.
The way you transfer a bitcoin from one person to another is by creating a Bitcoin transaction that contains an input script that fulfills an in-blockchain output script with which a number of bitcoins are associated. The output script may say "provide a public key that hashes to <some_hash> and a signature, over a transaction (which sends the bitcoins to a new output script) that redeems this output, that verifies against this public key".
Bitcoins script language -- conditions be fulfilled to transfer tokens associated with one output script to a new output script -- is not Turing-complete, which means it's limited in how complex a condition can be set up for redemption. Ethereum's script language is Turing complete, allowing arbitrarily complex conditions for fulfilling an output script (which allows you to transfer coins/tokens from that output script to a new one).
Worth adding perhaps that Bitcoin is intentionally not Turing complete, as the complexity opens up a very big space for vulnerabilities. And indeed, we see a lot of those in ethereum contacts.
The DAO failed because of a lack of strong typing in the contract language, not because of Turing completeness.
The main problem with a Turing-complete contract language is that it becomes impossible to statically verify runtime properties, so a node can't know how long it will take to verify a transaction it receives. This opens up for denial-of-service attacks, e.g. embedding a transaction with an infinite loop in a block in the blockchain.
That's true theoretically and your argument still stands for a lot of cases.
However for practical purposes nodes only compute up to a certain amount of instructions. This is known as the "gas limit". Additionally it costs Ether to get them to run code so any DOS approached in this way is prohibitively expensive.
Yup. Why people would want turing complete contracts is completely beyond me. There is a reason why we use heavily restricted computational systems for high integrity systems. Until somebody is doing some sort of model checking on my smart contract you can count me out.
The way you transfer a bitcoin from one person to another is by creating a Bitcoin transaction that contains an input script that fulfills an in-blockchain output script with which a number of bitcoins are associated. The output script may say "provide a public key that hashes to <some_hash> and a signature, over a transaction (which sends the bitcoins to a new output script) that redeems this output, that verifies against this public key".
Bitcoins script language -- conditions be fulfilled to transfer tokens associated with one output script to a new output script -- is not Turing-complete, which means it's limited in how complex a condition can be set up for redemption. Ethereum's script language is Turing complete, allowing arbitrarily complex conditions for fulfilling an output script (which allows you to transfer coins/tokens from that output script to a new one).