Fri 18 Jan, 2019 06:49 pm
This is more of understanding the need for abstraction.

Take your screen as an example, it has values stored in the visual memory - a special memory for the screen - where the values for each pixel is stored. These values determine the color to render at any point on the screen. So to modify this value for the first 100 rows and first 50 columns to provide a sim0le rectangle shape, we have to know the values of the memory addresses for those specific pixels, a very daunting task, to address this make life easy, Assembly was developed. With it, you talk to the specific memory slot you want. Manage these memories yourself and keep track of their values.
We are not superhumans, we are simply human and love creating our own environment, so smart people came up with some abstractions on top of Assembly and machine codes, these are the first set of low level languages you know, Ada, C etc. They still create some hard time, making us talk with the hardware directly, managing memories and sort, we need more flexibilities, higher level languages came on top of low level languages, here we have languages that requires a low level language to run C++ is an example here. We still won't settle for less the high level languages won't satisfy our human syntax, we moved to Higher Level Languages, guess what you have here, relies directly on high level languages, JavaScript, python etc are here.

What I will like you to understand is, previous solutions stand as shoulders for us to see the future. We don't care how the shoulder functions, as far as it is not broken, we have to build on top of the shoulders till we reach another height not achieved by our predecessors.

Programming languages will keep evolving, simpler syntaxes more flexibilities, more functionalities.