Jan 27, 2015

Textual description of firstImageUrl

Python is interpreted language or compiled language

Lets start this discussion with definition of interpreted or compiled language followed by understand the same in context of python.
Compiled languages are those languages where source code is converted into native/machine one and that native piece of code is executed at run time and software/program unit we use for such languages are called compiler. Example: C,C++.
Interpreted languages are those one where source code is executed line by line at run time and software/program unit we use for such languages are called interpreter.Example: JavaScript, PHP. 
Interpreted languages are very popular in web application because same web page will open in Linux and windows.Imagine, c++ code in web application it will create a havoc and it may not work due to compilation failure, platform dependent. Here comes interpreted language for rescue and it just follows the instruction and execute line by line source code at all platform.
Notes:  
  • Compiled language or interpreted language are not well defined. Any language can be made complied or interpreted one, it depends on the design and implementation of that language. Design of the languages make them unsuitable for native code generation. 
  • It is very possible to create an interpreter for every compiled language, but the reverse is impossible.
There exist a third category where languages are neither purely compiled or purely interpreted. These languages generate an intermediate representation (called bytecode) and later that bytecode is interpreted by interpreter.These languages take advantages of compiled language (machine instructions, faster execution) and interpreted language(platform independence and suitable for scientific work). Languages like Java, Python,Ruby falls under this category.
In general terminology, these languages are termed as interpreted languages just because intermediate representation is not compiled machine/native code,it's just group of byte code instructions which executes faster than source code and slower than machine/native code.
As concluding remarks, Python(Cpython) is neither a true compiled time nor pure interpreted language but it is called interpreted language.  

Lets understand this intricacy of intermediate representation in context of python(Cpython) :
When python program say sonething.py is executed it generates something.pyc as intermediate representation called bytecode(it is platform independent) and in turn python interpretor executes something.pyc file. Above processes can be depicted in following diagram:
Source file to bytecode generation followed by its interpretation  in python(Cpython)

Notes: 
  1. CPython has been designed to compile as fast as possible performing very little error checking and optimization, so it can run fast and in small amounts of memory. 
  2. User is unaware of the intermediate .pyc generation. It is generated automatically and transparently whenever needed, without the user intervention.
    If .pyc file is not there it will be generated automatically.
    else, modification timestamp(magic number) of .py and .pyc is matched, if it varies it will create new .pyc file else older one will be executed. 
Similarly, other implementation of IronPython which compiles to CLR codes, Jython to JVM codes and executed by appropriate "virtual machines" also known as "interpreters" -  the .Net runtime and the Java VM respectively.
How does python is different from java in terms of intermediate code generation?
Java does not perform automatic compilation.During compilation java does more complex work in order to check errors more thoroughly and perform more optimizations.
Reference : Compiled and interpreted languages pros and cons
Location: Hyderabad, Telangana, India