There was an immense growth in this field: computation. Computers, thier design, composition, logical units etc. generate immense curiosity as to find how it has been constructed. In this post I would like to put my view of present generation of computer. If you find my assumptions to be wrong, please feel free to comment.
To start with, I will take up the basic operation of a computer. Whatever operations we do in a computer, at the grassroot level, will be processed in terms of 0's and 1's. That is binary. How exactly is this process done? The instructions in the form of existance and non-existance of electric signals (representing 1's and 0's), are sent to transisters. The transisters have ability to give out or not to give out outputs according to each combination of inputs that are given. These transisters form the gates, which will actually process the input. This in totality constitutes a processor. The computers, are GIGO(Garbage In Garbage Out) machines. That is whatever is input into a computer, the output will be according to the quality of input given. Actually, there is a process invloved in between input and output. So, computers are actually, Garbage In Processed Garbage Out) machines!
After all what a computer should do? The purpose is to employ it for carrying out any work which can be made understandable to it. Any process in our day to day life, the flow 0f which can be defined with a combination of rules and logical decisions, can be put into a box. The flow will be predefined for a set of parameters that are input. The collective flow of process within computer is called program. There are programs which are written in 0's and 1's which are directly read by the processor and the code gets executed, these are said to be written in machine level languages. There are other languages, which have to be compiled to produce code, so as to make the processor execute it.
The processor can access to the data and instructions in RAM(Random access memory) very fast. Where as if one is going to read from any physical locations (as on the discs), the access is slow. So, when any program running on a computer, the program related code and data gets loaded onto RAM. This eases the access of bit data to be loaded into the registers which are the input to the processor.
Each program when run, is allocated with the address space at the beginning before it is loaded onto memory that is RAM. The addresses of the location of each elemental data can be accessed through pointers. A code to be executed actually contains a sequence of pointers to instructions, which are to be executed one after the other. Even several modern programming languages allow programers use pointer, which has been a useful feature. These pointer variables hold thier own space in the memory(with thier own addresss). Only speciality about a pointer is its content. Its content will be the address of another location. The location, it is pointing to, can hold any type of data. Many programming languages allow specification of the content to be defined at the time of pointer declaration.
The present programming languages allow generation of a sequential set of instructions on compilation which can be executed. The compiled program in 0's and 1's are loaded into the memory, at the time of excecution of the program. This executable code can be derived from code actually written by the programmer in a language he knows, using compilers. Compilers recognize the sintax of instructions written by the programmer, and converts into instructions oparable by "a" processor. There are recent languages developed which will convert the code into an intermediate format initially. later in each machine, the intpreter will convert into a code that is understandable by the specific machine. Many times the whole job of compilation is devided into work of a compiler and interpreter. The interpreter, can understand and execute a program in pieces, though whole code in not available with it.
There are Operating systems(OS). Operating Systems are mediators between process that has to be actullay carried out and the instructions that are sent from external sources to computer. Whenever a computer gets booted, OS gets loaded onto memory(RAM). This memory cannot be accessed by any program that runs later. OS is coded to recognise devices attached to computer, like, key boards, mouse, printers etc. It is programmed to send signals to these devices also. OS also controls the programs that get loaded onto processors. It decides which process thread has to be executed for what amout of time according to their priority. It also manages the signals sent to the display unit.
Using the programming languages many kinds of tools have been developed so far. One of them is, database management system. These systems hold data in a systematic way. They can be accessed through particular queries, updated using a particular statements. The transactions are done over a user interface. Algorithms are written, so as to minimize access time and effort during data retrieval. One data within database is related with at least another, so that it can be easily accessed, through these links. Suppose, there are two tables T1 and T2 in database. In another system generated table T3, these tablenames and thier physical locations are stored, so that, when user queries from particular table T1, first T3 is queried to find the table location of T1, and the contents of T1 can subsequently be loaded onto memory for searching rows that match the query criteria. So, for firing queries loading of whole database onto memory is avoided.
Then there is networking. main purpose of networking is sharing data. The data between computers flow in cables in the form of signals. The signals that flow are understood on the reciever side of network using network protocols. These protocols are programs written to sense the signals that are recieved and convert them into useful data. At the transmitter end, these protocols convert useful data into to signals and transmit them with a destination. the destination is a particular port on a particular host. A port represents the process that can access the data recieved.
It is very useful to project the future in this computational field. The application of computation as it is will increase considarably. The information a computer can store is immense and retrieval of information is easy. As a basic technology it may not develop much. At the time when transisters were developed first, they were considered for building logical computaional elements. As, the transisters became smaller and smaller, computers were developed with considerable portability, so that it was used for many applications. The architectural and computaional design, that exists presently in a computer is based on this fact. We are not able to find any other way of constructing logical gates, unless we use transisters. Of, course, there have been attempts to create these elements using neurosystems, nanotechnology etc.,
After, all that is made easy by the computer for us, now, gradually the technology is moving towards networking for ease of communication and entertainment sharing. Heard that this is the era of ICE(Information, Communication and Entertainment). But, what will gradually our generaions turn into, will really matter, when projecting the future of computation. As, future interest of human race most probably will shift into space exploration, eternity craze, pollution awareness and may be spiritualism. There will be growth towards achieving smaller and faster computers, which offcourse is advance in hardware and software respetively. The advancement will also be in achieving computation through other technologies. There will be advancement in computation in building artificial intelligence and super computing.
But, I really feel there is a some serious backdrop in how the present computing technology is. Some evolved computing technology that is still to be discovered. Some possibility which is still not explored. Hope, it to be done early, in he future, and he whole mankind gets benifit out of it.