Dane oryginału

Ruby Wizardy. An introduction to programming for kids

Copyright © 2015 by Eric Weinstein.

All rights reserved.

Przekład WITKOM Witold Sikorski: Małgorzata Dąbkowska-Kowalik i Witold Sikorski

Projekt okładki polskiego wydania Hubert Zacharski

Wydawca Łukasz Łopuszański

Redaktor prowadzący Jolanta Kowalczuk

Redaktor Joanna Sawicka

Koordynator produkcji Anna Bączkowska

Skład wersji elektronicznej na zlecenie Wydawnictwa Naukowego PWN Tomasz Szymański

Zastrzeżonych nazw firm i produktów użyto w książce wyłącznie w celu identyfikacji.

Copyright © for the Polish edition by Wydawnictwo Naukowe PWN SA

Warszawa 2016

eBook został przygotowany na podstawie wydania papierowego z 2016 r., (wyd. I)

Warszawa 2016

ISBN 978-83-01-18568-8

Wydawnictwo Naukowe PWN SA

02-460 Warszawa, ul. Gottlieba Daimlera 2

tel. 22 69 54 321, faks 22 69 54 288

infolinia 801 33 33 88

e-mail: pwn@pwn.com.pl; www.pwn.pl

Spis treści

WPROWADZENIE

PODZIĘKOWANIA

WPROWADZENIE DO WYDANIA POLSKIEGO

ROZDZIAŁ 1
O CZYM JEST TA KSIĄŻKA

Po co uczyć się programowania (i dlaczego Ruby)

Wszyscy dorośli na pokład: instalowanie Ruby

Instalowanie w systemie Mac lub Linux

Instalowanie w systemie Windows

Pierwsze osiągnięcie: ruby zainstalowany!

Wchodzenie w buty Ruby

Poznajemy IRB

Używanie edytora tekstowego i polecenia ruby

Mac

Linux

Windows

Tworzenie pierwszego skryptu

Kiedy używać IRB, a kiedy edytora tekstu

Zgłoszenia używane w tej książce

Do czerwonego błyszczącego celu

ROZDZIAŁ 2
KRÓL I JEGO ŁAŃCUCH

Krótka opowieść

Trochę więcej o zmiennych

Operatory Ruby

Niewielki projekt dla Ciebie

Co już wiesz

ROZDZIAŁ 3
SNY O RURACH

Dylemat Czeladnika hydraulika

Pisanie i uruchamianie skryptów Ruby

Kontrola przepływu Jego Wysokości

Ulepszanie szybk–przep.rb za pomocą ciekawszych operatorów logicznych

Wielgachny projekt dla Was

Co już wiesz

ROZDZIAŁ 4
ZATRZYMANI W PĘTLI

Ruby na jednej szynie

Pętle while

Tablice

Tablice i pętle w działaniu

Musisz zdecydować, czy akceptujesz projekt

Co już wiesz

ROZDZIAŁ 5
SŁONECZNA TABLICA ORAZ MIESZANKA FIRMOWA NA KUCHENCE

Jadłodajnia Dużego Janka

Tablice w tablicach

Jeszcze więcej metod stosowanych z tablicami!

Shift! Pop! Insert!

Iteracja po tablicach

Mieszanka firmowa w Jadłodajni

Szalone zakresy

Zwiększamy zamówienia!

Co już wiesz

ROZDZIAŁ 6
GRUBY BEKON DO MIESZANKI FIRMOWEJ

Symbole!

Sposób na symbole

Symbole i tablice mieszające nareszcie razem

Poranny szczyt

Co jeszcze możemy zrobić z symbolami?

Co już wiesz

ROZDZIAŁ 7
MAGIA METOD I BLOKÓW

Metoda na szaleństwo

Definiowanie własnych metod

Użycie return i puts

Pojęcie argumentów metody

Czym jest nil?

Parametry oznaczane gwiazdką

Metody blokowe

Do legowiska Smoczycy

Co już wiesz

ROZDZIAŁ 8
(PRAWIE) WSZYSTKO JEST OBIEKTEM

Tematem naszej historii jest obiekt

Klasy i obiekty

Tworzenie pierwszej własnej klasy, Bard

Zasięg zmiennej

Te błędy zmiennych zaszokują i zaskoczą Cię!

Zmienne globalne

Zmienne klasy

Zmienne instancji

Zmienne lokalne

Obiekty i self

Zmienne metod i instancji

Ballada na telefon, czyli usługa dostarczania ballad przez barda

Co już wiesz

Obiekty i klasy

Zmienne i zasięg

Programowanie obiektowe

ROZDZIAŁ 9
DZIEDZICZENIE MAGII RUBY

Menażeria jej królewskiej mości

Szlifowanie klas

Kilka innych klas

Dziedziczenie i kod bez powtórzeń

Podklasy i nadklasy

Zastępowanie metod: piraci to też ludzie

Używanie słowa kluczowego super

Ochrona Królestwa przez psy obronne i latające małpy

Każdy pies obronny ma swój dzień

Jeszcze raz, z uczuciem!

Maszyna Królowej

Co już wiesz

ROZDZIAŁ 10
KOŃ INNEGO KOLORU

Całkowite Panda-monium

Tworzenie modułów

Stałe

Poszerzanie naszej wiedzy

Zmieszanie i dziedziczenie

Potrzebujemy kolejnego pliku

Przeszukiwanie stałych

Koń innego koloru

Co już wiesz

ROZDZIAŁ 11
ŁAŃCUCHY RAZ JESZCZE

Przerabianie w Przerabiaczu

Sztuczki z nadawaniem wartości zmiennym

Wyrażenia warunkowe jasne jak słońce

Gdy potrzebna jest instrukcja case z wyrażeniem when

Upraszczanie metod

Usuwanie powtarzającego się kodu

Ponowna przeróbka

Co już wiesz

ROZDZIAŁ 12
CZYTANIE, PISANIE I MAGIA RUBY

Wejście i wyjście pliku

Otwieranie pliku za pomocą Ruby

Pisanie i dodawanie do plików

Unikanie błędów podczas pracy z plikami

Wszystkie doki załadunkowe meldować się!

Co już wiesz

ROZDZIAŁ 13
PODĄŻAJ DROGĄ WEBRICK

Ruby i Internet

Zastosowanie Ruby gem: open-uri

Analiza serwera WWW Królestwa

Za murami Królestwa

Co już wiesz

ROZDZIAŁ 14
CO DALEJ

Obraz ogólny: Co wiemy

Dodatkowe zasoby i coś do czytania

Książki dla początkujących

Książki dla średniozaawansowanych

Książki dla zaawansowanych

Online i Multimedia

Zasoby interakcyjne

Dodatkowe tematy

DODATEK A
INSTALOWANIE RUBY NA KOMPUTERACH MAC I W SYSTEMIE LINUX

Instalowanie na komputerach Mac

Instalowanie w Linuksie

DODATEK B
ROZWIĄZYWANIE PROBLEMÓW

