The above steps, typically describes an automatic plant watering system and analyzing the algorithm, we can see that, it involves a series of STEPS of operations, Conditional checking like ‘if’ and ‘else if’ and ‘repetition’ operations.
If a programmer can program the above steps, in a similar language as written above, he can well express his problem, and get the computer to do what he wants without going into the low-level details (bit level) of the system. The above STEPS could be expressed in procedural programming languages like Embedded C, Arduino Sketches etc. Considering constructs like if, if-else, while and for loops.
Consider another example, where one is given the task to simulate real world events. For example, the simulation of traffic in a T junction that connects three streets. Such simulation provides information to identify the frequency of traffic jams in a particular time of day and minimize them by taking necessary preventive steps.
You are welcome to express the problem similar to plant watering system.
Once tried? You will notice that it is quite difficult to express the problem as a series of steps similar to plant watering system and natural to specify such a program by describing the behavior of each object participating in the simulation such as vehicles, Traffic lamps. One can describe the problem as:
Vehicle objects are generated by the simulation program with a frequency that depends on the time of day and statistics collected. Each vehicle object entering the junction from a particular street, messages the traffic lamp object to indicate its arrival and the lamp object maintains the number of vehicles in the traffic. Another vehicle object entering the traffic will query on the status of the traffic by messaging the traffic lamp. Based on the reply, vehicle object can decide to stay on the traffic or not. The traffic object periodically changes its signals for the flow of traffic, once it’s green for a particular direction, it messages all the vehicle objects that it’s green and these vehicle objects are deleted from the traffic or program.
Such a description of the above problem based on Objects and their messaging to update its status is natural for many real world scenarios (example, simulating check out queues in malls, growth of fishes in ponds etc.) and implementing them using procedural languages (C, Assembly) is quite difficult for a programmer.
This is where Object oriented languages such C++, Java, Python etc come in. They help a programmer to express his ideas in terms of objects (vehicles, traffic lamps, fishes etc) and express their connectivity, there by simulating real world scenario.
AN EXAMPLE OF IMPACT OF LANGUAGES ON PROGRAMMING
An example, where languages have inspired and encouraged different background of people into programming is in embedded domain. The embedded domain was initially programmed using Assembly and C language. It was specialized skill, as learning and implementing them required considerable amount of time and effort.
It was then by around 2010, Arduino sketches and python language is being used for embedded programming on a wider scale. The Arduino sketches are self-learning, simple and it is designed for non technical people to enter into programming. Many People with non programming background were influenced by the Arduino constructs and were encouraged to implement their own ideas.
Thus, Thanks to computer scientist for inventing languages, the same PC with appropriate hardware can be used to deal with problems in diverse areas with ease. As Computers are being still pushed to diverse areas of applications, huge research potential to develop new programming languages and other hardware or software system exists.
If you are working on a problem and find that it’s quite difficult to express your problem in particular language, then either you have to switch to an appropriate language with necessary constructs or will have to invent a new one.
Thus answering the initial question, ‘Algorithms’ form the soul of computing, their natural expression (similar to human thinking) for computer execution drive the need to develop better computer languages, advanced hardware and other supporting systems (system software, editors etc.).
Finally, the basic question to ask is;
Given such hardware resources, plethora of programming languages and innumerable example of application, what will you make next?
1 . Algorithmics, The spirit of computing, Third edition. David Herel and Yishai Feldman.