Compile Into Java Class Files Slide

download Compile Into Java Class Files Slide

of 18

Transcript of Compile Into Java Class Files Slide

  • 8/14/2019 Compile Into Java Class Files Slide

    1/18

    PythonGuido van Rossum

    director of PythonLabs at Zope Corporation

    mailto:[email protected]

    http://www.python.org

  • 8/14/2019 Compile Into Java Class Files Slide

    2/18

    Slide 2 2001, 2002 Guido van Rossum

  • 8/14/2019 Compile Into Java Class Files Slide

    3/18

    Slide 3 2001, 2002 Guido van Rossum

    Whats in a name?

    Snake logos and mascot notwithstanding,its named after Monty Pythons FlyingCircus

    Humor-impaired can safely ignore thespam references :-)

    Nobody expects the Spanish inquisition

  • 8/14/2019 Compile Into Java Class Files Slide

    4/18

    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

  • 8/14/2019 Compile Into Java Class Files Slide

    5/18

    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 :-)

  • 8/14/2019 Compile Into Java Class Files Slide

    6/18

    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

  • 8/14/2019 Compile Into Java Class Files Slide

    7/18Slide 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

  • 8/14/2019 Compile Into Java Class Files Slide

    8/18Slide 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

  • 8/14/2019 Compile Into Java Class Files Slide

    9/18Slide 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

  • 8/14/2019 Compile Into Java Class Files Slide

    10/18Slide 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, regularexpressions, introspection

    Extension modules can define new built-in data types

  • 8/14/2019 Compile Into Java Class Files Slide

    11/18Slide 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

  • 8/14/2019 Compile Into Java Class Files Slide

    12/18Slide 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

  • 8/14/2019 Compile Into Java Class Files Slide

    13/18Slide 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++

  • 8/14/2019 Compile Into Java Class Files Slide

    14/18Slide 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.

  • 8/14/2019 Compile Into Java Class Files Slide

    15/18Slide 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

  • 8/14/2019 Compile Into Java Class Files Slide

    16/18Slide 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

  • 8/14/2019 Compile Into Java Class Files Slide

    17/18Slide 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 its empty?

    del self.items[-1]

    return x

    def empty(self):

    return len(self.items) == 0

  • 8/14/2019 Compile Into Java Class Files Slide

    18/18l d d

    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