heise online Logo
Anmelden
Menü
  • c't – Magazin für Computertechnik
  • iX – Magazin für professionelle Informationstechnik
  • MIT Technology Review – Das Magazin für Innovation von Heise
  • c't Fotografie - Das Magazin rund ums digitale Bild
  • Mac & i – Nachrichten, Tests, Tipps und Meinungen rund um Apple
  • Make – Kreativ mit Technik
  • Alle Magazine im Browser lesen
IT News
  • Newsticker
  • heise Developer
  • heise Netze
  • heise Open Source
  • heise Security
Online-Magazine
  • heise+
  • Telepolis
  • heise Autos
  • TechStage
  • tipps+tricks
Services
  • Stellenmarkt heise Jobs
  • Weiterbildung
  • heise Download
  • Preisvergleich
  • Whitepaper/Webcasts
  • DSL-Vergleich
  • Netzwerk-Tools
  • Spielen bei Heise
  • Loseblattwerke
  • iMonitor
  • IT-Markt
Heise Medien
  • heise Shop
  • Abo
  • Veranstaltungen
  • Arbeiten bei Heise
  • Mediadaten
  • Presse
Anzeige Go! Schule morgen
Newsletter heise-Bot heise-Bot Push Nachrichten Push Push-Nachrichten
iX Magazin für professionelle Informationstechnik
  • Kontakt
  • Forum
  • News
    • 7-Tage-News
    • News-Archiv
  • Heftartikel
    • Aktuelles Heft
    • Alle Hefte
    • Artikel-Archiv
  • Abo & Shop
    • Abonnieren
    • Einzelhefte kaufen
    • Heftarchiv auf DVD und USB-Stick
    • Sonderhefte
    • iX extra
  • Apps
    • iOS
    • Android
    • Amazon-Store
    • FAQ zur iX-App
  • Veranstaltungen
  • Service
    • Listings/Downloads
    • Security-Awareness
    • Die iX-Redaktion
    • Newsletter
    • NiX Spam
    • Mediadaten
    • Presse-Informationen

  1. iX
  2. Heft
  3. 10/2008
  4. Edelsprachlich

Edelsprachlich

Denny Carl

Wann Ruby 2.0 Realität wird, steht noch nicht fest. Mit der aktuellen Entwicklerversion 1.9 können Programmierer ihre Software aber schon auf die Zukunft vorbereiten.

Die ursprünglich aus Japan stammende und hierzulande lange wenig beachtete dynamische Programmiersprache Ruby hat mit dem Web-Framework Ruby on Rails weltweit immens an Popularität gewonnen. Dementsprechend hoch ist die Erwartungshaltung der wachsenden Community an eine Weiterentwicklung der objektorientierten Sprache. Die Version 1.9 gibt mit ihren vielen Änderungen und Verbesserungen einen Ausblick auf die nächste Ruby-Generation.

1993 begann Yukihiro Matsumoto mit seinen Arbeiten an einer Programmiersprache, da er damals vorherrschende wie Perl oder Lisp als unzulänglich empfand. Bei dem Entwurf von Ruby sollten deren Fehler nicht mehr in Erscheinung treten und nur die brauchbaren Eigenschaften vereint werden. Weihnachten 1995 erschien Ruby 0.95. Fast exakt zwölf Jahre später stellte der meist nur Matz genannte Erfinder von Ruby Version 1.9 vor, die einen neuen Meilenstein in der Ruby-Entwicklung einleitet. Sie gilt mehr als Experimentierfeld und soll keinesfalls die aktuell als stabil gekennzeichnete und für den Produktiveinsatz vorgesehene Version 1.8.7 ablösen. Das soll Ruby 2.0 vorbehalten bleiben, dessen Erscheinungsdatum jedoch noch nicht feststeht. Ruby 1.9, von Matz Bleeding Edge genannt, bietet jedoch die Gelegenheit, eigene Programme und Bibliotheken auf Ruby 2.0 und dessen zu erwartenden Neuerungen vorzubereiten.

Besser: Performance und Design

Bei der Entwicklung von Ruby 1.9 galt es, drei Hauptziele umzusetzen: Performance-Verbesserung, Steigerung der Leistungsfähigkeit der Sprache und die Korrektur von Designfehlern beim Entwurf von Ruby.

Onlinequellen

  • Ruby 1.9 Development Release
  • Changes in Ruby 1.9
  • Hinweise zur Portierung auf Ruby 1.9