Błędy przy wykonywaniu skryptów Ruby

Nie znaleziono polecenia

Brak pliku lub katalogu

Błędy przy używaniu IRB

Niezdefiniowana zmienna lokalna lub metoda

Błąd składni

Nie można przekształcić nil na łańcuch

Mówisz, że…?

Czyszczenie ekranu

Powrót do poprzedniego polecenia

Poszukaj tego!

PRZYPISY

Wszystkie rozdziały dostępne w pełnej wersji książki.

Moim nauczycielom

O AUTORZE

Eric Weinstein pomógł milionom ludzi nauczyć się programowania poprzez Codeacademy, gdzie zaprojektował i zredagował program nauczania Ruby oraz miał swój udział się w kursach języków Python, JavaScript, HTML/CSS i PHP. Na Uniwersytecie w Nowym Jorku uczył także kreatywnego pisania studentów i weteranów wojen w Iraku i Afganistanie jako tzw. Veterans Writing Workshop Fellow. Pisze programy w Ruby, aby zarabiać na życie w Nowym Jorku.

O REDAKTORACH

Peter Cooper jest redaktorem w „Ruby Weekly”, przewodniczącym konferencji rozwoju sieci WWW w O’Reilly oraz autorem Beginning Ruby (Apress). Jego adres na Tweeterze to @peterc.

Pat Shaughnessy jest autorem Ruby Under a Microscope (No Starch Press), pisze także na blogu http://patshaughnessy.net/. Mówiący płynnie po hiszpańsku Pat często odwiedza rodzinę swojej żony w północnej Hiszpanii. Pat mieszka pod Bostonem ze swoją żoną i dwojgiem dzieci.

WPROWADZENIE

Dawno temu byłem małym dzieckiem, dorastającym na farmie w wiejskiej Pensylwanii. Moje miasto rodzinne jest na tyle małe, że gospodarstwo moich rodziców znajdowało się tylko w odległości 800 metrów wzdłuż drogi od domu moich dziadków od strony mamy, w którym to mama spędziła swoje dzieciństwo.

Pewnego dnia, gdy miałem siedem lat, byłem z wizytą u swoich dziadków. Tak się zdarzyło, że tego dnia wpadł akurat jeden z moich wujków. Chciał dać prezent moim dziadkom: ich pierwszy komputer Mac Plus.

Otóż mojego wujka bardzo interesowały wszystkie informatyczne „wygłupy”. A w tamtych dniach komputery były nadal nowością, więc niewiele osób je miało. Moich dziadków interesowały poczynania ich syna i jego interesy, zdecydowali więc, że dobrze by było sprawdzić, o co chodzi z tym „komputerem”.

Mój wujek, poekscytowany tą całą wrzawą, zawołał mnie do komputera i wyjaśnił, co to jest. Powiedział, że za pomocą komputerów możemy robić najróżniejsze rzeczy, ale pokazał mi coś, co jego zdaniem powinienem polubić. Na ekranie pojawiły się te nieśmiertelne słowa:

Witaj w PRZYGODZIE!

Oryginalne opracowanie: Willie Crowther

Główne funkcje dodał: Don Woods

Konwersja na BDS C – J. R. Jaeger

Standaryzacja z Unixem: Jerry D. Pohl

Konwersja na PHP: Matt G. S. Cox

Adaptacja do AMC.com: Rick Adams

Aby zagrać w tę grę, wpisz skrót w wierszu poleceń poniżej.

Jeśli wpiszesz słowo „patrz”, gra podaje opis swojego otoczenia. Po wpisaniu „inwentarz” dowiesz się, co niesiesz. „Weź”, „upuść” i „rzuć” pomagają nam w interakcji z obiektami. Część gry to próbowanie różnych poleceń i patrzenie, co się dzieje. Jeśli zechcesz uzyskać instrukcje, w dowolnej chwili wpisz „pomoc”.

Chcesz więcej instrukcji? nie

Stoisz na końcu drogi przed małym budynkiem z cegły. Wokół Ciebie jest las. Na zewnątrz budynku płynie mały strumień w dół rowu.

Co dalej?[1]

I widać tylko mrugający kursor. Wpisując proste instrukcje, mogłem badać ten wspaniały świat, z bezkresną jaskinią, podstępnym piratem i labiryntem krętych małych przejść, które były do siebie podobne. Byłem absolutnie zafascynowany. Wujek powiedział mi, że pewni ludzie nazywani programistami musieli poznać komputer, aby wiedzieć, jak grać w grę. Połknąłem haczyk.

Zacząłem tak często pytać moich rodziców, czy mogę „iść zobaczyć się z babcią”, że w końcu stwierdzili: „Wcale nie chcesz widzieć się z babcią, ale pograć na komputerze babci”.

„Nie, chcę zobaczyć babcię i pograć na jej komputerze”, odpowiadałem.

Dziś komputery są całkiem inne. Tamten Mac Plus miał procesor 8 MHz, który mógł obsługiwać 1,4 miliona instrukcji na sekundę. Miał także 1 MB pamięci RAM. Dziś iPhone 5 ma procesor 1,3 GHz, który obsługuje 18200 milionów instrukcji na sekundę i ma 1 GB pamięci RAM. Obecne gry nie wyświetlają nam tekstu, ale pokazują pełną trójwymiarową grafikę.

Jednak wciąż mocno wierzę w to, że komputer może zmienić życie dziecka.

Magia Ruby to książka, która oddaje to uczucie zachwytu, gdy byłem dzieckiem i po raz pierwszy siedziałem przy tym czymś, co nazywamy „klawiaturą”. Ruby jest dużo przyjemniejszym językiem programowania niż GW-BASIC, na którym połamałem zęby, lecz idea jest taka sama. Dajmy dziecku możliwość urzeczywistnienia jego marzeń, a wydarzą się niezwykłe rzeczy.

Mam nadzieję, że Magia Ruby da wam taką samą radość, jaką zawsze dawały mi komputery.

Steve Klabnik

PODZIĘKOWANIA

Ta książka nigdy by nie powstała bez niestrudzonych wysiłków dziesiątek – a może nawet setek – ludzi.

Po pierwsze, mojej żony Laury, która nie tylko znosiła moje całonocne sesje pisania i niekończące się prośby o opinię na temat wymyślonych historyjek, lecz także od czasu do czasu zmieniała się w agenta literackiego, korektorkę, osobę czuwającą nad zdrowiem psychicznym i osobę, która znajdowała czas na czytanie w Internecie i pracę. Ta książka nigdy by nie powstała bez jej miłości i wsparcia.

Bez mojej rodziny, w szczególności mojego ojca, który latami czytał mi prawie co noc, oraz mojej mamy, która (na dobre i na złe) nauczyła mnie, że mogę robić wszystko, czemu uparcie się oddaję.

Bez moich nauczycieli, którym ta książka jest dedykowana, w szczególności nauczycieli w społeczności Ruby, którymi są Cole Brown, Linda Liukas i Dean Strelau, a także bez wszystkich znakomitych pomocników i uczniów w szkole Hacker School.

