Wouldn't it be highly desirable to be able to prove correctness of contracts? If you do something wrong, you can end up with resources stuck for ever in limbo.
To be able to prove correctness, it is usually easier if the programming language is based on a functional language, with not side effects. There is quite a lot of research done on this. A contract should be a function that takes a state and a message as input, and returns a new state as output. If successfully executed (not aborted), the resulting state is stored. This could easily be scaled to bigger systems, where you can call sub contracts. In the end, the success of the top level contract simply depends on what is returned at that level. Either every part of the algorithm succeeds, or nothing succeeds.
Being free of side effects is a desirable property. It means the top level contract can easily discard changes of lower level contracts. It also means atomic operations are easier to implement. E.g. if you run out of Gas, everything should fail. However, to be able to properly support this, the underlying low level language has to support it.
This idea started at http://www.reddit.com/r/ethereum/comments/2bsg7o/difficult_to_develop_contracts/
, but I thought I should bring it here for discussion. I know there is LLL, but the implementation would require bigger changes reaching outside the scope of LLL.