Lack of Turing-completeness: that is to say, while there is a large subset of computation that the Bitcoin scripting language supports, it does not nearly support everything. The main category that is missing loops.
Value-blindness: there is no way for a UTXO (unspent output from bitcoin transactions) script to provide fine-grained control over the amount that can be withdrawn.
Lack of State: UTXO can either be spent or unspent; there is no opportunity for multi-stage contracts or scripts which (unspent output from bitcoin transactions) keep any other internal state beyond that.
Blockchain-blindness: UTXO (unspent output from bitcoin transactions) is blind to blockchain data such as the nonce, the timestamp, and previous block hash.