Titelseite "Hallo." ############################################################################# [5-10 Minuten] Einleitung "Python ist eine Programmiersprache." Überblick über Struktur des Vortrags Was ist Python? Copyright, aber Nutzung nicht Eingeschraenkt (BSDish) Entwicklung von: Guido van Rossum frueher "Stichting Mathematisch Centrum", Amsterdam heute "Corporation for National Research Initiatives (CNRI)", Reston, Virginia, USA (eine Art ziviler Non-Profit Nachbau der ARPA) President: Robert E. Kahn, Vice-President 86-92: Vincent Cerf http://www.cnri.reston.va.us/ seine Arbeit dort: Mobile Agenten, und Verteilte Systeme Anfang 80er: Guido half beim "ABC" Entwurf, Lehrsprache, Probleme neue Idee: weniger reine Lehrsprache mehr Richtung C/Unix Vorfahren: ABC, Modula-[2|3], ML, C/C++, ... Entwurf zu Beginn am Macintosh, dann Amoeba (Distrib.-OS) "Monty Python" als Namensgeber Version 1.4 -> 1.5: in Bytecode precompiled -> viel schneller Version 1.6: Unicode, intern überarbeitet, letzter 1.x Zukunft 2.0 zu 1.x möglicherweise inkompatibel Garbage Collection statt Reference Counting VM soll so schnell wie moeglich werden Java -> JPython !! CP4E - "Computer Programming for Everybody", DARPA-Finanziert (US-Unis gingen von Pascal zu C++ als Lehrsprache ueber, viele Probleme, jetzt Uebergang zu Python?) Mitte-2000: erste Kurse in Schulen rund um Washington DC ############################################################################# [15-20 Minuten] Python "There is exactly one obvious way to do it." Syntax elementare Datentypen (Complex - Komplexe Zahlen) high-level Datentypen Konstrukte (for nur ueber Sequenzen!) Excepions koennen Klassen oder Strings sein funktionales: filter (fkt,list) -> list wo fkt(val)!=0 map (fkt,list) -> list newval=fkt(val) lambda vars : fkt reduce (fkt,list) -> val Eigenheiten Typisierung bei Zuweisung Doku-Strings: analog JavaDoc Beispiel 1 "spam" - Sketch von Monty Python range(10) erzeugt Liste von Zahlen 0..9 Beispiel 2 [] ist leere Liste ############################################################################# [5 Minuten] Extending "Guido hit by Bus" - wie wuerde es mit Python weitergehen? Folge: Gruendung der PSA - Python Software Activity Mitgliedsbeitraege, Finanzierung von Web, FTP, ... Grundlagen neben C/C++ auch Fortran oder anderes alle Moeglichkeiten, inklusive neuer Datentypen Hilfsfunktionen: Argumente Parsen / Rueckgabe-Objekte bauen auch Rufen von Python-Fkt aus C heraus moeglich Beispiel ############################################################################# [5 Minuten] Embedding Mark Lutz: "Programming Python" "Mit Python programmieren", Coautor: Klaus Mätzel Grundlagen meist: Erweiterung eines Programmes um Scripting-Faehigkeiten simpel weil auf Extending aufbauend Beispiel init_spam() und init_eggs() initialisieren Module, die direkt im Programm enthalten ausser PyRun... auch komplexere Fkt moeglich (File, direkt Objekte) ############################################################################# [10 Minuten] Nutzung Anwender NASA: Scriptsprache fuer pre-Mission Planung, ersetzt zunehmend Perl+Shell LLNL = Lawrence Livermore National Labratory ASCI Blue Pacific (IBM RS6000, 5800 x PowerPC 604e) Juni´2000: ASCI White (IBM RS6000, 8192 x Power3, 10 TeraOps) ILM = Industrial Light and Magic LLNL & ILM: Steuerungen, CMU = Carneggie Mellon University Alice: einfache 3D-Grafik zu Lehrzwecken, vergleiche LOGO schon fuer 10 Jaehrige nutzbar eGroups.com: 100% Pure Python, dyn-Web + 200 Mail/s auf einem 400 MHz Pent RedHat: mein Grund Anfang 1998 mit Python anzufangen ("wenn die das schon so nutzen" ;) Anwendungen Mailman = komfortabler Mailinglisten-Manager (vgl Majordomo), eigenes Web-Interface BSCW = "Basic Support for Cooperative Work", von GMD, webbasiertes Shared-Workspace System Zope = "Z Object Publishing Engine", spaeter Eingebettet: Scripting-Funktionen Erweiterungen NumPy: grosse Arrays und schnelle Berechnungen darauf (vom LLNL) PyQt, PyKDE: Bindings an Qt + KDE PyGTK, PyGnome: Bindings an GTK + Gnome wxPython -> wxWindows, pyFLTK -> nochn Toolkit PyOpenGL -> OpenGL (mit Hilfe von NumPy) PIL: Python Imaging Library (35 Formate + ein paar Funktionen) reportlab: PDF Generator (siehe Vortragsfolien) Fnorb: Corba 2.0 ORB (fast) komplett in Python ############################################################################# [10-15 Minuten] Zope 8. Python Konferenz mit eigenem Track zu Zope (50:50) doppelt so viele Leute wie im Vorjahr -> wegen Zope Grundlagen jedes Element ist ein Objekt Objekte werden aufgefordert sich selbst darzustellen Aquisition = automatisch Objekte suchen (akt. Verzeichnis, darueber, ...) Two-Layers: vgl. Unix (C + Shell), Win (Visual C + Basic) DTML = Document Template Markup Language Zope laueft entweder Standalone oder als PCGI hinter z.B. Apache Standalone = ZServer (Medusa, sehr schneller, asynchroner, in Python geschriebener Webserver) Persistent CGI = analog FastCGI, dauerlaufender Server und temporaer gestarteter Wrapper DTML Variable: z.B. aus Forms, aus DB, aus Fkt, ... Produkte externe Fkt: in Python geschrieben ZClasses: Klassen einfach erzeugen Squishdot: Slashdot-like News Worldpilot: Personal Messenger (EMail, Notes, ...) Portal Toolkit: einfache Portalfunktionen (myNetscape, ...) Nutzer (einfach mal "manage" an die URL anhaengen ;) www.air.gen.ny.us: Info-Seiten zu Ereignissen im Luftraum von NY technocrat.net: Bruce Perens Seite, mehrfach geslashdotted (Bruce: bis 1997 Leiter von Debian, zusammen mit ESR Aufbau der Open Source Initiative, arbeitet bei Pixar)