Fachhochschule Wiesbaden - Fachbereich DCSM. Skriptsprachen. Moderne, objekt-orientierte Skriptsprachen mit Betonung auf Ruby



Ähnliche Dokumente
Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Zählen von Objekten einer bestimmten Klasse

Arbeiten mit UMLed und Delphi

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Programmentwicklung mit C++ (unter Unix/Linux)

Informationsblatt Induktionsbeweis

I.1 Die Parrot Assemblersprache

Testen mit JUnit. Motivation

Einführung in die Java- Programmierung

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Monatstreff für Menschen ab 50 Temporäre Dateien / Browserverlauf löschen / Cookies

1 Vom Problem zum Programm

Animationen erstellen

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Programmieren in Haskell Einführung

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

WinVetpro im Betriebsmodus Laptop

Übung - Datenmigration in Windows Vista

teamsync Kurzanleitung

Professionelle Seminare im Bereich MS-Office

Hinweise zur Datensicherung für die - Prüfmittelverwaltung - Inhalt

Installation von Druckern auf dem ZOVAS-Notebook. 1. Der Drucker ist direkt mit dem Notebook verbunden

Whitepaper. Produkt: combit factura manager. Mehrwertsteuererhöhung durchführen. combit GmbH Untere Laube Konstanz

Jederzeit Ordnung halten

Fotogalerie mit PWGallery in Joomla (3.4.0) erstellen

Grundbegriffe der Informatik

MPI-Programmierung unter Windows mit MPICH2. Installieren von MPICH2, Übersetzen, Ausführen und Debuggen von MPI-Programmen. Christian Terboven

Objektorientiertes Programmieren mit Suse Linux

Wir machen neue Politik für Baden-Württemberg

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Grundlagen von Python

Toolbeschreibung: EVERNOTE

Objektorientierte Programmierung

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Erfahrungen mit Hartz IV- Empfängern

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Die Backup-Voreinstellungen finden Sie in M-System Server unter dem Reiter "Wartung".

Software- und Druckerzuweisung Selbstlernmaterialien

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Springer bringt Scoop-Titel auf den Weg

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

IINFO Storyboard

Anleitung über den Umgang mit Schildern

Einführung in die Scriptsprache PHP

Abschlussprüfung Realschule Bayern II / III: 2009 Haupttermin B 1.0 B 1.1

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

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Luis Kornblueh. May 22, 2014

Mit dem sogenannten Seriendruck können Etiketten und Briefe mit einer Adressdatei (z. B. Excel) verknüpft werden.

CodeSaver. Vorwort. Seite 1 von 6

Gruppenrichtlinien und Softwareverteilung

Angaben zu einem Kontakt...1 So können Sie einen Kontakt erfassen...4 Was Sie mit einem Kontakt tun können...7

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Liebe Interessierte an technischen Lösungen für die Sicherheit zu Hause,

Erstellen der Barcode-Etiketten:

Anzeige von eingescannten Rechnungen

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

ACDSee 10. ACDSee 10: Fotos gruppieren und schneller durchsuchen. Was ist Gruppieren? Fotos gruppieren. Das Inhaltsverzeichnis zum Gruppieren nutzen

Nach dem Einstecken des mdentity wird die Anwendung nicht gestartet

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Woche 1: Was ist NLP? Die Geschichte des NLP.

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

Info-Veranstaltung zur Erstellung von Zertifikaten

Informationen zum neuen Studmail häufige Fragen

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

GEONET Anleitung für Web-Autoren

mit attraktiven visuellen Inhalten

Buchhaltung mit WISO EÜR & Kasse 2011

Wie Sie mit Mastern arbeiten

Bedienungshinweise für das Smartboard. Basisfunktionen

Scala kann auch faul sein

affilinet_ Flash-Spezifikationen

Typumwandlungen bei Referenztypen

1 Mathematische Grundlagen

Die Textvorlagen in Microsoft WORD und LibreOffice Writer

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

Java: Vererbung. Teil 3: super()

AutoTexte und AutoKorrektur unter Outlook verwenden

Graphic Coding. Klausur. 9. Februar Kurs A

MINDMAP. HANDREICHUNG (Stand: August 2013)

Business Page auf Facebook

Microsoft Visual Studio Community 2015

Bereich METIS (Texte im Internet) Zählmarkenrecherche

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Kommentartext Medien sinnvoll nutzen

Mediator 9 - Lernprogramm

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans...

Installation und Inbetriebnahme von Microsoft Visual C Express

AutoCAD Dienstprogramm zur Lizenzübertragung

Abwesenheitsnotiz im Exchange Server 2010

Einführung in PHP. (mit Aufgaben)

Media Teil III. Begriffe, Definitionen, Übungen

Transkript:

Fachhochschule Wiesbaden - Fachbereich DCSM Skriptsprachen Moderne, objekt-orientierte Skriptsprachen mit Betonung auf Ruby 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 1

Fachhochschule Wiesbaden - Fachbereich DCSM Teil 1: Ruby im Überblick Ein erstes Kennenlernen 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 2

Was ist Ruby? Eine Skriptsprache Variablen werden implizit angelegt, nicht deklariert Interpreter statt Compiler, kein Objekt-Code, Executable=Quellcode Automatische Speicherverwaltung Eine der modernsten OO-Sprachen In Ruby ist (fast) alles ein Objekt! Sehr sauberer Sprach-Entwurf Das Beste aus diversen Vorläufersprachen/Vorbildern Eine Hochsprache Entwickler arbeiten problem-orientiert, nicht system-orientiert Umfangreicher Bestand eingebauter Klassen & Methoden Hohe Produktivität 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 3

Was ist Ruby? Eine general purpose-sprache Nicht beschränkt auf z.b. Automatisierung (Shell) oder Web- Entwicklung (PHP), sondern für fast alle Aufgaben geeignet Auch für größere Projekte geeignet Eine Multi-Paradigma-Sprache: Im Kern rein objekt-orientiert, aber auch mit Elementen prozeduraler, funktionaler und deklarativer Sprachen angereichert Entwickler können daher ihren Stil wählen Eine erweiterbare Sprache Ruby basiert auf C-Code. C-Bibliotheken können leicht von Ruby eingebunden werden C-Programme können Funktionen der Ruby-Bibliothek verwenden. 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 4

Was ist Ruby? Eine dynamische Sprache Code kann zur Laufzeit ergänzt und verändert werden Auch die Standardbibliotheken lassen sich zur Laufzeit ändern Jedes Objekt gibt Auskunft über sich selbst: Welche Methoden werden unterstützt, zu welcher Klasse gehört es? Dynamischer Methodenaufruf: Die zuständige Methode wird erst zur Laufzeit ermittelt. Ein Konkurrent am Markt der Programmiersprachen Ruby konkurriert mit Python ( das bessere Sprach-Design?) Ruby verdrängt zunehmend Perl und PHP Ruby lockt Entwickler von Compilersprachen wie Java, C++, C# wegen der hohen Produktivität Ruby on Rails ist das zur Zeit produktivste Framework zur Entwicklung Web-basierter Anwendungen. Entwickler lernen Ruby, um Rails nutzen zu können. 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 5

Was ist Ruby? Ein Entwickler-Traum Der Urheber Yukihiro Matsumoto ( Matz ) realisierte 1993 seine perfekte Sprache durch geschickte Kombination erfolgreicher Eigenschaften von Smalltalk, Perl, Eiffel, Python, CLU Demo: Computer Languages History Mit Ruby entsteht kürzerer und besserer Code in weniger Zeit Mit Ruby macht das Programmieren (wieder) Spaß! 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 6

Fachhochschule Wiesbaden - Fachbereich DCSM Erste Schritte 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 7

Das klassische erste Beispiel 5 Zeilen in C : #include <stdio.h> int main( int argc, char **argv ) { } puts( "" ); return( 0 ); 1 Zeile in Ruby: puts "" "" an stdout Reduktion auf das Wesentliche! Fragen an Ruby: Wie startet man so einen Einzeiler? Was ist denn daran objekt-orientiert?? 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 8

Ruby-Interpreter: 3 Startoptionen 1. Quelldatei erzeugen & ausführen a) "hello.rb" mit Editor anlegen, unix%> ruby hello.rb # Explizit - oder - b) "#!"-Startzeile einfügen, Datei ausführbar machen, direkt aufrufen: unix%> cat hello.rb #!/usr/bin/env ruby puts "" unix%> chmod +x hello.rb unix%> hello.rb TIPP: Bei Windows unnötig, da Ruby per Assoziation mit Ext. ".rb" gestartet wird: C:\temp> hello.rb 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 9

Ruby-Interpreter: 3 Startoptionen 2. Per Kommandozeile und execute-option: Unix/Linux: unix%> ruby -e "puts \"Hello, world\!\"" unix%> ruby -e 'puts ""' Windows: c:\temp> ruby -e "puts \"\"" c:\temp> ruby -e "puts ''" Mehrzeiler möglich: ruby -e "..." -e "..." Beliebt für ad hoc-kommandos! 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 10

