SlideShare ist ein Scribd-Unternehmen logo
Ruby, Ruby, Ruby!
  Ferdi Niedermann und Thomas Ritter
            1. Oktober 2009
Übersicht
Übersicht


   Ruby
 Merkmale
 Geschichte
 Appetizers
   Gems
   IDEs
Übersicht




  QtRuby
  Beispiel
Übersicht



   Rails
 Merkmale
 Geschichte
  Beispiel
Ruby
Merkmale
Merkmale



      Vollständig objektorientiert
         Multiparadigmatisch
      Principle of Least Surprise
          Irb: interactive ruby
Einflüsse aus: Perl, Smalltalk, Python
Merkmale



      Ruby Core Classes:
String, Array, Hash, Symbol, ...
      Fixnum, Bignum, ...
Geschichte
Geschichte


  Yukihiro “Matz” Matsumoto
      1993 angefangen
     Erste Version 1995
“Ruby” als Anspielung auf Perl
       Version: 1.8/1.9
      CRuby und JRuby
Ruby Appetizers
 Das Wott Me!
puts "O HAI World!"
preis = 5
puts “Der Preis beträgt #{preis} Franken.”
nil
# Variablen
var #lokale Variable
$var #globale Variable
@var #Instanzvariable
@@var #Klassenvariable
fg = 1337
unless fg == 1337
  puts "Oh noes!!1"
end
"Zeitschrift".include? "schrift" # -> true
satz = ["jedes", "Wort", "einzeln"]
satz.each do |wort|
  puts wort
end
5.times do
end
1.upto(3) {|i| ... }
3.downto(1) {|i| ... }
0.step(10,2) {|i| ... }
class Klasse
  def nummer=(Argument)
    @nummer = Argument
  end

  def nummer
    return @nummer
  end

  def +(Objekt)
    return @nummer + Objekt.nummer
  end
end
class Klasse
 attr_accessor :nummer
end

var = Klasse.new
var.nummer = 42
var.nummer # -> 42
lustiger_string = "BLaH"
lustiger_string.swapcase! # -> "blAh"
hash = ["key" => "value", "key2" => "value2"]
hash2 = [:key => "value", :key2 => 2]
hash["key"] # -> "value"
hash2[:key2] # -> 2
module Module
  class Class
    # Habba Babba
  end
end
module Leet
  def give_me_the_answer
    42
  end
end

class Array
  include Leet
end

[1].give_me_the_answer # -> 42
Ruby Gems
Ruby Gems



    Ruby “Paketmanager”
Bibliotheken dazu installieren
Vergleichbar mit Java Paketen
 Mehrere Versionen parallel
Ruby Gems



          Rails ist auch ein gem
         (sudo) gem install rails
Beispiele: ImageMagick, thinking_sphinx,
                   prawn
IDEs
IDEs



     Eclipse
(Aptana RadRails)
    Netbeans
QtRuby
require 'Qt4'

app = Qt::Application.new(ARGV)

hello = Qt::PushButton.new('Hello World!')
hello.resize(100, 30)
hello.show()

app.exec()
require 'Qt4'

app = Qt::Application.new(ARGV)

hello = Qt::PushButton.new('Hello World!')
hello.resize(100, 30)
hello.show()

Qt::Object.connect(hello,
SIGNAL('clicked()'), app, SLOT('quit()'))

app.exec()
require 'Qt4'
class MyWidget < Qt::Widget
  def initialize()
    super()
    quit = Qt::PushButton.new('Quit')
    lcd = Qt::LCDNumber.new(2)
    slider = Qt::Slider.new(Qt::Horizontal)
    slider.setRange(0, 99)
    slider.setValue(0)
    connect(quit, SIGNAL('clicked()'), $qApp, SLOT('quit()'))
    connect(slider, SIGNAL('valueChanged(int)'), lcd, SLOT('display(int)'))
    layout = Qt::VBoxLayout.new()
    layout.addWidget(quit)
    layout.addWidget(lcd)
    layout.addWidget(slider)
    setLayout(layout)
  end
end
app = Qt::Application.new(ARGV)
widget = MyWidget.new()
widget.show()
app.exec()
Rails
Merkmale
Merkmale




 Web Application Framework
Für agile Softwareentwicklung
Merkmale



   Don't Repeat Yourself
Convention Over Configuration
   Model-View-Controller
Merkmale



     ActiveSupport: Helfermethoden
      ActiveRecord: Datenbanken
