Whilst there is a lot of excitement about the possibilites of "Turing complete" blockchain transactions that are supported by Ethereum and AT (the latter being my own invention) after studying how these work I have come to the conclusion that they are just not going to really scale up to provide us with a "new internet" (which is what I have now come to think of as being the main goal that blockchains should be used for).
If you think of how things like this forum work today (via HTTP/HTTPS) you create a forum post by effectively populating a form with values that gets turned into a HTTP/HTTPS POST request for the server to then turn into a DB operation (after performing validation).
But both Ethereum and AT instead are actually working more like low-level machines (either a Java VM in the case of Ethereum or a virtual CPU in the case of AT) which are very inefficient in comparison to something like HTTP with a web server backend that uses say FCGI.
They have to work this way as otherwise you could create a very simple program like this following:
while( true )
str = str + str;
that will run your computer out of memory (causing it to either crash or become completely unresponsive) unless the fees to execute more than X amount of steps are high enough.
But is there another way?
Yes - I designed a concept called Software Manufacturing (
http://ciyam.org/open/?cmd=view&data=20121221010507352000_P&ident=M100V112&chksum=b3d538bf) many years ago (which works in a somewhat similar manner to Charles Simonyi's project called "Intentional Software").
In Software Manufacturing the above pseudo code would have to be divided into two components - a looping specification and a separate specification that covers what to do within the loop. As all source code is "generated" you can't stop the resulting code from effectively being something like this:
while( true )
{
if( str.length( ) > c_max_allowed )
throw runtime_error( "str too big" );
str = str + str;
}
This is not something you can do using either Ethereum or AT as they are simply not high level enough but this is something that can be easily be done using Software Manufacturing (as you have no choice).
Using such a high level approach means that rather than bothering each node with putting a VM or virtual CPU between the network and the DB you can just put in the functional operations themselves (which would look more like SQL statements than machine code).
This will scale to at least the level we have today in regards to internet applications and this is what CIYAM is currently developing.
If you'd like to learn a bit more about what exactly Software Manufacting is then a quick introduction can be found here:
http://ciyam.org/docs/methodology.html.