spitzen-infos.de - Ruby (Programmiersprache)

Ruby (Programmiersprache)




Wikipedia http://de.wikipedia.org/wiki/Hauptseite MediaWiki 1.7alpha first-letter Media Spezial Diskussion Benutzer Benutzer Diskussion Wikipedia Wikipedia Diskussion Bild Bild Diskussion MediaWiki MediaWiki Diskussion Vorlage Vorlage Diskussion Hilfe Hilfe Diskussion Kategorie Kategorie Diskussion Portal Portal Diskussion Ruby (Programmiersprache) 19314 15978972 2006-04-24T14:26:45Z D 7338 revert: das war vorher genauer, variablen sind tatsächlich nicht typisiert, während objekte natürlich einen typ haben. '''Ruby''' ist eine [[Objektorientierte Programmierung|objektorientierte]], [[Interpreter|interpretierte]] [[Programmiersprache]]. Sie hat ihre Wurzeln in [[Perl]], [[Smalltalk (Programmiersprache)|Smalltalk]], [[Python (Programmiersprache)|Python]], [[LISP]], [[Bash]] und [[CLU]]. [[Yukihiro Matsumoto|Yukihiro „Matz“ Matsumoto]] begann am [[24. Februar]] [[1993]] mit der Entwicklung der Sprache. [[1995]] wurde sie erstmals veröffentlicht, die aktuell stabile Version ist 1.8.4, die auf der offiziellen Seite heruntergeladen werden kann. Viele Entwickler sagen, Ruby folge dem „principle of least surprise“, dem Prinzip der geringsten Überraschung, womit sie meinen, dass die Sprache frei von Fallen und Widersprüchen ist, mit denen man bei anderen Programmiersprachen zu kämpfen hat. Der Name „Ruby“ (engl. für [[Rubin]]) ist übrigens kein [[Akronym]], sondern eine Anspielung auf [[Perl]] (Pearl, engl. Perle). Lange Zeit verbreitete sich Ruby wegen unzureichender englischer Dokumentation nur in [[Japan]]. Dort hat es bereits einen Stellenwert wie [[Perl]] und [[Python (Programmiersprache)|Python]], ist praxiserprobt und gilt als stabil. Erst um die Jahrtausendwende startete „Matz“ viele Aktivitäten, um die Sprache Ruby auch außerhalb Japans bekannter zu machen. Sie wurde sehr schnell begeistert aufgenommen und es entstanden zahlreiche Artikel und Dokumentationen in englischer und deutscher Sprache. == Merkmale der Sprache == * Einfache, lesbare [[Syntax]] * Rein objektorientierte Sprache, ähnlich Smalltalk * Alles ist ein Objekt * [[Mixin]]s: Einbinden von Modulen in eine Klasse (statt Mehrfachvererbung) * [[Einzelstück (Entwurfsmuster)|Singleton]]-Methoden * Umbenennung und Erweiterung vorhandener Klassen zur Laufzeit * Iteratoren * Operatorüberladung * Introspektion (auch als [[Reflexion (Programmierung)|Reflection]] bekannt) * Untypisierte Variablen * Ausnahmebehandlung über [[Exception]]s * [[automatische Speicherbereinigung]] (englisch ''garbage collection'') * Unterstützung der [[Reguläre Ausdrücke|regulären Ausdrücke]] von [[Perl]] (allerdings noch unvollständig) * Hohe Portabilität (z. B. [[Unix]], [[Microsoft Windows|Windows]], [[Disk Operating System|DOS]], [[Mac OS X]], [[OS/2]], [[Amiga]], [[SkyOS]], [[ZETA]], usw.) * Steht wahlweise unter der [[GNU General Public License|GPL]] oder einer eigenen Lizenz * Einheitliche Anbindungen an die meisten [[Datenbank]]en * Weites Einsatzgebiet ([[Konsole|Kommandozeile]], [[grafische Oberfläche]], Webapplikation) * Interaktive Rubykonsole (irb) * Einheitliche Dokumentation direkt im Quellcode, ähnlich [[Javadoc]] (rdoc) * Code-Blöcke als Methoden-Argumente, insbesondere als Argumente für Methoden von Iteratoren * [[Closure|Closures]], [[Continuations]], callcc, binding und [[Lambda-Kalkül|lambda]] als Erbe von [[Funktionale Programmierung|funktionalen Sprachen]] Ruby ist komplett objektorientiert. Alle Daten sind [[Objekt (objektorientierte Programmierung)|Objekte]], anders als bei [[Java (Programmiersprache)|Java]] gilt dies auch für die Basistypen. Mit sehr wenigen Ausnahmen enthält jede [[Variable]] eine [[Referenz]] auf das Objekt, nicht das Objekt selbst. Weiterhin gibt es (im Gegensatz zu [[Prozedurale Programmierung|prozeduralen Programmiersprachen]]) keine [[Funktion (Programmierung)|Funktionen]], sondern lediglich [[objektorientierte Programmierung|Methoden]]. Um den Umstieg von prozeduralen Programmiersprachen zu erleichtern, erlaubt es Ruby jedoch, Methoden global zu definieren, welche zur Basisklasse hinzugefügt werden, sowie Methoden ohne expliziten Empfänger aufzurufen. Technisch handelt es sich allerdings um Methoden des Moduls, das heißt der Datei in der die Methode steht. Dadurch kann man, obgleich Ruby selbst objektorientiert ist, auch [[Strukturierte Programmierung|strukturiert]] und [[Prozedurale_Programmiersprache|prozedural]] programmieren. Besonders mächtige Konzepte von Ruby sind sehr einfach zu implementierende und verwendbare Mixins und Blöcke als Argumente von Methoden. Erstere erlauben verbesserte Wiederverwendbarkeit und Erweiterbarkeit von Code und erlauben eine Mehrfachvererbung zu simulieren. Letztere machen klassische Schleifen-Konstruktionen und damit verbundene Probleme wie Puffer-Überläufe in vielen Fällen obsolet. Zudem ist Ruby sehr weitgehend introspektiv, so dass sich durch Methoden-Aufrufe oder mit geeigneter Software (z. B. [http://ruby-gnome2.sourceforge.jp/hiki.cgi?rbbr rbbr]) eine weitgehende Referenz der verwendeten Klassen einsehen lässt. == Syntax == Die Syntax von Ruby ist im Vergleich zu anderen Sprachen sehr frei. Das Ende einer Anweisung kann wahlweise durch einen Zeilenumbruch oder ein Semikolon markiert werden. Auch müssen Parameter von Methoden nicht in Klammern gesetzt werden. Verboten ist es aber auch nicht, so dass man es zur Verdeutlichung jederzeit tun kann. Weiterhin fällt auf, dass bei Methoden der Rückgabewert nicht explizit angegeben werden muss. Stattdessen wird automatisch der Wert der letzten Anweisung zurückgegeben. Ruby ist auf Struktur, Einfachheit und Lernbarkeit ausgerichtet, im Gegensatz zu beispielsweise [[Perl]], welches den Prinzipien der größtmöglichen Freiheit und Flexibilität folgt. Anders als in [[Python (Programmiersprache)|Python]] werden Blockstrukturen nicht durch die Einrückung bestimmt. Stattdessen kann sich der Entwickler zwischen Schlüsselwörtern, wie sie auch in [[Pascal (Programmiersprache)|Pascal]] existieren oder geschweiften Klammern wie in [[C (Programmiersprache)|C]] entscheiden. == Programmierbeispiele == Alle Programmierbeispiele lassen sich mit dem '''interaktiven Ruby-Interpreter irb''' testen.

