Ergebnisse der Untersuchung zur Eignung einer Programmiersprache für die schnelle Softwareentwicklung kann der Informatikunterricht davon profitieren?



Ähnliche Dokumente
Algorithmen und Programmieren II Einführung in Python

Algorithmen mit Python

Informatik ist viel mehr als Delphi-Programmierung!

Verteilte Paarprogrammierung mit Eclipse

Der Lua Skripteditor Lua in der Messtechnik

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Objektorientierte Programmierung

Pragmatik von Programmiersprachen

Das Modulkonzept als wissenschaftlich fundierte Grundlage für die Schulinformatik

VBA-Programmierung: Zusammenfassung

Einführung in die Programmierung

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Lehrpläne NRW Sek.stufe 2. Lernen im Kontext

IT-Basics 2. DI Gerhard Fließ

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Softwareentwicklungsprozess im Praktikum. 23. April 2015

Einführung in die Modellierung

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

Programmieren 3. Programmieren in C und Python. Prof. Dr. Peter Barth. Hochschule RheinMain. Fachbereich Design Informatik Medien.

Bildquelle:

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Allgemeine Informationen zum Praktikum

Was ist Logische Programmierung?

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Praktische Informatik 1

Integrierte und automatisierte GUI-Tests in Java

Funktionales Programmieren in Python

Programmieren mit Python in der Sek. 1

Prüfung Computation, Programming

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Objektorientierte Programmierung OOP

Delegatesund Ereignisse

Test-Driven Design: Ein einfaches Beispiel

Typumwandlungen bei Referenztypen

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Java: Vererbung. Teil 3: super()

Propädeutikum zur Programmierung

Einführung in die Informatik Tools

Programmieren was ist das genau?

Javakurs zu Informatik I. Henning Heitkötter

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Programmierkurs Java

Einführung in die Programmierung

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

KV Software Engineering Übungsaufgaben SS 2005

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Programmieren in Haskell Einführung

Einführung in PHP. (mit Aufgaben)

Rene Schneider GEBIT Solutions GmbH. Integrity - ein innovatives Tool zur Acceptance-Test-Automatisierung

Tagesprogramm

Institut für Informatik

Empirische Softwaretechnik Kosten und Nutzen von UML in der Wartung Dr. Victor Pankratius Andreas Höfer Wintersemester 2009/2010

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

LavA OS: Ein Betriebssystem für konfigurierbare MPSoCs

Einführung in die Programmiersprache Python

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Programmierkurs Java

Lua Grundlagen Einführung in die Lua Programmiersprache

Assertions (Zusicherungen)

Kontrollstrukturen - Universität Köln

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Kommt Clean Code in Studium und Ausbildung zu kurz?

CASE. in der Anwendung. Erfahrungen bei der Einführung von CASE. Herausgegeben von Peter Hruschka. Carl Hanser Verlag München Wien

Eberhard Lehmann: Projekte im Informatik-Unterricht Software Engineering, Ferd. Dümmlers Verlag, Bonn Inhaltsverzeichnis.

Informatik Java-Programmierkurs im Rahmen der Berufs- u. Studienorientierung für Schüler. Joliot-Curie-Gymnasium GR 2010 Nico Steinbach

Dokumentation des Projektes Tic Tac Toe

WebService in Java SE und EE

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Programmierung in Python

Visuelle DSLs Trends in der Softwaretechnik: Domänenspezifische Sprachen (Seminar WS 2010/11) Thorsten Arendt

Algorithmen und Datenstrukturen

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Begleitendes Praktikum zur Vorlesung Künstliche Intelligenz

Ergebnisse einer Umfrage zur aktuellen

Beispiel Aufrufreihenfolge einmalige Netzdaten als Leermeldung:

Erster Bug: eine Motte

Informatik (G8) Sek I - Differenzierung 8/9

Von Turbo Pascal zu Object Pascal

Themen. Web Service - Clients. Kommunikation zw. Web Services

Kapitel 12 Dokumentation und Zugriffsrechte

Kapiteltests zum Leitprogramm Binäre Suchbäume

Computerspiele in der Schule

Beispiel 19. December 4, 2009

Software Engineering

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Einführung in Javadoc

Modellierung und Programmierung 1

Objektorientierte Softwareentwicklung

Die freie Programmiersprache Python mit Beispielen für ihren praktischen Einsatz. Python User Group Köln

Rahmenbedingungen und Integrationsvoraussetzungen

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Auktionen erstellen und verwalten mit dem GV Büro System und der Justiz Auktion

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Programmieren Formulierung eines Algorithmus in einer Programmiersprache

