1. General Python Introduction

 

 

 

 

 

 

Topics

 

 

    So what’s Python?

    Why do people use Python?

    A Python history lesson

    Advocacy news

    What’s Python good for?

    What’s Python not good for?

    Python technical features

    Python portability

 

 

 


 

So What’s Python?

 

 

 

 

“An open source, object-oriented, scripting language”

 

 

 

 

    An “open source” software project

     A BDFL plus a cast of thousands

     Mature infrastructure: PEPs, test suite, PSF

     Nonproprietary: you are not held hostage by a vendor (see VB, Apple)

     But you are dependent on core developers—at least on the leading edge

 

    An “object-oriented” language

     OOP is an option, but virtually required for larger projects

     OOP provides structure and code reuse in ways other tools do not: extendable code hierarchies

     But Python isn’t just OO—procedural, functional, OO

 

    A “scripting” language

     Control language: C/C++ libs, Com, Java/.NET, Soap/XML-RPC, Corba, RIA/AJAX/OpenStack

     But Python is general purpose—not just for shell tools or simple programs

     Easier to use: typically 1/3 ~ 1/4 as much code as Java, C++ (syntax, typing, built-ins, libs)

 

 

 

 

Plus…

 

General purpose

Tactical or strategic

Stand alone or embedded

Very high-level, dynamic

 

 

 

 

 

 

 

 

 

Why Do People Use Python?

 

 

 

 

 

Software Quality

Readable syntax: maintainable

Coherent design, small set of interactions

Simple enough to remember

Art versus Engineering maintenance, reuse

 

“You can do everything in Python that you can do in Perl, but you can read your code after you do it.”

 

 

Developer Productivity

Smaller programs, flexible code (“agile”)

Rapid turnaround, code reuse

Both tactical and strategic roles

Good in both boom and bust times

 

 

And other reasons…

Program portability: portable system tools, …

Component integration: reuse of libs, customization, …

Vast application libraries: everything under the sun (but creates dependencies)

Open source: no vendor tie-in (but still dependent on developers’ whims)

 

 

 

 

 

 

Some Quotable Quotes (and some rebuttals)

 

 

 

    “Python looks like it was designed, not accumulated.”

Though it’s gotten busier in recent years

    “It bridges the gap between scripting languages and C.”

Though it’s grown more complex in recent years

    “It’s as easy or as powerful as you want it to be.”

Though nontrivial software is never easy

    “Python: less filling, tastes great. :-)”

Though it’s now 3-paradigms, 2-versions, feature-rich

    “Python comes with batteries included.”

Though batteries can also be your weakest link

    “Python fits your brain.”

Though it depends on your brain…

 

 

 

 

 

 

 

 

 

 

A Python History Lesson

 

 

 

 

    Created by Guido van Rossum in Amsterdam, 1990

      A Google employee for some time (then Dropbox)

      Google was/is largely Python code, as is YouTube

      Dropbox was/is mostly Python code on client+server

      Still Python’s BDFL, though the product of very many

      See Guido’s pages or search for more background

 

Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: /static/community_logos/python-logo.png

 

 

 

    USENET newsgroup started in 1994

      comp.lang.python, www.python.org

      3rd party add-ons: PyPI, google.com, web search

 

Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: pythonHi

 

 

 

 

    Python Software Foundation (PSF): O’Reilly, ActiveState, Google, Enthought, and many others

Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: pythonPowered

 

 

 

 

    First Python books appeared Fall, 1996, over 50 available by 2003, over 200 on amazon.com by 2012

Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: pp2e

 

 

 

 

    International following: US, Europe, Asia, Australia, etc.

Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: pythonwin

 

 

 

 

    Community: users (1M+ guesstimate; 10M on Github);  user groups (see the list);  conferences (PyCon: 2,500 attendees by 2010s, OSCON, and alot more)

Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: python_conf_ora

 

 

 

 

    Named after 70s BBC comedy group “Monty Python's Flying Circus” (no, really)

Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: mp_lumberjack

 

 

      Shrubbery, Ni!, Brian, The Spanish Inquisition

      On the significance of Spam

 

 

 

 

 

 

 

Advocacy News

 

 

The Latest…

Python continues to enjoy an active and vigorous community today.  It is generally considered to be one of the top 5 (or 10) most widely used programming languages in world, and is still growing in popularity by most metrics, including:

 

       Conference attendance: 2,500 or more recent PyCons

       Book sales: O'ReillyAmazon

       User base success stories, quotes, and domains

       Web presence as tracked by the TIOBE index

       Other web presence trackers: Redmonk, PyPL

       Volume of open source contributions as measured by Ohloh.net

       Software support and resources

       And more: http://learning-python.com/books/about-python.html#resources

 

 

