Ruby po kapkách (1.) – instalace Ruby

29. ledna 2009

Dali jste si do nového roku předsevzetí, že se naučíte nový programovací jazyk? Jestli ano, možná vám přijde vhod volná série článků, ve kterých si představíme jazyk Ruby. Jestli ne, ještě pořád to můžete dohnat. Ostatně dávat si předsevzetí jen jeden den v roce je dosti neefektivní.

Tato série je primárně určena pro čtenáře, kteří již mají nějakou zkušenost s programováním. V takovýchto rámečcích ale budeme uvádět informace, které by měly umožnit pochopění i motivovanému začátečníkovi.

Než se pustíme do Ruby, dejme ještě slovo našemu skeptickému já. Proč se mám učit nový (a potenciálně okrajový) programovací jazyk, když:

  • Jsem ostřílený profík a ta Java (C#, C, Cobol…;-) mi stačí na cokoliv?
  • Mohu čas investovat do užitečnějších věcí.
  • Doplňtě vaši vlastní oblíbenou námitku.

Jak se říká, kolik programovacích jazyků umíš, tolikrát jsi počítačem. Ale vážně. Za tímto vtípkem se skrývá pravdivý postřeh. Programování vyžaduje mentální uchopení a zpracování problému tak, aby bylo dosaženo požadovaného řešení. Každý programovací jazyk pak nabízí určitou filozofii toho, jak při chápání a řešení problému postupovat. Osvojíte-li si novou filozofii řešení problémů, zvyšujete svou schopnost vypořádat se s problémy obecně. Jak ještě uvidíme, Ruby se inspirovalo filozofií několika velmi významných jazyků, takže poskytuje mimořádně velký prostor pro myšlenkové obohacení. Navíc se většina lidí shoduje na tom, že výsledný mix je mimořádně sexy.

Konec teorie. Pojďme k praxi. Ruby je interpretovaný jazyk. Pro začátek si tedy nainstalujme oficiální interpret.

Programovací jazyky lze rozdělit na kompilované (překládané a interpretované.) Liší se zacházením se zdrojovým kódem programu. Kompilované jazyky používají kompilátor k překladu zdrojového kódu do podoby spustitelného souboru, který obsahuje instrukce přímo vykonatelné procesorem na dané platformě. V případě interpretovaných jazyků je vždy třeba interpret, který překládá instrukce zdrojového kódu za běhu programu. Někde mezi těmito póly se ještě nachází třetí významná skupina, což jsou jazyky kompilované pro nějaký virtuální stroj. Každý jazyk může mít v principu jak kompilátor, tak i interpret.

Interpret Ruby je možné získat v podobě binární instalace nebo v podobě zdrojového kódu. Binární instalace jsou dostupné pro MS Windows, hlavní distribuce Linuxu, různé varianty BSD, Mac OS X a Solaris.

Interpret pro MS Windows s přibalenými nejužitečnějšími knihovnami lze nejsnadněji pořídit v podobě One-Click instalátoru, jehož aktuální verzi naleznete na http://rubyforge.org/frs/?group_id=167. Název instalátoru poněkud přehání, ale instalace je i tak velmi snadná. Po spuštění je třeba pouze odsouhlasit licenční podmínky a adresář pro umístění souborů. Instalace trvá podle rychlosti počítače zhruba několik desítek sekund, z čehož většinu zabere rozbalování množství malých souborů s HTML dokumentací.

Pro instalaci v některé z Linuxových distribucí založených na Debianu spusťe v terminálovém okně příkaz:

% sudo apt-get install ruby irb rdoc

V jiných operačních systémech je třeba postupovat standardním způsobem obvyklým pro používaný balíčkovací systém.

V případě, že se rozhodneme pro kompilaci ze zdrojového kódu v jazyce C, funguje na většině unixových operačních systémů standardní postup:

gunzip ruby-1.8.7.tar.gz
tar xvf ruby-1.8.7.tar
cd ruby-1.8.7/
./configure
make
make test
make install

Pro ověření správnosti instalace zkuste v terminálovém okně příkaz ruby -v, který zobrazí verzi interpretu. Pokud jste v MS Windows neinstalovali interpret s administrátorskými právy, budete si muset ručně nastavit proměnnou prostředí PATH tak, aby obsahovala cestu k interpretu (typicky C:\Ruby\bin).

C:\Tmp>ruby -v
ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]

Výhodou interpretovaných jazyků při učení je, že jejich povaha umožňuje interaktivní práci. Co to znamená? Interprety mají obvykle režim, v němž se chovají velmi podobně jako příkazový procesor (shell). Ve smyčce zobrazují výzvu, čekají na zadání příkazu nebo výrazu, výraz vyhodnotí a ihned zobrazí výsledek. V Ruby pro tento účel slouží aplikace irb, kterou spustíme stejnojmenným příkazem.

C:\Tmp>irb
irb(main):001:0> 1 + 1
=> 2
irb(main):002:0>
C:\Tmp>irb
irb(main):001:0> 1 + 1
=> 2
irb(main):002:0> (2 + 5) * 6
=> 42
irb(main):003:0> exit

C:\Tmp>

(Relaci ukončíme příkazem exit nebo stisknutím Ctrl-D.) Jak je vidět, můžeme irb kromě učení používat ještě minimálně jako kalkulačku.

Druhým a nejběžnějším použitím interpretu je spuštění programu, jehož zdrojový kód kód je uložen v souboru (typicky s příponou rb). Spouštění probíhá pomocí ruby soubor.rb. Do třetice všeho dobrého lze interpretu zadávat krátké programy přímo – jako parametr na příkazové řádce. A protože Ruby má značné vyjadřovací schopnosti, vleze se na příkazovou řádku vcelku dost logiky. Vyzkoušejte následující příkaz:

ruby -le „33.times{|y|print‘ ‚*(32-y),(0..y).map{|x|~y&x>0?‘ .‘:‘ A‘}}“

(V unixovém prostředí prohoďte uvozovky a apostrofy.)

Triangle

Pokud vás zaujal vygenerovaný obrazec, více informací o něm najdete na http://en.wikipedia.org/wiki/Sierpinski_triangle. Slibuji, že pokud dočtete tuto sérii aspoň do poloviny, budete výše uvedený kód umět přečíst a pochopit, jak funguje.

Na závěr zahřívacího kola uveďme seznam důležitých webových zdrojů:

A úplně na závěr jeden zdroj papírový a navíc v češtině: Hal Fulton: Ruby – kompendium znalostí pro začátečníky i profesionály.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Mohlo by vás také zajímat

Nejnovější

2 komentářů

  1. foo

    Říj 27, 2009 v 17:49

    „ruby -v“ vrací „ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]“..tak jsem zkusil stáhnou aktuální instalátor a to stejné.
    Rozdíl je snad jen v systému. Používám XP.

    Odpovědět
  2. foo

    Říj 27, 2009 v 18:09

    Oprava :-)
    „ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]“
    Stačí stáhnout „1.8.6-27 Release Candidate 2“.

    Odpovědět

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *