Rezension zu O'Reillys »Ruby kurz & gut«
Das Buch ist eine schöne Referenz, die mit den Befehlsschaltern für Ruby und der Programmausführung beginnt, dann die Schlüsselwörter und Syntax gefolgt von der Beschreibung der Methoden in den Grundklassen IO, Object, String, Array und Hash behandelt und mit der Beschreibung von Ruby-Werkzeugen wie irb, rdoc, gems und rake endet. Daran schließt sich noch ein Glossar und ein gut ausgebauter Index an.
Für gute 150 Seiten ist es ein umfangreiches Programm, aber ich finde es gut gelungen. Die Erklärungen werden ohne große Umschweife geliefert und wenn man die Ordnung des Buches erst verinnerlicht hat, findet man die gesuchte Information schnell.
Ich habe das Buch mit dem Ziel, Ruby zu lernen, erworben und kann sagen, dass mir das Buch geholfen hat und für den Anfang völlig ausreichend war. Ich wollte nicht wissen, was eine Schleife oder Mehrfachverzweigung ist, sondern nur, wie man sie in Ruby macht – genau das und nur das liefert das Buch. Dies macht es auch später nützlich, wenn man schnell einen Erinnerungsanstoß und nicht die komplette Geschichte zu einer Frage braucht. Beispiele werden nur zur besseren Darstellung verwendet, aber umfangreichen Code gibt es in dem Buch nicht.
Für richtige Programmieranfänger ist das Buch zu kurz und daher nicht geeignet. Diese können es nur als Zusatz zu einer anderen Anleitung nutzen, denn man muss wissen, was Klassen, reguläre Ausdrücke und Exception-Handling sind – das Buch beschreibt nicht die Konzepte nur die Umsetzung in Ruby.
Die Sprache des Buches ist im Ganzen angenehm zu lesen, auch wenn
der Übersetzer hier und da einige Rätsel eingebaut hat:
Polsterungen
bei Zeichenketten (Padding; meiner Meinung
nach wäre Auffüllung
besser) oder Änderungen vor Ort
(in place; meiner Meinung nach wäre am Objekt
besser).
Allerdings sollte man beim Lesen vorsichtig sein, denn es gibt noch einige verbesserungswürdige Stellen in dem Buch:
- Seite 11, Ruby ausführen: Die URL könnte statt dem en mit de sein.
- Seite 12, Option -K: Ein Verweis auf die Seite mit der Tabelle wäre hilfreich, da die Tabelle sehr weit hinten steht.
- Seite 13, Abschnitt über Shebang-Zeile: Hier sollte man
noch auf die Ausführungsrechte (
chmod +x) der Datei hinweisen. - Seite 16, elsif: Der Text wurde direkt von else kopiert und enthält daher keinen Bezug auf die neue Bedingung.
- Seite 25–26: In der Tabelle verweist $: auf $LOAD_PATH und umgekehrt.
- Seite 27, Tabelle 4, true und false: Ich würde
jeweils oder boolesches weglassen.
Logisches oder boolesches
ist redundant. - Seite 27, Tabelle 5, ARGF: bei wurde. fehlt das N am Ende.
- Seite 42, case-Anweisung: Es sollte mit die Syntax when A, B: erwähnt werden.
- Seite 44, Ternäroperator: in der letzten Zeile ist
arguments
nicht übersetzt, obwohl es im Beispiel übersetzt wurde. - Seite 50, Klassenmethoden, Beispiel: Die Einheit für
Flächen ist Quadratmeter. Die Ausgabe Die Fläche dieses
Rechtecks ist 4,25 Meter. für den Aufruf
Area.rect 4.25, 1ist sprachlich falsch. - Seite 52, Vererbung: Ich fände es noch sinnvoll zu
erwähnen, was mit der Sichtbarkeit von geerbten Methoden passiert
und dass man geerbte Methoden mit
undeflöschen kann. - Seite 55–56, Beispiel
def roll
: Der erste Würfel ist merkwürdig, auf zwei Seiten steht eine Eins, aber eine Seite mit einer Sechs gibt es nicht. Ich würde einfach Eins addieren und eine Parallelzuweisung verwenden:r1, r2 = rand(6) + 1, rand(6) + 1 - Seite 58, Beispiel mit mkdir: Die Zahl muss oktal angegeben werden, sonst passt das mit den Rechten nicht.
- Seite 58,
Eine neue Datei erzeugen
, zweiter Absatz: Was soll der x-Modus beim Öffnen von Dateien sein? - Seite 64: Tabelle 9 hat den gleichen Inhalt wie Tabelle 4. Ein Verweis sollte also ausreichend sein.
- Seite 66, erster Absatz: Die Wortwahl Behälter
in
Das Argument 1 ist ein allgemeiner Behälter für allgemeine Fehler
ist unglücklich. - Seite 69: Die ersten beiden Punkte sind gleich. Einer sollte weg.
- Seite 76:
obj.method_missing
würde ich mit auf Seite 70 aufführen, auch wenn es technisch vielleicht in Kernel definiert wird. - Seite 76, open: Bei dem Block fehlt die öffnende Klammer.
- Seite 77, printf: Bei write fehlt beide Male die schließende Klammer.
- Seite 78, IO.select: Den Eintrag Kernel#select gibt es nicht.
- Seite 82, bei
?c
: stattZeichengerät
lieber zeichenorientiertes Gerät verwenden, da Zeichengerät eher mit einem Pinsel assoziiert wird - Seite 82, bei
?g
: sollte das\CF
weg - Seite 85, bei put fehlt zwei Mal rechts das Zeichenkettenende
- Seite 85, für die Klasse String: sollte noch ' und der Unterschied zu " erwähnt werden
- Seite 85, bei
Allgemein begrenzte Strings
: es sollte erwähnt werden, dass r und w ebenfalls eine spezielle Bedeutung haben, ggf. mit einem Verweis auf den entsprechenden Abschnitt - Seite 87, Taballe 15: bei
\b
fehlt das b - Seite 90, letzter regulärer Ausdruck: Die eckigen Klammern um die runden Klammern sind nicht sinnvoll. Der Ausdruck funktioniert zwar, aber eine Menge mit drei gleichen Elementen (\d) zu definieren, ist nicht sinnvoll.
- Seite 91, zweiter Absatz: Die Erklärung des Operators ? und die der eckigen Klammern ist falsch.
- Seite 94, Tabelle 17: Der Ausdruck
(?ix-ix: )
sieht merkwürdig aus. Zuerst wird ix aktiviert und sofort wieder deaktiviert. - Seite 96, bei
str[...
ist die schließende, eckige Klammer ganz am Ende zu viel - Seite 99, bei str.length: str.size ist nirgends aufgeführt, der Verweis ist daher falsch
- Seite 107, bei p: da schaut der LaTeX-Befehl \emph raus
- Seite 109, erste Code-Zeile: in der Berechnung kann e= weg
- Seite 129,
Ruby interaktiv
: Zu Beginn des Absatz' würde ich eher interaktives Ruby sagen. - Seite 133, bei display: ich würde eher anzuzeigenden und nicht angezeigten sagen
- Seite 146, Befehl
sudo gem install
: Die Warnung von sudo ist uninteressant. Die sechs Zeilen kann man sich sparen. - Seite 150, Aliasing:
Mit dem Ruby-Schlüsselwort alias können Sie einen Alias […] erstellen
. Irgendwie sollte nochmal mit anderen Worten ausgedrückt werden, was ein Alias ist. Vielleicht lässt sich das Wort Zweitname dafür verwenden. Wenn man Aliasing allerdings mit Alias erstellen erklärt, finde ich das nicht sehr hilfreich. - Seite 151, Anweisung: Die Erklärung für eine Anweisung, finde ich auch nicht hilfreich.