

Fun with Python bytecode – Generate and modify it using evolutionary algorithms - soravux
http://multigrad.blogspot.com/2014/06/fun-with-python-bytecode.html

======
voidlogic
>You have probably already heard that Python, unlike Fortran, C++ or Go, was
an interpreted language. While not completely wrong, it is not entirely true
either.

Interpreted byte-code is still interpreted (and is a norm among interpreted
languages: VB (pcode), PHP, Perl, some Pascal, Java (until the JIT gets to it)
all interpreted byte-code.)

I really dislike it when people change the definitions of well established
things because they don't like their own, or others, connotations of the term.

>Thereafter, these instructions are actually interpreted by a virtual machine.

Indeed like most other mainstream interpreters do...

~~~
kyllo
CPython is both compiled and interpreted. His point was that the Python source
code does not get interpreted, it gets compiled to bytecode that gets
interpreted by a bytecode interpreter (a VM).

He was dispelling the common misconception is that Python is an "interpreted
language" and Java is a "compiled language," when the reality is that (in
their most common implementations) both of these languages are compiled to
bytecode that is then interpreted by a VM.

This is in contrast to both languages that are purely interpreted (like toy
Lisp implementations are and I think Ruby MRI used to be) as well as languages
that are purely compiled to native binaries (like C/C++, Haskell, Go).

~~~
voidlogic
>His point was that the Python source code does not get interpreted, it gets
compiled to bytecode that gets interpreted by a bytecode interpreter (a VM).

My point was almost every mainstream interpreter does this (and has been for
decades). So him saying "Python... was an interpreted language. While not
completely wrong, it is not entirely true either." is confusing and
inaccurate. It is _completely true_ that Python is interpreted (and like
almost every other interpreted language its the bytecode that is interpreted
not the source code).

When I was doing my undergrad we had an assignment to write an interpreter, at
the end of class our new assignment was to make it 10x faster. So we did this
by converting the parse tree to bytecode rather than directly executing it as
it parsed. It wasn't hard or advanced work.

~~~
stinos
While I'm with you on the definition point (it _is_ interpreted) I fail to see
the relevance of that last paragraph??

~~~
gamegoblin
User voidlogic was pointing out that converting to bytecode before
interpreting was so mainstream (and relatively simple) that even undergraduate
students do it for an assignment.

~~~
voidlogic
Yes, this exactly. I should have been more direct.

