© Liashko/Shutterstock.com
Entwickler Magazin
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.

Tam Hanna


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/downloads/ ein fertiges Installationspaket. Unser erstes Programm mag auf den ersten Blick banal erscheinen, illustriert aber eine für spätere Versuche immens wichtige Vorgehensweise. Den Quellcode zeigt Listing 1.

Listing 1tamhan@ubuntu:~$ irb irb(main):001:0> def sagWas(iwas) irb(main):00...

Entwickler Magazin
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.

Tam Hanna


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/downloads/ ein fertiges Installationspaket. Unser erstes Programm mag auf den ersten Blick banal erscheinen, illustriert aber eine für spätere Versuche immens wichtige Vorgehensweise. Den Quellcode zeigt Listing 1.

Listing 1tamhan@ubuntu:~$ irb irb(main):001:0> def sagWas(iwas) irb(main):00...

Neugierig geworden?


   
Loading...

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