3 ms·
This implies that Python started using byte-codes after Java. The first release of Python used a byte-code system. Looking at git log Python/ceval.c: commit
by eesmith 6y ago
This implies that Python started using byte-codes after Java.
The first release of Python used a byte-code system. Looking at git log Python/ceval.c:
commit 3f5da24ea304e674a9abbdcffc4d671e32aa70f1
Author: Guido van Rossum <guido@python.org>
Date: Thu Dec 20 15:06:42 1990 +0000
"Compiling" version
commit e9736fc8a1e7b53f92e1616980b25de9db695ed3
Author: Guido van Rossum <guido@python.org>
Date: Sun Nov 18 17:33:06 1990 +0000
Free parse tree after compiling.
Added support for class definitions.
Reorganized main interpreter loop to fetch op and arg once at the head.
Use two bytes for arguments (see ceval.c).
Java started in 1991, though of course Oak was earlier.
Going back in time, UCSD Pascal compiled to p-Code in the 1970s. Quoting https://en.wikipedia.org/wiki/UCSD_Pascal#UCSD_Pascal_and_the_p-System https://en.wikipedia.org/wiki/UCSD_Pascal#UCSD_Pascal_and_th... :
> James Gosling cites UCSD Pascal as a key influence (along with the Smalltalk virtual machine) on the design of the Java virtual machine.
Pascal is traditionally in the "compiled language" camp.
Zork' Z-machine is another virtual machine from the 1970s which compiles to op codes - https://en.wikipedia.org/wiki/Z-machine https://en.wikipedia.org/wiki/Z-machine .
PyPy is a Python implementation with a JIT and without a Python VM. Actually, with many JITs. There have also been JIT'ed variations of CPython (Unladen Swallow, Pyston, Numba, Pyjion) and Python compilers (Nuitka and Shedskin).
And then there's Cling, https://root.cern/cling/ https://root.cern/cling/ , "an interactive C++ interpreter, built on the top of LLVM and Clang libraries".
My experience is that thinking of dichotomies (or trichotomies) of implementations, much less a grand war between them, isn't that useful a way of structuring the concepts.