The State of Python. and the web. Armin Ronacher

Similar documents
A Python for Future Generations. Ronacher

The Impact of Django. Armin Ronacher. djangocon europe 2011

Python 3000 and You. Guido van Rossum PyCon March 14, 2008

Let s Talk About Templates. Armin

nacelle Documentation

PYTHON TRAINING COURSE CONTENT

29-27 May 2013 CERN WEB FRAMEWORKS. Adrian Mönnich

PTN-102 Python programming

Flask Web Development Course Catalog

Read & Download (PDF Kindle) Data Structures And Other Objects Using C++ (4th Edition)

Python 3000 and You. Guido van Rossum EuroPython July 7, 2008

Who am I? I m a python developer who has been working on OpenStack since I currently work for Aptira, who do OpenStack, SDN, and orchestration

Webgurukul Programming Language Course

Python - a Dynamic Programming Language. Guido van Rossum May 31, 2007

Fluent Python. Luciano Ramalho. Tokyo O'REILLY. Beijing. Sebastopol. Farnham. Boston

Python Training. Complete Practical & Real-time Trainings. A Unit of SequelGate Innovative Technologies Pvt. Ltd.

CIS192: Python Programming

Week - 04 Lecture - 01 Merge Sort. (Refer Slide Time: 00:02)

PyPy - How to not write Virtual Machines for Dynamic Languages

CSE 341: Programming Languages

Django Test Utils Documentation


CS50 Quiz Review. November 13, 2017

ActiveNET. #202, Manjeeraa Plaza, Ameerpet, HYD

Functional Programming and the Web

ThinkinG outside The box - =

Armin how Python was shaped by leaky internals

Python Implementation Strategies. Jeremy Hylton Python / Google

Introduction to Programming Using Java (98-388)

Programming in Python 3

filemagic Documentation

Course Title: Python + Django for Web Application

D Programming Language