ActionPack: ActionController / ActionView
 Auch unabhängig von Rails verwendbar
Geschichte
Geschichte



David Heinemeier Hansson
 Vorgestellt im Juli 2004
   Zur Zeit: Version 2.3
      In Planung: 3.0
Beispiel-Applikation
 “Chuck Student”
Chuck Student



Tool zur Verwaltung von Studenten
         Studenten: CRUD
      ... und ihre Notebooks
Demo
Fragen?
Dankeschön!

Weitere ähnliche Inhalte

Was ist angesagt?

T2 s4 javascriptfuerfortgeschrittene
T2 s4 javascriptfuerfortgeschritteneT2 s4 javascriptfuerfortgeschrittene
T2 s4 javascriptfuerfortgeschrittene
dominion
 
Die freie Programmiersprache Python
Die freie Programmiersprache Python Die freie Programmiersprache Python
Die freie Programmiersprache Python
Andreas Schreiber
 
Java Script Ist Anders
Java Script Ist AndersJava Script Ist Anders
Java Script Ist Anders
jlink
 
P6kontext2014
P6kontext2014P6kontext2014
P6kontext2014
lichtkind
 
Devs@Home - Einführung in Go
Devs@Home - Einführung in GoDevs@Home - Einführung in Go
Devs@Home - Einführung in Go
Frank Müller
 
Ruby on Rails SS09 03
Ruby on Rails SS09 03Ruby on Rails SS09 03
Ruby on Rails SS09 03
Daniel Dengler
 
Funktionales Programmieren mit Clojure
Funktionales Programmieren mit ClojureFunktionales Programmieren mit Clojure
Funktionales Programmieren mit Clojure
Dr. Christian Betz
 
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
gedoplan
 
Dev Day 2019: Mirko Zeibig – "Hallo " <> "Elixir"
Dev Day 2019: Mirko Zeibig – "Hallo " <> "Elixir"Dev Day 2019: Mirko Zeibig – "Hallo " <> "Elixir"
Dev Day 2019: Mirko Zeibig – "Hallo " <> "Elixir"
DevDay Dresden
 
IT-Tage 2021: Java to Go - Google Go für Java-Entwickler
IT-Tage 2021: Java to Go - Google Go für Java-Entwickler IT-Tage 2021: Java to Go - Google Go für Java-Entwickler
IT-Tage 2021: Java to Go - Google Go für Java-Entwickler
Jan Stamer
 
Do while
Do whileDo while
Do while
Fabian Hitziger
 
Tech Talk: Groovy
Tech Talk: GroovyTech Talk: Groovy
Tech Talk: Groovy
mwie
 

Was ist angesagt? (13)

Php Schulung
Php SchulungPhp Schulung
Php Schulung
 
T2 s4 javascriptfuerfortgeschrittene
T2 s4 javascriptfuerfortgeschritteneT2 s4 javascriptfuerfortgeschrittene
T2 s4 javascriptfuerfortgeschrittene
 
Die freie Programmiersprache Python
Die freie Programmiersprache Python Die freie Programmiersprache Python
Die freie Programmiersprache Python
 
Java Script Ist Anders
Java Script Ist AndersJava Script Ist Anders
Java Script Ist Anders
 
P6kontext2014
P6kontext2014P6kontext2014
P6kontext2014
 
Devs@Home - Einführung in Go
Devs@Home - Einführung in GoDevs@Home - Einführung in Go
Devs@Home - Einführung in Go
 
Ruby on Rails SS09 03
Ruby on Rails SS09 03Ruby on Rails SS09 03
Ruby on Rails SS09 03
 
Funktionales Programmieren mit Clojure
Funktionales Programmieren mit ClojureFunktionales Programmieren mit Clojure
Funktionales Programmieren mit Clojure
 
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
 
Dev Day 2019: Mirko Zeibig – "Hallo " <> "Elixir"
Dev Day 2019: Mirko Zeibig – "Hallo " <> "Elixir"Dev Day 2019: Mirko Zeibig – "Hallo " <> "Elixir"
Dev Day 2019: Mirko Zeibig – "Hallo " <> "Elixir"
 
IT-Tage 2021: Java to Go - Google Go für Java-Entwickler
IT-Tage 2021: Java to Go - Google Go für Java-Entwickler IT-Tage 2021: Java to Go - Google Go für Java-Entwickler
IT-Tage 2021: Java to Go - Google Go für Java-Entwickler
 
Do while
Do whileDo while
Do while
 
