Sieben Wochen, sieben Sprachen (Prags)
von: Bruce A. Tate
O'Reilly Verlag, 2012
ISBN: 9783868994681
Sprache: Deutsch
360 Seiten, Download: 3637 KB
Format: EPUB, PDF, auch als Online-Lesen
2.2 Tag 1: Ein Kindermädchen finden
Lässt man alle Zauberei außer Acht, ist Mary Poppins in erster Linie ein großartiges Kindermädchen. Wenn Sie eine Sprache lernen, besteht ihre Aufgabe darin, zu lernen, wie man sie benutzt, um die Aufgaben zu erledigen, die Sie bereits erledigen können. Betrachten Sie diese erste Konversation mit Ruby als Dialog. Fließt die Unterhaltung locker dahin, oder ist sie eher schwerfällig? Wie sieht das Programmiermodell im Kern aus? Wie werden Typen behandelt? Lassen Sie uns einige Antworten suchen.
Schnelleinstieg
Wie versprochen, werde ich mit Ihnen keinen veralteten Installations-prozess durchgehen, doch die Ruby-Installation ist ein Klacks. Besuchen Sie einfach http://www.ruby-lang.org/en/downloads/
, wählen Sie Ihre Plattform und installieren Sie Ruby 1.8.6 (oder höher). Ich verwende in diesem Kapitel die Ruby-Version 1.8.7. Die Version 1.9 weist einige kleine Unterschiede auf. Wenn Sie unter Windows arbeiten, können Sie den Ein-Klick-Installer nutzen; bei OS X Leopard (und höher) wird Ruby auf den Xcode-Disks mitgeliefert.
Um Ihre Installation zu testen, geben Sie einfach irb
ein. Wenn Sie keine Fehler sehen, können Sie den Rest dieses Kapitels angehen. Wenn doch, nur zu: Nur die wenigsten Installationsprobleme sind einzigartig. Google weist Ihnen den Weg.
Ruby über die Konsole nutzen
Wenn Sie es noch nicht getan haben, geben Sie jetzt irb
ein. Sie sollten sich nun in Rubys interaktiver Konsole befinden. Sie geben einen Befehl ein und erhalten eine Antwort. Probieren Sie Folgendes:
Wenn Sie Ruby noch nicht kennen, gibt dieses kurze Beispiel viel über die Sprache preis. Sie wissen, dass Ruby interpretiert werden kann. Tatsächlich ist Ruby fast immer interpretiert, auch wenn einige Entwickler an virtuellen Maschinen arbeiten, die Ruby in Bytecode kompilieren, während es ausgeführt wird. Ich habe keine Variablen deklariert. Alles, was ich gemacht habe, hat einen Wert zurückgeliefert, auch wenn ich Ruby nicht darum gebeten habe. Tatsächlich gibt jedes Stück Code in Ruby etwas zurück.
Sie haben zwei Arten von Strings gesehen. Ein einfaches Anführungszeichen um einen String bedeutet, das der String literal interpretiert werden soll. Doppelte Anführungszeichen führen zur String-Evaluierung. Zu den Dingen, die der Ruby-Interpreter evaluiert, gehört die String-Substitution. In unserem Beispiel hat Ruby den Wert, der vom Code language
zurückgegeben wird, in den String eingefügt. Weiter geht’s.
Das Programmiermodell
Eine der ersten Fragen, die man bei einer Sprache beantworten sollte, lautet: „Welches Programmiermodell hat sie?“ Darauf gibt es nicht immer eine einfache Antwort. Sie kennen wahrscheinlich prozedurale Sprachen wie C, Fortran oder Pascal. Die meisten von uns verwenden derzeit objektorientierte Sprachen, doch viele dieser Sprachen besitzen auch prozedurale Elemente. Beispielsweise ist 4
in Java kein Objekt. Sie haben dieses Buch vielleicht ausgewählt, um funktionale Sprachen kennenzulernen. Einige dieser Sprachen (wie Scala) vermischen Programmiermodelle, indem sie objektorientierte Konzepte einbinden. Es gibt Dutzende von anderen Programmiermodellen. Stack-basierte Sprachen wie PostScript oder Forth verwenden einen oder mehrere Stacks als zentrales Element der Sprache. Logikbasierte Sprachen wie Prolog bauen auf Regeln auf. Prototypsprachen wie Io, Lua und Self verwenden das Objekt statt der Klasse als Basis für die Objektdefinition und sogar die Vererbung.
Ruby ist eine rein objektorientierte Sprache. In diesem Kapitel werden Sie sehen, wie weit Ruby dieses Konzept treibt. Sehen wir uns einige grundlegende Objekte an:
>> 4 => 4 >> 4.class => Fixnum >> 4 + 4 => 8 >> 4.methods => ["inspect", "%", "<<", "singleton_method_added", "numerator", ... "*", "+", "to_i", "methods", ... ]Ich habe in der Liste einige Methoden weggelassen, aber ich glaube, Sie haben verstanden. Bei Ruby ist nahezu alles ein Objekt, und zwar bis hinunter zu jeder einzelnen Zahl. Eine Zahl ist ein Objekt der Klasse Fixnum
, und die Methode methods
liefert ein Array von Methoden zurück (Ruby stellt Arrays in eckigen Klammern dar). Tatsächlich können Sie mit dem Punktoperator jede Methode auf ein Objekt anwenden.
Entscheidungen
Programme werden geschrieben, um Entscheidungen zu treffen. Man kann also erwarten, dass die Art und Weise, in der eine Sprache Entscheidungen trifft, ein zentrales Konzept darstellt, das die Art und Weise formt, in der man in einer Sprache kodiert und denkt. Ruby ist in vielerlei Hinsicht wie die meisten objektorientierten und prozeduralen Sprachen auch. Sehen Sie sich die folgenden Ausdrücke an:
>> x = 4 => 4 >> x < 5 => true >> x <= 4 => true >> x > 4 => false >> false.class => FalseClass >> true.class => TrueClassRuby besitzt also Ausdrücke, die zu true
(wahr) oder false
(falsch) evaluieren. Passenderweise sind true
und false
Objekte erster Güte. Sie können mit ihnen konditionalen Code ausführen:
Mir gefällt Rubys Entscheidung für einfache Conditionals wirklich gut. Sie können sowohl die Blockform (if
bedingung, anweisungen, end
) als auch die einzeilige Form (anweisung if
bedingung) verwenden, wenn Sie if
oder unless
verwenden. Manche werden von der einzeiligen if
-Variante abgeschreckt. Was mich betrifft, erlaubt sie es mir, einen (einzelnen) Gedanken in einer (einzigen) Zeile Code auszudrücken:
Sicher, Sie können das obige Beispiel auch in einem Block ausdrücken, aber das würde diesen eigenständigen, schlüssigen Gedanken unnötig verwässern. Wenn Sie eine einfache Idee in einer einzigen Zeile zusammenfassen können, wird das Lesen des Codes leichter. Ich mag auch die Idee von unless
(„wenn nicht“). Sie können das Gleiche auch mit not
oder !
beschreiben, aber unless
drückt die Idee wesentlich besser aus.
while
und until
sind gleich:
Beachten Sie, dass =
der Zuweisung dient und ==
auf Gleichheit prüft. Bei Ruby hat jedes Objekt seine eigene Vorstellung von Gleichheit. Zahlen sind gleich, wenn ihre Werte gleich sind.
Sie können auch andere Werte als true
und false
als Ausdrücke verwenden: