user1082: As I see it, the script feature is one of the most complicated features in the entire protocol. It features 
$ cat src/script.h|grep '^ *OP_'|wc -l
118

instructions, and requires a stack to calculate.
The most important limitation, it makes it complicated to answer a simple and common question - "how much bitcoins does my key have".
With a complicated script, a bug in the script engine is more likely, and thus, it is possible that the network will split (50% client accept this transaction, 50% do not, before you notice, you have two long block chains. One longer which is considered invalid by 50% of the clients, and one shorter, considered valid by both).
What's the rational behind such a system? Why can't any transaction be simply "move X BTC from key K to key I signed by private key K"?
(If indeed you want anything complex - do that in a different system, and not inside bitcoins block).

user85: 
The most important limitation, it makes it complicated to answer a simple and common question - "how much bitcoins does my key have".

Why is that a limitation? It's actually a critical defense against one of the most realistic vulnerabilities in crypto-currencies as immortalized in this XKCD cartoon. There is at least one very good reason Satoshi chose to remain anonymous.

user208: 
(If indeed you want anything complex - do that in a different system, and not inside bitcoins block).

I'll first try to answer your second comment: in short, you cannot do it in a different system, with the same security properties.
Several schemes exist for sharing keys according to complex schemes, for example Shamir's Secret Sharing. Unfortunately, that still requires the full secret key to be recombined on a single computer system at some point in time, which becomes a single point of failure.
In contrast, Bitcoin's 2-of-2 transactions for example allow a transaction to be created that needs to be signed using two different keys, which can reside on two different systems, independent from eachother. That will hopefully allow applications that require a confirmation to be given on a mobile phone system, while that phone's private key never needs to leave the device.

What's the rational behind such a system? Why can't any transaction be simply "move X BTC > > from key K to key I signed by private key K"?

Restricting transactions to such a simple form would restrict Bitcoin to exactly the possibilities traditional currencies had (though decentralized). However, Satoshi saw the potential to allow it to do more, and introduced a script system. He wasn't around anymore to bring it to practice, but Mike Hearn wrote down some of the things Satoshi had in mind on the Contracts page of the Bitcoin wiki.

user403: 
Why can't any transaction be simply "move X BTC from key K to key I signed by private key K"?

Then you couldn't (easily) do the P2SH stuff being implemented right now without getting everyone to upgrade. You also couldn't do escrow, multisig, secure cross-chain trading, secure high-frequency trading, etc. These features are very valuable; Script-based escrow, for example, will be the first escrow system ever which requires no trust in third-parties.
Script is, in my opinion, one of the greatest innovations in Bitcoin. I would prefer a much more powerful, Turing-complete version of Script in Bitcoin, actually.

1082: <p>As I see it, the script feature is one of the most complicated features in the entire protocol. It features </p>

<pre><code>$ cat src/script.h|grep '^ *OP_'|wc -l
118
</code></pre>

<p>instructions, and requires a stack to calculate.</p>

<p>The most important limitation, it makes it complicated to answer a simple and common question - "how much bitcoins does my key have".</p>

<p>With a complicated script, a bug in the script engine is more likely, and thus, it is possible that the network will split (50% client accept this transaction, 50% do not, before you notice, you have two long block chains. One longer which is considered invalid by 50% of the clients, and one shorter, considered valid by both).</p>

<p>What's the rational behind such a system? Why can't any transaction be simply "move X BTC from key K to key I signed by private key K"?</p>

<p>(If indeed you want anything complex - do that in a different system, and not inside bitcoins block).</p>
 85: <blockquote>
  <p>The most important limitation, it makes it complicated to answer a simple and common question - "how much bitcoins does my key have".</p>
</blockquote>

<p>Why is that a limitation? It's actually a critical defense against one of the most realistic vulnerabilities in crypto-currencies as immortalized in <a href="http://xkcd.com/538/" rel="nofollow">this XKCD cartoon</a>. There is at least one very good reason Satoshi chose to remain anonymous.</p>
 208: <blockquote>
  <p>(If indeed you want anything complex - do that in a different system, and not inside bitcoins block).</p>
</blockquote>

<p>I'll first try to answer your second comment: in short, you cannot do it in a different system, with the same security properties.</p>

<p>Several schemes exist for sharing keys according to complex schemes, for example <a href="http://en.wikipedia.org/wiki/Shamir%27s_Secret_Sharing" rel="nofollow">Shamir's Secret Sharing</a>. Unfortunately, that still requires the full secret key to be recombined on a single computer system at some point in time, which becomes a single point of failure.</p>

<p>In contrast, Bitcoin's 2-of-2 transactions for example allow a transaction to be created that needs to be signed using two different keys, which can reside on two different systems, independent from eachother. That will hopefully allow applications that require a confirmation to be given on a mobile phone system, while that phone's private key never needs to leave the device.</p>

<blockquote>
  <p>What's the rational behind such a system? Why can't any transaction be simply "move X BTC > > from key K to key I signed by private key K"?</p>
</blockquote>

<p>Restricting transactions to such a simple form would restrict Bitcoin to exactly the possibilities traditional currencies had (though decentralized). However, Satoshi saw the potential to allow it to do more, and introduced a script system. He wasn't around anymore to bring it to practice, but Mike Hearn wrote down some of the things Satoshi had in mind on the <a href="https://en.bitcoin.it/wiki/Contracts" rel="nofollow">Contracts page</a> of the <a href="https://en.bitcoin.it/" rel="nofollow">Bitcoin wiki</a>.</p>
 403: <blockquote>
  <p>Why can't any transaction be simply "move X BTC from key K to key I signed by private key K"?</p>
</blockquote>

<p>Then you couldn't (easily) do the P2SH stuff being implemented right now without getting everyone to upgrade. You also couldn't do escrow, multisig, secure cross-chain trading, secure high-frequency trading, etc. These features are very valuable; Script-based escrow, for example, will be the first escrow system <em>ever</em> which requires no trust in third-parties.</p>

<p>Script is, in my opinion, one of the greatest innovations in Bitcoin. I would prefer a much more powerful, Turing-complete version of Script in Bitcoin, actually.</p>
