A different perspective of contemporary programming
Nowadays, programming is not that hard as it was earlier. Moreover, a programmer need not have a formal background in programming, though, it often depends on the problem. We can classify the problems broadly as End User Applications, Systems Programs, and Infrastructural Software etc.
High level constructs, efficient libraries, proper standardization are
some of the reasons why programming in most of the cases seems simple.
Sometimes it seems to me whether we really are programming a computer or
not? We are not directly giving instructions to a computer, we are
instructing the high level constructs available, with languages. Those
constructs -printf
, scanf
etc. to name a few - hide most or almost all
of the complexity and instruct the computer (generating instructions
that are in one to one correspondence with computer’s instructions set).
But this process is not as easy as it seems. We have to pass through
many of such constructs. For example, one construct may use another and
so on. These transform our high level - often very high level - source
code to computer instructions: compiler/interpreter, pre-defined
libraries, standard libraries, system calls and assembler.
As end programmers, we are enjoying the compiler technology that features us with high level constructs. If you are a Python programmer, you can use those easy to use data-types it provides with a single Python instruction. Like
data = list()
data.append("hello")
data.append(23)
We should not think these are to be understood by the computer (bare machine). These are understood by intermediate systems and they modify them such that the computer can understand. We are just programming (instructing) the constructs, intermediate systems. My intention is not that one has to go for low-level programming but as mentioned, it is a different perspective of modern programming.
If you want to enjoy knowing the difficulties in building those constructs, you can revolutionize.