Computer System Paradigms
In the history of computers, one could observe the alternating waves of two polar attitudes: collective vs. individual. The first electronic computers were huge instruments requiring an army of support personnel—but basically, the operator was the master, a god almighty, who manually programmed the registers and had an entire control over whatever. Years later, computers became corporate assets intended to process data for different people, with the operator becoming a mere intermediary, serving to feed the perforated cards and tapes into the input devices, mount magnetic tapes and floppy disks (which were then really floppy!) as instructed, and finally distribute the tons of paper from the line printer by the individual or departmental boxes. With the first steps of multitasking, the users effectively got control over a portion of computer resources allocated to specific jobs, as if one big computer were dynamically split into a number of small computers individually exploited by the users. Programmable calculators and personal computers were a materialization of that trend. However, the era of networking brought forth the client-server paradigm, with the central computer (server) being collectively used by terminal users (clients) sharing the server resources within the appropriate quotas. This paradigm has dominated in informatics ever since, while the opposition of the individual and collective trends has shifted to the choice between the "thick" and "thin" clients. The functional distinction of servers and workstations (or portable devices) has lead to hardware and software specialization; for some time, servers required special operating systems (or, at least, very specific configurations). Commercial software is differently designed for server and client operation, especially in collaborative applications.
Still, the world keeps changing, various personal devices become more and more powerful and versatile, and, quite probably, the development of peer-to-peer computing will favor "computational individualism" once again, with the servers left to maintain the overall connectivity. With data and code distributed among millions of personal computers, assuming an earlier unmatched redundancy, the reign of central storage, supercomputers and huge clusters will come to an end. In a way, every computer will combine the functions of the server and the workstation, providing the available services upon request. Such a distributed system is much more stable that a few dedicated servers, however clustered, since the failure of one node would not significantly influence the operability of the whole. Obviously, this is the same ideology that stands behind the Internet, just brought to the application level.
Of course, in reality, the elements of the both paradigms will always be combined, and huge central servers will answer the demands of the corporate sector for quite a while. Still, the monster computers of today are to gradually give way to numerous local nodes, both universal and specialized (for instance, built into household appliances). A distributed system is more stable and more flexible. When you need an additional functionality, you can simply request it from the network environment instead of reconfiguring your own device. One could mention the services of online translation and file format conversion as a hint to what can be done. A completely distributed computation medium will certainly require a much higher level of hardware unification and communication protocol standards. Eventually, all the computers will speak the same language, becoming the members of the same computer society.
Cloud computing is intermediate between a fully distributed system and centralized processing. It could be considered both as a transitory stage on the way to a decentralized network, and as a synthesis of the "individual" and "shared" paradigms. In a cloud, the advantage of distributed computing are combined with the power of dedicated datacenters, which makes this approach highly attractive. Still, trying to equally appeal to the both parties, it does not fully satisfy either of them. The corporate users will find the cloud too restrictive and full of security risks; individuals will never agree to a very limited functionality, lack of flexible customization, too much external regulation, and the inevitable additional costs inferred. With all that, cloud computing will hardly ever grow to anything beyond an auxiliary operative tool.