Noteworthy users

      Web services: Google, YouTube, Dropbox

      Animation: Industrial Light & Magic, ImageWorks, Disney, Pixar

      Financial: JP Morgan Chase, UBS, Getco, NYSE

      Games: Eve Online, Civilization IV

      Hardware Testing: Intel, Cisco, Hewlett-Packard, Seagate, Qualcomm, Micron

      Numerics: National Weather Service, Los Alamos, NASA

      P2P downloads: BitTorrent (32M DLs, 1/3 of all inet traffic!)

      Other: Calibre, iRobot, ESRI, NSA, IronPort, Red Hat, Jet Propulsion Lab, MIT compsci, Google App Engine, OLPC, OpenStack, Raspberry PI, …

 

Deployments

      Standard CPython (coded in C)

      IronPython for.NET/Mono (Microsoft), Python.net

      Jython for Java JVM

      PyPy (& Psyco): CPython optimized for speed

      Stackless: CPython for massive concurrency

      Numba, Cython: optimized solutions for numeric work

      Windows COM interface

      Web site and cloud frameworks: Django, AppEngine, …

      Mac OS X Cocoa integration

      Cellphone ports: Symbiam, Android, iOS, …

      RIAs: pyjamas (now pyjs), Silverlight, Flex, …

 

Group therapy

      Python user groups: everywhere today; see python.org user groups list and community page

Books

      Over 200 Python books available per amazon.com by 2012, English and other languages

Press

      Python.org’s quotes and success stories; and probably thousands more: search the web…

Education

      Computer Programming For Everybody (CP4E), edu-sig, tutors list, Raspberry PI, Code.org

Services

      Commercial support, training, books; distributions: py.org, ActiveState, Enthought, standard on Linux, Mac OS X

Jobs

      Thousands: see python.org job board or search the web, Dice.com, stackoverflow, etc.

Other

      PyCon conference attendance increases:

      400-500 ’05 vs 200-300 ’04 … 

      to 1,000  in 2008-2010 …   

      to > 2,000 in 2012 Pycon

      2,500 in all recent PyCons

 

 

 

 

 

What’s Python Good For?

 

 

 

General purpose:

  Almost anything computers can do

 

 

 

    System programming: shell tools, test scripts

sockets, regex, POSIX calls, threads, streams

 

    Graphical user interfaces

Tk, wxPython, Qt, Gtk, Swing (Jython), RIAs (pyjamas/pyjs, etc.)

 

    Internet scripting

CGI, email, FTP, Telnet, Jython applets, XML-RPC, SOAP, PSP, mod_Python (Apache), RIAs, Django, Twisted, etc.

 

    Database programming

Persistent objects, ZODB, Oracle, Informix, Sybase, MySQL, Sqlite (standard lib), SQLObject, SQLAlchemy, …

 

    Component integration

Product customization and testing, embedded scripting, system front-ends

 

    Rapid Application Development

Prototype-and-migrate, fast turnaround, deliverable prototypes

 

    And more specific domains: general purpose

COM (PyWin32), Numeric programming (NumPy), Gaming (PyGame), graphics (OpenGL, Blender, Maya), AI, CORBA, CAD, data mining, instrumentation, language, ...

 

 

 

 

 

What’s Python Not Good For?

 

 

 

    Fast enough for most tasks as is

    Most real tasks run linked-in C code

    Exception: truly speed-critical components

    Solution: implement in C and export to Python

    Python is optimized for speed-of-development

    Python is designed for multi-language systems

    Example: Python Numeric Programming

    JIT (PyPy, Numba) may also improve speed

 

 

 

 

 

 

 


 

Python Technical Features (mostly for reference)

 

 

    No compile or link steps

Rapid development-cycle turnaround

 

    No type declarations

Programs are simpler, shorter, and flexible

 

    Automatic memory management

Garbage collection avoids bookkeeping code

 

    High-level datatypes and operations

Fast development using built-in object types

 

    Object-oriented programming

Code structuring and reuse, C++ integration

 

    Extending and embedding in C

Optimization, customization, system ‘glue’

 

    Classes, modules, exceptions

Modular ‘programming-in-the-large’ support

 

    A simple, clear syntax and design

Readability, maintainability, ease of learning

 

    Dynamic loading of C modules

Simplified extensions, smaller binary files

 

    Dynamic reloading of Python modules

Programs can be modified without stopping

 

    Universal ‘first-class’ object model

Fewer restrictions and special-case rules

 

    Interactive, dynamic nature

Incremental testing, runtime program coding/construction

 

    Access to interpreter information

Metaprogramming, introspective objects

 

    Wide interpreter portability

Cross-platform systems without ports

 

    Compilation to portable byte-code

Execution speed, protecting source-code

 

    Built-in interfaces to external services