Oczywiście Magia Ruby nie mogłaby powstać bez Tylera Ortmana, Riley Hoffman, Billa Pollocka i niezwykłych ludzi w No Starch Press. Nie sposób wystarczająco im podziękować za ich spostrzeżenia, energię i oddanie.

Steve Klabnik, który przeczytał wczesną wersję tej książki i napisał do niej wspaniałe słowo wstępne, a także Peter Cooper i Pat Shaughnessy, który zrobili redakcję techniczną i przekazali mi znacznie więcej spostrzeżeń dotyczących sedna języka Ruby.

Wszyscy trzej są znakomitymi nauczycielami i specjalistami od Ruby.

Why the lucky stiff[2], którego książka Why’s (Poignant) Guide to Ruby była pierwszą z książek o Ruby, jaką przeczytałem, i który jako pierwszy naprawdę pokazał mi znaczenie i entuzjazm dla sztuki w języku i w społeczności. Mam nadzieję, że ta książka obudzi takie same uczucia ekscytacji i ciekawości, jakie czułem, czytając książkę Why’a.

I wreszcie Dave, który przedstawił mnie Billowi w No Starch Press i umożliwił to wszystko.

WPROWADZENIE
DO WYDANIA POLSKIEGO

W polskim wydaniu książki tłumacze starali się spolszczyć programy, zmienne i treść przykładów, uruchamiając wszystkie skrypty w wersji polskiej. Niestety, użycie polskich znaków w Ruby może sprawiać pewne kłopoty, szczególnie w systemie Windows. Z tego względu w nazwach wszystkich plików – zarówno tych podanych w książce, jak i na witrynie zawierającej skrypty z tej książki – nie są używane polskie znaki.

Używanie polskich liter wewnątrz programów napisanych w Ruby jest możliwe, ale wymaga użycia kodowania UFT-8. Można to zrobić, wpisując na początku programu polecenie #encoding: utf-8. Edytor Notepad++ w systemie Windows automatycznie wybiera domyślny odpowiedni sposób kodowania, gdy podczas jego instalacji wybierzemy język polski.

Wykonanie niektórych skryptów Ruby (np. doki_zaladunkowe.rb) wymaga zmiany kodowania w wierszu poleceń. Można to zrobić, wpisując zamiast ruby nazwa_skryptu.pl, ruby–E:UTF-8 nazwa_skryptu.pl. W innym przypadku zamiast polskich liter mogą się pojawić nieczytelne znaki.

W książce występuje wielu bohaterów, których imiona w większości zostały spolszczone. Pozostawiono jednak oryginalne imiona głównych bohaterów, Scarlet i Rubena, gdyż nawiązują one do nazwy języka i kolorów, co trudno byłoby zastąpić. Inne nazwy nawet jeśli wyglądają dziwnie w języku polskim, są zgodne z intencją autora. Są więc „Smoczyca”, a nie „Smok” i „czarodziejek”, jako „mały czarodziej”. Mamy nadzieję, że udało nam się oddać poczucie humoru autora.

UWAGA

Autorzy książki odsyłają Czytelnika do angielskiej strony z przykładami. Polskie przykłady znajdują się pod adresem http://www.smartkids.pwn.pl/Kody_Ruby. Literatura pomocnicza przywoływana w pracy jest również anglojęzyczna. Książki i internetowe samouczki po polsku można znaleźć w Internecie po wpisaniu odpowiedniego hasła w Google.

Znaleźliście tę książkę! OK, to fantastycznie. Miałem nadzieję, że do was dotrze.

Wyobraźcie sobie, że ktoś Wam mówi, że odkrył nowy sposób pisania. Nie nowy język, taki jak francuski, japoński lub elficki, ale cały nowy rodzaj pisania, który spowoduje, że nasze historie stają się prawdziwe. Jeśli opiszemy labirynt, ludzie będą mogli do niego wejść i się zgubić. Jeśli opiszemy odległą planetę, na której roboty-piraci walczą z czarodziejami ninja, to ta planeta zaistnieje. Nie tylko to. Można napisać tekst „Łupu cupu potrząśnij moimi obwodami” lub rzucić zaklęcie w rodzaju czarodziej_ninja.rzuca_płonące_gwiazdki. To szalone, prawda? I zapewne dokładnie tak uważacie: to jest całkiem zwariowane i jeśli ktoś o tym myśli, to znaczy, że ma zbyt dużo czasu do dyspozycji albo zbyt wielką wyobraźnię.

No tak, okazuje się, że nie ma takiego czegoś jak zbyt wielka wyobraźnia. No więc wyobraź sobie, że nowy sposób pisania rzeczywistości istnieje, a Ty możesz się nauczyć, jak to robić. Możesz, przy pewnej wprawie, wykombinować, jak utworzyć własne światy ze swoimi własnymi regułami. Jesteście za to odpowiedzialni i możecie robić prawie wszystko, o czym pomyślicie. I nie tylko to. Jeśli staniecie się naprawdę dobrzy, ludzie będą przychodzić zewsząd, aby doświadczyć świata, który stworzyliście, i korzystać ze wszystkich wspaniałych rzeczy, jakie utworzyliście.

Możemy przerwać gry z wyobraźnią (przynajmniej na razie). Mówię Ci, że to prawda! A ta książka pomoże Ci to zrobić. Strony, które teraz trzymasz w ręku, to przewodnik do języka programowania o nazwie Ruby, który pomoże Ci zrobić to wszystko, a potrzebujesz do tego mózgu, komputera i Ruby.

Jak może to być prawdą? – możesz pomyśleć. Jeśli istnieje coś tak fajnego i takiej mocy, z pewnością każdy by o tym słyszał.

To prowadzi nas do kolejnego tematu.

PO CO UCZYĆ SIĘ PROGRAMOWANIA (I DLACZEGO RUBY)

Gdy byłem młodszy, nauka programowania wydawała mi się nudna. Myślałem, że programowanie i komputery to tylko matematyka i logika – że nie ma tam miejsca na kreatywność ani robienie czegoś ciekawego. Wszyscy wciąż mówili mi, co mam robić: idź do szkoły, wyprowadź psa, idź do dentysty, odrób pracę domową. Uznałem, że z programowaniem może być tak samo, więc całkiem go unikałem. Zacząłem natomiast pisać historie dotyczące podróży w kosmos, magii i odległych światów, w których nie tylko zdarzały się niezwykłe rzeczy, lecz także miałem nad nimi pełną kontrolę! Nadal piszę historie, ale nawet te najlepsze kończą się, gdy czytelnik odwróci ostatnią stronę. Niezależnie od tego, jak bardzo chcemy, aby statki kosmiczne i czarodzieje byli prawdziwi, pisanie o nich nie spowoduje, że tak się stanie. Więc pisałem mnóstwo historii, lecz musiałem też chodzić do dentysty.

