Ruby. Programmieren mit Zucker. Thomas Kühn



Ähnliche Dokumente
Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Ruby - Objektorientiertes Scripting, aber richtig!

Objektorientierte Programmierung

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

Algorithmen mit Python

Multimedia im Netz Wintersemester 2011/12

Sin-Funktion vgl. Cos-Funktion

E-PRIME TUTORIUM Die Programmiersprache BASIC

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Client-Server-Beziehungen

Algorithmen und Programmieren II Einführung in Python

Prinzipien der Softwareentwicklung S. Strahringer

Vorkurs Informatik WiSe 15/16

Java Kurs für Anfänger Einheit 5 Methoden

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

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Kontrollstrukturen - Universität Köln

VBA-Programmierung: Zusammenfassung

Robot Karol für Delphi

Einführung in die Programmierung

Lua Grundlagen Einführung in die Lua Programmiersprache

Modul 122 VBA Scribt.docx

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Effiziente Java Programmierung

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Vorlesung C-Kurs 9:15-10:45 Mathe 11:15-12:45 1. Woche Hörsaal 1 2. Woche Hörsaal 7

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Programmieren in Java

Prinzipien Objektorientierter Programmierung

Programmierung in Python

Ruby. Erfinder: Yukihiro Matsumoto Japan 1993 Einflüsse: Smalltalk Perl Eigenschaften: Objektorientiert Interpretiert

Java: Vererbung. Teil 3: super()

