notes-computer-programming-programmingLanguagesBook-programmingLanguagesPartTargetLanguages

Table of Contents for Programming Languages: a survey

Intermediate languages

There are many languages whose goal is not to be a good language for humans to write or read code in, but rather to be a good language for a compiler or interpreter to target.

TODO: separate this section into 'implementation tours' in the implementation section, and purely target language tours, here.

Chapter : a tour of some language implementations

Go

Haskell: GHC

Python: CPython

http://docs.python.org/devguide/compiler.html

Python: PyPy

PyPy? is a reimplementation of Python in RPython.

RPython is a restricted subset of Python, with restrictions on dynamic typing, reflection, and metaprogramming to enable type inference at compile time.

PyPy? is also a compiler for RPython, which adds in JIT analysis. The RPython compiler is written in Python.

Then the PyPy? Python interpreter is written in a mixture of Python (for slow initialization) and RPython (for the fast part) (i think?). This way the JIT analysis is applied to the result. I think? Not sure I understand.

I think it provides an extension API called CPyExt?, not sure though.

RPython:

Perl6: Rakudo

Perl6 source code is parsed and the parse tree is annotated by firing "action methods" during parsing. The annotated AST is called a QAST. The QAST is then compiled to a virtual machine bytecode. Various virtual machines are planned to be supported, include Parrot, JVM, and MoarVM?