Know, what software are?
First thing, I will make clear is, what software are?
A Hardware is a device. It is something which we can see, touch like your mobile phone, or printer.
If the circuit inside the device is directly wired to work, it becomes our familiar electrical/electronic circuit device. Consider A switchboard, where toggling the switch, connects a bulb or a fan to power mechanically.
Consider we have 2 switches, one for fan and one for light.
Now, I give following actions a code (and write in my notebook)
to switch on all light and fan – 1
to switch on just fan – 2
to switch on just bulb – 3
to switch off all – 4
A chip is a device which actually stores these values and can point to each of them.
For e.g. if I point to the location where 1 is stored, it will internally connect the circuit in such a way that light and fan get connected to the power supply.
Why do I need to store these values?
The above example was simple thing. If i want to use more complex or conditional structure? Suppose i have 2 more codes
for day – 5
for night – 6
Now, if the internal circuit is made in such a way,
that if I point to 5 it should point to 2 – it will switch on just fan
and if I point to 6 it should point to 1 – it will switch on fan and light
It will be good! Thus we can make chip to do even more complex work. In actual it is lot more complex. The code actually written in machine is just in form of 0 or 1.
These codes, I write, to suit my needs, is kind of software.
Knowing about different programming language
machine code:
It is code written directly in chip, just in form of patterns of 0 or 1, like 00000101.
Assembly language programming:
Assembler is a program, usually in machine code, which just code each pattern of machine code to give us an alphabet code. Program written with such coded alphabets is assembly language program. It avoids doing mistakes.
Both machine code and assembly language code are lower level language programming as they are closely tied to hardware.
Higher level programming language are more user friendly and less tied to hardware, like c, c++. These languages uses very much natural language words such as while, else etc. These languages uses compiler, another program, which converts the higher language programs to machine code.
Different kinds of software
Embedded software:
Many devices are having their specific and limited purpose like mobile phone, TV etc. The software is designed for their specific purpose and they are kind of hard coded in chip (i.e. stored in ROM and hence not easily editable). Hence they are called firmware.
System software:
These software interact with the devices/hardware at a low level and manage them. Operating System is also a system software.
Application software:
These software are written in high level language and interact with system software, instead of direct interacting with hardware. They are designed to perform user specific task such as text processing, games etc.