0% found this document useful (0 votes)
29 views

Um 21 Years of Python

This document summarizes 21 years of Python from its origins in 1991 to 2012. It describes how Python was influenced by ABC and other languages, its initial development as an internal scripting language at CWI, and how it grew to have a large global community and become one of the most popular programming languages. It also discusses Python's controlled evolution process and the ongoing transition from Python 2 to Python 3.

Uploaded by

daikamisama
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views

Um 21 Years of Python

This document summarizes 21 years of Python from its origins in 1991 to 2012. It describes how Python was influenced by ABC and other languages, its initial development as an internal scripting language at CWI, and how it grew to have a large global community and become one of the most popular programming languages. It also discusses Python's controlled evolution process and the ongoing transition from Python 2 to Python 3.

Uploaded by

daikamisama
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 25

21 Years of Python

From Pet Project


to Programming Language of the Year

Guido van Rossum


[email protected]
May 2011
Disclaimer

I am speaking on my own behalf.


My statements reflect my views only
and do not necessarily reflect those of Google.
Pre- and Proto-History
• Significant influences:
• Algol-60, Pascal, C
• ABC
• Modula-2+ and -3
• Lisp, Icon
• Why these?
ABC (’70s, ‘80s)
• Lambert Meertens, Leo Geurts, others
• Taught Algol to scientists (for EL X-8)
• Reaction:
– Frustrated with limitations, e.g.
• Integer range (27 bits!)
• Memory usage
• Program complexity
• Arcane I/O
ABC vs. Python
HOW TO RETURN words document: def words(document):
PUT {} IN collection collection = set()
FOR line IN document: for line in document:
FOR word IN split line: for word in line.split():
IF word not.in collection: if word not in collection:
INSERT word IN collection collection.add(word)
RETURN collection return collection

homepages.cwi.nl/~steven/abc/
ABC: Stamp Out BASIC
• ABC’s target audience: professionals
– Not professional programmers
– But serious about programming needs
– E.g. scientists, lab personnel
• Easy to teach, easy to learn, easy to use
– Few constructs, combined for expressivity
– Reuse what you already know (e.g. math, English)
– One tool to handle everything
ABC: The Good Stuff
• Design iterations based on user testing
– E.g. colon before indented blocks
• Simple design: IF, WHILE, FOR, …
• Indentation for grouping (Knuth, occam)
• Tuples, lists, dictionaries (though changed)
• Immutable data types
• No limits
• The >>> prompt
ABC: Critique
• Monolithic design – not extensible
– E.g. no graphics, not easily added
• Invented non-standard terminology
– E.g. “how-to” instead of “procedure”
• ALL'CAPS keywords
• No integration with rest of system
– No file-based I/O (persistent variables instead)
ABC: The Downfall
• Too early; no community
• Intended audience didn’t have the hardware
• Those who did preferred the UNIX way
• Without Internet, hard to reach users
• Lack of extensibility
• Lack of integration
• Missed the boat on exciting new stuff
Fast-forward 4 Years…
• Amoeba distributed systems group @ CWI
• Writing apps: either C or sh
• Wanted something in between
• Management vacuum…
• Started a skunkworks language project
• Amoeba @ CWI stopped, multimedia started
• Python positioned for quick experiments
Skunkworks Design Philosophy
• Borrow ideas whenever it makes sense
• As simple as possible, no simpler (Einstein)
• Do one thing well (UNIX)
• Don’t fret about performance (fix it later)
• Go with the flow (don’t fight environment)
• Perfection is the enemy of the good
• Cutting corners is okay (get back to it later)
User-centric Design Philosophy
• Avoid platform ties, but not religiously
• Don’t bother the user with details
• Discourage but allow coding to the platform
• Offer multiple levels of extensibility
• Errors should not be fatal, if possible
• Errors should never pass silently
• Don’t blame the user for bugs in Python
Language Evolution
• Core language stabilized quickly in 1990-1991
– Earliest version did not have class statement!
• Examples of later changes:
– augmented assignment: x += 1
– comprehensions: [x**2 for x in xs if x%2 == 1]
– unicode: u"\u2043"
– new-style classes: class C(object) …
– decorators: @classmethod
Controlled Change
• Most development in standard library
• Enabling 3rd party libraries is major goal
• PEP process keeps changes in check
• BDFL role keeps PEP process in check
• Community feedback keeps BDFL in check
[email protected]: core development
• python-ideas@: speculative ideas
• python-list@: general help, discussion
Community: Early Days
• 1990 – internal at CWI
– More internal use than ABC ever had
– Internal contributors
• open design, extensibility work!
• 1991 – first release; [email protected]
• 1994 – USENET group comp.lang.python
– “If Guido was hit by a bus?” thread
• 1994 – first workshop (NIST)
Community: Growth
• 1995-1999 – from workshops to conferences
• 1995 – Python Software Association
• 1997 – www.python.org goes online
• 1999 – Python Consortium
– Modeled after X Consortium
• 2001 – Python Software Foundation
– Modeled after Apache Software Foundation
Community: Present Day
• PSF runs largest annual Python conference
– PyCon Atlanta in 2011: 1500 attendees
– 2012-2013: Toronto; 2014-2015: Bay area
– Also sponsors regional PyCons world-wide
• EuroPython since 2002
• Many local events, user groups
– e.g. baypiggies, Chicago, Atlanta, Germany,
Singapore, Brazil, Argentina, …
Community: Web Presence
• python.org
– docs.python.org, mail.python.org,
bugs.python.org, hg.python.org,
planet.python.org, wiki.python.org
• Stackoverflow etc.
• TIOBE – consistently #6 or #7
– Tiobe Programming Language of the Year (twice!)
Python 2 vs. Python 3
• Fixing deep bugs intrinsic in the design
• Avoid two extremes:
– perpetual backwards compatibility (C++)
– rewrite from scratch (Perl 6)
• Our approach:
– evolve the implementation gradually
– some backwards incompatibilities
– separate tools to help users cope
Python 3: Status
• 2011: The Year of Python 3
• More and more 3rd party packages ported
• Python 3.2 stable and solid
• Python 2.7 is not dead yet!!!!!
Other Pythons
• Jython
• IronPython
• PyPy
Q&A

You might also like