O/S, GUI, persistence, DBMS, regular expressions...

 

    True ‘freeware’: Open Source software

May be embedded/shipped without copyright restrictions

 

 

 

 

 

Python Portability

 

 

 

    Core Language + Standard Library

      Windows, Linux, Macs, Unix

Nearly all flavors

Runs in desktop mode on Windows 8

Runs as a grown-up on Windows 10

Windows XP dropped as of 3.5

      Assorted platforms

Java (Jython)

.NET (IronPython)

JavaScript (pyjamas/pyjs)

Android (SL4A), Galaxy tablet, iOS, Raspberry PI

      And others, rare and nostalgic…

Cray supers, IBM mainframes, VxWorks realtime

PDAs: PalmOS, PocketPC, Zaurus

OS/2, VMS, Next, BeOS, QNX, Itanium

Amiga, AtariST

PlayStation, XBox, Gamecube

Nokia Symbian OS cellphones

Windows Mobile cellphones/PDAs

Ipods (if flashed)

 

    Platform-specific Extensions

      COM on Windows (PyWin32 extension)

      Cocoa on the Mac (Standard component)

      Other runtime libraries: Java, .NET, Javascript

 

    General Portability

      Bytecode is platform-neutral

      Portable GUIs: [tT]kinter, wxPython, PyQt, etc.: Windows, Linux, Macs, Unix

      Standard library system calls (most in module “os”)

 

 

 

  

 

On Apples and Oranges

 

 

 

 

Versus

Python advantage

Description

Tcl, Lua

Power

Python better at “programming in the large”: module, OOP, exceptions, etc.

Perl

Coherence

Python has a readable, maintainable  syntax, fewer special variables, etc. 

Java

Simplicity Turnaround

Built-in objects, dynamic typing, etc.; can be freely shipped with products.

C++

Simplicity Turnaround

Interpreted language turnaround; avoids C++ language complexity.

Smalltalk

Conventional

In Python, “if” statements are not message-receiver objects.

Ruby

Flexibility, maturity

Python more readable, more like C++: both procedural and OO (optional)

Scheme, Lisp

Conventional

Python’s syntax is closer to traditional languages like C and Pascal.

Visual Basic

Power, Portability

Python is powerful, cross-platform, and not controlled by one company (Python cannot be discontinued!)

 

 

 

 

 

 

    But your mileage may vary

      Different language design goals

      Programmers matter too

      Many languages is a Good Thing

      Python coding can be too easy: design and brains still matter (beware the temptation to “hack”)

      Full-scale software development is not trivial in any language (though Python helps)

      Off page: hobbyists versus professionals, in Answer Me These Questions Three…

 

 

 

Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: spam

 

 

 

 


 

Summary: Why Python?

 

 

    It’s object-oriented

       Powerful OO support

       But OO is an option

 

    It’s free

       Can freely embed and ship in products

       Can even sell the source-code!

 

    It’s portable

       Runs everywhere: Unix, Windows, Mac,…

       Portable byte-code, portable Tkinter GUI interface

 

    It’s powerful

       Built-in types and operations

       Dynamic typing, libraries, modules, garbage collection, …

 

    It’s mixable

       Python/C, Python/C++, Python/Java, COM

 

    It’s easy to use (relative to others)

       Fast turnaround after changes

       A simple language and syntax

 

    It’s easy to learn (relative to others)

       For developers and product customers

 

 

 

 

 

→ Quality and  Productivity

 

 

 

 

 

A scripting language doesn't have to look like one

 

 

 

 

 

 

 

 

 

A morality tale of Perl versus Python

 

(The following was posted to the rec.humor.funny USENET newsgroup by L. Hastings, and is reprinted here with the original author’s permission.)

 

This has been percolating in the back of my mind for a while. It's a scene from The Empire Strikes Back, reinterpreted to serve a valuable moral lesson for aspiring programmers.

 

EXTERIOR: DAGOBAH--DAY

With Yoda strapped to his back, Luke climbs up one of the many thick vines that grow in the swamp until he reaches the Dagobah statistics lab. Panting heavily, he continues his exercises--grepping, installing new packages, logging in as root, and writing replacements for two-year-old shell scripts in Python.

 

YODA:      Code!  Yes.  A programmer's strength flows from code

              maintainability.  But beware of Perl. Terse syntax... more

              than one way to do it... default variables.  The dark side of

              code maintainability are they.  Easily they flow, quick to join

              you when code you write.  If once you start down the dark

              path, forever will it dominate your destiny, consume you

              it will.

 

LUKE: Is Perl better than Python?

 

YODA:      No... no... no.  Quicker, easier, more seductive.

 

LUKE: But how will I know why Python is better than Perl?

 

YODA:      You will know.  When your code you try to read six

        months from now.