Starting chapter 5. l First open file, and say purpose read or write inputfile = open('mydata.txt', 'r') outputfile = open('myresults.

Python Programming: An Introduction to Computer Science

Basic Python 3 Programming (Theory & Practical)

EXPERIENCES MOVING FROM DJANGO TO FLASK

Python in the Cling World

Absolute C++ Walter Savitch

Page 1. Human-computer interaction. Lecture 1b: Design & Implementation. Building user interfaces. Mental & implementation models

Administrivia. Added 20 more so far. Software Process. Only one TA so far. CS169 Lecture 2. Start thinking about project proposal

DevKitchen 2018 Python in Cinema 4D R20

Introduction to the Julia language. Marc Fuentes - SED Bordeaux

g-pypi Documentation Release 0.3 Domen Kožar

Quick housekeeping Last Two Homeworks Extra Credit for demoing project prototypes Reminder about Project Deadlines/specifics Class on April 12th Resul

Sample Copy. Not for Distribution.

Python INTRODUCTION: Understanding the Open source Installation of python in Linux/windows. Understanding Interpreters * ipython.

Single Source Python 2 3

ENGR 102 Engineering Lab I - Computation

High Performance Python Micha Gorelick and Ian Ozsvald

Brief Contents. Acknowledgments... xv. Introduction Chapter 1: Starting Your Project Chapter 2: Modules, Libraries, and Frameworks...

An Introduction to Python (TEJ3M & TEJ4M)

translationstring Documentation

Jython Python for the Java Platform. Jim Baker, Committer twitter.com/jimbaker zyasoft.com/pythoneering

Scala : an LLVM-targeted Scala compiler

Programming for Non-Programmers

Hue Application for Big Data Ingestion

Advanced topics, part 2

PROGRAMMING GOOGLE APP ENGINE WITH PYTHON: BUILD AND RUN SCALABLE PYTHON APPS ON GOOGLE'S INFRASTRUCTURE BY DAN SANDERSON

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #34. Function with pointer Argument

In further discussion, the books make other kinds of distinction between high level languages:

Overview. Rationale Division of labour between script and C++ Choice of language(s) Interfacing to C++ Performance, memory

A Tracing Technique for Understanding the Behavior of Large-Scale Distributed Systems

Frances Provan i #)# #%'

Core Java Syllabus. Pre-requisite / Target Audience: C language skills (Good to Have)

PTN-105 Python programming. Course Outline. Prerequisite: basic Linux/UNIX and programming skills. Delivery Method: Instructor-led training (ILT)

Python for Earth Scientists

Security Regression. Addressing Security Regression by Unit Testing. Christopher

SystemVerilog Design: User Experience Defines Multi-Tool, Multi-Vendor Language Working Set No Excuses for Not Using SystemVerilog in Your Next Design

Pointers and Memory 1

CS 370 The Pseudocode Programming Process D R. M I C H A E L J. R E A L E F A L L

8. Control statements

web.py Tutorial Tom Kelliher, CS 317 This tutorial is the tutorial from the web.py web site, with a few revisions for our local environment.

This course is designed for anyone who needs to learn how to write programs in Python.

FUNCTIONS. The Anatomy of a Function Definition. In its most basic form, a function definition looks like this: function square(x) { return x * x; }

Modern frameworks, modern vulnerabilities. Florent Nicolas

MITOCW MIT6_01SC_rec2_300k.mp4

PROFESSOR: Last time, we took a look at an explicit control evaluator for Lisp, and that bridged the gap between

6.828: OS/Language Co-design. Adam Belay

Module 10A Lecture - 20 What is a function? Why use functions Example: power (base, n)

Reversing. Time to get with the program

ext3 Journaling File System

SD314 Outils pour le Big Data

epython An Implementation of Python Enabling Accessible Programming of Micro-Core Architectures Nick Brown, EPCC

By default, optional warnings are disabled, so any legacy code that doesn't attempt to control the warnings will work unchanged.

Chapter 1 Getting Started

PYTHON IS SLOW. Make it faster with C. Ben Shaw

AD104 - LotusScript Tips and Tricks. Wai-ki Yip, Development Manager/Senior Developer Raphael Savir, Senior IT Specialist

HOW TO FLASK. And a very short intro to web development and databases

Max and Programming Is Max a Programming Language?

SQL Server 2017: Data Science with Python or R?

CSE 115. Introduction to Computer Science I

CIS192 Python Programming

About this exam review

modern and different PostgreSQL a talk by Armin Ronacher for DUMP 2014 (Russia)

Buzzy Documentation. Release 0. Sebastian Pawluś

LECTURE 15. Web Servers

Complete Python call :

Beyond CSE143. What s Left To Do? Templates. Using Templates. A Template Class. A Problem with Reusing Code CSE 143

Control Structures. Code can be purely arithmetic assignments. At some point we will need some kind of control or decision making process to occur

Transcription:

The State of Python and the web Armin Ronacher // @mitsuhiko

Who am I Armin Ronacher (@mitsuhiko) Founding Member of the Pocoo Team we're doing Jinja2, Werkzeug, Flask, Pygments, Sphinx and a bunch of other stuff.

Crossroads

Python 3 The Elephant in the Room

Python in 2011 The big Python 3 versus Python 2 debate PyPy is making tremendous progress

Recent Python News Unladen Swallow is resting Python 3.2 was released Python's packaging infrastructure is being worked on. distutils2 / packaging in Python 3

Recent PyPy News PyPy gets experimental support for the CPython C API PyPy got 10.000$ by the PSF PyPy 1.5 released Are you using PyPy in production? Why not? http://bit.ly/pypy-survey

PyPy

PyPy Right Now Python written in Python PyPy trunk 3.7x faster than CPython over a wide variety of benchmarks Up to 40x faster for certain benchmarks Compatible with Python 2.7.1

Really Fast http://speed.pypy.org/

Things that will break There is only experimental support for the Python C API and it will always be slow. Different garbage collection behavior, no reference counting.

Things that work Django Flask ctypes pyglet twisted sqlite

The Bonus Sandbox support Stackless execution mode A.NET backend

Python 3

Python 3 is where all new language developments are happening adding unicode to the whole stack cleaning up the language breaking backwards compatibility

The Good Parts Introduces unicode into exceptions and source compilation as well as identifiers Greatly improved IO API regarding unicode New language constructs Implementation cleaned up a lot

New Constructs Extended iterable unpacking Keyword only arguments nonlocal Function parameter and return value annotations

Improved Things print as a function Improved syntax for catching and raising exceptions Ellipsis ( ) syntax element now available everywhere

Different Behavior More powerful metaclasses (but removed support for some tricks people relied on*) List comprehensions are now from the behavior much closer to generator expressions * don't abuse undocumented features

Warts removed Argument unpacking Unused nested tuple raising syntax Longs no longer exposed Classic classes gone Absolute imports by default Obscure standard library modules

Common Ground

New in 2.6/2.7 Explicit byte literals, make upgrading easier Advanced string formatting Print as a function Class decorators New IO library

New in 2.6/2.7 The multiprocessing package Type hierarchy for numbers Abstract base classes Support for fractions

Going Forward

Beauty or Speed Right now it's a decision between the beauty of the code (Python 3) or the raw performance (PyPy). PyPy itself will probably always be written in Python 2, but the interpreter might at one point support Python 3.

Library Support Numeric libraries work great on Python 3 and benefit of improvements in the language. PyPy still lacks proper support for the C- API of Python.

Predictions Most people will write their code against 2.7 with the intention of supporting PyPy. Libraries that require the Python C API will become less common We will see libraries that support targeting both Python 2.7 and Python 3.x.

Python and the Web

WSGI New revision for Python 3 There is some work done to port implementations to Python 3 No longer something people actively care about. It works

New Developments Improvements to PyPy's support for database adapters Improvements in template compilation to take advantage of PyPy's behavior. Porting some libraries over to Python 3.

Making Python 3 work

Python 3 can work Start porting libraries over. Issues with Python 3 will only be resolved if people actively try to port. The higher level the application, the easier to port. Libraries are the culprit.

And it's not hard When you're at the port where you can drop Python 2.6 support, you can write code that survives 2to3 mostly without hacks in the code. http://bit.ly/python3-now

Frameworks

We're doing great WSGI works out well in practice. Pylons and BFG -> Pyramid, nice introduction into the ZOPE world. Less and less framework specific code out there, easier to reuse.

Less Frameworks* Django Pyramid Flask Bottle web.py

Low Level Werkzeug WebOb these two might actually merge at one point in the future

Frameworks are Good New frameworks are necessary to explore new paradigms and concepts. It's surprisingly easy to switch frameworks or parts of frameworks in Python. Frameworks are merging and evolving.

Thank you

Contact / Slides Armin Ronacher @mitsuhiko http://lucumr.pocoo.org/ http://lucumr.pocoo.org/talks/ <- Slides