Tech Talk: Groovy
Tech Talk: GroovyTech Talk: Groovy
Tech Talk: Groovy
 

Ähnlich wie Ruby, Ruby, Ruby!

Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare Systeme
Frank Müller
 
Funktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit ScalaFunktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit Scala
thoherr
 
Skalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google GoSkalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google Go
Frank Müller
 
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Brigitte Jellinek
 
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen IBIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
Institute for Digital Humanities, University of Cologne
 
Rack-Middleware
Rack-MiddlewareRack-Middleware
Rack-Middleware
Hussein Morsy
 
Python Mike Müller
Python Mike MüllerPython Mike Müller
Python Mike Müller
Aberla
 
Slides
SlidesSlides
Typescript
TypescriptTypescript
Typescript
Sebastian Springer
 
Java Streams und Lambdas
Java Streams und LambdasJava Streams und Lambdas
Java Streams und Lambdas
Nane Kratzke
 
Scala und Lift
Scala und LiftScala und Lift
Scala und Lift
Felix Müller
 
TypeScript
TypeScriptTypeScript
TypeScript
Jens Siebert
 
Ein Gopher im Netz
Ein Gopher im NetzEin Gopher im Netz
Ein Gopher im Netz
Frank Müller
 
Warum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser machtWarum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser macht
Sebastian Springer
 
Architektur einer Eclipse DLTK IDE für Clojure
Architektur einer Eclipse DLTK IDE für ClojureArchitektur einer Eclipse DLTK IDE für Clojure
Architektur einer Eclipse DLTK IDE für Clojure
Matthias Köster
 
entwickler.de 05/2023: Go über den Wolken
entwickler.de 05/2023: Go über den Wolkenentwickler.de 05/2023: Go über den Wolken
entwickler.de 05/2023: Go über den Wolken
Jan Stamer
 
JavaFX - 9. JUGR Stammtisch - 5. Mai 2011
JavaFX - 9. JUGR Stammtisch - 5. Mai 2011JavaFX - 9. JUGR Stammtisch - 5. Mai 2011
JavaFX - 9. JUGR Stammtisch - 5. Mai 2011
Reto Zahner
 
Wundertüte Perl
Wundertüte PerlWundertüte Perl
Wundertüte Perl
lichtkind
 
Fr os con2010_devel_nytprof
Fr os con2010_devel_nytprofFr os con2010_devel_nytprof
Fr os con2010_devel_nytprof
Renee Baecker
 
TypeScript
TypeScriptTypeScript
TypeScript
Jens Siebert
 

Ähnlich wie Ruby, Ruby, Ruby! (20)

Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare Systeme
 
Funktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit ScalaFunktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit Scala
 
Skalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google GoSkalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google Go
 
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
 
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen IBIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
 
Rack-Middleware
Rack-MiddlewareRack-Middleware
Rack-Middleware
 
Python Mike Müller
Python Mike MüllerPython Mike Müller
Python Mike Müller
 
Slides
SlidesSlides
Slides
 
Typescript
TypescriptTypescript
Typescript
 
Java Streams und Lambdas
Java Streams und LambdasJava Streams und Lambdas
Java Streams und Lambdas
 
Scala und Lift
Scala und LiftScala und Lift
Scala und Lift
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Ein Gopher im Netz
Ein Gopher im NetzEin Gopher im Netz
Ein Gopher im Netz
 
Warum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser machtWarum ECMAScript 6 die Welt ein Stückchen besser macht
Warum ECMAScript 6 die Welt ein Stückchen besser macht
 
Architektur einer Eclipse DLTK IDE für Clojure
Architektur einer Eclipse DLTK IDE für ClojureArchitektur einer Eclipse DLTK IDE für Clojure
Architektur einer Eclipse DLTK IDE für Clojure
 
entwickler.de 05/2023: Go über den Wolken
entwickler.de 05/2023: Go über den Wolkenentwickler.de 05/2023: Go über den Wolken
entwickler.de 05/2023: Go über den Wolken
 
JavaFX - 9. JUGR Stammtisch - 5. Mai 2011
JavaFX - 9. JUGR Stammtisch - 5. Mai 2011JavaFX - 9. JUGR Stammtisch - 5. Mai 2011
JavaFX - 9. JUGR Stammtisch - 5. Mai 2011
 
Wundertüte Perl
Wundertüte PerlWundertüte Perl
Wundertüte Perl
 
Fr os con2010_devel_nytprof
Fr os con2010_devel_nytprofFr os con2010_devel_nytprof
Fr os con2010_devel_nytprof
 
