[pypy-svn] r48282 - pypy/extradoc/talk/roadshow-ibm
lac at codespeak.net
lac at codespeak.net
Sun Nov 4 13:12:42 CET 2007
Author: lac
Date: Sun Nov 4 13:12:41 2007
New Revision: 48282
Modified:
pypy/extradoc/talk/roadshow-ibm/talk.txt
Log:
Ok, try the non-challenging, non-threatening version
Modified: pypy/extradoc/talk/roadshow-ibm/talk.txt
==============================================================================
--- pypy/extradoc/talk/roadshow-ibm/talk.txt (original)
+++ pypy/extradoc/talk/roadshow-ibm/talk.txt Sun Nov 4 13:12:41 2007
@@ -13,48 +13,43 @@
It challenges commonly held assumptions about the
construction of interpreters for dynamic languages.
-What we Reject
-==============
-* Interpreters for Dynamic Languages must be slow
-
-* Fast, Maintainable, Flexible -- pick one
-
-* C is the most appropriate language for implementing interpreters.
-
-* C++ is the most appropriate language for implementing interpreters.
-
-* Requiring type-hints everywhere, thus turning your dynamic language
- into a static one, on the sly
-
-What we insist upon
-===================
+Folk Wisdom about Interpreters for Dynamic Languages
+====================================================
+* There are unavoidable tradeoffs between flexibilty, maintainability,
+ and speed
-* real source code portability between different target implementations
+* Popular dynamic languages such as Python and Ruby are the best we
+ can do given these tradeoffs and constraints.
-* support for an actual existing dynamic language, not an academic toy
-
-* support for the complete language, not a subset
-
-* The interpreter we write should be free of low-level details as possible
-
-* the ability to experiement with all aspects of the compiler, including
- garbage collection strategies, threading models, security models
-
-* fun
+* Fast, Maintainable, Flexible -- pick one
-Implications?
-=============
+What this means in Practice
+===========================
-* type analysis must be performed on live code objects, not dead source trees
+Dynamic languages are not very flexible.
-* parts of the interpreter must be written in a static manner.
+- Low-level decisions permeate the entire code base.
+- One cannot simply plug-in a new garbage collector, or threading model
+ when one desires to experiment.
+- Early decisions come back to haunt you.
+
+Dynamic languages are hard to maintain.
+
+- because they are traditionally written in low-level languages, they are
+ harder to write than they need be.
+- the language community, which generates experts in the dynamic langauge,
+ can not use this expertise in its own maintenance. Instead, expertise
+ in C, or C++ is usually needed.
+- every time a new VM is needed, there is a fork in the language community.
+ The maintainers of Jython and IronPython, for instance, are lost to the
+ C Python community. They have enough to do just to keep up with C Python.
-* Generate compilers using partial evaluation techniques. Don't write them
- by hand!
+Dynamic Languages are Slow.
-* Build a toolchain with pluggable components, for e.g. garbage collection
+Thus it looks like what we really have is:
+* Fast, Maintainable, Flexible -- you get NONE.
-* The translation framework can be reused by _any_ dynamic language!
+There has got to be a better way.
Translation details
=======================
More information about the Pypy-commit
mailing list