Der Einsatz von Open-Source-Produkten im Unternehmen, dargestellt am Beispiel von OpenOffice

Dr. Monika Meiler. Inhalt

Transkript:

Ergebnisse der Untersuchung zur Eignung einer Programmiersprache für die schnelle Softwareentwicklung kann der Informatikunterricht davon profitieren? Zur Diplomarbeit: Eignet sich die Skriptsprache Python für schnelle Entwicklungen im Softwareentwicklungsprozess? Ingo Linkweiler, 10.+11. Okt. 2002 Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 1

1.1 Ansatz (Thema der Diplomarbeit): Untersuchung der Programmiersprache Python für die schnelle Softwareentwicklung: Rapid Prototyping Extreme Programming Pair Programming Verfahren werden alltäglich eingesetzt. Praxisgenutzte Werkzeuge: Skriptsprachen wie Perl, Python und Tcl Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 2

1.2 Kann der Informatikunterricht davon profitieren? Parallelen bei den Anforderungen an die konkrete Programmiersprache? Hypothese: Anforderungen an eine Programmiersprache zur schnellen Softwareentwicklung ~= informatischen Bildung: Es ist möglich, beiden Anforderungen gerecht zu werden. Eignung der Programmiersprache Python? Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 3

2. Vorgehensweise Ziel: Beurteilung von Programmiersprachen. Anfragen / Diskussion zu Anforderungen an Programmiersprachen mit Informatikern Lehrern Kriterienkatalog(e) zur Beurteilung einer Programmiersprache Python: Auswertung, Sprachvergleiche, Fallstudien Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 4

3. Kriterien und Ergebnisse Schnelle Softwareentwicklung professioneller Entwickler Interessen Schüler, Ausbilder GUI Entwurf Rapid Prototyping Generatoren Bibliotheken Dokumentation Wiederverwendung? Portabilität Teamarbeit Lesbarkeit Fehlertoleranz?? Grundlagen Erlernbarkeit Algorithmen Leichte Syntax Orthogonalität? Gemeinsamkeiten? Konflikte? Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 5

3.2 Umfrage zur Lesbarkeit von Programmier Sprachen Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 7

4.1 Python Syntax: Kriterium integrierte Datentypen >>> zahl = 3.141 >>> tupel = (7, 42) >>> text = Hallo. >>> print text*2 Hallo. Hallo. >>> komplex = complex(5, 2) >>> hash = {1: abc, 2: def } >>> liste = [0,1,2,3,4,5] >>> print liste[2:5] [2,3,4] >>> print liste[:3] [0,1,2] for i in liste: tuwas(i) Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 8

4.2 Kriterium: Einfach zum Ziel Java vs. Python Java class HelloWorld { public static void main(string[] args) { System.out.println("Hallo Welt."); } } Static? Public? Args? Void? Python print Hallo Welt. Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 9

Pascal program Test; var i: integer; i:=0; begin while i<10 do ;? begin i:=i+1; writeln(i); end; writeln( fertig. ); end. 4.3 Pascal vs. Python Python i=0 while i<10: i=i+1 print i print Fertig. Keine Deklaration u. Zeilentrenner, Blockbildung durch Einrücken Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 10

4.4 Paradigmen: Beispiel Wertetabelle # Imperativ / Prozedural von = 5 bis = 5 funktion = "x*x 10" for x in range(von,bis): print eval(funktion) # Objekt Orientiert class Funktion: def init (self, term): self.term=term def setze_wertebereich(self,von,bis): self.von=von self.bis=bis def ausgeben(self,x): print eval(self.term) def tabelle(self): for i in range(self.von,self.bis self.von): self.ausgeben(i) f=funktion("x*x 10") f.setze_wertebereich( 5,5) f.tabelle() Ausführung von Funktionen / Quelltext zur Laufzeit Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 11

# Funktional def auswerten(funktion,x): print eval(funktion) 4.4.1 Paradigmen def tabelle(funktion,von,bis): map(auswerten, [funktion]*(bis von), range(von,bis)) tabelle("x*x", 5,5) Prädikative Programmierung (vgl. Prolog): möglich (Holmes, Pylog) wenig dokumentiert nicht in Syntax integriert Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 12

Prolog 4.4.2 Prädikative Entwicklung Python+Holmes weg(rein,28). weg(28,37).... weg(43,61). weg(41,raus). rule f01 if true then weg rein nach 28. rule f02 if true then weg 28 nach 37.... rule f19 if true then weg 43 nach 61. rule f20 if true then weg 41 nach raus. weg(a,b): weg(b,a),!. gehe(raus,raus,weg). gehe(woher,raus,alterweg): weg(woher,a), nicht_drin(alterweg,a), gehe(a,raus,[a AlterWeg]). nicht_drin(liste,a): enthaelt(liste,a), write([ gehe zurueck nach,a]),nl,!,fail. nicht_drin(liste,a): write([ gehe nach,a]),nl. enthaelt([element _],Element). enthaelt([_ Tail],Element): enthaelt(tail,element). rule r1 if weg?a nach?b, weg?b nach?c then tour?a nach?c. rule r2 if weg?a nach?b, tour?b nach?c then tour?a nach?c.? tour rein nach raus. Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 13

