Journey Of Code - Applications

The series, Journey Of Code, comes to an end with this post. During this journey we have explored the technology stack from transistors, logic gates, chip level units, processors and the interface between the hardware and software – machine code.

The exploration has led us to the realm of software. It may be an end to this series, but it is a realm that deserves several such journeys. We will though, briefly look into the different aspects of software and applications.

Software - Hardware InterfaceAs we have seen in the earlier post, the machine code is written using the mnemonic – assembly language. In spite of the use of these human readable syntax, it can get quite complex and cumbersome to design applications that would serve any purpose more than simple calculator. Even a calculator application could get out of hand.

To alleviate from this problem, high level languages were created. These programs take more complex syntax which make it simpler to write programs, and compile them into machine code. Applications can be made to perform several complex tasks with the help of the code that is generated from compiling the programs written in high level languages.

The processors, as we have seen can perform a basic set of operations. These set of operations when combined in a certain way perform myriad of tasks. In order to reduce the size of applications and also to manage the loading and execution of these programs, operating systems were designed.

Technology Stack Some examples of operating systems are Unix, Linux (different flavors), Windows, OSX, BeOS. There are a lot many of them.

These operating systems usually have – what are called kernels. These kernels are small programs or sub-programs that encapsulates the tasks that can be performed by processors and the other connected devices. The rest of the OS provides interface for the applications to these kernel tasks. The kernel as well as the rest of the OS is usually written in a combination of Assembly and high level language.

Applications too may be written in Assembly Language, but they are usually written in high level languages. When they are compiled, they are converted to what are called executable machine codes. These executable machine codes cannot run on their own – they need a OS to load them to memory and point the control to its entry point.

This is the reason why executables are different for different operating systems. All applications need to be recompiled for a specific operating system and usually is not compatible between different operating system.

What kind of applications can be created? That is limited only by the limit of the creative mind who designs these applications. If what needs to be done requires any hardware capability and that is present, then there usually is a way to abstractly design a software and make it happen.

Applications that sit on top of operating system, ranges from simple desktop applications like document editors, image editors, multimedia editors, to recreational applications like games and media players; and network applications like browsers and P2P systems.

Posted in Computer, Technology.

Leave a Reply