>> -199.abs    # Die Zahl -199 ist ein Objekt der Klasse Fixnum (eine Unterklasse von Integer),
               # dessen Methode "abs" wir aufrufen.
=> 199

>> "Ruby ist cool".length    # analog für einen String
=> 13

>> "Rick".index("c")    
=> 2

>> "Wort".swapcase
=> "wORT"

>> "eine note betone nie".reverse.capitalize
=> "Ein enoteb eton enie"

>> #Arrays
?> [11, 5, 7, 2, 13, 3].sort
=> [2, 3, 5, 7, 11, 13]

>> [11, 5, 7, 2, 13, 3].sort.reverse
=> [13, 11, 7, 5, 3, 2]

>> [13, 11, 7, 5, 3, 2].map { |x| x * 2 }
=> [26, 22, 14, 10, 6, 4]

>> [13, [11, [7, [5, 3]], 2]].flatten
=> [13, 11, 7, 5, 3, 2]

>> ["Eins", "Zwei", "Drei"] + ["Eins", "Vier"] - ["Eins"]
=> ["Zwei", "Drei", "Vier"]

>> # Hashes (Assoziative Arrays)
?> { "vorname" => "Heribert", "nachname"=>"Maier", "alter"=>43} 

=> { "alter"=>43, "nachname"=>"Maier", "vorname"=>"Heribert" }

# Gibt zehn mal hintereinander "Hello, world!" in einer neuen Zeile aus
10.times {                                     # Block als Argument der Methode "times"
    string1 = "Hello world".gsub(" ", ", ")    # Ersetze alle Leerzeichen (' ') durch
                                               # Komma mit Leerzeichen (', ') und speichere
                                               # in string1
    string1 << "!"                             # Hänge "!" an string1
    puts string1                               # Ausgabe der Variable string1, gefolgt von
                                               # einem Zeilenumbruch
}

