This presentation was supposed to be given at a workshop in May 2011 that was eventually cancelled. It was supposed to spark a (constructive) conversation, not a controversy ;)
REPL) • Is a high-level language - in other words, has a high CPU instructions / statement ratio (comparable or higher than Python) Friday, April 20, 2012
at the time of Ousterhout’s paper), had really weak support for static typing • Clojure (that many consider in the same league as Scala) is not even statically typed Friday, April 20, 2012
sysadmin and software engineering project • Medium to large web frameworks (Zope, Django...) and applications (Youtube...) • Scientific computing (numpy, scipy...) • Scripting of games, desktop apps, etc. Friday, April 20, 2012
Clojure and V8 (JavaScript) • Both Clojure and JavaScript are dynamically typed languages • TODO: look at Clojure and V8 and see how they do it Friday, April 20, 2012
“the GIL” (global interpretor lock) • It doesn’t have to be there (Jython doesn’t have one) but removing it from Python is controversial • Python has support for some par prog constructs (see: http://wiki.python.org/moin/ ParallelProcessing) but not the fancy new ones (a la Scala, Clojure, Go, etc.) Friday, April 20, 2012
programs, and also to ease refactoring (necessary condition for agility) • Since Python 3, type annotations are possible on variables, parameters, etc. • Some tools (e.g. Jetbrains’ PyCharm) have support for type inference on Python, and enable: code completion, errors detections, refactoring... Friday, April 20, 2012
Python implementations: CPython, Jython, IronPython and PyPy • But only CPython is mainstream • Why? Because all the “system programming lang” extensions written for CPython cannot be used with the others • And we’re talking about hundreds of packages Friday, April 20, 2012
ease up the task of writing a CPython extension: SWIG, ctypes, Pyrex, Cython... • By encapsulating part of the complexity and low-level details of creating a Python extension, it could make is both easier, more robust and easier to share extensions between language implementations Friday, April 20, 2012
ideas from Clojure and V8 • Python could be made more scalable by removing the GIL (probably needs to rewrite the interpreter, though) and adding modern parallel programming paradigms Friday, April 20, 2012
help of static typing analysis tools + a little help from the developers (i.e. add a few type annotations in their programs and libraries) • Python is a scripting language after all (but not only), and could benefit from a way of writing extensions that is higher level than the common one (but then: how to convert the existing code base?) Friday, April 20, 2012