Potem stało się coś dziwnego: zdecydowałem się spróbować programowania. Odkryłem, że to, co według mnie było strasznie drętwe i nudne, tak naprawdę jest całkiem inne – ambitne i fajne. Nagle wiedziałem, co trzeba robić! Jeśli kazałem komputerowi, aby ułożył układankę, to to robił. Jeśli kazałem mu utworzyć witrynę WWW, tworzył witrynę. Robił rzeczywiste rzeczy, które mogłem zobaczyć, bawić się nimi i ich używać. To było tak, jakby wszystkie historie, jakie napisałem przez lata, mogły się teraz urzeczywistnić, a wymagało to tylko tego małego pudełka i języka, którego używałem, aby się z nim porozumieć.

To prawda, że niektóre języki programowania są trudne, a niektóre wręcz zagmatwane. Ruby jest inny: został zaprojektowany tak, aby was uszczęśliwić – aby był łatwy do czytania i zrozumienia nie tylko przez komputer, lecz także przez was. Ruby stworzono, aby pomóc wam opowiadać historie, które mogą polubić i komputery, i istoty ludzkie, więc zamiast dziwnych symboli lub słów takich jak static i void dostajemy programy, które wyglądają prawie jak pisane w języku angielskim, ze słowami takimi jak unless, rescue, self, a nawet begin i end.

Tak jak w przypadku każdego języka programowania, nauka Ruby pomoże wam zdobyć ważne umiejętności, zrobić fajne rzeczy i poczuć się znakomicie. Ale przeważnie będziecie mieć dobrą zabawę. A wśród języków programowania, moim zdaniem, Ruby daje najwięcej radości.

Powiedzmy, że chcemy zaprogramować komputer, aby powiedział „Cześć!”. Jeśli zechcesz zrobić to w innym języku – na przykład Java – należałoby napisać coś naprawdę skomplikowanego jak to:

class Cześć {

public static void main (String[] args) {

System.out.println("Cześć!");

}

}

To dużo kodu jak na wyświetlenie jednego słowa. Aby zrobić to samo w Ruby, piszemy tylko:

puts "Cześć!"