Ruby-on-Rails-Entwickler bemängeln des Öfteren die fehlende Performance der Sprache, insbesondere beim Einsatz des Frameworks auf Websites mit großen Zugriffsraten. Ruby 1.9 hat in ersten Tests eine in Teilen bis zu 50-fach höhere Geschwindigkeit gezeigt. Ganze Anwendungen konnten laut Entwicklerangaben bis zu zehnmal schneller ausgeführt werden. War die Ruby-Implementierung auf der virtuellen Maschine von Java (JRuby) bisher schneller als Ruby 1.8, so überholt Ruby 1.9 nun diese.

Die Leistungsfähigkeit der Sprache hat das Hinzufügen neuer Eigenschaften sowie die Aufnahme von bisher externen Funktionen in den Ruby-Core erhöht. Unsaubere Sprachkonstrukte haben die Entwickler beseitigt oder korrigiert. Dies führte allerdings dazu, dass Ruby 1.9 zu Vorgängerversionen nicht vollständig kompatibel ist.

Wichtige Inkompatibilitäten

Mit Ruby 1.9 sind Blockparameter grundsätzlich lokale Variablen. Die Verwendung außerhalb des Blocks existierender Objekte als Blockparameter ist nicht mehr möglich.

# Ruby 1.8.7
a = 10
2.times { |a| a = 2}
a # => 2
# Ruby 1.9
a = 10
2.times { |a| a = 2}
a # => 10

Eine weitere bedeutsame Neuerung taucht in der String-Klasse auf. Sie ist kein Enumerable mehr, sondern besitzt auf Zeichenketten zugeschnittene, eigene Iteratoren wie String#each_char, String#each_byte und String#each_line statt nur String#each.

Darüber hinaus verarbeitet Ruby Strings nicht mehr als Byte-, sondern als echte Zeichenketten. Dementsprechend gibt der Zugriff auf ein Zeichen über dessen Index nicht mehr den ASCII-Wert, sondern das Zeichen selbst zurück.

Mit dieser Änderung einher geht die längst überfällige Unterstützung von Encodings und Unicode. Über die aus Python bekannten Magic Comments kann ein Programmierer ein Skript so einstellen, dass es ASCII-8BIT (Standard), UTF-8, EUC-JP oder viele andere Zeichenstandards verwendet – nun versteht Ruby Japanisch.

# Ruby 1.8.7
"Zeichenkette"[0] # => 90
# Ruby 1.9
"Zeichenkette"[0] # => "Z"
"Zeichenkette".encoding # =>
#<Encoding:ASCII-8BIT>

Weitere Neuerungen

Klassenvariablen behandelt Ruby 1.9 anders. Eine Unterklasse kann den Wert einer Klassenvariablen lesen. Bei deren Veränderung wird jedoch eine lokale Kopie in der Unterklasse erzeugt. Der Wert der Klassenvariablen in der Superklasse bleibt unverändert.

Optionale Parameter einer Methode müssen nun nicht mehr zwingend am Ende der Parameterliste stehen, obwohl dies sicherlich gewöhnungsbedürftig sein dürfte.

def test(a, b=2, c)
puts "#{a}, #{b], #{c}"
end
test 5,6 # => "5, 2, 6"
test 5,6,7 # => "5, 6, 7"

Ein großes Ärgernis stellt bisher bisweilen die Tatsache dar, dass sich die bei der Erzeugung festgelegte Reihenfolge von Hash-Elementen unvorhersehbar verändern kann. Mit Ruby 1.9 ist das Geschichte.

h = {:a => 1, :b => 2, :c => 3}
h[:d] = 4
# Ruby 1.8.7
h.values # => [1, 3, 2, 4]
# Ruby 1.9
h.values # => [1, 2, 3, 4]

Ruby 1.9 spendiert Entwicklern einige alternative Formen der Notation. So kann man ein Lambda nun mit „->“ notieren. Die Schlüssel-Wert-Paare eines Hashes kann man nun auch durch einen Doppelpunkt trennen.

Bei Verwendung von Iterator-Methoden wie times oder each ohne Block erzeugt Ruby daraus ein Enumerator-Objekt, das beispielsweise später verwendet werden kann. Es handelt sich um sogenannte externe Iteratoren.

Rake, YARV, Oniguruma

Offiziell ist Rake jetzt das Ruby-Build-Tool; bisher musste es jeder eigenständig installieren. Gleiches gilt für den komfortablen Paketmanager Rubygems.

