© Liashko/Shutterstock.com
Metaprogrammierung mit Ruby

Objektorientierter Rubin


Kodierer und Compiler leben seit Anbeginn der Zeit nach einem strengen Konzept der Arbeitsteilung: Der Programmierer schreibt Code, der von seiner Entwicklungsumgebung ausgeführt wird. Wie dieses Konzept mit der spannenden Historie von Ruby zusammenhängt, erläutert dieser Artikel.

Das Konzept der Metaprogrammierung versucht, diese althergebrachte Harmonie zu stören. Die Idee dahinter ist, dass Code – zumindest theoretisch – Code generieren könnte. An sich ist diese Idee nichts Neues; Windows 1.0 nutzte zwecks Performancesteigerung eine Blitter-Routine, die sich vor der Anwendung „selbst kompilierte“ und so unnötige Sprünge und Selektionen beseitigte.

Was ist Ruby?

Ein japanischer Student namens Yukihiro Matsumoto – Ruby-Nutzer bezeichnen ihn normalerweise als „Matz“ – war mit den im Jahre 1993 existierenden Skriptsprachen unzufrieden. Er empfand Perl als nicht ausreichend mächtig, während Python seiner Ansicht nach nicht ausreichend objektorientiert war. Als oberste Maxime avisierte er, dass die Nutzung der Programmiersprache dem Entwickler Freude bereiten müsse. Dies wirkt sich auch auf die Community aus: Dem Autor sind nur wenige Gemeinschaften von Entwicklern bekannt, die einen ähnlich angenehmen Umgangston pflegen.

Das Resultat seiner Bemühungen war eine streng objektorientierte Sprache, die nicht statisch typisiert ist. Stattdessen kommt das aus JavaScript bekannte Konzept des Duck Typings zum Einsatz: Wenn ein Objekt die notwendigen Methoden implementiert, so gilt es als zur Klasse zugehörig. Dies ist für die Metaprogrammierung wichtig. Ruby erlaubt Entwicklern das Einpflegen von neuen Funktionen und Variablen zur Laufzeit: Es ist ohne Probleme möglich, eine bestehende Klasse als Reaktion auf ein Ereignis um eine neue Funktion zu erweitern. Der Aufbau dieser Methode darf von den vorliegenden Parametern beeinflusst werden, wodurch die Sprache eine immense Flexibilität erreicht.

Von C++ oder Java umsteigende Entwickler stolpern zudem über zwei kleine Besonderheiten des Sprachstandards: Erstens sind die Regeln für boolesche Typen wesentlich strikter, zweitens liefert alles – also auch eine Selektion – einen Wert zurück.

Mine auf!

Nach diesen einführenden Überlegungen ist es an der Zeit, erste Schritte in die Welt von Ruby zu setzen. Wer, wie der Autor dieser Zeilen, unter Unix arbeitet, muss normalerweise nur den Befehl irb eingeben, um einen Ruby-Interpreter zu aktivieren. Unter Windows lebende Entwickler finden unter https://www.ruby-lang.org/de/dow...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang