Finding the fit and making the pitch • Obstacles: technical, cultural, and political • Two APIs • Benefits and downsides • Lessons learned and the future
areas where it is actually well suited • Why? Wider adoption means a healthier language, more libraries, better community, etc. • Plus, it's a great tool from which developers can really benefit...spread the joy! • We feel our experience was a success story, so sharing it might help others in similar positions.
values • Metadata and introspection • Accessible ”Any sufficiently complicated C or Fortran program contains an ad hoc, informally- specified, bug-ridden, slow implementation of half of Common Lisp.” – Greenspun's 10th Rule
of useful functionality • Cross-platform • C / C++ API • World-class quality Precisely the kind of thing you want in the guts of your lean, mean C++ program... if you need what it offers.
many things this is irrelevant • You can drop into C/C++ Besides, if you really need the functionality of Python, do you think you'd do better by rewriting it?
by example. • Zero-cost • Great community support • High productivity (see ”Just do it”) • Understand performance issues and how to address them (Python when you can, C++ when you must) • Cross-platform • Pretty pictures
Full system being shipped to customers completed in 1 year • Prototype ”grew” smoothly into production version; no ”It works, so rewrite it for real this time.”
easily develop unittests along with the code meant that tests were actually developed • Writing unit tests becomes soothing and addictive • Key to ensuring that changes were good • Boosted credibility with the as-yet-unconvinced
developing extensible system because it is extensible • Plugins are just modules loaded more explicitly • Duck-typing means that issues like binary compatibility are easier (though not completely erased, e.g. C extensions, language versions)
High productivity • Strong unit-test support → high quality code • Easy to develop tools • TODO: graphviz of stratus • Platform for extensibility • Easy to try out new ideas • Wide availability of high-quality third-party modules
extending, less support, fewer tools • Intellisense • Much reliance on C API...jython, pypy, ironpython? • Windows support • Toting around our own private python installation is non-trivial
functionality. This is a hallmark of the need for python...don't reinvent. • Learn C API and extension technology to understand how it can fit into your system • Understand everything python can do, both standard and non-standard modules. • Just do it!