Guido van Rossum’s Keynote Address — PyCon 2016

Guido_van_RossumWhile working at the Stichting Mathematisch Centrum (CWI), Netherlands, in 1991, Guido van Rossum created an elegant and well-designed scripting language that has stolen the hearts of so many programmers today (like me). A programming language that’s conquering the large swaths of computing landscape by storm, Python has come a long way from a humble scripting language to the one that powers the computing engines of Google, Amazon, NASA, Industrial Light and Magic (VFX firm responsible for Star Wars, Avatar, Terminator, Transformers, Avengers etc.) and many other Fortune 500 companies.

About the origin of Python, Van Rossum wrote in 1996:

Over six years ago, in December 1989, I was looking for a “hobby” programming project that would keep me occupied during the week around Christmas. My office … would be closed, but I had a home computer, and not much else on my hands. I decided to write an interpreter for the new scripting language I had been thinking about lately: a descendant of ABC that would appeal to Unix/C hackers. I chose Python as a working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python’s Flying Circus).

The first Benevolent Dictator For Life (BDFL), a title given to a small number of open-source software development leaders, Guido envisions the future of Python programming language and retains the final say in disputes or arguments within the community.

Here’s the gist of his keynote address at the PyCon 2016:

Future of Python 2.7

Two years ago in PyCon 2014, Guido announced that there would not be Python 2.8 and where possible Python users and developers should move over to Python 3.4.

Python 3.0 was released in December 2008 as a backwards incompatible major release. Subsequently many of its features have been ported into the Python 2 branch and now many Python 3 supporters see the extended support for Python 2.7 as a further disincentive for users to switch to the more powerful, and actively evolving, version of the language.

The End of Life (EOL) for Python 2.7 is December 2020  to provide enough time for the already existing code base to transition to Python 3.x.

If you’re new to Python programming or about to get your feet wet into programming through Python, my suggestion is start with Python 3.x.


What’s new in Python 3.5

1. In-place Matrix multiplication for Numpy

@= and @ are new operators introduced in Python 3.5 performing matrix multiplication. They are meant to clarify the confusion which existed so far with the operator * which was used either for element-wise multiplication or matrix multiplication depending on the convention employed in that particular library/code. As a result, in the future, the operator * is meant to be used for element-wise multiplication only.

As explained in PEP0465, two operators were introduced:

  • A new binary operator A @ B, used similarly as A * B
  • An in-place version A @= B, used similarly as A *= B

Matrix Multiplication vs Element-wise Multiplication

To quickly highlight the difference, for two matrices:

A = [[1, 2],    B = [[11, 12],
     [3, 4]]         [13, 14]]
  • Element-wise multiplication will yield:
    A * B = [[1 * 11,   2 * 12], 
             [3 * 13,   4 * 14]]
  • Matrix multiplication will yield:
    A @ B  =  [[1 * 11 + 2 * 13,   1 * 12 + 2 * 14],
               [3 * 11 + 4 * 13,   3 * 12 + 4 * 14]]


2. More Unpacking Syntax

PEP 448 extends the allowed uses of the * iterable unpacking operator and ** dictionary unpacking operator. It is now possible to use an arbitrary number of unpackings in function calls:

>>> print(*[1], *[2], 3, *[4, 5])
1 2 3 4 5

>>> def fn(a, b, c, d):
...     print(a, b, c, d)

>>> fn(**{'a': 1, 'c': 3}, **{'b': 2, 'd': 4})
1 2 3 4

3. Bytes Formatting

PEP 461 adds support for the % interpolation operator to bytes and bytearray.

>>> b'Hello %b!' % b'World'
b'Hello World!'

>>> b'x=%i y=%f' % (1, 2.5)
b'x=1 y=2.500000'

Full documentation of the new features of Python 3.5 here.


What’s New in Python 3.6

Guido said in the keynote that Python 3.6 will be freezed in September this year and likely to be in our hands by Christmas. Here are some the highlights of Python 3.6. Full feature list here.

1. Formatted String Literals

Formatted string literals are a new kind of string literal, prefixed with 'f'. They are similar to the format strings accepted by str.format(). They contain replacement fields surrounded by curly braces. The replacement fields are expressions, which are evaluated at run time, and then formatted using the format() protocol.

>>> name = "Fred"
>>> f"He said his name is {name}."
'He said his name is Fred.'

2. Underscores in Numerical Literals

The PEP 515 wrote a proposal to extend Python’s syntax and number-from-string constructors so that underscores can be used as visual separators for digit grouping purposes in integral, floating-point and complex number literals.

It claimed this as a common feature of other modern languages, and can aid readability of long literals, or literals whose value should clearly separate into parts, such as bytes or words in hexadecimal notation. Python 3.6 will embrace it.


# grouping decimal numbers by thousands
amount = 10_000_000.0

# grouping hexadecimal addresses by words
addr = 0xCAFE_F00D

# grouping bits into nibbles in a binary literal
flags = 0b_0011_1111_0100_1110

# same, for string conversions
flags = int('0b_1111_0000', 2)

3. Python will migrate to Git from Mercurial

In January Brett Cannon, who is currently in charge of Python’s development process announced on Python core workflow mailing list that Python will be moving to GitHub.

The final decision was to prefer GitHub, and came down to three main factors:

  • Rough equivalence of GitHub and GitLab in terms of features; specifically, Cannon wrote, the fact that GitLab is open source was not considered in itself a deciding factor.
  • Prevalence of developers familiar with GitHub amongst core developers and external contributors. On the other hand, a few developers declared themselves against moving to GitHub, but no one said they would not use it, if the community decided to go that route.
  • Guido van Rossum’s preference, which Cannon considered valuable to avoid the risk of potentially alienating him, though his contribution is only occasional nowdays.

Read the full story behind the move to Git here.


Man Ki Baath

After twenty five years since the inception of Python, Guido van Rossum recalls the events that led to its creation and the evolution of Python over the years. He reads the draft of his speech in TED talk that he is about to give to a group of Dutch American entrepreneurs in San Francisco. It’s pretty inspiring.

(Don’t forget to turn on the subtitles of his speech in your video player below.)


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s