SlideShare una empresa de Scribd logo
1 de 47
Descargar para leer sin conexión
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!

Más contenido relacionado

La actualidad más candente

T2 s4 javascriptfuerfortgeschrittene
T2 s4 javascriptfuerfortgeschritteneT2 s4 javascriptfuerfortgeschrittene
T2 s4 javascriptfuerfortgeschrittenedominion
 
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 Andersjlink
 
P6kontext2014
P6kontext2014P6kontext2014
P6kontext2014lichtkind
 
Devs@Home - Einführung in Go
Devs@Home - Einführung in GoDevs@Home - Einführung in Go
Devs@Home - Einführung in GoFrank Müller
 
Funktionales Programmieren mit Clojure
Funktionales Programmieren mit ClojureFunktionales Programmieren mit Clojure
Funktionales Programmieren mit ClojureDr. 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
 
Tech Talk: Groovy
Tech Talk: GroovyTech Talk: Groovy
Tech Talk: Groovymwie
 

La actualidad más candente (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
 

Similar a 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 SystemeFrank Müller
 
Funktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit ScalaFunktionale Programmierung und mehr mit Scala
Funktionale Programmierung und mehr mit Scalathoherr
 
Skalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google GoSkalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google GoFrank 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 2003Brigitte Jellinek
 
Python Mike Müller
Python Mike MüllerPython Mike Müller
Python Mike MüllerAberla
 
Java Streams und Lambdas
Java Streams und LambdasJava Streams und Lambdas
Java Streams und LambdasNane Kratzke
 
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 machtSebastian 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 ClojureMatthias 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 WolkenJan 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 2011Reto Zahner
 
Wundertüte Perl
Wundertüte PerlWundertüte Perl
Wundertüte Perllichtkind
 
Fr os con2010_devel_nytprof
Fr os con2010_devel_nytprofFr os con2010_devel_nytprof
Fr os con2010_devel_nytprofRenee Baecker
 

Similar a 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
 

Más de fg.informatik Universität Basel

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
 

Más de 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!