Sprache Ruby
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Ruby ist eine einfache, vollständig objektorientierte Scriptsprache, die einige Konzepte von Perl, Smalltalk, Lisp und Python mit einer Ada-artigen Syntax vereint. Die Sprache wurde 1995 von YukihiroMatsumoto (aka "Matz") in Japan entwickelt und findet seit 2000 mit Erscheinen des PickAxeBuches von Dave Thomas und Andrew Hunt auch in Europa und den USA immer mehr Anhänger.
Ruby ist weitestgehend plattformunabhängig. Obwohl die Sprache aus der Unix-Welt stammt und dort eine gute Integration in das Betriebssystem bietet, gibt es doch auch Versionen für DOS, Windows, Mac, BeOS, OS/2 usw. Ruby steht unter zwei Lizenzen zur Verfügung: entweder unter der GNU General Public License (GPL) oder wahlweise einer freien, der Perl-Artistic License ähnlichen Lizenz.
Ruby ist universell verwendbar, bietet standardmäßig Bibliotheken für jeden Zweck, etwa XML, MySQL, Bindings für Tk sowie GTK (und FoxToolkit), CGI- bzw. Web- als auch generell Netzwerk-Programmierung, reguläre Ausdrücke, mächtige String-Verarbeitung, Threads, natürlich Verzeichnis- und Datei-Funktionen usw...
- Die FOX-Bindings [s.a.: FoxToolkit, FXRuby] haben derzeit (18.05.2003) die beliebten GTK-Bindings ueberholt. Mittlerweile (26.05.2003) ist der Abstand noch groesser geworden (siehe Aktueller Poll) --TomTom
Vorteile:
- noch "moderner" als Python
- noch flexibler und variantenreicher als Perl
- ...
Nachteile:
- jünger, daher (holt aber schnell auf)
- derzeit (noch) weniger verbreitet als z. B. Perl oder Python
- höhere Fehlerdichte in der Software und der Dokumentation
- geringe Menge an Beispielen und Applikationen
- als japanische Entwicklung ist eine Menge der primären Erfahrungen nicht direkt zugänglich
- Webspace-Provider bieten Ruby normalerweise noch nicht an.
- ...
Ruby enthält Konzepte aus vielen anderen Sprachen, z. B. SpracheSmalltalk, Perl, Self, Java, usw. Diese Konzepte sind so elegant in die Sprache integriert, dass Ruby in vielen Punkten leichter erlernbar ist als das jeweilige Vorbild.
Eigenschaften:
- objektorientiert (zwanglos aber hinter den Kulissen dennoch vollständig)
- Blöcke und Enumerables (ähnlich wie in Smalltalk)
- reguläre Ausdrücke (ähnlich wie in Perl)
- MixIns (ersetzt Mehrfachvererbung, Interfaces und Templates)
- Ausnahmebehandlung (Exceptions)
- Reflexivität/Metaklassen (z. B. Lisp, Smalltalk)
- intuitive Syntax angelehnt an gängige Programmiersprachen
- portabel + kommunikativ (viele Module, keine Berührungsängste)
- ...
Ruby ist definitiv "im Kommen"! -- SaschaDördelmann
- Das trifft auf alles zu, von dem es genügend Leute behaupten. Was hat das aber mit der Sprache zu tun? -- HenningThielemann
Ich komme von Perl->Python->Ruby. Ich finde:
- Ruby ist wirklich OO (Perl und Python? naja!)
- 'Least Surprise' -> das ist Rubys Philosophie und so verhält es sich auch.
- aber: 'Ruby' wäre nicht asiatisch, würde es nicht auch sagen: There are more langs to do it.
-tom
Ich habe vor paar Tagen mit Ruby angefangen und bin von der Struktur der Sprache ziemlich begeistert. Meine Begeisterung ist aber etwas gemindert durch die mangelnde Unterstützung von Unicode. Ist das tatsächlich ein Mangel von Ruby, oder fehlen mir bloß die richtigen Packages um Unicode richtig verwenden zu können? (Unter richtig verwenden meine ich, dass z. B. die Länge des Strings die Anzahl der Zeichen zurückgibt, und nicht die Anzahl der Bytes; dass die Regulären Ausdrücke funktionieren, dass ich Dateinamen in Unicode eingeben kann...)
Gibt es so was für Ruby? Wenn (noch) nicht, arbeitet jemand daran? Wenn (noch) nicht, machen wir es? -- GregorRayman
- Da erwischst du mich auf dem falschen Fuß. Soviel zumindest kann ich sagen: Einige Ruby-Methoden haben einen optionalen Parameter für das Encoding (etwa Arry#pack, siehe http://www.rubycentral.com/book/ref_c_array.html und auch Regexp#new, http://www.rubycentral.com/book/ref_c_regexp.html). Und es gibt mindestens eine Unicode Bibliothek ( http://www.yoshidam.net/Ruby.html bzw. http://raa.ruby-lang.org/list.rhtml?name=Unicode). In comp.lang.ruby kam das Thema schon häufiger zur Sprache. Dort wurden u. a. 'jcode', 'iconv' und 'shim' genannt (offenbar spätestens seit der 1.8.1 alles Module der Standarddistribution). Ungünstig für Recherchen ist, dass es einen thematisch verwandten W3C-Standard namens Ruby gibt: http://www.w3.org/TR/ruby/
- Upgrade 08/2006: http://redhanded.hobix.com/inspect/nikolaiSUtf8LibIsAllReady.html, siehe außerdem http://wiki.rubygarden.org/Ruby/page/show/NetSendApi
- -- SDö
"Syntax angelehnt an gängige Programmiersprachen" - an welche Syntax außer der von Ada noch? Was heißt "kommunikativ"? Was sind Enumerables?
Sind reguläre Ausdrücke in Ruby festverdrahtet? Das fände ich ja nicht lobenswert. Wenn sie durch Bibliotheksfunktionen implementiert werden, ist das sicher sauberer, aber dann ist es keine Eigenschaft der Sprache, sondern der (Standard-)Bibliotheken, und das gibt es heute für fast alle Sprachen, Nicht-Skriptsprachen eingeschlossen.
Ich habe mal in einer Linux-Zeitschrift etwas über Ruby überflogen. Da ging es darum, dass Zahlen Objekte sind und dass eine FOR-Schleife ein Zahlenobjekt in jedem Durchlauf ändert. Muss ich mir so Smalltalk vorstellen? Ich finde, dass Zahlen das beste Beispiel sind, dass man mit Objektorientierung eben nicht alles elegant modellieren kann, denn Operationen wie Addition und Multiplikation hängen von den Typen zweier Operanden ab und nicht nur von einem zentralen Objekt.
Und mal noch was sarkastisches: Die höhere Fehlerdichte in den existierenden Programmen oder Bibliotheken hat wirklich nur etwas mit dem Entwicklungsstadium zu tun und nichts mit der dynamischen Typisierung? -- HenningThielemann
- zu "Syntax angelehnt an gängige Programmiersprachen": Ist als Gegensatz zu vermeintlich exotischeren Sprachen wie Smalltalk zu verstehen. Ruby fühlt sich für einen Smalltalker ein bisschen wie Smalltalk an, schreckt aber jemanden, der vorher Perl oder Java gemacht hat, nicht durch eine ähnlich ungewöhnliche Syntax ab.
- zu >>Was heißt "kommunikativ"?<<: Ruby lässt sich mit C, Java, .NET, SOAP, usw. verwenden. Ich interpretiere das aber weniger als technische sondern eher als kulturelle Aussage. Wer mit einer nicht als Skriptsprache verunglimpften Hochsprache arbeitet, tendiert eher dazu, alles in der jeweiligen Sprache abzufackeln. Skriptsprachen werden dagegen oft als Klebstoff für Dinge verwendet, die ansonsten nicht so ganz kompatibel wären.
- zu "Was sind Enumerables?": Ein Modul, dass eine Klasse per MixIn mit für für Containerklassen üblichen Methoden ausstatten kann.
- zu "Sind reguläre Ausdrücke in Ruby festverdrahtet?": Ja, Ruby folgt hier dem Vorbild Perl.
- zu "Da ging es darum, dass Zahlen Objekte sind und dass eine FOR-Schleife ein Zahlenobjekt in jedem Durchlauf ändert. Muss ich mir so Smalltalk vorstellen?" Nicht das Objekt wird geändert, sondern nur der Inhalt der Laufvariable. Zahlen sind zwar Objekte, aber durchaus auch literal. Eine 7 kann nicht einfach so zu einer 8 werden. Der Punkt ist: Zahlen und boolsche Werte haben Methoden und die können auch Blöcke als Argument annehmen. Damit lassen sich dann eigene Kontrollstrukturen nachimplementieren. Kontrollstrukturen müssen also gemäß deines eigenen Arguments nicht in der Sprache verankert sein. ;-)
- zu "Ich finde, dass Zahlen das beste Beispiel sind, dass man mit Objektorientierung eben nicht alles elegant modellieren kann, denn Operationen wie Addition und Multiplikation hängen von den Typen zweier Operanden ab und nicht nur von einem zentralen Objekt.": Casts sind ja nun auch nicht gerade als elegant zu bezeichnen. Rechenoperationen sind in Smalltalk über Double-Dispatch implementiert, d. h. der Typ des Ersten Operanden entscheidet darüber, mit welcher Methode dem zweiten Operanden das Ergebnis berechnet wird. Smalltalk oder Ruby auf Objektorientierung zu redzieren, wird beiden Sprachen nicht gerecht.
- zu "Und mal noch was sarkastisches: Die höhere Fehlerdichte in den existierenden Programmen oder Bibliotheken hat wirklich nur etwas mit dem Entwicklungsstadium zu tun und nichts mit der dynamischen Typisierung?": Ruby-Bibliotheken können auch in C implementiert sein und viele sind es auch. Deshalb die Frage: Woher hast du das mit der höheren Fehlerdichte, kannst du das mit Zahlen belegen? (Keine Ahnung, wer das da oben als Nachteil aufgelistet hat.)
- --SDö
/Aktuelles
/Zitate
RubyOnRails
Siehe auch RubyResourcen
KategorieProgrammierSprache KategorieSkriptSprachen KategorieRuby
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 12. Februar 2007 0:15 (diff))