TypeScript
TypeScriptTypeScript
TypeScript
 

Mehr von fg.informatik Universität Basel

fg.workshop: Software vulnerability
fg.workshop: Software vulnerabilityfg.workshop: Software vulnerability
fg.workshop: Software vulnerability
fg.informatik Universität Basel
 
fg.workshop: Opensource licenses
fg.workshop: Opensource licensesfg.workshop: Opensource licenses
fg.workshop: Opensource licenses
fg.informatik Universität Basel
 
Version management mit Git und Github
Version management mit Git und Github Version management mit Git und Github
Version management mit Git und Github
fg.informatik Universität Basel
 
Drahtlose Kommunikation und SDR
Drahtlose Kommunikation und SDR Drahtlose Kommunikation und SDR
Drahtlose Kommunikation und SDR
fg.informatik Universität Basel
 
OpenCL Grundlagen
OpenCL GrundlagenOpenCL Grundlagen
Website-Security
Website-SecurityWebsite-Security
Emergent gameplay
Emergent gameplayEmergent gameplay
JavaScript packt aus: "Alle haben mich falsch verstanden!"
JavaScript packt aus: "Alle haben mich falsch verstanden!"JavaScript packt aus: "Alle haben mich falsch verstanden!"
JavaScript packt aus: "Alle haben mich falsch verstanden!"
fg.informatik Universität Basel
 
Game Design Dokumentation und Projekt Management
Game Design Dokumentation und Projekt Management Game Design Dokumentation und Projekt Management
Game Design Dokumentation und Projekt Management
fg.informatik Universität Basel
 

Mehr von fg.informatik Universität Basel (17)

fg.workshop: Software vulnerability
fg.workshop: Software vulnerabilityfg.workshop: Software vulnerability
fg.workshop: Software vulnerability
 
fg.workshop: Opensource licenses
fg.workshop: Opensource licensesfg.workshop: Opensource licenses
fg.workshop: Opensource licenses
 
Version management mit Git und Github
Version management mit Git und Github Version management mit Git und Github
Version management mit Git und Github
 
Drahtlose Kommunikation und SDR
Drahtlose Kommunikation und SDR Drahtlose Kommunikation und SDR
Drahtlose Kommunikation und SDR
 
OpenCL Grundlagen
OpenCL GrundlagenOpenCL Grundlagen
OpenCL Grundlagen
 
Website-Security
Website-SecurityWebsite-Security
Website-Security
 
Hardware-Basteleien für Informatiker
Hardware-Basteleien für InformatikerHardware-Basteleien für Informatiker
Hardware-Basteleien für Informatiker
 
Emergent gameplay
Emergent gameplayEmergent gameplay
Emergent gameplay
 
JavaScript packt aus: "Alle haben mich falsch verstanden!"
JavaScript packt aus: "Alle haben mich falsch verstanden!"JavaScript packt aus: "Alle haben mich falsch verstanden!"
JavaScript packt aus: "Alle haben mich falsch verstanden!"
 
Game Design Dokumentation und Projekt Management
Game Design Dokumentation und Projekt Management Game Design Dokumentation und Projekt Management
Game Design Dokumentation und Projekt Management
 
Hydraulische Erosion und Terraingeneration (GPGPU)
Hydraulische Erosion und Terraingeneration (GPGPU)Hydraulische Erosion und Terraingeneration (GPGPU)
Hydraulische Erosion und Terraingeneration (GPGPU)
 
CS108 Bootcamp Eyeballs
CS108 Bootcamp EyeballsCS108 Bootcamp Eyeballs
CS108 Bootcamp Eyeballs
 
CS108 Bootcamp Einführung YASY
CS108 Bootcamp Einführung YASYCS108 Bootcamp Einführung YASY
CS108 Bootcamp Einführung YASY
 
CS108 Bootcamp 2011 Intro - Jarwars
CS108 Bootcamp 2011 Intro - JarwarsCS108 Bootcamp 2011 Intro - Jarwars
CS108 Bootcamp 2011 Intro - Jarwars
 
NumericOS - How to build your own Operatingsystem
NumericOS - How to build your own OperatingsystemNumericOS - How to build your own Operatingsystem
NumericOS - How to build your own Operatingsystem
 
DLL-Injection
DLL-InjectionDLL-Injection
DLL-Injection
 
Open source hardware
Open source hardwareOpen source hardware
Open source hardware
 

Ruby, Ruby, Ruby!