Seite 2
Diplomarbeit
zur Erlangung des akademischen Grades
"Master of Science in Engineering" / "Diplomingenieur (FH)"
Python und Zope als Unterrichtswerkzeuge
Dominique Lederer
Wien, den 30.5.2007
Ausgeführt an der Fachhochschule Technikum Wien
Studiengang: Informations- und Kommunikationssysteme
Seite 3
Kurzfassung
Kurzfassung
F¨ur Anf¨anger ist das Erlernen einer Programmiersprache schwierig. Das liegt daran, dass im heuti-
gen Unterricht bevorzugt mit Sprachen aus der Industrie gelehrt wird. Studenten wollen in der In-
dustrie Jobs bekommen, und legen deshalb Wert darauf, dass gefragte Technologien Bestandteil ih-
rer Ausbildung sind. Die Industrie wiederum will ihren Bedarf befriedigen. Dabei wird ¨ubersehen,
dass Programmiersprachen keine Technologien selbst, sondern Werkzeuge f¨ur Technologien sind.
Im Unterricht muss eine Programmiersprache ein Werkzeug sein, mit dessen Hilfe es m¨oglich ist,
die fundamentalen Ideen eines Unterrichtsgegenstandes zu vermitteln, ohne in einen Unterricht
¨uber die Programmiersprache selbst abzudriften.
Die vorliegende Arbeit stellt Python als ein solches Werkzeug vor. Sie zeigt auf, dass Python, im
Gegensatz zu heute h¨aufig im Unterricht zum Einsatz kommenden Sprachen (wie C, C++ oder
Java), gut f¨ur Anf¨anger geeignet ist. Aufgrund des einfachen Zugangs k¨onnen mit Python viel
fr¨uher relevante Konzepte der Informatik und Softwareentwicklung diskutiert werden. Ein weiterer
wesentlicher Vorteil ist, dass auch die Arbeit der Unterrichtenden erleichtert wird. Die Sprache
ist kompakt und simpel gehalten und versucht sich dem Entwickler nicht in den Weg zu stellen.
Gleichzeitig ist sie eine allgemein anerkannte Sprache und findet Verwendung in der Industrie.
F¨ur fortgeschrittene Konzepte der Softwareentwicklung kann auf komplexere Sprachen umgestie-
gen werden, wobei die Studenten dabei von ihren Erfahrungen mit Python stark profitieren. Der
Unterricht kann aber durchaus weiter auf Python aufbauen. So zeigt diese Arbeit, wie das Kom-
ponentenframework Zope hierbei Verwendung finden k¨onnte. Dabei werden Themen wie Kompo-
nentenorientierung, Reuse, Datenbanken, das Erleben eines Softwareentwicklungsprozesses und
Testen und Dokumentieren von Software erl¨autert. Auch Zope, das auf Python basiert, hat den
Vorteil, dass im Vergleich zu anderen Applikationsframeworks ein einfacherer Zugang schnelle
Lernerfolge erm¨oglicht.
Vorliegende Arbeit zeigt, wie mit Python der komplette Bedarf eines auszubildenden Software-
entwicklers abgedeckt wird. Durch die Schnelllebigkeit der Technik wird es immer wichtiger, die
grundlegenden Konzepte einer Wissenschaft zu beherrschen, anstatt das Erlernen eines Werkzeugs,
das in der Industrie aktuell ist.
FH Technikum Wien
Seite I
Seite 4
Abstract
Abstract
For beginners the learning of a programming language proves to be quite difficult. This is due to the
fact that today's educational system focuses primarily on languages related to industry. Students
want to get jobs in the industry. Therefore they demand to be sufficiently trained in these technolo-
gies. The industry again wants to satisfy its need. But programming languages are not technologies
by themselves, though, they are tools for technologies. However, programming languages for edu-
cational purposes must be such tools which help students gain fundamental understanding of a
topic without the need for expert knowledge in a programming language itself.
This paper introduces Python as one example for such a tool. It points out that, unlike languages
such C, C++ or Java widely used today, Python is highly suitable for beginners. Due to the easy
access it is possible to teach relevant concepts of computer science and software development
earlier in the learning process. A further substantial advantage is relief of the instructor´s. The
language is compactly and simply held without hinderung the developer. Python is a generally a
well respected language and finds use in the industry.
For advanced concepts of software development, teaching can be directed to more complex lan-
guages, whereby the students strongly profit from their experience with Python. If knowledge of
other languages is not required, it is also possible to stay with Python, which performs well in this
situation.
Thus this paper shows how the component-framework Zope could be of use in this field. The
following topics, such as component orientation, reuse, databases, experiencing a software deve-
lopment process and tests- and documenting of software are discussed. Also Zope, which is based
on Python, has the advantage of easy access, thus creating the possibility of fast successes in lear-
ning. This paper shows how the complete need of a software developer is covered by teaching with
Python.
FH Technikum Wien
Seite II
Seite 5
Verwendete Abk¨urzungen
Verwendete Abk ¨urzungen
AJAX
Asynchronous JavaScript and XML
AOP
Aspektorientierte Programmierung
APE
Adaptable Persistence Engine
API
Application Programming Interface
BSD
Berkeley Software Distribution
CBSE
Component Based Software Engineering
CI
Corporate Identity
CORBA
Common Object Request Broker Architecture
COTS
Commercial off-the-shelf
CPS
Collaborative Portal Server
CSS
Cascading Style Sheets
CWI
Centrum voor Wiskunde en Informatica
DBC
Design By Contract
DTML
Document Template Markup Language
EJB
Enterprise Java Beans
FH
Fachhochschule
GNU
GNU's Not Unix
GUI
Graphical User Interface
HLL
High Level Language
HTML
Hypertext Markup Language
HTTP
Hypertext Transfer Protocol
IDLE
Integrated Development Environment
MUW
Medizinische Universit¨at Wien
NASA
National Aeronautics and Space Administration
NATO
North Atlantic Treaty Organisation
OOP
Objektorientierte Programmierung
ORB
Object Request Broker
PDF
Portable Document Format
FH Technikum Wien
Seite III
Seite 6
Verwendete Abk¨urzungen
PROLOG
PROgramming in LOGic
PSA
Python Software Activity
PSF
Python Software Foundation
RDBMS
Relational Database Management System
RMI
Remote Method Invocation
RPC
Remote Procedure Calls
RSS
Really Simple Syndication
SDL
Simple DirectMedia Layer
SIG
Python Special Interest Group
SOAP
Simple Object Access Protocol
SQL
Structured Query Language
Tcl
Tool command language
TDD
Test Driven Development
Tk
Toolkit
TTW
Through the Web
UML
Unified Modeling Language
URL
Uniform Resource Locator
WWF
World Wide Fund For Nature
XML
Extensible Markup Language
XP
Extreme Programming
ZCML
Zope Configuration Markup Language
ZEO
Zope Enterprise Objects
ZMI
Zope Management Interface
ZODB
Zope Object Database
Zope
Z Object Publishing Environment
ZPL
Zope Public Licence
ZPT
Zope Page Templates
FH Technikum Wien
Seite IV
Seite 7
Inhaltsverzeichnis
Inhaltsverzeichnis
1
Einleitung
2
1.1
Motivation und Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2
Aufbau der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3
Fundamentale Ideen als Unterrichtsprinzip . . . . . . . . . . . . . . . . . . . . . .
3
1.4
Programmiersprachen im Unterricht . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.5
Grundlagen Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.5.1
Geschichte und Entwicklung . . . . . . . . . . . . . . . . . . . . . . . . .
8
1.5.2
High-Level-Sprache und Skriptsprache . . . . . . . . . . . . . . . . . . . 10
1.6
Grundlagen Zope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.6.1
Zope 2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.6.2
Zope 3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2
Python lehren
16
2.1
Python als erste Programmiersprache? . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2
Programmierparadigmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.1
Programmierparadigmen im Unterricht . . . . . . . . . . . . . . . . . . . 24
2.2.2
Imperative Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.3
Deklarative Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2.4
Weitere Paradigmen
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.3
Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.4
Python in Fachgegenst¨anden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.5
Open-Source und Community
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.6
Material, Werkzeuge und Frameworks f¨ur den Schuleinsatz . . . . . . . . . . . . . 40
3
Softwareentwicklung im Unterricht mit Zope
45
3.1
Komponentenarchitektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2
ZODB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.3
Softwareentwicklungsprozess erleben . . . . . . . . . . . . . . . . . . . . . . . . 50
3.4
Testen und Dokumentieren von Software . . . . . . . . . . . . . . . . . . . . . . . 54
3.5
Beispielimplementierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.6
Die Zukunft von Zope
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.7
Alternative Python Frameworks
. . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4
Diskussion
68
4.1
Zusammenfassung und Bewertung . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.2
Kritik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.3
N¨achste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.4
¨
Ahnliche Arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
A Quelltexte
81
FH Technikum Wien
Seite 1
Seite 8
Einleitung
1
Einleitung
1.1
Motivation und Zielsetzung
Geht es um das Aneignen von Programmierkenntnissen, ist die momentane Situation nach Ansicht
des Autors nicht optimal. Sie ist verbesserungsw¨urdig. Gerade in der schnelllebigen Informatik
sollte im Unterricht nicht auf Trends oder Modeerscheinungen zur¨uckgegriffen werden, sondern
die fundamentalen Ideen der Wissenschaft Informatik mit einem guten Konzept an die Studieren-
den herangetragen werden. Erste Programmierkenntnisse mit z.B. C oder Java zu vermitteln bzw.
vermittelt zu bekommen, ist problematisch. Diese Arbeit hat zum Ziel, einen einfacheren Weg auf-
zeigen und soll begr¨unden, warum erste Programmiererfahrungen mit Python didaktisch sinnvoller
sind.
Die Programmiersprache Python soll als Programmiersprache f¨ur den Unterrichtseinsatz vorge-
stellt werden und es wird gezeigt, wie gewisse Grundkonzepte mittels dieses Werkzeugs vermittelt
werden k¨onnen. Weiterf¨uhrend wird Z Object Publishing Environment (Zope) als Applikationsser-
ver, basierend auf Python, f¨ur fortgeschrittenere Themen der Softwareentwicklung, und vor allem
f¨ur den praktischen Teil dieser Arbeit verwendet.
Die Arbeit hat das Ziel, die Verbreitung von Python an Schulen und Universit¨aten zu unterst¨utzen,
um damit den Sch¨ulern
1
und Studenten den Einstieg in die Programmierung und diese selbst zu
erleichtern.
Weiters ist Zope f¨ur den Einsatz an Universit¨aten vorzustellen; der einfache Zugang zu einem
Open-Source Produkt soll die Vorteile f¨ur Lektoren und Studenten bei fortgeschrittenen Themen
der Softwareentwicklung aufzeigen.
Die vorliegende Arbeit soll dabei als Entscheidungs- und Argumentationsgrundlage an genannten
Ausbildungseinrichtungen dienen k¨onnen.
1.2
Aufbau der Arbeit
Die Arbeit gliedert sich in Einleitung, zwei Hauptkapitel und abschließende Diskussion. Sie ist
nicht klassisch in Theorie- und Praxisteil gegliedert. Eine solche Aufteilung ist bei dieser Thema-
tik schwer zu vollziehen, die vorgestellte Theorie wird immer wieder durch praktische Beispiele
unterst¨utzend erl¨autert. Im zweiten Kapitel ist eine Beispielimplementierung abgehandelt.
In der Einleitung werden die Argumentationsgrundlagen f¨ur die Arbeit aufgebaut. Die in der Arbeit
verwendeten Technologien Python und Zope werden vorgestellt.
Nach Erkl¨arung allgemeiner, in der Arbeit verwendeter Begrifflichkeiten und Technologien, folgt
im ersten Kapitel die Abhandlung der Programmiersprache Python. Darin wird erl¨autert, warum
sich Python als eine Einstiegsprogrammiersprache, und vor allem f¨ur Unterrichtszwecke beson-
ders gut eignet. Danach werden Grundkonzepte des Informatikunterrichts, wie Paradigmen und
1
Wenn in dieser Arbeit die m¨annliche Form verwendet wird, sind Frauen gleichermaßen gemeint, sofern nicht
explizit Gegenteiliges behauptet wird.
FH Technikum Wien
Seite 2
Seite 9
Einleitung
Algorithmen mit Python als unterst¨utzendes Werkzeug analysiert. Weiters wird behandelt, welche
andere Fachgegenst¨ande neben Informatik von Python profitieren k¨onnen, wie das Thema Open-
Source auf den Unterricht angewandt werden kann, und welche Materialien und Werkzeuge als
Unterst¨utzung f¨ur den Unterricht bzw. die Unterrichtsgestaltung zur Zeit zur Verf¨ugung stehen.
Zope ist das Thema des zweiten Kapitels. Zope ist ein Applikationsframework basierend auf Py-
thon und eignet sich f¨ur das Lehren fortgeschrittener Softwareentwicklungsmethoden. Darin wird
untersucht, ob Zope als Komponentensystem betrachtet werden kann, und wie das Framework mit
Component Based Software Engineering (CBSE) in Verbindung gebracht werden kann. Dass das
Testen und Dokumentieren von Software im Unterricht vernachl¨assigt wird, wird ebenso behan-
delt, wie das Lehren eines Softwareentwicklungsprozesses. Den Abschluß des Hauptteils bildet
die Beispielimplementierung aus einem realen Projekt im Arbeitsumfeld des Autors.
1.3
Fundamentale Ideen als Unterrichtsprinzip
Eine Argumentationsgrundlage dieser Arbeit ist die Definition einer fundamentalen Idee nach
Schwill [Sch93]. In seiner Arbeit untersucht er die philosophische Sicht der Idee nach Plato und
Kant, und formuliert diese mit den Strukturen nach J.S. Bruner [Bru60] zur fundamentalen Idee.
J.S. Bruner hat das didaktische Prinzip an den Strukturen der zugrundeliegenden Wissenschaft, an
denen sich der Unterricht orientieren soll, formuliert.
"Eine
fundamentale Idee (bezgl. einer Wissenschaft) ist ein Denk-, Handlungs-,
Beschreibungs- oder Erkl¨arungsschema, das
1. in verschiedenen Bereichen (der Wissenschaft) vielf¨altig anwendbar oder er-
kennbar ist (Horizontalkriterium),
2. auf jedem intellektuellen Niveau aufgezeigt und vermittelt werden kann (Verti-
kalkriterium),
3. in der historischen Entwicklung (der Wissenschaft) deutlich wahrnehmbar ist
und l¨angerfristig relevant bleibt (Zeitkriterium),
4. einen Bezug zu Sprache und Denken des Alltags und der Lebenswelt besitzt (Sinn-
kriterium)."
Abbildung 1: Horizontalkriterium nach [Sch93]
Das Horizontalkriterium veranschaulicht Schwill wie in Abbildung 1. Eine Idee wird so-
weit abstrahiert, dass fachspezifische Elemente herausfallen. Damit kann themen- und
FH Technikum Wien
Seite 3
Seite 10
Einleitung
fach¨ubergreifend gearbeitet werden. Der Lernende erkennt durch immer wiederkehrende Prinzi-
pien die ¨ubergreifende Relevanz der Thematik. Anschließend wird durch Wiederholung das Wich-
tige gefestigt. Die gemeinsame Idee kann jedoch wiederum nur durch umfassendes Spezialwissen
herausgearbeitet werden. Das ist die Aufgabe der Lehrkr¨afte.
Das Vertikalkriterium kann wie ein Faden im Bildungsweg gesehen werden. Diesem Faden wird
im Laufe der Ausbildung gefolgt. Dabei steigen das Niveau und die Detaillierung der Materie
(Abbildung 2).
Abbildung 2: Vertikalkriterium nach [Sch93]
Das Zeitkriterium ist in der Informatik nicht schwer zu erf¨ullen. Die Schnelllebigkeit der Tech-
nik birgt zwar viele Modeerscheinungen, jedoch sichert das Kriterium die Kontinuit¨at des Unter-
richts und den Wert der Kenntnisse und Erfahrungen der Unterrichtenden und verhindert fachliche
Moden.[Mod02]
Dabei ist die Tr¨agheit der Lehre eine Art Vorauslese, um das Zeitkriterium einer fundamentalen
Idee zu erf¨ullen.
Der Autor interpretiert das Sinnkriterium als das tats¨achliche Wertempfinden beim Empf¨anger der
Idee, beim Lernenden. Wie gut kann die Thematik als praxisrelevant oder als sinnvoll erkannt
werden? Kann der Bezug zur sp¨ateren Verwendung in der Arbeitswelt hergestellt werden?
Der Einsatz fundamentaler Ideen wird von [Mod02] wie folgt beschrieben:
"Der Unterricht muss dann so angelegt werden, dass sich diese - wenigen - funda-
mentalen Ideen bei den Sch¨ulerinnen und Sch¨ulern bilden k¨onnen, er muss Kenntnisse
und Erfahrungen vermitteln, die anhand dieser Ideen zu ordnen sind, und er muss
diese Ideen zu einem geeigneten Zeitpunkt explizit thematisieren, um die spezifischen
M¨oglichkeiten und Beschr¨ankungen der Informatik in Abgrenzung gegen andere Dis-
ziplinen erkennbar zu machen."
Einige Beispiele fundamentaler Ideen und die dazugeh¨origen Kriterien sind in [Sch94] zu finden.
FH Technikum Wien
Seite 4
Keine Kommentare