[Tutor] Python vs. MATLAB
Steven D'Aprano
steve at pearwood.info
Mon Dec 6 22:11:17 CET 2010
Chris Fuller wrote:
> On Monday 06 December 2010, Jaidev Deshpande wrote:
>> Also, wikipedia says Python is an interpreted language, what does that
>> mean?
> The "interpreted" bit refers to the fact that the source code is not compiled
> before it is run. This is also true of Matlab.
That's not completely correct. What do you think the compile() function
in Python does, or what the "c" in .pyc files stands for?
Strictly speaking, languages are neither interpreted or compiled, they
just *are*. Implementations of languages are either interpreted or compiled.
In Python's case, the three major implementations (CPython, Jython and
IronPython) take the source code and compile it to byte-code rather than
native machine code. Then the byte-code is executed by a virtual
machine, rather than machine code executed directly by your CPU.
This use of a virtual machine is much the same as what (e.g.) Java does.
However, Java many years ago developed the ability to compile direct to
native machine code, which is much faster to run. That step is
considerably harder for Python. However, there is good progress in that
direction:
* Psyco is an old but still serviceable Just In Time compiler for 32-bit
versions of CPython which can speed many (but not all) operations up
greatly, by compiling them to native machine code at runtime.
* Berp and HoPe are experimental implementations of Python written in
Haskell instead of C. Berp translates the Python source code into
Haskell, which can then be compiled to machine code. I'm not sure about
HoPe.
* UnPython is an experimental attempt to translate Python into C, which
can then be compiled to machine code.
* PyPy is an optimizing Python virtual machine written in Python itself,
using JIT technology to produce faster code. PyPy now is about twice as
fast as CPython, for typical programs, and the ambitious aim is to
become an general-purpose optimizing engine that can produce code that
runs faster than the equivalent written in C.
--
Steven
More information about the Tutor
mailing list