System Softwares have always been a concern of Technologists since decades.With increasing demands on Computer Systems arises the need to make System Softwares that work faster. Embedded softwares could be seen as an important derivative of the need for Complex System Softwares.
After-all What are system Softwares. They are various kinds of Control, Automation and Tranformation softwares used from within Computer platforms. How do they work? They are triggered from within the system when the user places demands.
Computer Science and Allied fields have grown over the years in many ways responding to various challenges...principally the challenge being to augment Quality of functioning and Quantity of users.These are two conflicting paradigms which have to be ushered and addressed from time to time.Today we are in the domain of PC based computing with the Internet back-bone and it is to be seen how Computer Programming of the past would change itself. Like a central exchange which handles telephonic switching System Softwares could be distributed over a large internet backbone and framework and Computer Programming work carried out without the need for localised System Softwares and atg the same time Programming done from distributed locations.Programs that run on the system would search for the appropriate system software over a large internet mesh.
It would be worthwhile to add that hardwares of computers work using binary number system as they use electronic circuitry necessitang the need for various intermediary hardwares and softwares to make the Decimal Human work on the Binary Hardware.
As mentioned earlier System Softwares can be classified as Control....Transformational and Automotive.
Control Softwares would be the OPERATING SYSTEM itself which operaters the Computing device....literally understanding all the instructions in a Computer Program..allocating memory space...storing work-in-progress in buffer memories..and communicating the final result and at the same time reverting to the user if there is some difficulty or impasse. Note that the OS is a full fledged program that runs into several lines of code with many logical operators and all the other TRANFORMATIONAL and AUTOMOTIVE softwares under its command. In short it is the CEO of the machine and all other forms of Softwares put together.
It is important to point out that the paradox of the entire area of Computer Science is that students and practitioners in general try to understand the entire subject in a few hours...which had taken some hundred years to evolve. This creates a whimsical situation of doubt and anxiety to my observation and uncertainity among novices to the point of sometimes reaching very close to abandonement.Text books are sometimes too hard to decipher and the entire subject needs to be demystified. The fact of the matter is that the entire domain as Computing as we understand today came out of the need for man to add two simple numbers done by children worldwide in a Kindergarten. Such mathematical operations gave rise to need for Memory systems and Computers of today as understood by the layman are storage devices.
TRANSFORMATIONAL SOFTWARES convert one form of program into another and creates work-in-progress. INTERPRETERS.......TRANSLATORS...COMPILERS....ASSEMBLERS ..would fall into this category.. AUTOMOTIVE SOFTWARES could be MACROS, LOADERS,,LINKERS, EMBEDDED SOFTWARES....DRIVERS..EDITORS .DEBUGGERS...
Let me write them one after another;
1.OS 2.ASSEMBLER 3.LOADER 4.LINKERS 5.MACROS 6.INTERPRETER 7.TRANSLATOR 8.COMPILER 9.DEBUGGER 10.EDITOR 11.EMBEDDED 12.DRIVERS
Twelve independent System Softwares have been listed and note that all the above mentioned System Softwares could be seen as different players in a Foot-ball match each getting a share in shaping the SOURCE CODE into OBJECT CODE to be stored and run to get results of various kinds of Computations. Ultimately this entire expanse could be called as an ARTIFICIAL INTELLIGENCE system that tries to suplicate HUMAN PROCESSING.
More complex the TRANSLATIONAL SOFTWARES more complex would be the Control and Automation components.This explains the complexity that System Softwares encounter from time to time in their evolution All the above components have to synergise with each other so that the program runs in real time to produce result.
One of the earliest forms of System Software is the ASSEMBLER which was a preliminary engine that converted few English like codes into machine language. The system was possibly slow and clumsy and needed few passes to execute. It is called an Assembler for the simple reason that it finally assembled the rerults of these passes. It did not work in one go....for the simple reason that when these Assemblers were developed they did not have Hardware's that could store and process the programs in one go. Most Assemblers were used to handle mathematical problems which worked on some Algorithm and note that Assemblers also handled complex logical operations like Sorting and Searching. Assembler engines are used even today in Computer System Software's.
Two people go to a hotel for Dinner....one person goes through the menu and orders for an item A and he gets it....This is Pass 1.....the other person goes through the menu and orders for item B and gets it too. This is Pass 2. The waiter Assembles both these orders and creates a Composite bill...this is the Assembler action and the reason why it is called an Assembler. It Assembles many multiple operations into a coherent result.
Basically how do we define an Assembler? Assembler converts Assembly level program into Machine Language. What is an Assembly Language ? It is a Low level language which uses few English like words called pneumonics. For all practical purposes the first attempt at rising above machine language programming. Thats it.
It would be worthwhile to point out that in the most earlier days of Computing came the terms Mill and Store...Mill is the equivalent of modern day CPU and Store is modern day Memory. With increase in the complication of computational requirements there was overloading on Mill and Store resulting in the need to go beyond Assemblers.
One of the earliest attempts was to encircle Assemblers with another layer called Translator and thereby starts HLL High Level Languages. The earliest example was the FORTRAN LANGUAGE which used such engines and appeared in 1970 and an earlier experiment with the INTERPRETER another stand-alone system software of the 1960's that translated and executed programming lines one after another.
Again due to Computing pressures thr FORTRAN arrangement mentioned above began to give rise a more complex Translator Engine which used more advanced form of Artificial Intelligence called the COMPILER. Compiler Compiles...which means it takes a whole program and converts it enmasse into Object code to be executed on the Machine. Such a system was quicker and once the Compilation process was over the Object code could be re-used. The Compilation process paases through a set of gate-ways before the program is Compiled.The programs are put through levels of immunity tests. Compiler uses Translator and Assembler systems which were its predecessors along with an higher order of Artificial Intelligence. The Compilation process involves Lexical Analysis....Parsing...Semantic Analysis....Optimization and Coding. Note the various check-levels. Lexical Analysis is to understand if the codes violate any basic linguistics of the Software Language.If such analysis were to be done on a sentence written in English the check is to find out if all the words are English.This is done using a dictionary attached to the programming language . Similarly it goes into Parsing...more precisely the words used in the programs....Semantic analysis is also sometimes called Syntax analysis.....it checks for violations in the way and procedure in which the code is written and if the code can be understood at-all.....Optimization uses Macros to write a precis form of the program and finally the object code is created.
Note that the above process of Compilation would seem astounding.It is anything but astounding..and it is the essence of Computer Science that such systems have been developed and used for decades until the end-user computing era started with the proliferation of the Personal Computers. Compilation goes through various check points before the final program conversion...thats it! The final end of the Compilation engine uses the process of Translation and Assembly the fore-fathers of the System Software era.
To sum up and make the activity of the Compiler less complicated.....Lexical analysis checks alphabets...Parsing checks words...Semantic Analysis checks the grammar...Optimization reduces the number of lines of code through standardized programming tit-bits and Coding converts them enmasse into Machine Code....thats all...every single aspect of it simple common sense.
Understand the enormous amount of code generated by the Compilation process. No computer memory anywhere in the world however sophisticated can house all the lines of code at one place..so comes the System Software called Linker which was also called the Linkage editor which stores parts of these programs at various memory locations and stores the pattern in which they are to be brought and linked...simple common sense..in other words it is some kind of a directory under the control of the OS.