Description
Over the last few years, Python has cemented its lead as the primary development language for machine learning and AI, among both researchers and engineers. Python is dominating this development niche because manual memory management is very important for numeric computing, and CPython exposes an efficient and practical API for low-level extensions. The rest of the Python ecosystem also relies on low-level extensions --- Python would be of little use for web programming without fast libraries for JSON and XML parsing, image manipulation and database connectivity. However, most Python users have little love for these native extensions that they rely on. Native extensions impose some inconveniences. More things can go wrong, and they're necessarily exceptional and less dynamic.In this talk, I'll argue that the Python community ought to accept native extensions as a necessary good, instead of a necessary evil. The language would get stronger at its strengths by ending its ambivalence about native extensions, and investing in better tooling. Individual developers would benefit from getting comfortable dropping down into Cython, and understanding how to read and build native libraries. This applies especially in the growing field of machine learning and artificial intelligence --- the biggest growth area in software development today.