To jest to! Ruby wyświetla słowo właśnie tutaj na ekranie. Proste, prawda? Ruby jest po to, aby uczynić Cię szczęśliwym i produktywnym programistą (o tak – teraz jesteś programistą), więc pozbywa się wielu elementów złożonej składni (jak { oraz ;) i pozwala Ci uniknąć pisania wszędzie takich nudnych rzeczy jak public static void main. A ponieważ Ruby może zrobić całkiem dużo z tych rzeczy, które robią bardziej skomplikowane języki jak Java, możesz tworzyć w tym języku niezwykłe rzeczy szybciej i mniejszym wysiłkiem.

Zaczynamy!

WSZYSCY DOROŚLI NA POKŁAD: INSTALOWANIE RUBY

Dobrze – to jest część, w której możesz poprosić swoich mamę, tatę, dziadka, babcię, ciotkę, wujka, nauczyciela lub innego dorosłego, który jest w pobliżu, o zainstalowanie Ruby na Twoim komputerze. Ruby jest bezpłatny, ale jeśli jeszcze nie masz Ruby, musisz mieć połączenie z Internetem, aby go pobrać.

Wskazówki są różne zależnie od tego, jakiego rodzaju masz komputer, więc w razie wątpliwości zapytaj kogoś dorosłego!

Jeśli masz uruchomiony system Windows, przejdź do strony 6.

INSTALOWANIE W SYSTEMIE MAC LUB LINUX

Najpierw sprawdźmy, czy już mamy zainstalowany Ruby. Jeśli używasz Maca lub komputera z systemem Linux, możesz w wierszu poleceń sprawdzić, jaką masz wersję Ruby. To w wierszu poleceń wpisujemy swoje programy w Ruby.

Wiersz poleceń różni się prawdopodobnie od tego, w jaki sposób zwykle korzystasz z komputera (klikając ikony i przenosząc elementy za pomocą myszy), ale gdy do niego przywykniesz, wiersz poleceń może okazać się dużo szybszy i łatwiejszy.

Na komputerze Mac lub Linux nasz wiersz poleceń jest aplikacją o nazwie Terminal. Znajdź i otwórz aplikację Terminal. Powinno pokazać się coś takiego:

Po otwarciu terminala idź dalej i wpisz następujący wiersz (nie musisz pisać znaku dolara – tylko fragment ruby -v) i naciśnij ENTER:

$ ruby -v

Jeśli Ruby jest zainstalowany, dostaniesz w odpowiedzi coś takiego:

ruby 2.0.0p247

Jeśli dostaniesz tę odpowiedź i zawiera ona 2.0.0, wszystko jest gotowe! Przejdź do „Pierwsze osiągnięcie: Ruby zainstalowany!” na stronie 7. Jeśli dostaniesz liczbę inną niż 2.0.0 (na przykład 1.9.3 lub 1.8.7), musisz pobrać wersję 2.0.0 (używaną w tej książce). Jeśli Twój komputer jest bardzo zaawansowany, możesz już mieć Ruby 2.1 – kod z tej książki powinien działać także w Ruby 2.1. Aby mieć najlepsze efekty i najmniej błędów, trzeba wszystkie przykłady uruchamiać, korzystając z Ruby 2.0.0.

Jeśli Twój komputer powie coś takiego:

-bash: ruby: command not found

to nie masz Ruby. Nie martw się. Poproś dorosłego i przejdźcie do dodatku A, aby uzyskać szczegółowe instrukcje. Tak zainstalujesz Ruby! Gdy to zrobisz, wróć do tego rozdziału.

INSTALOWANIE W SYSTEMIE WINDOWS

Jeśli korzystasz z komputera z systemem Windows, możesz sprawdzić, czy Ruby jest zainstalowany, otwierając wiersz poleceń. W tym przykładzie będziemy korzystać z Windows 7. Możesz otworzyć wiersz poleceń z menu Start lub wyszukując cmd.exe; gdy już go znajdziesz, dwukrotnie go kliknij, aby otworzyć aplikację. Powinno się pojawić coś podobnego do tego:

Twój wiersz poleceń, czyli fragment przed >, będzie prawdopodobnie różnił się od mojego, ale to nie stanowi problemu! Wpisz ruby -v, a następnie naciśnij ENTER:

> ruby -v

Jeśli dostaniesz odpowiedź, która zawiera 2.0.0, jesteś gotowy do pracy! Jeśli zobaczysz wersję Ruby inną niż 2.0.0 lub dostaniesz taki błąd:

'ruby' is not recognized as an internal or external command, operable program or batch file.

wtedy trzeba zainstalować Ruby. Weźmy się za to!

Użycie instalatora Ruby

Najprostszym sposobem instalowania Ruby w systemie Windows jest wejście na stronę http://rubyinstaller.org/downloads/ i pobranie Ruby 2.0.0-p481.

(Nie trzeba się martwić, jeśli numer po p na witrynie instalacyjnej będzie wyższy niż ten pokazany tutaj; to tylko oznacza, że ta wersja jest nieco wyższa, ale jest to nadal Ruby 2.0 i powinno świetnie działać.) Po zakończeniu pobierania przejdź do folderu, w którym został zapisany plik.exe, i dwukrotnie kliknij, aby uruchomić instalator. Oto zostaniesz poproszony(a):

1. Gdy zostaniesz zapytany o język do użycia podczas instalacji, wybierz „English” (lub dowolny inny, który lepiej znasz[3]).

2. Instalator poprosi o akceptację umowy licencyjnej. Zaznacz „I accept the License” (Akceptuję licencję) i kliknij Next (Dalej).

3. Instalator zapyta, gdzie chcesz zainstalować Ruby, podając domyślnie C:\Ruby200. To bardzo dobrze! Możesz zobaczyć także pole wyboru, które informuje „Add Ruby executables to your PATH” (Dodaj pliki wykonywalne Ruby do Twojej ścieżki). Sprawdź, czy to pole jest zaznaczone, a następnie kliknij Install (Instaluj).

4. Jeśli wszystko pójdzie dobrze, powinien się pojawić ekran „Completing the Ruby Setup Wizard” (Kończenie instalacji kreatora Ruby). Kliknij Finish (Zakończ) i gotowe!

Po uruchomieniu instalatora zamknij wiersz poleceń, ponownie go otwórz i wprowadź ruby -v; komputer powinien wyświetlić odpowiedź z ruby 2.0.0. U mnie wygląda to tak (u Ciebie może się nieco różnić):

ruby 2.0.0p481 (2014-05-08) [i386-mingw32]

PIERWSZE OSIĄGNIĘCIE: RUBY ZAINSTALOWANY!

Doskonale! Teraz, gdy masz zainstalowany Ruby, możemy zacząć naukę, jak to wszystko działa. W następnym rozdziale przedstawimy podstawy Ruby i dowiemy się, jak interaktywnie używać Ruby, co oznacza, że zobaczymy, jak dzięki Ruby możemy uruchamiać kod, naciskając tylko klawisz ENTER.

W kolejnych rozdziałach poznasz tajniki języka Ruby poprzez wiele opowieści. Programy w Ruby są przede wszystkim opowieściami, które piszemy tak, aby zrozumiał je komputer, a pisanie kodu w Ruby ma być przyjemne dla ludzi i łatwe do czytania przez komputery. Uznałem więc, że jedyny sens ma pisanie opowieści, przez które pokazujemy, jak to wszystko działa. Myślę, że to są całkiem dobre historie.

Możesz odczuwać pokusę, aby przeczytać kod zawarty w tej książce i powiedzieć sobie: „Tak, to ma sens! Nie muszę już tego uruchamiać”. Też tak myślałem, gdy zaczynałem programować, ale nie miałem racji. Jedynym sposobem na nauczenie się pisania kodu jest pisanie kodu, jeśli zaś tylko przeczytasz te przykłady i nigdy nie uruchomisz żadnego wiersza w Ruby, to oszukasz siebie, nie uzyskując naprawdę fajnej wiedzy.

Jeszcze jedna rada, zanim wyruszymy na naszą przygodę: może trzeba będzie przeczytać jakiś fragment więcej niż raz lub kilka razy uruchomić kod, aby naprawdę to wszystko ogarnąć. W porządku! Nauka programowania nie jest tylko nowym sposobem pisania – to także nowy sposób myślenia. To może być czasami trochę trudne, ale obiecuję, że jeśli się nie poddasz, ogarniesz to. Wierz mi, są osoby mniej zdolne i mniej entuzjastyczne od Ciebie, które nauczyły się programować. A jeśli oni mogli, to i Ty możesz.

WCHODZENIE W BUTY RUBY

Masz więc swoją własną kopię Ruby i wiesz, że Ruby jest językiem, którego można używać, aby nakazać komputerom robienie wszystkiego, co zechcesz. Ale zapewne cisną Ci się pytania:

Skąd pochodzi język Ruby? Kto go stworzył i dlaczego? Jakie niezwykłe rzeczy można tworzyć za jego pomocą? Jaki pożytek mamy z Ruby?

Dobrze, wystarczy tych pytań: odpowiem na nie wszystkie (i na kilka dodatkowych).

Choć komputery wymyślono wieki temu (pierwsze urządzenia uznane za komputery zbudowano w latach 40. XX wieku), język Ruby powstał stosunkowo niedawno, w roku 1993. Może Ci się wydawać, że 1993 r. to też było wieki temu i jest to na swój sposób prawdą. Internet miał wtedy około stu witryn. Nikt nie miał smartfonów. W rzeczywistości większość telefonów była podłączona do gniazdek w ścianie za pomocą kabli. To były mroczne czasy.

Ale w starożytnym świecie połowy lat 90. człowiek nazywający się Yukihiro Matsumoto (lub „Matz” dla swoich przyjaciół) próbował wymyślić przyszłość. Był sfrustrowany językami programowania, które były tak zaprojektowane, aby ułatwić życie komputerom, ale trudno było je zrozumieć ludziom, pisać w nich, pamiętać programy i z nich korzystać. Dlaczego nie było języka, który byłby łatwy do używania przez ludzi, który byłby klarowny, prosty, a nawet fajny?

Matz zdał sobie sprawę, że jego idealny język programowania nie istnieje, więc go stworzył. „Mam nadzieję, że zobaczę, iż Ruby pomaga każdemu programiście na świecie być produktywnym, cieszyć się programowaniem i być szczęśliwym”, powiedział Matz. „To główny cel języka Ruby”[4]. To jest właśnie krótka definicja języka Ruby: fajny sposób tworzenia gier, stron internetowych lub czegokolwiek, co można sobie wymyślić za pomocą własnej głowy i komputera. Matz miał tak pozytywny wpływ ma język, który stworzył, że programiści ukuli powiedzonko: „Matz jest miły, więc my też” lub w skrócie MINSWAN (Matz is nice, so we are nice). Pamiętaj o MINSWAN, ucząc się Ruby, a szczególnie wtedy, gdy uczysz go innych!

To mi przypomniało, że za pomocą Ruby można tworzyć wiele niezwykłych rzeczy. Przez kilka ostatnich lat Ruby był używany do tworzenia ważnych witryn, takich jak Twitter i Hulu, apek na iPhona, a nawet symulacji NASA. To prawda: Ruby można używać do badania kosmosu! Z każdym dniem ludzie stosują Ruby do coraz większej liczby projektów, a dzięki tym wszystkim fajnym nowym narzędziom i pomysłom, które stale są tworzone przez społeczność Ruby, ograniczeniem przy tworzeniu własnych programów jest tylko Twoja wyobraźnia.

Te programy są pisane w skryptach. To oznacza, że zamiast długiego i nudnego procesu kompilowania możesz po prostu napisać szybki program w Ruby, uruchomić go i czary mary!

Twoja witryna WWW działa, można grać w gry, a statek kosmiczny strzela laserami w złą królową. Ale jak uruchomić te skrypty Ruby? W tym celu musimy poznać polecenie ruby i niewielki program o nazwie IRB.

POZNAJEMY IRB

W Ruby możesz wyświetlić coś na ekranie, wpisując samo polecenie puts. Powiedzmy, że chcemy wyświetlić „Ruby jest fantastyczny!”. Spróbujmy – najpierw trzeba otworzyć IRB, program do eksploracji Ruby.

Jeśli korzystasz z Maca lub Linuksa, otwórz terminal i wpisz:

$ irb

Trzeba wpisać tylko irb, bez znaku dolara; znak dolara oznacza, że trzeba coś wpisać w terminalu.

Jeśli używasz Windows, możesz uruchomić IRB z menu Start.

Po otwarciu IRB powinno się pokazać coś takiego:

2.0.0p247 :001 >

To jest zgłoszenie IRB, czyli sposób, w jaki IRB mówi, że jest gotowy, aby coś wpisać. Może to wyglądać nieco inaczej, zależnie od wersji Ruby, ale powinno się kończyć znakiem >.

W tej książce uprościmy zapis, aby wyglądało to tak:

>>

Za każdym razem, gdy zobaczysz >>, będziemy korzystać z IRB. Jeśli wpiszesz poniższy tekst po >> (nie zapomnij o cudzysłowie – to bardzo ważne!):

>> puts "Ruby jest fantastyczny!"

to po naciśnięciu ENTER Ruby powinien wyświetlić:

Ruby jest fantastyczny!

=> nil

Świetnie! Napisaliśmy prosty program, aby wyświetlić trochę tekstu na ekranie. Zobaczysz też, że Ruby powie coś, czyli „nil”. Nie martw się tym teraz; wyjaśnię to za chwilę. (Jeśli nie możesz się doczekać odpowiedzi, to w zasadzie Ruby mówi, że zakończył wyświetlanie i nie ma nic więcej do dodania. Więcej o nil dowiesz się w rozdziale 7.) Fajne jest to, że właśnie napisałeś swój pierwszy program w Ruby!

IRB będzie nadal wyświetlać zgłoszenie i czekać, aż wpiszesz inne rzeczy, dopóki nie każesz mu skończyć, co można zrobić w dowolnej chwili, wpisując exit (lub tylko zamykając program terminala).

UŻYWANIE EDYTORA TEKSTOWEGO I POLECENIA RUBY

Innym sposobem pisania poleceń w Ruby jest napisanie ich w postaci skryptu, który jest zapisem wielu wierszy, które następnie uruchamiamy wszystkie naraz, zamiast wykonywać je pojedynczo. Aby napisać skrypt, potrzebujemy programu określanego jako edytor tekstowy. (To nie jest coś podobnego do Microsoft Worda, który jest procesorem tekstów, doskonałym do pisania opowiadań lub prac domowych do szkoły, ale nie nadaje się do pisania programów.)

UWAGA

Wszystkie skrypty, które pojawiają się w tej książce, można pobrać ze strony http://nostarch.com/rubywizardry/. Ale jeśli uczysz się programować i postępujesz według danej opowieści, spróbuj samodzielnie pisać, zamiast tylko kopiować i wklejać! W ten sposób więcej się nauczysz.

MAC

Wszystkie komputery Mac są wyposażone w edytor tekstowy o nazwie TextEdit (można go znaleźć w folderze Applications). Jest bardzo prosty i świetny do pisania programów w Ruby. Jeśli szukasz czegoś bardziej czaderskiego, na stronie http://www.sublimetext.com/2 można pobrać bardzo przyjemny bezpłatny edytor tekstowy o nazwie Sublime Text 2 (do tego potrzebny jest system OS X 10.6 lub nowszy).

LINUX

Jest kilka dobrych edytorów dla Linuksa, ale Gedit jest jednym z moich ulubionych. Można go pobrać z https://wiki.gnome.org/Apps/Gedit. Sublime Text 2 jest także bardzo dobrym edytorem dla Linuksa i jest on dostępny na stronie http://www.sublimetext.com/2.

WINDOWS

Jak już wspomniałem, Microsoft Word nie nadaje się do pisania programów. Natomiast Notepad++ jest świetnym bezpłatnym edytorem tekstowym dla Windows, który można pobrać ze strony http://notepad-plus-plus.org/download/v6.6.7.html. Można także korzystać z edytora Sublime Text 2, dostępnego na stronie ://www.sublimetext.com/2.

TWORZENIE PIERWSZEGO SKRYPTU

Kiedy już zainstalujesz edytor tekstowy, otwórz go i wpisz to samo, co wcześniej pisaliśmy w IRB:

puts "Ruby jest wspaniały!"

Pójdź dalej i zapisz ten plik jako wspanialy.rb w dowolnie wybranym folderze (dobrze jest utworzyć teraz folder ruby, aby umieszczać w nim wszystkie swoje programy Ruby). Następnie otwórz swój terminal i przejdź do folderu, w którym został zapisany wspanialy.rb. Oto, jak zrobić to za pomocą polecenia cd:

• Zgłoszenie w systemie Mac lub Linux (fragment po lewej stronie znaku $ w wierszu poleceń) wygląda podobnie jak /Users/username $. Jeśli plik wspanialy.rb został zapisany w folderze ruby w Twoim folderze głównym, możesz się do niego dostać, wprowadzając w wierszu poleceń:

$ cd /Users/username/ruby

Nie wpisuj fragmentu $, tylko wszystko, co jest za nim. Nie wpisuj też dosłownie username (nazwaużytkownika); trzeba zastąpić to tym, co będzie widoczne w zgłoszeniu! (U mnie jest /Users/eweinstein/, ale u Ciebie może być inaczej.)

• Zgłoszenie w systemie Windows (fragment po lewej stronie znaku > w wierszu poleceń) ma postać podobną do C:\Users\username. Jeśli plik wspanialy.rb został zapisany w folderze o nazwie ruby w Twoim folderze głównym, możesz się do niego dostać, wprowadzając w wierszu poleceń:

> cd C:\Users\username\ruby

Nie wpisuj fragmentu >, tylko to, co jest po nim. Nie wpisuj też dosłownie username; trzeba zastąpić to tym, co będzie widoczne w zgłoszeniu.

Gdy już będziesz w folderze ruby, wprowadź:

$ ruby wspanialy.rb

Ruby powinien wyświetlić:

Ruby jest wspaniały!

I tak oto Twój pierwszy skrypt w Ruby został uruchomiony! Dobra robota!

KIEDY UŻYWAĆ IRB, A KIEDY EDYTORA TEKSTU

A więc, jeśli wpisujemy to samo w IRB i do naszego pliku skryptu i dostajemy ten sam wynik, to jaka jest różnica między tymi dwoma sposobami działania? IRB pozwala nam sprawdzić tylko jeden wiersz kodu naraz; za każdym razem, gdy naciśniemy klawisz ENTER, IRB przeczyta, czyli sprawdzi kod, jaki napisaliśmy, i poda odpowiedź. Dobrze jest wypróbowywać różne rzeczy i widzieć, jak one działają.

To oznacza, że po każdym naciśnięciu ENTER Ruby przerywa nam wynikiem wyznaczenia danego wiersza:

>> 2 + 5

=> 7

>> 24 * 10

=> 240

>> 'Hej ' + 'tam!'

=> "Hej tam!"

Kod pogrubiony to ten wpisany przez nas; poniżej jest odpowiedź, jaką dostaniesz od IRB po naciśnięciu klawisza ENTER. Nie zawsze potrzebujemy tego całego zamieszania! Czasami chcemy znać tylko końcowy wynik całej swojej pracy. W tym celu możemy napisać ten sam kod w postaci skryptu. Otwieramy tylko wcześniej edytor (na przykład TextEdit, jeśli korzystamy z Maca, Gedit, jeśli używamy Linuksa lub Notepad++ dla komputera z systemem Windows) i wpisujemy, co następuje:

puts 2 + 5

puts 24 * 10

puts 'Hej ' + 'tam!'

Następnie zapisujemy skrypt jako przyklad_skryptu.rb lub pod wybraną nazwą z końcówką .rb (nie może być w niej odstępów!), używamy Cd, aby przejść do folderu, w którym zapisaliśmy skrypt, a na końcu uruchamiamy skrypt za pomocą polecenia ruby:

$ ruby przyklad_skryptu.rb

W ten sposób, bez wpisywania wiersz po wierszu, dostaniemy wyświetlone odpowiedzi:

7

240

Hej tam!

Jest to nie tylko łatwiejsze do czytania, ale możemy teraz uruchomić skrypt wielokrotnie, korzystając z polecenia ruby przyklad_skryptu.rb i wykonywać obliczenia bez ponownego wpisywania wszystkich poleceń. Możemy zapisać nasz program na stałe, zmieniać go albo później zrobić coś nowego na jego podstawie.

ZGŁOSZENIA UŻYWANE W TEJ KSIĄŻCE

W całej książce będziemy na przemian korzystać z IRB dla niewielkich fragmentów kodu i uruchamiać skrypty w przypadku dłuższych fragmentów. Za każdym razem zobaczymy zgłoszenie IRB, które wygląda następująco:

>>

to oznacza, że trzeba uruchomić kod za pomocą IRB. Gdy tego nie widać, to znaczy, że trzeba wpisać skrypt w edytorze tekstowym i uruchomić go za pomocą polecenia ruby. Oto przykład z IRB:

>> 2 + 2

=> 4

Pomówmy przez chwilę o tym, co robi każdy fragment tego kodu. Znaki >> mówią: „Jesteśmy w IRB – w programie, który rozumie polecenia Ruby”. Pamiętacie, że nie wpisujemy >>; to tylko jest informacja, że korzystamy z IRB. >> w książce reprezentuje zgłoszenie IRB, które znajdziesz na swoim komputerze.

Wytłuszczony kod wskazuje, że 2 + 2 jest poleceniem do wpisania – wpisujemy dokładnie te wiersze, a następnie naciskamy ENTER. Gdy zobaczycie kilka pogrubionych wierszy w zgłoszeniu IRB, wpisujemy jeden po drugim, naciskając ENTER po każdym z nich.

Ale drugi wiersz kodu zaczyna się od =>. To jest wynik, który wyrzuca IRB po naciśnięciu ENTER. (Oznacza to, że nie musimy wpisywać żadnego z tych elementów.) Jeśli po wpisaniu polecenia dostaniesz błąd zamiast wyniku pokazanego w książce, musisz sprawdzić, czy polecenia Ruby są wpisane dokładnie. Komputery są tępe: robią dokładnie to, co się im każe, a nie zawsze to, co chcemy!

Inne programy w tej książce są dłuższe, więc będziecie chcieli mieć możliwość wprowadzania do nich zmian i ulepszeń oraz poprawiać błędy. To oznacza, że będziecie chcieli je pisać w edytorze testu. Będę przypominać, co zastosować w każdym przykładzie. Ale pamiętajcie, że gdy nie widać symboli >> IRB, trzeba skorzystać z edytora tekstu.

Gdy dojdziemy już do sedna tej opowieści, usłyszycie o Urządzeniach obliczeniowych. To wymyślone wersje komputerów, takich jak wasze i za każdym, gdy zobaczycie bohaterów historii, którzy uruchamiają Ruby na Urządzeniu obliczeniowym, oni w rzeczywistości stosują IRB i Ruby, więc można podążać za ich wskazówkami na swoim sprzęcie.

Wreszcie, niektóre ze skryptów w dalszej części książki stają się coraz dłuższe. Podzieliłem je na krótsze części i odpowiadam o każdej z nich.

Popatrzcie na ponumerowane kule, takie jak te:

❶ ❷ ❸ ❹ ❺

Do tych numerów będę się odwoływać w tekście, abyśmy mogli przejść przez każdy z przykładów krok po kroku. Nie wpisujemy ich do komputera; służą tylko jako odwołanie!

I znów nie martwcie się o różnice pomiędzy zgłoszeniami IRB i skryptami Ruby – będę przypominał wam o tym w trakcie nauki!

DO CZERWONEGO BŁYSZCZĄCEGO CELU

Nie martw się, jeśli nie rozumiesz całego kodu, który widać w tych przykładach. Dopiero zaczęliśmy naukę Ruby i obiecuję, że przerobimy wszystkie sekrety Ruby w kilku następnych rozdziałach. Pokażemy, jak posługiwać się tekstem i liczbami, jak pomagać naszym programom podejmować decyzje na podstawie informacji uzyskanych od osób, które korzystają z Ruby, jak tworzyć własne polecenia Ruby, jak pisać skrypty, które będą łączyć się z witrynami w Internecie, i dużo więcej.

Powiedziałem wcześniej, że pisanie w Ruby bardziej przypomina pisanie opowieści niż pisanie instrukcji dla maszyny, więc będę wykorzystywać takie opowieści, aby nauczyć was, jak działa Ruby. Na kolejnych stronach przedstawię wam kilka postaci, które pomogą wyjaśnić wszystko, co chcielibyście wiedzieć na temat Ruby. Niektóre z nich będą doświadczonymi programistami Ruby, a niektóre, jak Ty, będą nowicjuszami w tej dziedzinie. Wielu będzie miało wszystkie rodzaje problemów, których według nich nie można rozwiązać, ale trochę ciężkiej pracy i nieco magii Ruby pozwoli im dojść do wniosku, że ich problemy nie są tak poważne, jak się wydawały. Mówiąc o magii, też będzie jej trochę: król, królowa, zamek, zaczarowany (możliwe, że trochę nawiedzony) las, wędrowny bard, kilka czarownic i czarodziejów, smok albo dwa i kilkoro dzieci, takich jak Ty, które zabłąkały się do tego szalonego królestwa i muszą je zbadać…

KRÓTKA OPOWIEŚĆ

Król był w okropnym nastroju. To znaczy naprawdę strasznym, takim nastroju, żeby „wywalić coś przez okno” albo „kogoś kopnąć”. Jeśli ktoś widział go zbliżającego się chodnikiem, szybko uciekał na drugą stronę ulicy. Jeśli byłby Twoim tatą, to Twoja prośba w liście do Świętego Mikołaja brzmiałaby: „wymień go na innego”. To naprawdę dla każdego była Zła wiadomość przez duże „Z”.

Problem polegał na tym, że tego ranka Król zgubił swoją ulubioną rzecz. Stało się to gdzieś tak pomiędzy śniadaniem złożonym jak zwykle z wysuszonych płatków owsianych a przedpołudniowym energicznym spacerem. Wywrócił pałac do góry nogami (niemal dosłownie: Król miał dużo pieniędzy i wielu służących), ale nadaremnie. Gdy znaleźli go Scarlet i Ruben, gorzko płakał w swoim gabinecie, siedząc na swoim wypchanym fotelu z litego złota.

„Jak to wyglądało?” – zapytała Scarlet.

„Jak co wyglądało?” – spytał Król, lekko krztusząc się swoimi własnym słonymi łzami spływającymi po jego pięknie podkręconych wąsach prosto do ust.

„To, co zgubiłeś”, powiedział Ruben.

„Jak łańcuszek!”, odpowiedział Król. „W zasadzie tym właśnie był: łańcuszkiem, z węzłem po obu stronach, aby zabezpieczyć moje drobiazgi i błyskotki. Ten miał nadzianych kilka koralików z napisem »Własność Jego Wysokości Króla«, w takiej postaci:”

'Własność Jego Wysokości Króla'

„Łańcuszek z liter”, powiedział Ruben.

„Raczej łańcuszek albo łańcuch znaków”, sprecyzował Król. „Każda litera była inna. K jest na przykład koślawym typem. Nawet nie pytaj mnie o p–”.

Ale Ruben i Scarlet nie słuchali. Zaczęli już szukać wszędzie zagubionego łańcucha Króla. „Może twój łańcuch wpadł do Tajemniczej rury?” – zapytała Scarlet, wskazując na prychającą czarną metalową rurkę, na której był napis białą kredą Tajemnicza rura.

„Nie”, odrzekł Król. „Tajemnicza rura jest wbrew pozorom wąska u góry, więc łańcuch taki jak mój nigdy by się do niej nie zmieścił”.

„Jaką długość ma twój łańcuch?” – dopytywał się Ruben.

„Nie jestem pewien”, powiedział Król. „Myślę, że moglibyśmy policzyć wszystkie znaki. Wtedy się dowiemy”. (Wierzcie mi: to byłoby strasznie nudne.)

„To byłoby nudne”, powtórzyła Scarlet. „Myślę, że jest lepszy sposób”. Przeszła w kąt pokoju, zdmuchnęła kurz z bardzo starego Urządzenia obliczeniowego i ostrożnie wpisała następujący tekst po zielonym zgłoszeniu IRB:

>> 'Własność Jego Wysokości Króla'.length

=> 29

„Do licha!”, powiedział Król. „Zgadza się! Teraz pamiętam – mój łańcuch miał dokładnie 29 znaków długości. Ale jak udało ci się tego dokonać?”.

„Ruby zna wiele świetnych sztuczek tego typu”, odpowiedziała Scarlet. „Tu masz następną”.

>> 'Własność Jego Wysokości Króla'.reverse

=> "alórK icśokosyW ogeJ ćśonsałW"

Król skinął głową. „Tak, podobnie mój łańcuch wygląda w lustrze, gdy wieszam go, aby wysechł po odświeżającym prysznicu”.

Tymczasem Ruben liczył liczbę znaków w królewskim łańcuchu, używając kawałka kredy, który znalazł obok Tajemniczej rurki. „Zaczekaj chwilę”, poprosił. „Mnie wyszło 31 znaków, licząc z cudzysłowami na obu końcach”.

Król prychnął jak przerośnięty jamnik. „Ich nie liczysz”, powiedział. „One pełnią tę samą funkcję jak węzełki na każdym końcu mojego łańcuszka, które zrobiłem, aby litery się trzymały. Liczymy tylko znaki, a nie cudzysłowy”.

„I to właśnie robi Ruby”, wyjaśniła Scarlet. „Ale Ruby pomyśli, że używamy zmiennej”.

TROCHĘ WIĘCEJ O ZMIENNYCH

Wierzcie, że to przeraziło i wprawiło w zakłopotanie Króla. Nie jest on niestety tak błyskotliwy jak Ty, więc dam Rubenowi i Scarlet dostatecznie dużo czasu, aby mu to wytłumaczyli, ja zaś wytłumaczę Ci to w ciągu jednej chwili.

Zmienna w Ruby jest po prostu nazwą (bez cudzysłowu!), którą możemy nadać wartości (która jest elementem informacji jak słowa składające się na łańcuch Króla). Jednym z rodzajów wartości jest łańcuch, a innym rodzajem jest liczba. Liczbę widzieliśmy już, gdy Ruby podała długość łańcucha Króla jako 29 znaków.

Zmienną tworzymy w następujący sposób:

>> łańcuch_króla = 'Łańcuch na miarę króla'

>> waga_jamnika = 11

Znak równości mówi Ruby: „Hej! Weź tę wartość z prawej strony i zapamiętaj ją pod nazwą po lewej stronie”. Oznacza to, że później możemy wpisać nazwę zmiennej i otrzymać właściwą wartość:

>> waga_jamnika

=> 11

Może się to przydać, gdy próbujemy się zorientować, gdzie jest nasz krnąbrny zwierzak (nazwijmy go Maluch) i określić jego zmieniającą się wagę:

>> waga_Malucha = 11

=> 11

>> stracone_kilogramy = 2

=> 2

>> nowa_waga_Malucha = waga_Malucha – stracone_kilogramy

=> 9

Nie należy się martwić tym, że wartości 11 i 2 są powtarzane na ekranie; Ruby stara się nam pomóc. Zawsze oczekuje, że po lewej stronie znajdzie się zmienna, a po prawej wartość, więc nie można pomylić kolejności!

PRZYPISY

[1] Ta i podobne gry nie zawierały grafiki, a jedynie opis sytuacji. Żadna z gier tej grupy nie miała wersji w języku polskim (przyp. tłum.).

[2] Pseudonim autora, rysownika i programisty, który do roku 2009 publikował w sieci. Wspomniana tu książka jest jego najbardziej znaną pracą (przyp. tłum.).

[3] W chwili przekładu wersja polska nie była dostępna (przyp. tłum.).

[4] Google Tech Talks, luty 2008 (https://www.youtube.com/watch?v=oEkJvvGEtB4).