4 Punkte von ffdd270 2020-07-30 | 3 Kommentare | Auf WhatsApp teilen

Ab Ruby 3 werden Type Annotations ähnlich wie in TypeScript hinzugefügt. Dieser Artikel erklärt, welche Überlegungen Matz und das Ruby-Committer-Team bei der Einführung statischer Typen in Ruby angestellt haben und welche Lösungsansätze sie gewählt haben. Unten folgt eine Zusammenfassung.

In Ruby 3 kommt mit RBS eine neue Sprache hinzu, die zusammen mit Ruby 3 ausgeliefert wird.

RBS ist eine Sprache für Type Annotations in Ruby.

  • Hintergrund der Einführung

(untype wurde als dynamischer Typ übersetzt.)

Typisierung und dynamische Typisierung sind in Programmiersprachen seit Langem ein Gegensatz. Dynamische Typisierung ermöglicht schnelle Entwicklung, hat aber Nachteile beim Skalieren von Teams und Codebasen; Typisierung eignet sich besser für große Systeme, ist dafür aber weniger flexibel.

Um die Vorteile beider Ansätze zu kombinieren, führte C# die dynamic-Funktion ein, die Typprüfungen bis zur Laufzeit aufschiebt; PHP und Python bieten optionale Typprüfung. TypeScript entschied sich für eine Typsprache für eine ursprünglich untypisierte Sprache.

Um die Vorteile beider Ansätze zu nutzen, hat Ruby mit RBS eine standardisierte Sprache zur Typdefinition geschaffen.

  • Wie sieht RBS aus?

RBS ähnelt den .h-Dateien von C/C++/ObjC oder den .d.ts-Dateien von TypeScript. Der Vorteil dieses Ansatzes ist, dass man die Vorteile der Typprüfung nutzen kann, ohne bereits geschriebene Ruby-Dateien ändern zu müssen.

In RBS werden die Eigenschaften einer Klasse und die Typen ihrer Methoden definiert. RBS ist eine Sprache zur Beschreibung der Struktur von Ruby-Programmen und bietet Entwicklerinnen und Entwicklern einen Überblick über den Code sowie über definierte Klassen und Methoden. Der größte Vorteil ist, dass Typdefinitionen sowohl für die Implementierung als auch für die Ausführung geprüft werden können.

  • Kernfunktionen von RBS

Die Entwicklung eines Typsystems für eine dynamische Sprache unterscheidet sich von der für bereits statisch typisierte Sprachen. Es gibt bereits viel Ruby-Code auf der Welt, und ein Typsystem für Ruby musste möglichst viel bestehenden Code unterstützen.

Deshalb werden hier zwei wichtige Eigenschaften von Ruby-Code und die Lösungsansätze von RBS vorgestellt.

  • Duck Typing

Duck Typing ist eine Technik, bei der der Typ unbekannt ist, aber davon ausgegangen wird, dass bestimmte Methoden vorhanden sind. Um diese Technik zu unterstützen, hat RBS interface eingeführt, sodass geprüft werden kann, ob ein Argument über die entsprechenden Methoden verfügt.

  • Nicht-Uniformität

Dies ist ein weiteres Code-Muster, bei dem Ausdrücke Werte unterschiedlicher Typen annehmen können. Es ist auch in Ruby beliebt. RBS ermöglicht dies ebenfalls durch die Unterstützung von Union-Typen und Methodenüberladung.

  • Ruby-Programmierung mit Typen

Hier werden die wichtigsten Vorteile von RBS vorgestellt.

  • Es können mehr Bugs gefunden werden.

  • Nil-Sicherheit

  • Bessere IDE-Integration.

  • Leitfaden für Duck Typing

3 Kommentare

 
heycalmdown 2020-07-30

https://crystal-lang.org – Ich bin gespannt, wie Crystal sich zu RBS verhalten wird. (Crystal ist eine kompilierte Sprache, die die Ruby-Syntax übernommen hat.)

 
ffdd270 2020-07-30

; m; Der Text wurde in der Mitte immer wieder abgeschnitten, deshalb habe ich den gesamten Code entfernt. Es tut mir leid, dass ich dadurch unbeabsichtigt gespammt habe ..

 
xguru 2020-07-30

Ah, das liegt offenbar an dem `