Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Saturday, 2 January 2016

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.

Monday, 28 September 2015

To be a programming language poet

Learning a programming language is same as learning any natural language. Except programming language have negligible amount of  special words and no ambiguity. Grammar and language specification/standard are major ingredients here.
You can be a poet on the other side of the language, but to reach there I strongly believe that you have to go through them: language specification/standard and grammar. Because all your questions/doubts can be answered with them. It is a bit difficult to understand them because they are intended(mainly) for language implementors, who are assumed to have sound knowledge. But being a poet counts. :)

Wednesday, 7 January 2015

A Difficult Thing For Beginner

           I feel that a programmer finds it difficult to adopt to certain language constructs that are low-level when compared to a high-level language he/she has worked with.
  Consider a person who learnt Python as one's first computer language and practiced most of the language constructs,  begins to learn C programming. One may feel difficult at the beginning because one's first language has very flexible built-in data-structures and functions than when compared to C.
             The fact that I am one of the examples for the above supports my statement . After I learnt Python, I started experimented with  C. It took me a considerable amount of time to realize how  valuable C is. I kept on wishing that C should've had simple constructs as Python, till I got to know that in fact, Python is a C program.
 Thanks to Mr. Guido Van Rossum for that flexible, general purpose, object oriented, scripting language . If we consider complexities of the programs written in Python and C , compared to C programs, a Python program has a high time and space complexity. We need to know that there is a trad-off between efficiency and flexibility and internal complexity is proportional to flexibility .