# Gibt die Datei text.txt Zeile für Zeile auf der Standardausgabe (Bildschirm) aus
open("text.txt") { |file|
    file.each { |line|
        puts line
    }
}

# Definition und Aufruf einer Closure
  a = 33
  block = lambda { a }
  def redefine_a(b)
    a = 44
    b.call
  end
  redefine_a(block)   # Ausgabe von 33

# Currying; Prozeduren sind ganz normale Objekte
  def curried_plus(x)
    lambda { |y| x + y }
  end
  plus_one = curried_plus(1)
  plus_one.call(8)    # ergibt 9

== Projekte in Ruby == * [[Ruby on Rails]] == Literatur == === [[Deutsche Sprache|Deutsche]] Literatur === * David Thomas, Andrew Hunt: ''Programmieren mit Ruby.'' Addison-Wesley, 15. Februar 2002, ISBN 3-827-31965-X * R. R. Höppel: ''Der Ruby-Atlas.'' Springer Verlag, November 2005, ISBN 3-540-00762-8 * Armin Röhrl, Stefan Schmiedl, Clemens Wyss: ''Programmieren mit Ruby.'' dpunkt.verlag GmbH, März 2002, ISBN 3-898-64151-1 ([http://www.approximity.com/rubybuch2/rb_main.html Onlineversion]) * Dirk Engel, Klaus Spreckelsen: ''Ruby. Das Einsteigerseminar.'' vmi-Buch AG & Co. KG, September 2002, ISBN 3-8266-7242-9 === [[Englische Sprache|Englische]] Literatur === * David Thomas, Chad Fowler, Andrew Hunt: ''Programming Ruby.'' Pragmatic Bookshelf , 15. Oktober 2004, ISBN 0-974-514-055 (engl., überarbeitete Version des ersten Buches unter Berücksichtigung der Änderungen zur Ruby Version 1.8) * David Thomas, Andrew Hunt: ''Programming Ruby.'' Addison Wesley, 2001, ISBN 0-201-71089-7 (engl., [http://www.whytheluckystiff.net/ruby/pickaxe/ Onlineversion] – [http://home.vr-web.de/juergen.katins/ruby/buch/index.html Übersetzung] - Diese wurde von Freiwilligen übersetzt und entspricht daher nicht genau der deutschen Übersetzung) * Hal Fulton: ''The Ruby Way.'' Sams, Dezember 2001, ISBN 0672-32083-5 ([http://sampublishing.com Programmbeispiele online Verfügbar]) * Maik Schmidt: ''Enterprise Integration with Ruby'' Pragmatic Bookshelf , 30. April 2006, ISBN 0976694069 == Weblinks == {{Wikibooks|Ruby-Programmierung}} * http://www.ruby-lang.org/en/ – Ruby-Homepage (Englisch) * http://www.rubycentral.com/faq/rubyfaqall.html – Ausführliches FAQ (Englisch) * {{dmoz|World/Deutsch/Computer/Programmieren/Sprachen/Ruby|Ruby}} [[Kategorie:Programmiersprache]] [[Kategorie:Skriptsprache]] [[bg: уби]] [[ca:Ruby]] [[cs:Ruby]] [[da:Ruby (programmeringssprog)]] [[en:Ruby programming language]] [[eo:Ruby (komputillingvo)]] [[es:Ruby]] [[fi:Ruby]] [[fr:Ruby]] [[he:Ruby]] [[hr:Ruby (programski jezik)]] [[id:Ruby]] [[it:Ruby]] [[ja:Ruby]] [[ko:루비 프로그래밍 언어]] [[lt:Ruby]] [[nl:Ruby (programmeertaal)]] [[nn:Ruby]] [[pl:Ruby (język programowania)]] [[pt:Ruby (linguagem de programação)]] [[ru: уби]] [[sv:Ruby]] [[th: าษารูบี้]] [[vi:Ruby (ngôn ngữ lập trình)]] [[zh:Ruby]]




Diese Version des Artikels stammt vom 26.04.2006.



Der Inhalt dieser Seite basiert auf dem Artikel „Ruby (Programmiersprache)“ aus der freien Enzyklop�die Wikipedia und ist unter der GNU-Lizenz f�r freie Dokumentation ver�ffentlicht. Auf der Wikipedia-Seite ist eine Liste der Autoren einzusehen.

Zufallsartikel.

Weltwirtschaft

... mehr