4.5 Kriterium: Schnelle Entwicklung = Baukastenprinzip aus der Prototypentwicklung & Spielwarenabteilung. Idee: Kombination fertiger Bausteine / Komponenten zu etwas Neuem. Beispiel: Lesen einer Webseite per HTTP: import urllib datei = urllib.urlopen("http://www.uni dortmund.de") text = datei.read() datei.close() Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 14

import smtplib 4.6 Beispiel: E Mail versenden. def eingabe(prompt): return raw_input(prompt).strip() smtphost = eingabe("adresse des Mailservers: ") fromaddr = eingabe("von...: ") toaddrs = eingabe("an...: ") subject = eingabe("betreff...: ") msgtext = eingabe("nachricht..: ") # Erzeuge den Mail Header msg = ("From: %s\r\n To: %s\r\n Subject: %s\r\n\r\n" % (fromaddr, toaddrs, subject) ) # Nachricht anhängen msg = msg + msgtext server = smtplib.smtp(smtphost) server.sendmail(fromaddr, toaddrs, msg) server.quit() Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 15

4.7 Kriterium Lernsoftware Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 16

4.7.2 Funktionsplotter mit Von Stiften und Mäusen from sum import * # Objekte erzeugen bild = Bildschirm() stift = Stift(bild) # Mit Stift ein Diagramm zeichnen stift.bewegebis(10,10) stift.schreibe("funktionsplotter") stift.zeichnelinie(0,200, 639,200) stift.zeichnelinie(320,0, 320,399) for x in range( 20,20): stift.zeichnelinie( x*10+320,198, x*10+320,202) for y in range( 20,20): stift.zeichnelinie(318,y*10+200, 322,y*10+200) # Funktion einlesen print "Funktion eingeben:" funktion = raw_input("f(x)=") # Funktion zeichnen for x in range( 20, 20): y = eval(funktion) print "f(", x, ")=",y stift.bewegebis( x*10+320,200 y*10) stift.runter() bild.gibfrei() Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 17

4.7.3 Stifte & Mäuse: Java... vs.... Python public class RechteckProgramm4 { //Deklarationsteil private Bildschirm bildschirm; private Stift stift; private Maus maus; public void fuehreaus() { bildschirm=new Bildschirm(); stift = new Stift(); maus = new Maus(); stift.hoch(); stift.bewegebis(20,20); stift.zeichnerechteck(100,100); while (!maus.istgedrueckt()){;} maus.gibfrei(); maus=null; stift.gibfrei(); stift=null; bildschirm.gibfrei(); bildschirm=null } } bildschirm = Bildschirm() stift = Stift(bildschirm) maus = Maus(bildschirm) stift.hoch(); stift.bewegebis(20,20) stift.zeichnerechteck(100,100) while not maus.istgedrueckt(): pass maus.gibfrei() stift.gibfrei() bildschirm.gibfrei() Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 18

5. Fazit Hypothesen durch Kriterien und an Beispielen überprüft. (heute nur sehr kleinen Teil gezeigt) Anforderungen an eine Programmiersprache zur schnellen Softwareentwicklung ~= informatischen Bildung: Es ist möglich, beiden Anforderungen gerecht zu werden. Python und verfügbare Werkzeuge eignen sich sowohl zur schnellen Softwareentwicklung als auch zum Einsatz in der informatischen Bildung. Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 19

5.1 Diskussion: Kritik & offene Fragen Integration aller Paradigmen fachdidaktisch vorteilhaft? Lernziele? (Modellierung, Algorithmik, Anwendung) Praxisrelevanz (C++/Java) vs. Verständnis (Python) Wenig schulische Python Erfahrungen in Deutschland (gute in NL) Bedeutung integrierter grafischer Entwicklungsumgebungen? Ingo Linkweiler, i.linkweiler@gmx.de Software im Internet: www.ingo linkweiler.de/diplom Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 20

Beispiele...[PyNassi.py] u.a. Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 21

Inhalt: 1. Einleitung, Hypothese 2. Kriterien und Ergebnisse 3. Python 4. Fallstudien 5. Fazit Diplomarbeit, Universität Dortmund, Ingo Linkweiler, 22