36,99 €
Diplomarbeit aus dem Jahr 2007 im Fachbereich Didaktik - Informatik, Note: 1,0, Fachhochschule Technikum Wien, Sprache: Deutsch, Abstract: Für Anfänger ist das Erlernen einer Programmiersprache schwierig. Das liegt daran, dass im heutigen Unterricht bevorzugt mit Sprachen aus der Industrie gelehrt wird. Studenten wollen in der Industrie Jobs bekommen, und legen deshalb Wert darauf, dass gefragte Technologien Bestandteil ihrer Ausbildung sind. Die Industrie wiederum will ihren Bedarf befriedigen. Dabei wird übersehen, dass Programmiersprachen keine Technologien selbst, sondern Werkzeuge für Technologien sind. Im Unterricht muss eine Programmiersprache ein Werkzeug sein, mit dessen Hilfe es möglich ist, die fundamentalen Ideen eines Unterrichtsgegenstandes zu vermitteln, ohne in einen Unterricht über die Programmiersprache selbst abzudriften. Die vorliegende Arbeit stellt Python als ein solches Werkzeug vor. Sie zeigt auf, dass Python, im Gegensatz zu heute häufig im Unterricht zum Einsatz kommenden Sprachen (wie C, C++ oder Java), gut für Anfänger geeignet ist. Aufgrund des einfachen Zugangs können mit Python viel früher 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ür fortgeschrittene Konzepte der Softwareentwicklung kann auf komplexere Sprachen umgestiegen 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 Komponentenframework Zope hierbei Verwendung finden könnte. Dabei werden Themen wie Komponentenorientierung, Reuse, Datenbanken, das Erleben eines Softwareentwicklungsprozesses und Testen und Dokumentieren von Software erläutert. Auch Zope, das auf Python basiert, hat den Vorteil, dass im Vergleich zu anderen Applikationsframeworks ein einfacherer Zugang schnelle Lernerfolge ermöglicht. Vorliegende Arbeit zeigt, wie mit Python der komplette Bedarf eines auszubildenden Softwareentwicklers 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.
Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:
Veröffentlichungsjahr: 2008
Page 1
Page 2
Kurzfassung
F¨ ur Anf¨ anger ist das Erlernen einer Programmiersprache schwierig. Das liegt daran, dass im heutigen Unterricht bevorzugt mit Sprachen aus der Industrie gelehrt wird. Studenten wollen in der Industrie Jobs bekommen, und legen deshalb Wert darauf, dass gefragte Technologien Bestandteil ihrer 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 umgestiegen 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 Softwareentwicklers 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.
Page 3
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 technologies. 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 educational 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 languages, 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 development 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 learning. This paper shows how the complete need of a software developer is covered by teaching with Python.
Page 4
Verwendete Abk ¨ urzungen
AJAX
AOP APE API
BSDBerkeley Software Distribution
CBSE
CI
CORBACommon Object Request Broker ArchitectureCOTSCommercial off-the-shelfCPSCollaborative Portal Server
CSS CWI
DBC
DTML
EJBEnterprise Java Beans
FHFachhochschule
GNUGNU’s Not UnixGUIGraphical User Interface
HLL
HTML HTTP
IDLEIntegrated Development Environment
MUWMedizinische Universit¨ at Wien
NASA
NATO
OOP
ORB
PDFPortable Document Format
Page 5
PROLOGPROgramming in LOGic
PSA PSF
RDBMS
RMI RPC RSSReally Simple Syndication
SDL
SIG SOAP SQL
Tcl
TDD Tk TTWThrough the Web
UML
URL
WWFWorld Wide Fund For Nature
XML
XP
ZCML
ZEO ZMI ZODB Zope ZPL ZPT
Page 7
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 Studierenden 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 aufzeigen und soll begr¨ unden, warum erste Programmiererfahrungen mit Python didaktisch sinnvoller sind.
Die Programmiersprache Python soll als Programmiersprache f¨ ur den Unterrichtseinsatz vorgestellt werden und es wird gezeigt, wie gewisse Grundkonzepte mittels dieses Werkzeugs vermittelt werden k¨ onnen. Weiterf¨ uhrend wird Z Object Publishing Environment (Zope) als Applikationsserver, 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¨ ulern1und 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.
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 Thematik 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 besonders gut eignet. Danach werden Grundkonzepte des Informatikunterrichts, wie Paradigmen und
1Wenn in dieser Arbeit die m¨ annliche Form verwendet wird, sind Frauen gleichermaßen gemeint, sofern nicht explizit Gegenteiliges behauptet wird.
Page 8
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 Python 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 behandelt, wie das Lehren eines Softwareentwicklungsprozesses. Den Abschluß des Hauptteils bildet die Beispielimplementierung aus einem realen Projekt im Arbeitsumfeld des Autors.
Eine Argumentationsgrundlage dieser Arbeit ist die Definition einerfundamentalen Ideenach
Schwill [Sch93]. In seiner Arbeit untersucht er die philosophische Sicht derIdeenach Plato und Kant, und formuliert diese mit denStrukturennach 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.
“Einefundamentale Idee(bezgl. einer Wissenschaft) ist ein Denk-, Handlungs-, Beschreibungs- oder Erkl¨ arungsschema, das
1. in verschiedenen Bereichen (der Wissenschaft) vielf¨ altig anwendbar oder erkennbar ist (Horizontalkriterium),
2. auf jedem intellektuellen Niveau aufgezeigt und vermittelt werden kann (Vertikalkriterium),
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-
DasHorizontalkriteriumveranschaulichtSchwill wie in Abbildung 1. Eine Idee wird soweit abstrahiert, dass fachspezifische Elemente herausfallen. Damit kann themen- und
Page 9
fach¨ ubergreifend gearbeitet werden. Der Lernende erkennt durch immer wiederkehrende Prinzipien die ¨ ubergreifende Relevanz der Thematik. Anschließend wird durch Wiederholung das Wichtige gefestigt. Die gemeinsame Idee kann jedoch wiederum nur durch umfassendes Spezialwissen herausgearbeitet werden. Das ist die Aufgabe der Lehrkr¨ afte.
DasVertikalkriteriumkann 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).
DasZeitkriteriumist in der Informatik nicht schwer zu erf¨ ullen. Die Schnelllebigkeit der Technik birgt zwar viele Modeerscheinungen, jedoch sichert das Kriterium die Kontinuit¨ at des Unterrichts 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 dasSinnkriteriumals 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 - fundamentalen 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 Disziplinen erkennbar zu machen.“
Einige Beispiele fundamentaler Ideen und die dazugeh¨ origen Kriterien sind in [Sch94] zu finden.
Page 10
Ein vieldiskutiertes Thema ist, welche Sprache sich f¨ ur den Unterricht am besten eignet.
[LGS06, Pal90] meint, dass der Lernerfolg von der Zeit abh¨ angt, die f¨ ur tats¨ achliches Programmieren aufgewendet werden kann. Es sollte keine Zeit mit sprachspezifischen Eigenheiten und Syntaxproblemen “verschwendet“ werden. Geht es nach [LGS06, Mil93], hat eine Programmiersprache f¨ ur Unterrichtszwecke einen einfachen Zugang. Sie sollte leicht erlernbar sein, eine klare Struktur haben und vielf¨ altig einsetzbar sein. Die Sprache hat eine einfache Syntax, einfaches I/O Handling, verst¨ andliche String-Manipulation, aussagekr¨ aftige Schl¨ usselw¨ orter und verst¨ andliches Feedback im Fehlerfall.
W¨ ahrend Pascal und Logo vor einigen Jahren noch oft im Unterricht zum Einsatz kamen, sind beide heute stark aus der Mode gekommen. Gr¨ unde daf¨ ur sind sicher die mangelnde Einsatzf¨ ahigkeit in der Industrie und die, so gut wie nicht m¨ ogliche, Verwendbarkeit der Sprache bei steigender Komplexit¨ at der Software.
Heute z¨ ahlen Sprachen wie C, Java und C++ zu den beliebtesten Programmiersprachen. Das ist an der Anzahl der verf¨ ugbaren Entwickler, Lehrg¨ ange und Dienstleister weltweit zu erkennen [TIO07]. Studien wie [dWT02], [Md03] und [SW98] belegen, dass Java, C++ und C die Sprachen mit der gr¨ oßten Verbreitung an Universit¨ aten sind.
Trotz dieser Beliebtheit (oder gerade deswegen) wird viel ¨ uber die Tauglichkeit dieser Sprachen im
Unterricht diskutiert, gerade wenn es um geeignete Sprachen f¨ ur Programmieranf¨ anger geht. Die
oben genannten Sprachen werden als ¨ uberladen betrachtet. Die Studierenden plagen sich eher mit
der Notation, als mit dem tats¨ achlichen Algorithmen. [LGS06] erl¨ autert, dass die meisten Probleme von Programmierneulingen immer dasselbe Muster zeigen:
“[...] construct-based problems, which make it difficult to learn the correct semantics of language constructs, and plan composition problems, which make it difficult to put plans together correctly [...] students lack the skills needed to trace the execution of short pieces of code after taken their first course on programming.“
Im Zuge einer Studie an der finnischen Universit¨ at in Tampere ist eine Umfrage an europ¨ aischen Hochschulen durchgef¨ uhrt worden. 559 Studenten und 34 Lektoren an 6 verschiedenen Universit¨ aten wurden unter anderem zu deren Schwierigkeiten beim Lernen und Lehren von Programmiersprachen befragt. Die daraus abgeleiteten Folgerungen besagen:
“the most difficult concepts to learn are the ones that require understanding larger entities of the program instead of just details [...] abstract concepts like pointers and memory handling are difficult to learn [...] However, the biggest problem of novice programmers does not seem to be the understanding of basic concepts but rather learning to apply them.“[LAMJ05]
Die Studenten haben Probleme, wenn es darum geht, den Gesamtumfang eines Programmes zu erfassen und umzusetzen, dh. wie setze ich eine mir gestellte Aufgabe mit den Konzepten um, die ich gelernt habe. Dabei darf die Syntax einer Sprache nicht im Wege stehen, da sie daran hindert eine Probleml¨ osung zu finden und nur neue, andere Probleme schafft. Zeiger und Speichermanipulation z¨ ahlen zu den als sehr schwierig eingestuften Konzepten.
Die in diesem Kapitel zitierte Literatur deckt sich mit den Beobachtungen des Autors aus der ei-
Page 11
genen Ausbildung und der Abhaltung eines C Tutoriums f¨ ur Programmieranf¨ anger. Die Studenten konnten genau wiedergeben, wie sie das Problem l¨ osen w¨ urden, doch konnten sie es nicht “zu Papier“ bringen, also als Quelltext wiedergeben. Die Syntax wurde als unnat¨ urlich und teilweise unverst¨ andlich empfunden. Manche syntaktische Eigenheiten sind f¨ ur den Tutor auch schwer zu erkl¨ aren, da die Studenten die dahinterliegenden Konzepte noch nicht verstehen k¨ onnen. Nahezu alle Fehler resultierten aus einem Fehler in der Syntax. Der Autor konnte dabei ein hohes Maß an Frustration und Demotivation der Studenten im Unterricht feststellen. Die Sinnhaftigkeit des Lehrinhaltes wurde weiters angezweifelt.
Die pers¨ onlichen Erkenntnisse des Autors und jene der obig angef¨ uhrten Literatur lassen Handlungsbedarf erkennen. Diese Arbeit wird im weiteren Verlauf diese Problematik behandeln und zwei Werkzeuge f¨ ur m¨ oglichst reibungsfreien und effektiven Unterricht vorstellen.
Python ist eine dynamische ” High-Level“ Programmiersprache, die den interpretierten Skriptsprachen zugeordnet und oft mit Perl, Ruby, Scheme oder Java verglichen wird. Sie wurde mit dem Ziel entwickelt, m¨ oglichst einfach und ¨ ubersichtlich zu sein, gleichzeitig aber nicht an Flexibilit¨ at und funktionaler Skalierbarkeit einb¨ ußen zu m¨ ussen.