Martin Marinschek- Wolfgang Radinger. Ruby on Rails. Einstieg in die effiziente Webentwicklung. [Tu dpunkt.verlag

Python SVN-Revision 12

LINQ to SQL. Proseminar Objektorientiertes Programmieren mit.net und C# Christoph Knüttel. Institut für Informatik Software & Systems Engineering

Datenbanksysteme SS 2007

PHP 5.4 ISBN Stephan Heller, Andreas Dittfurth 1. Ausgabe, September Grundlagen zur Erstellung dynamischer Webseiten GPHP54

Einführung in die Programmierung

Von Turbo Pascal zu Object Pascal

Studentische Lösung zum Übungsblatt Nr. 7

Grundlagen von Python

Einführung in Eclipse und Java

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Computeranwendung und Programmierung (CuP)

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Programmierkurs Java

Einführung in die Programmierung für Wirtschaftsinformatik

Scala & Lift. Ferenc Lajko

II.1.1. Erste Schritte - 1 -

Formale Sprachen und Grammatiken

Roberto lerusalimschy. Programmieren mit Lua

Vorlesung Informatik II

Die Programmiersprache C99: Zusammenfassung

Praktikant / Abschlussarbeit im Bereich Softwareentwicklung / Mechatronik (m/w)

Grundlagen der Programmierung (Vorlesung 14)

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

Objektorientierte Programmierung in Java

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

1 Vom Problem zum Programm

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht

Fakultät Angewandte Informatik Lehrprofessur für Informatik

Vererbung & Schnittstellen in C#

Django - ein Python Web-Framework

Klassendefinitionen verstehen

Liesmich zum Kurs: Programmieren in der Bioinformatik mit Perl Konfigurierung der Programmierumgebung

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

Probeklausur: Programmierung WS04/05

Übersicht Programmablaufsteuerung

Kapitel 5 Serverseitige Technologien

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie

Objektorientierte Programmierung

Objektorientierte Programmierung OOP

Client-Server Beziehungen

Programmierung für Mathematik (HS13)

Java Einführung Packages

Einführung in die Programmiersprache Python

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

Eine Anwendung mit InstantRails 1.7

C/C++ Programmierung

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum

KV Software Engineering Übungsaufgaben SS 2005

Java Einführung Abstrakte Klassen und Interfaces

Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2

JetSym. Programmierung in Hochsprache ST nach IEC We automate your success.

Skripte. Beispiel. M. Fyta Computergrundlagen 73/93

BEISPIELKLAUSUR Softwareentwicklung:

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

Einführung in PHP. (mit Aufgaben)

Programmieren I. Die Programmiersprache Java. Institut für Angewandte Informatik

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Innere Klassen in Java

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

Programmieren Lernen mit BYOB. Gerald Futschek 5. November 2012

Einführung in die Java- Programmierung

Adressen. Praktikum Funktionale Programmierung Organisation und Überblick. Termine. Studienleistung

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Transkript:

Ruby Programmieren mit Zucker Thomas Kühn

Gliederung Geschichte Philosophie Syntax mit Zucker Sprachkonzepte Pakete und Frameworks Ausblick Beispiele

Yukihiro Matz Matsumoto Geboren am 14.April 1965 Geschichte Biografie Studierte Informatik an der Universität Tsukuba Momentan: Chefprogrammierer bei Network Applied Communication Laboratory in Japan

1993 Begeisterung für Scriptsprachen Interesse an Objektorientierung Geschichte Entstehung Eigene Programmiersprache entwickeln Vorbilder: Perl, Python, Smalltalk 1994 Beginn der Arbeit an Ruby (24.4.1994) Erste alpha Version veröffentlicht

Geschichte Entwicklung 1997 1999 Version 1.0 bis 1.4 - nur in Japan veröffentlicht 2000 2002 Version 1.6 - Erstmals mit englischer Dokumentation 2003 heute Version 1.8 (aktuelle 1.8.7) - Stabile und ausgewogene Implementierung

Geschichte Zukunft 2008 Version 1.9 (für Entwickler) - Übersetzung in Bytecode - Ausführung in virtuelle Maschine (YARV) - System für reguläre Ausdrücke (Oniguruma) - Unicode Unterstützung - Erweiterung der Standardbibliothek Zukunft Stabile Version 1.9

Philosophie Sprache der geringsten Überraschung Simpel nach Außen Komplex im Inneren Vollständige Objektorientierung hohe Flexibilität Dynamische Typbindung Absolut freie Programmiersprache

Hello World Programm puts "Hello World" Typisches Ruby Beispiel Syntax Beispiele 5.times{ puts "typisch Ruby" } Seltsames Ruby Beispiel ('a'..'z').each { c print c }

Syntax Basis Objekte Ganze Zahlen: Gleitkommazahlen: Zeichenketten: Felder: Mengen: Intervalle: reguläre Ausdrücke: 1235 == 1_235 3.51 == 351e-2 "ruby" == 'ruby' [1, 3.5, "c"] {"a"=>1, "b"=>2} 1..5 == 1...6 /.*(y Y).*/

Syntax Kontrollstrukturen Was ist Falsch? nil, false Alle Kontrollstrukturen geben das zuletzt ausgewertete Statement zurück Schleifen sollten über Iteratoren verwet werden if exp [then :] st elseif e [then :] st else st case exp when com [then :] st else st while exp [do :] st until exp [do :] st

Syntax Methoden def filter(x = nil,*rest,&comp) return [] #... Parameter mit Vorgabewert können beim Aufruf Weg gelassen werden Stern-Operator sammelt alle Argumente in ein Array Und-Operator am Ende benötigt einen Block als Argument

Syntax Klassen class Child<Parent private @@static = 0 protected CONST = "World" public def initialize @instance = /y.*/ lokal = 1..5 #... #... def Child.next @static += 1 Child.next Child::CONST child=child.new

Syntax Ausnahmebehandlung Ausnahmen werfen raise DeckException Ausnahmen behandeln begin # geschützter Abschnitt rescue DeckException => e # wird im Fehlerfall ausgeführt else # wird sonst ausgeführt ensure # wird immer ausgeführt

Sprachkonzepte Mehrfachzuweisung Normale Zuweisungen temp = a; a = b; b = temp; typisch Ruby a, b = b, a Mehrfachzuweisung mit Arrays a, b=[1,2,3] a = 1 b = 2 a,*b=[1,2,3] a = 1 b = [2, 3]

Sprachkonzepte Blöcke und Iteratoren def abc yield('a') yield('b') yield('c') abc do x puts x a = [1,2,3,4,5] a.each{ x print x," " } b=a.find_all{ i i<3 } puts b.join("-")

Sprachkonzepte Klassen in Ruby Typ einer Klasse wird nur durch seine Methoden definiert Methodenaufrufe werden als Nachrichten an die jeweilige Klasse (oder Objekt) geset Wird eine Klasse in Ruby erweitert, erzeugt Ruby eine neue virtuelle -Klasse abgeleitet von dieser Klasse Unterschiedliche Klassen implementieren vom Verhalten ähnliche Methoden mit den selben Namen

Sprachkonzepte Ducktyping class Ente def quak "Quaaaaaak!" class Frosch def quak "Quak! Quak!" def quaken(tier) puts tier.quak quaken Ente.new quaken Frosch.new Ausgabe: Quaaaaaak! Quak! Quak!

Sprachkonzepte Operatoren Als Methoden implementiert [] []= == =~ / % + - == <=> << >= < > (...) Im Interpreter übersetzt &&..... = (...) %= /= += -= *= (...) Beispiel einer Übersetzung: i += 1 i = i.+(1)

Sprachkonzepte Mehrfach Vererbung module Mixable def shuffle sort{ rand(3)-1 } class Array include Mixable [1,2,3,4].shuffle Module erweitern die Funktionalität Module können nie instanziert werden Können Klassen, Konstanten und Variablen enthalten Können vollständige Methoden enthalten

Pakete und Frameworks irb (Interactive Ruby Shell) Optimal zum Lernen und Testen RDoc Javadoc ähnliche Dokumentation RubyGems Paketmanagement System für Ruby Unterstützt Installation und Updates von Programmen und Bibliotheken

Pakete und Frameworks Ruby on Rails Framework für Webapplikationen Einfache Konfiguration Nutzt das MVC-Design-Pattern Automatische Erstellung der Klassen (Model, View, Controller) Automatische Übernahme der Daten aus der Datenbank

Ausblick Popularität dank Ruby on Rails Ruby 2.0 bessere Virtuelle Maschine Parallele und Verteilte Programme Aspektorientierte Programmierung Konzentration auf den Programmierer, nicht auf Computer

Beispiele Objektorientierte Programmierung class Computer < Player public def initialize super @fid = Player.nextId puts @fid def printcard(card) # printf(... ) #... #... def wantscard? getcardsum<17 def getname "Computer " + @fid.to_s

def sort(list, style = ", ") if ( list.respond_to?(:join) ) puts list.sort.join(style) else puts "geht nicht" # Beginn der Ausführung sort([3,4,5,2,1], ", ") sort("also with strings?", "") sort([1.2,1.3,1.6,1.8,0.9]) Beispiele Imperative Programmierung

Beispiele Funktionale Programmierung def filter(x = nil,*rest,&comp) return [] if x.nil? return [x]+filter(*rest,&comp) if (comp.call(x)) return filter(*rest,&comp) def sort(p = nil,*rest) return [] if p.nil? return sort( *filter(*rest){ x x<p} ) + [p] + sort( *filter(*rest){ x x>=p} )

Quellen Dave Thomas, Programming Ruby ISBN: 0-9745140-5-5 Offizielle Webseite http://www.ruby-lang.org/ Dokumentation http://ruby-doc.org/ Interview mit Matz http://www.linuxdevcenter.com/pub/a/linux/2001/11/2 9/ruby.html

Ruby Language determines the way we think Hypothese von Sapir-Whorf