Ruby-Interpreter: 3 Startoptionen Vorsicht bei Interpretation von Sonderzeichen: unix%> ruby -e "puts \"My\t world\"" My world unix%> ruby -e 'puts "My\t world"' My world unix%> ruby -e "puts 'My\t world'" My\t world c:\temp> ruby -e 'puts "My\t world"' My world c:\temp> ruby -e "puts 'My\t world'" My\t world Analogie zum Verhalten der Unix-Shell! 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 11

Ruby-Interpreter: 3 Startoptionen 3. Mit "Interactive Ruby" (irb): unix%> irb irb(main):001:0> puts "" ==> nil irb(main):002:0> exit unix%> Erwarteter Output Rückgabewert des Ausdrucks "puts..."! c:\temp> irb irb(main):001:0> puts "" ==> nil irb(main):002:0> exit c:\temp> Ganz analog zu Unix! 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 12

DAS soll objekt-orientiert sein? Ja! Die OO ist implizit vorhanden Sie wird hier nicht aufgezwungen Ruby ist kein "Prinzipienreiter", sondern verabreicht den Entwicklern viel "syntactic sugar" - wie etwa hier. Ausführlicher: $stdout.puts( "" );# Ausführlich... $stdout.puts "" # oder "versüßt" Erläuterungen: $stdout ist ein (vordefiniertes) Objekt der eingebauten Klasse "IO" puts() ist eine Methode dieses Objekts Notation: Präfix $ kennzeichnet globale Variablen 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 13

OO in Ruby Wenn Objekte einfach so, also ohne Deklaration, erscheinen können - wie erfahre ich denn, zu welcher Klasse ein Objekt zählt? Allgemeiner: Kann man die Klasse eines Objekts zur Laufzeit ermitteln? Natürlich! puts $stdout.class IO # Objekt "$stdout" zu Klasse "IO" Objekte geben über sich selbst Auskunft! Dazu stellt Ruby eine Reihe von Methoden bereit, die alle Objekte besitzen. Realisiert als Methoden der Klasse "Object". "Object" ist gemeinsame Oberklasse aller Klassen. 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 14

Objekte in Ruby Ist wirklich alles in Ruby ein Objekt? Wie steht s denn mit Strings und Zahlen? Probieren wir es aus, z.b. mit irb: Strings: "abc".class 'A'.class Zahlen: 42.class 3.14159.class 1234567890123.class Und Programmcode? String String Fixnum Float Bignum Hier ist Ruby weniger radikal als etwa Smalltalk: Programmcode ist i.a. kein Objekt - es gibt aber die Klasse "Proc": p = Proc.new { name puts "Hello, #{name}!"} p.class p.call "Dave" Proc Hello, Dave! 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 15

Objekte: Begriffsbildung Ein Wort zur Begriffsbildung Ein Objekt ist ein Exemplar einer Klasse Der Begriff "Instanz" ist ein Übersetzungsfehler - meiden! engl. "instance" = Exemplar, Beispiel "Script languages are cool. Take Ruby for instance!" Das deutsche Wort "Instanz" wird in anderem Zusammenhang verwendet, etwa: "juristische Instanzen" ("Landgericht", "Oberlandesgericht",...) 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 16

Python-Interpreter: Startoptionen 1. Quelldatei erzeugen & ausführen a) "hello.py" mit Editor anlegen, unix%> python hello.py # Explizit - oder - b) "#!"-Startzeile einfügen, Datei ausführbar machen, direkt aufrufen: unix%> cat hello.py #!/usr/bin/env python print "" unix%> chmod +x hello.py unix%> hello.py TIPP: Bei Windows unnötig, da Ruby per Assoziation mit Ext. ".py" gestartet wird: C:\temp> hello.py 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 17

Python-Interpreter: Startoptionen 2. Per Kommandozeile und execute-option: Unix/Linux: unix%> python -c "puts \"Hello, world\!\"" unix%> python -c 'puts ""' Windows: c:\temp> python -c "puts \"\"" c:\temp> python -c "puts ''" Option c nur einmal möglich: python -c "..." Beliebt für ad hoc-kommandos! 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 18

Python-Interpreter: Startoptionen 3. Interactiver Python-Modus: unix%> python Python 2.5.1 (r251:54863, May 18 2007, 16:56:43) [GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin Type "help", "copyright", "credits" or "license" for more information. >>> print "" >>> exit() unix%> 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden 19