The choice of the first programming language and the corresponding programming paradigm is critical development of a programmer. In computer science, several programming paradigms can be recognized. There is the huge number of programming languages introduced over the last fifty years, the key issues in programming education remain the same and choosing appropriate programming language is still challenging. In this paper we overview some of the most important issues relevant for programming, the challenges in programming both in terms of programming paradigms and in terms of the programming languages. In this paper, we have also overviewed the concept of abstract machine and operations performed by the interpreter.  Some results about the usage of programming language are also presented.