YARV steht für Yet Another Ruby Virtual Machine und bezeichnet eine der größten Neuerungen: eine virtuelle Maschine, die aus Ruby erzeugten Bytecode interpretiert und somit für Verbesserungen in der Geschwindigkeit von Skripten sorgt. Diese VM existierte neben anderen schon eigenständig vor Ruby 1.9. Matz wählte YARV als die für Ruby geeignetste offiziell aus.

Echte, native Threads und damit parallele Prozesse werden mit Ruby 1.9 allmählich Wirklichkeit, obwohl es hier bislang noch Schwierigkeiten gibt.

Hinter Onigoruma steckt eine der mächtigsten Bibliotheken für reguläre Ausdrücke. Matz will sie allem Anschein nach offiziell in Ruby integrieren. JSON for Ruby ist ebenfalls fester Bestandteil der Sprache geworden und ermöglicht somit, es als Alternative für YAML als Format serialisierter Daten zu nutzen.

Fazit

Ruby 1.9 gilt als Zwischenschritt auf dem Weg zur Version 2.0. Vieles befindet sich im Umbruch und ist daher mit Vorsicht zu genießen. Ruby 2.0 soll Ergebnisse des hier nur in Auszügen Vorgestellten enthalten und nach Aussagen von Matsumoto darüber hinaus großen Wert auf Skalierbarkeit von Programmen, Daten und Entwicklerteams legen.

Version 1.9 ist spannend für alle, die den Prozess der Fortentwicklung einer inzwischen bedeutenden Programmiersprache aktiv oder passiv begleiten wollen, die auf die zu erwartenden Features der Zukunft gespannt sind oder ihre eigene Software an die neuen Features anpassen möchten.

Denny Carl
ist seit 2001 selbstständiger Webdesigner und -entwickler in Berlin.

Kommentare lesen (2 Beiträge)

Teile diesen Beitrag

https://www.heise.de/-506935 Drucken
Anzeige
  • SANS eröffnet Cyber-Ressource Center
  • Kundenservice mit künstlicher Intelligenz
  • Wann lohnt es sich, die IT-Security auszulagern?
  • Weniger Umweltbelastung durch die IT
  • Die richtige Online-Strategie für Unternehmen
  • Klimaschutz durch intelligentes Data-Center-Design
  • Mehr Nachhaltigkeit durch modernes Deployment
  • Gaia-X – die souveräne europäische Cloud
  • Chrome OS: Das bessere Betriebssystems
  • So geht intelligentes Gebäudemanagement
Eigenwerbung
Aktuelles Sonderheft
iX Kompakt Sicheres Active Directory

iX Kompakt Sicheres Active Directory

Im heise Shop erhältlich als Heft, PDF oder als exklusives Bundle mit Rabatt

Aktuelle Inhalte in der iX-App
Apps für iX

iX-App für Android, iOS und Kindle Fire

iX können Sie auch auf Tablets und Smartphones unter Android und iOS lesen – als Plus-Abonnent sogar ohne zusätzliche Kosten.

Die Apps gibt es im App Store, bei Google Play und im Amazon App Shop

We Are Developers!

Verlagsbeilage: We Are Developers!

IT- und Technologieunternehmen stellen sich vor

Verlagsbeilage: Innovation in deutschen Unternehmen

Rechenzentren und Infrastruktur

Verlagsbeilage: Server, Kabel, Cloud-Computing

iX Jetzt im heise Shop:

Eigenwerbung
iX Jahresarchive

Das digitale Jahresarchiv 2021

  • Recherchieren, Durchsuchen, Archivieren
  • Alle iX-Highlights seit 1988 digital
  • Für Abonnenten im heise Shop zum Sonderpreis
Direkt bestellen!
  • News
    • 7-Tage-News
    • News-Archiv
  • Heftartikel
    • Aktuelles Heft
    • Alle Hefte
    • Artikel-Archiv
  • Abo & Shop
    • Abonnieren
    • Einzelhefte kaufen
    • Heftarchiv auf DVD und USB-Stick
    • Sonderhefte
    • iX extra
  • Apps
    • iOS
    • Android
    • Amazon-Store
    • FAQ zur iX-App
  • Veranstaltungen
  • Service
    • Listings/Downloads
    • Security-Awareness
    • Die iX-Redaktion
    • Newsletter
    • NiX Spam
    • Mediadaten
    • Presse-Informationen
    • Kontakt
    • Mediadaten
    • Presse-Infos
  • Datenschutz
  • Cookies & Tracking
  • Impressum
  • Kontakt
  • Barriere melden
  • Mediadaten
  • 349040
  • Content Management by InterRed
  • Hosted by Plus.line
  • Copyright © 2022 Heise Medien