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? (13)

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

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

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

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

PDF
fg.workshop: Software vulnerability
fg.informatik Universität Basel
 
PDF
fg.workshop: Opensource licenses
fg.informatik Universität Basel
 
PDF
Version management mit Git und Github
fg.informatik Universität Basel
 
PDF
Drahtlose Kommunikation und SDR
fg.informatik Universität Basel
 
PDF
OpenCL Grundlagen
fg.informatik Universität Basel
 
PDF
Hardware-Basteleien für Informatiker
fg.informatik Universität Basel
 
PDF
Emergent gameplay
fg.informatik Universität Basel
 
PDF
JavaScript packt aus: "Alle haben mich falsch verstanden!"
fg.informatik Universität Basel
 
PDF
Game Design Dokumentation und Projekt Management
fg.informatik Universität Basel
 
PDF
Hydraulische Erosion und Terraingeneration (GPGPU)
fg.informatik Universität Basel
 
PDF
CS108 Bootcamp Eyeballs
fg.informatik Universität Basel
 
PPTX
CS108 Bootcamp Einführung YASY
fg.informatik Universität Basel
 
PDF
CS108 Bootcamp 2011 Intro - Jarwars
fg.informatik Universität Basel
 
PDF
NumericOS - How to build your own Operatingsystem
fg.informatik Universität Basel
 
PDF
Open source hardware
fg.informatik Universität Basel
 
fg.workshop: Software vulnerability
fg.informatik Universität Basel
 
fg.workshop: Opensource licenses
fg.informatik Universität Basel
 
Version management mit Git und Github
fg.informatik Universität Basel
 
Drahtlose Kommunikation und SDR
fg.informatik Universität Basel
 
Hardware-Basteleien für Informatiker
fg.informatik Universität Basel
 
JavaScript packt aus: "Alle haben mich falsch verstanden!"
fg.informatik Universität Basel
 
Game Design Dokumentation und Projekt Management
fg.informatik Universität Basel
 
Hydraulische Erosion und Terraingeneration (GPGPU)
fg.informatik Universität Basel
 
CS108 Bootcamp Eyeballs
fg.informatik Universität Basel
 
CS108 Bootcamp Einführung YASY
fg.informatik Universität Basel
 
CS108 Bootcamp 2011 Intro - Jarwars
fg.informatik Universität Basel
 
NumericOS - How to build your own Operatingsystem
fg.informatik Universität Basel
 
Open source hardware
fg.informatik Universität Basel
 
Anzeige

Ruby, Ruby, Ruby!