Human computer interaction can be described in terms of software. Operating systems software and applications software respectively.
The operating system forms an abstraction layer between the user and the rudimentary software of the bios and the hardware resources. The operating system wraps necessary functions of a computer within an easy to use interface that can either be graphical, or some sort of text interface. Microsoft DOS for example is an early operating system that was available on IBM desktop machines, and still available through various iterations of windows up until Windows ME. It stands for disk operating system and used commands allowing the user to interact with the hardware, it offered the ability to program basic programs using QBASIC but also allowed users to install pre-made programs such as basic word processors, computer games, databases etc.
Microsoft DOS evolved into its more graphical counter partner Microsoft Windows. Windows was a realisation of a graphical interface similar to that, which had already been created by competitors Apple Macintosh.
The operating system is required to manage the processor, as the processor alone is only capable of a single operation at a time. The operating system schedules tasks and maintains resource, making sure a task has the available memory and disk space to be completed. The operating system facilitates multi-tasking; it provides memory management, and device management.
With the differences that exist in hardware because of the differences in companies that create CPU’s, PCI cards etc. The operating system has to be able to provide an interface between dissimilar hardware types. This allows applications software to interface with the operating system specifically and not the hardware underneath, making the task of programming applications much easier.
Operating systems can now be found on PDA’s Mobile Phones, and within specialised equipment such as control machinery. The size of operating systems such as pebble Linux also makes certain operating systems portable. Pebble Linux can fit on a single flash card and can be used on any machine that can read the card.
Discussed above is the use of applications software. This applications software is created using programming languages.
The most basic programming language, and the most complex of all is Machine Code. This is difficult to use as it uses numbers to represent functions and actions within the CPU instruction set. Therefore assembler language was created. It uses words to represent specific functions, and forms a slight abstraction layer between the machine code and the user. Each instruction in the machine code instruction set is represented in another form within assembly language; a compiler converts assembler into back into machine code by translating the assembler instructions.
From this point first generation programming languages were created. These programming languages have been labelled unrestricted programming languages; they include Basic, Fortran, and Cobol. They are the very first programming languages; some created by the very first hackers in MIT in the 50’s and 60’s others slightly later. They were unrestricted as you type instructions in basic line by line, to refer to a line later in the program you would refer to the line number, (IF < 10 GOTO 12), the program would then execute sequentially from line 12 but this is as far as structure went.
Later programming languages attempted to address this by allowing the use of functions and procedures. By separating functions and procedures from other parts of code, they can be reused whenever needed, thus cutting down the size of a program, but also promoting the reuse of code in other programs and component based software engineering.
Programming languages require strict adherence to the syntax of the language. Failing to comply to the syntax will result in a program that won’t compile. And a program that won’t compile can be attributable to a single semi colon being left out at the end of a line. Therefore programming languages can be fragile, and complex. However the higher level the language the less complex the language becomes as creators attempt to put another abstraction layer between the user and the machine. The reason different programming languages exist is first to try and solve a problem that might not have been addressed, or addressed correctly in another language, for example although Java was created to be open source and platform independent, it suffers from difficulties over different platforms, but it has less difficulties than a language that was not created to be platform independent. Also different languages exist depending on suitability for purpose. A complex programming language such as J2SE has an over complicated instruction set for mobile phones, therefore a mobile version was created called J2ME. J2ME is used to program applications for mobile phones, and is also small enough to fit on specialised integrated circuits that can be used for other hand held devices.
References
www.webopaedia.com - accessed 28th January 2005
Bibliography
Brookshear, J. G. (2000). Computer Science, An Overview. Addison-Wesley
Horstmann, C. (2002). Big Java. John Wiley & Sons
Tanenbaum, A, S. (1996). Computer Networks. Prentice-Hall