Sieben Wochen, sieben Sprachen (Prags)

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

geeignet für: geeignet für alle DRM-fähigen eReader geeignet für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Apple iPod touch, iPhone und Android Smartphones Online-Lesen PC, MAC, Laptop


 

eBook anfordern

Mehr zum Inhalt

Sieben Wochen, sieben Sprachen (Prags)



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:

>> puts 'hello, world' hello, world => nil >> language = 'Ruby' => "Ruby" >> puts "hello, #{language}" hello, Ruby => nil >> language = 'my Ruby' => "my Ruby" >> puts "hello, #{language}" hello, my Ruby => nil

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 => TrueClass

Ruby 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:

>> x = 4 => 4 >> puts 'This appears to be false.' unless x == 4 => nil >> puts 'This appears to be true.' if x == 4 This appears to be true. => nil >> if x == 4 >> puts 'This appears to be true.' >> end This appears to be true. => nil >> unless x == 4 >> puts 'This appears to be false.' >> else ?> puts 'This appears to be true.' >> end This appears to be true. => nil >> puts 'This appears to be true.' if not true => nil >> puts 'This appears to be true.' if !true => nil

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:

order.calculate_tax unless order.nil?

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:

>> x = x + 1 while x < 10 => nil >> x => 10 >> x = x - 1 until x == 1 => nil >> x => 1 >> while x < 10 >> x = x + 1 >> puts x >> end 2 3 4 5 6 7 8 9 10 => nil

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:

>> puts 'This appears to be true.' if 1 This appears to be true. => nil >> puts 'This appears to be true.' if 'random string' (irb):31: warning: string literal in condition This appears to be true. => nil >> puts 'This appears to be true.' if 0 This appears to be true. => nil >> puts 'This appears to be true.' if true This appears to be true. => nil >> puts 'This appears to be true.' if false => nil >> puts 'This...

Kategorien

Service

Info/Kontakt