Python Guido van Rossum director of PythonLabs at Zope Corporation mailto:[email protected] .
-
Upload
molly-schneider -
Category
Documents
-
view
239 -
download
1
Transcript of Python Guido van Rossum director of PythonLabs at Zope Corporation mailto:[email protected] .
PythonGuido van Rossum
director of PythonLabs at Zope Corporation
mailto:[email protected]
http://www.python.org
Slide 2 ©2001, 2002 Guido van Rossum
Slide 3 ©2001, 2002 Guido van Rossum
What’s in a name?
• Snake logos and mascot notwithstanding, it’s named after Monty Python’s Flying Circus
• Humor-impaired can safely ignore the spam references :-)
• Nobody expects the Spanish inquisition
Slide 4 ©2001, 2002 Guido van Rossum
What is Python?
• O-O rapid prototyping language
• Not just a scripting language
• Not just another Perl
• Easy to learn, read, use
• Extensible (add new modules)– C/C++/Fortran/whatever
– Java (through Jython)
• Embeddable in applications
Slide 5 ©2001, 2002 Guido van Rossum
Touchy-feely properties
• Open Source (OSI Certified)– copyrighted but use not restricted
– no "viral" license
– owned by independent non-profit, PSF
• Mature (13 years old)
• Supportive user community– plenty of good books, too
• Simple design, easy to learn– reads like “pseudo-code”
– Suitable as first language
– Suitable as last language :-)
Slide 6 ©2001, 2002 Guido van Rossum
High-level properties
• Extremely portable– Unix/Linux, Windows, Mac, PalmOS, WindowsCE,
RiscOS, VxWorks, QNX, OS/2, OS/390, AS/400, PlayStation, Sharp Zaurus, BeOS, VMS…
• Compiles to interpreted byte code– compilation is implicit and automatic
• Memory management automatic– reference counting for most situations
– GC added for cycle detection
• “Safe”: no core dumps due to your bugs
Slide 7 ©2001, 2002 Guido van Rossum
What is it used for?
• rapid prototyping
• web programming (client and server side)
• ad hoc programming ("scripting")
• steering scientific applications
• extension language
• XML processing
• database applications
• GUI applications
• education
Slide 8 ©2001, 2002 Guido van Rossum
Who is using it?
• Google (various projects)
• NASA (several projects)
• NYSE (one of only three languages "on the floor")
• Industrial Light & Magic (everything)
• Yahoo! (Yahoo mail & groups)
• RealNetworks (function and load testing)
• RedHat (Linux installation tools)
• LLNL, Fermilab (steering scientific applications)
• Zope Corporation (content management)
• ObjectDomain (embedded Jython in UML tool)
• Alice project at CMU (accessible 3D graphics)
• More success stories at www.pythonology.com
Slide 9 ©2001, 2002 Guido van Rossum
Language properties
• Everything is an object
• Packages, modules, classes, functions
• Exception handling
• Dynamic typing, polymorphism
• Static scoping
• Operator overloading
• Indentation for block structure– Otherwise conventional syntax
Slide 10 ©2001, 2002 Guido van Rossum
High-level data types
• Numbers: int, long, float, complex
• Strings, Unicode: immutable
• Lists and dictionaries: containers
• Other types for e.g. binary data, regular expressions, introspection
• Extension modules can define new“built-in” data types
Slide 11 ©2001, 2002 Guido van Rossum
Interfaces to...
• XML– DOM, expat
– XMLRPC, SOAP, Web Services
• Relational databases– MySQL, PostgreSQL, Oracle , ODBC, Sybase, Informix
• Java (via Jython)
• Objective C
• COM, DCOM (.NET too)
• Many GUI libraries– cross-platform
• Tk, wxWindows, GTK, Qt
– platform-specific• MFC, Mac (classic, Cocoa), X11
Slide 12 ©2001, 2002 Guido van Rossum
Compared to Perl
• Easier to learn– very important for infrequent users
• More readable code
• More maintainable code
• Fewer “magical” side effects
• More “safety” guarantees
• Better Java integration
Slide 13 ©2001, 2002 Guido van Rossum
Compared to Java
• Code up to 5 times shorter
– and more readable
• Dynamic typing
• Multiple inheritance, operator overloading
• Quicker development
– no compilation phase
– less typing
• Yes, it may run a bit slower
– but development is much faster
– and Python uses less memory (studies show)
Similar (but more so) for C/C++
Slide 14 ©2001, 2002 Guido van Rossum
Jython
• Seamless integration with Java
• Separate implementation
• Implements the same language
• Different set of standard modules
• differences in “gray areas”– e.g. some different introspection calls
– different command line options, etc.
Slide 15 ©2001, 2002 Guido van Rossum
Jython's Java integration
• Interactive
• Compiles directly to Java bytecode
• Import Java classes directly
• Subclass Java classes– pass instances back to Java
• Java beans integration
• Can compile into Java class files
Slide 16 ©2001, 2002 Guido van Rossum
Example function
def gcd(a, b):
"greatest common divisor"
while a != 0:
a, b = b%a, a # parallel assignment
return b
Slide 17 ©2001, 2002 Guido van Rossum
Example class
class Stack:
"A well-known data structure" # doc string
def __init__(self): # constructor
self.items = []
def push(self, x):
self.items.append(x) # the sky is the limit
def pop(self):
x = self.items[-1] # what happens if it’s empty?
del self.items[-1]
return x
def empty(self):
return len(self.items) == 0
Slide 18 ©2001, 2002 Guido van Rossum
References and plugs
• References:– www.python.org - Python home site
• documentation, downloads, community, PSF
– www.pythonology.org - success stories
– www.artima.com/intv - interview with GvR
– www.zope.org - Zope community site
– www.zope.com - Zope corporate site
• Python Conferences (see www.python.org):– PyCon DC March 26-28 Washington, DC
• on-line registration ends today ($200)
– Python UK April 2-3 Oxford, England
– EuroPython June 25-27 Charleroi, Belgium
– Python11 at OSCON July 7-11 Portland, OR