Programowanie Ruby


Original: http://www.ruby-doc.org/docs/ProgrammingRuby/

Ta książka to poradnik i odniesienie do języka programowania Ruby. Użyć Ruby, i będziesz pisać lepszy kod, być bardziej produktywnym i cieszyć programowania więcej.

Są odważne wnioski, ale myślę, że po przeczytaniu tej książki będziesz się z nimi zgadzam. I mamy doświadczenie kopii zapasowych to przekonanie.

Pragmatyczny programistów próbowaliśmy wiele, wiele języków w poszukiwaniu narzędzi, aby nasze życie łatwiejszym, na narzędzia, aby pomóc nam w naszej pracy lepiej. Do tej pory jednak, byśmy zawsze sfrustrowani językach używaliśmy.

Nasza praca polega na rozwiązywaniu problemów, a nie spoonfeed kompilatorami, więc lubimy dynamicznych języków, które dostosowują się do nas, bez arbitralnych, reguł sztywnych. Potrzebujemy jasności, dzięki czemu możemy komunikować się za pomocą naszego kodu. Cenimy zwięzły i zdolność wyrażania wymóg w kodzie dokładnie i skutecznie. Mniej kodu piszemy, tym bardziej, że można się pomylić. (A nasze nadgarstki i palce są wdzięczni, też.)

Chcemy być tak wydajne, jak to możliwe, więc chcemy nasz kod do uruchomienia po raz pierwszy, a czas spędzony w debugerze czas skradziony zegar rozwoju. Pomaga to także możemy wypróbować kod jak go edytować, jeśli masz czekać na 2 godziny dokonania cyklu, można także używać kart dziurkowanych i złożeniem pracy do kompilacji partii.

Chcemy się języka, który działa na wysokim poziomie abstrakcji. Wyższy poziom języka, mniej czasu spędzamy tłumaczyć nasze wymagania do kodu.

Kiedy odkryliśmy Ruby, zdaliśmy sobie sprawę, że chcemy znaleźć to, czego nie byłem szukasz. Więcej niż w jakimkolwiek innym języku, z którymi pracowałem, Ruby pozostaje na swój sposób. Możesz skoncentrować się na rozwiązywaniu problemu pod ręką, zamiast walczyć z kompilatora i języka problemów. To jak może pomóc Ci stać się lepszym programistą: dając Ci szansę spędzić czas tworzenia rozwiązań dla użytkowników, nie dla kompilatora.

Ruby Sparkles

Weź prawdziwy obiektowy język, takich jak Smalltalk. Rzuć nieznanego składni i przejść do bardziej konwencjonalnej, opartej na plikach kodu źródłowego. Teraz dodać w dobrej miary elastyczności i wygody językach takich jak Python i Perl.

Skończyć z Ruby.

Miłośnicy OO znajdą wiele do jak w Ruby: rzeczy takie jak czystej orientacji obiektu (wszystko jest obiektem), metaclasses, zamknięcia, iteratory oraz wszechobecnych zbiorami heterogenicznych. Smalltalk użytkownicy poczują się jak w domu (i C + + i Java, użytkownicy będą czuć zazdrosny).

W tym samym czasie, Perl i Python czarodzieje znajdzie wielu swoich ulubionych funkcji: pełna obsługę wyrażeń regularnych, ścisła integracja z systemie operacyjnym, skrótów wygodny i ocena dynamiki.

Ruby jest łatwy do nauczenia. Codzienne zadania są proste do kodu, a raz to zrobisz, to są one łatwe do utrzymania i rozwoju. Najwyraźniej trudne rzeczy, często okazują się nie być trudne po wszystkim. Ruby podąża zasadę najmniejszego Surprise — wszystko działa tak, czego można oczekiwać na nie z bardzo niewielu przypadkach szczególnych lub wyjątków. I to naprawdę robi różnicę, gdy jesteś programowania.

Wzywamy Ruby przejrzysty język. Przez to rozumieć, że Ruby nie przesłaniają rozwiązania piszesz za dużo składni i konieczność rezygnacji z ryz kodu wsparcia, aby dostać się prostych rzeczy zrobić. Z Ruby można pisać programy zbliżone do dziedziny problemu. Zamiast stale mapowanie swoje pomysły i projekty do poziomu pieszych większości języków, z Ruby znajdziesz możesz wyrazić je bezpośrednio i wyrazić je elegancko. To oznacza, że ​​kod szybciej. Oznacza to również, że programy pobytu czytelne i utrzymaniu.

Korzystanie z Ruby, ciągle zaskoczony, jak wiele możemy napisać kod w jednym posiedzeniu, kod, który działa za pierwszym razem. Istnieje bardzo niewiele błędy składni, nie ma pogwałcenia typ i znacznie mniej błędów niż zwykle. To ma sens: jest mniej, aby uzyskać tak. Brak uciążliwe średniki wpisać mechanicznie na końcu każdej linii. Brak kłopotliwych deklaracje typu, aby zachować w synchronizacji (zwłaszcza w osobnych plikach). Bez zbędnych słów po prostu zachować kompilator szczęśliwy. Nie podatne na błędy Kod ramy.

Więc dlaczego się Ruby? Ponieważ uważamy, że to pomoże Ci program, lepiej. To pomoże Ci skoncentrować się na problemie pod ręką, z mniejszą ilością zakłóceń. To sprawi, że Twoje życie łatwiejszym.
Co to za język Ruby?

W dawnych czasach, rozróżnienie między językami był prosty: były wkompilowane, jak C czy Fortran, lub interpretować, jak BASIC. Języków kompilowanych dał ci prędkość i niski poziom dostępu; interpretowane języki były wyższego poziomu, ale wolniej.

Razy zmienić, a rzeczy nie są już takie proste. Niektórzy projektanci językowe miały się nazywać swoje kreacje “ języków skryptowych.” Przez to, że przypuszczam, że oznacza to, że ich języki są interpretowane i mogą być wykorzystane do zastąpienia plików wsadowych i skryptów powłoki, wzniecanie zachowanie innych programów i samej działające system. Perl, TCL i Python wszyscy powołani języki skryptowe.

Czym dokładnie jest językiem skryptowym? Szczerze mówiąc nie wiem, czy to rozróżnienie opłacalne. W Ruby, można uzyskać dostęp do wszystkich podstawowych funkcji systemu operacyjnego. Możesz robić te same rzeczy w Ruby, który można w Perl lub Python, i można to zrobić bardziej czysto. Ale Ruby jest zasadniczo różne. Jest to prawdziwy język programowania, za, z mocnymi korzeniami teoretycznymi i eleganckiej, lekkiej składni. Można włamać razem bałagan “ skryptów” z Ruby, ale prawdopodobnie nie będzie. Zamiast tego, będziesz bardziej skłonny do zaprojektowania rozwiązania, do produkcji programu, który jest łatwy do zrozumienia i prosty w utrzymaniu, i kawałek ciasta do rozszerzenia i ponownie w przyszłości.

Mimo, że był używany Ruby dla zadań skryptowych, większość czasu używamy go jako uniwersalnym języku programowania. Użyliśmy go do tworzenia aplikacji GUI średniej klasy, procesy serwera, a my go używać do formatowania dużych części tej książki. Inne zostały wykorzystane do zarządzania maszyn serwera i bazy danych. Ruby jest serwowania stron WWW, interfejsów do baz danych i generowanie dynamicznej zawartości. Ludzie piszą sztuczną inteligencję i programy uczenia maszynowego w Ruby, i co najmniej jedna osoba korzysta z niego w celu zbadania naturalnej ewolucji. Ruby jest znalezienie domu jako narzędzie rozpoznawcze matematyki. I ludzie na całym świecie używają go jako sposób klejenia razem wszystkie wnioski różne. To jest naprawdę świetny język wytwarzania rozwiązania wielu problemów domen.

Czy Ruby dla mnie?

Ruby nie panaceum na problemy programistów jest. Zawsze będzie czas, kiedy trzeba się określonym językiem: środowisko może dyktować go, może masz specjalne biblioteki potrzebne, wątpliwości, lub po prostu wydajnością problem z treningu. Nie daliśmy się języków takich jak Java i C + + w całości (choć nie są czasy, kiedy chcą się dało).

Jednak Ruby jest chyba bardziej dotyczy niż myślisz. Jest to łatwe do rozszerzenia, zarówno w języku i poprzez łączenie w bibliotekach zewnętrznych. Jest przenośny na wielu platform. Jest to stosunkowo lekki i zużywa tylko skromne zasoby systemowe. I to jest łatwe do opanowania, znamy ludzi, którzy umieściliśmy Ruby kod do systemów produkcyjnych w dniu zabierania projekty tej książki. Użyliśmy Ruby wdrożenia elementów menedżera okien X11, zadanie, które jest zwykle uważane za poważne kodowanie C. Ruby celował, i pomógł nam napisać kod w godzinach, które inaczej miały dzień.

Gdy się dobrze z Ruby, myślimy będziesz wracać do niego jako wybranym języku.

Dlaczego napisać tę książkę?

Tak że po prostu skończył pisać pragmatycznej Programmer, nasze rodziny właśnie zaczął mówić do nas ponownie, i nagle poczuł potrzebę napisania kolejnej książki. Dlaczego? Domyślamy się, że sprowadza się do pewnego rodzaju zapałem misyjnym.

Ruby został stworzony przez Yukihiro Matsumoto (Matz) w Japonii. Od 1995 roku, jego popularność w Japonii wzrosła w zdumiewający tempie; istnieją pogłoski, że Ruby jest popularniejszy od Pythona w Japonii. Ale do tej pory, większość szczegółowej dokumentacji Ruby jest w języku japońskim. Prawdopodobnie nie język programowania, że ​​po prostu natknąć jest.

Chcieliśmy, aby rozpowszechniać, mieć więcej ludzi spoza Japonii używając Ruby i czerpanie korzyści, więc postanowiliśmy udokumentować Ruby w języku angielskim. I to, co zaczęło się jako mały projekt jakoś wzrosła ….

Wersje Ruby

Ta książka Wersja dokumentów 1.6 Ruby, która została wydana we wrześniu 2000 roku.

Ruby version Numeracja samego schematu używany do wielu innych projektów open source. Wydawnictwa z liczb parzystych subversion (1,0, 1,2, 1,4, i tak dalej) są stabilne, publiczne wydawnictwa. Są to wydawnictwa, które są opakowane i dostępne na różnych stronach internetowych Ruby.

Wersje rozwojowe oprogramowania mają numery nieparzyste subversion, np. 1,1 i 1,3. To musisz pobrać i zbudować dla siebie, jak to opisano w polu na stronie XXVII.
Instalowanie Ruby

Możesz dostać od ftp://ftp.netlab.co.jp/pub/lang/ruby Ruby, lub z mirrorów wymienionych na stronie 526 w Dodatku C. Znajdziesz tam najnowszą stabilną wersję, jak również rozwój różnych wydawnictwa.

Zawsze znajdziesz wersje kodu źródłowego Ruby, można również znaleźć gotowe pliki binarne dla Windows lub innych systemów operacyjnych (takich jak binarnej Ruby dla systemu Windows w http://www.pragmaticprogrammer.com/ruby/downloads/ruby-install . html).

Sidebar: bardzo Najnowsze Ruby

Dla tych, którzy mają być na najnowszej, hot-off-the-prasy i nieprzebadanej krawędzi tnącej (jako że byliśmy podczas pisania tej książki), można uzyskać wersji rozwojowych prosto z pracy deweloperskim repozytorium.

Programiści Ruby używać CVS (Concurrent Version systemu, swobodnie dostępne http://www.cvshome.com) jako systemu kontroli wersji. Możesz sprawdzić pliki z jako gość z ich archiwum, wykonując następujące polecenia CVS:

Cvs-d%: pserver: anonymous@cvs.netlab.co.jp :/ home / cvs
login
(Logowanie do anonymous@cvs.netlab.co.jp)
CVS password: guest
Cvs-d%: pserver: anonymous@cvs.netlab.co.jp :/ home / cvs
checkout ruby

Pełne drzewo kod źródłowy, tak jak deweloperzy ostatnio zostawił, zostaną skopiowane do podkatalogu “ ruby” na komputerze, aktualizacji nasze drzewo źródłowe z repozytorium po drugiej stronie świata. Czy nie jest to doskonała okazja, aby żyć?

Budynek Ruby

W Ruby dystrybucji znajdziesz plik o nazwie README, który wyjaśnia procedurę instalacyjną w szczegółach. Podsumowując, można zbudować Ruby on POSIX systemów wykorzystujących te same cztery polecenia używane do większości innych aplikacji open source:. / Configure, make, make test, i make install. Możesz budować Ruby pod innych środowiskach (w tym Windows) za pomocą emulacji środowiska POSIX, takie jak cygwin [Zobacz http://sourceware.cygnus.com/cygwin szczegółów.] Lub za pomocą natywnych kompilatorów — patrz ntsetup “. bat” w dystrybucji w podkatalogu win32 jako punkt wyjścia.

Uruchamianie Ruby

Teraz, że Ruby jest zainstalowany, to prawdopodobnie chcesz uruchomić kilka programów. W przeciwieństwie do skompilowanych środowiskach, są dwa sposoby na uruchamianie Ruby — interaktywnie i jako program.
Interactive Ruby

Najprostszym sposobem, aby uruchomić Ruby interaktywnie, to po prostu wpisz “ ruby” na zachęty powłoki.

Ruby%
puts “Witaj, świecie!”
^ D
Witaj świecie!

Tutaj mamy wpisane w singlu daje wyraz i koniec charakteru pliku (który jest control-D w naszym systemie). Proces ten działa, ale to jest coś w rodzaju bolesne jeśli się literówka, a tak naprawdę nie można zobaczyć, co dzieje się w trakcie pisania.

W katalogu próbki w Ruby dystrybucji znajdziesz skrypt o nazwie “ irb”. To idzie o krok lepiej pokazuje nam wartość każdego słowa, jak to ujęto:

Próbka cd%
% Ruby irb
ruby> = “Witaj, świecie!”
“Witaj, świecie!”
ruby> stawia
Witaj świecie!
zero
ruby> ^ D
%

Tutaj możemy zobaczyć wyjście z puts, a następnie zwracaną wartość z puts (co jest zero).

Że wszystko jest w porządku i dobrze, poza tym, że wyrażenia multilinii nie działają i nie można edytować linię jesteś na, lub wrócić i wykorzystać dotychczasowe linie (jak może z historii poleceń powłoki).

Na następny krok w górę z irb mamy irb — Interactive Ruby. IRB Shell Ruby, wraz z wiersza polecenia historii, możliwości edycji linii i kontroli pracy. Jest to dość konfigurowalny i posiada wiele opcji, tak bardzo, że ma swój początek dodatek na stronie 517. Zalecamy zapoznanie się z irb więc można spróbować niektórych z naszych przykładów interaktywnie.

Programy Ruby

Wreszcie, można uruchomić program z Ruby pliku jak każdy inny skrypt, program Perl, lub program Python. Możesz po prostu uruchomić Ruby podając nazwę skryptu jako argument:

% Ruby myprog.rb

Można też użyć opcji “ Unix shebang notacji” jako pierwsza linia w pliku programu. [Jeżeli Twój system to obsługuje, można uniknąć sztywnego kodowania ścieżki do Ruby w shebang linii używając #! / Usr / bin / env ruby, które będą przeszukiwać ścieżkę ruby ​​a następnie go uruchomić.]

#! / Usr / local / bin / ruby-w

puts “Hello, World!”

Jeśli zrobisz to wykonywalny plik źródłowy (za pomocą, na przykład, chmod + x myprog.rb), Unix pozwala uruchomić plik jako program:

% /. Myprog.rb
Hello, World!

Można zrobić coś podobnego w systemie Microsoft Windows z wykorzystaniem skojarzeń plików.
Zasoby

Odwiedź Ruby witryn sieci Web, http://www.rubycentral.com i http://www.ruby-lang.org, żeby zobaczyć co nowego, i porozmawiać z innymi użytkownikami Rubiego na grupie dyskusyjnej lub mailing list (patrz dodatek C) .

A my z pewnością docenią kontakt z Państwem. Komentarze, sugestie, błędy w tekście, i problemy w przykładach są mile widziane. E-mail na adres:

mailto: rubybook@pragmaticprogrammer.com

Jeśli możesz nam powiedzieć na temat błędów w książce, my dodamy je do errata listy na:

http://www.pragmaticprogrammer.com/ruby/errata/errata.html

Wreszcie http://www.pragmaticprogrammer.com/ruby zawiera również kod źródłowy prawie wszystkie książki przykładami, organizowanych przez strony.
Podziękowanie

Książka jest ogromnym przedsięwzięciem, jedno, że nigdy nie będzie w stanie wykonać bez pomocy naszych wszystkich naszych przyjaciół, starych i nowych. Jesteśmy dumni mogąc liczyć wśród naszych starych przyjaciół zespołu w Addison-Wesley: Mike Hendrickson, John Fuller, zawsze pomocny Julie Steele i wspaniałej Julie DiNicola. Dziękuję wszystkim.

Nasi recenzenci były fantastyczne. Stawiamy je wobec niektórych terminów niezwykle napięty i wyszła za nami. Przeglądając książkę, pełną szczegółów technicznych nie jest łatwe, więc jesteśmy szczególnie wdzięczni George Coe, Bob Davison, Jeff Deifik, Hal Fulton Tadayoshi Funaba, Clemens Hintze, Kazuhiro Hiwada, Kikutani Makoto, Mike Linksvayer, Aleksi Niemelä, Lew Perin, Jared Richardson, Armin Roehrl, Conrad Schneiker, Patrick Schoenbach i Eric Vought. Dzięki również przejść do dwóch Julies w Addison-Wesley za koordynację prawdziwie międzynarodowy wysiłek.

Kilka osób pomogło nam w poszczególnych obszarach tej książki. Tadayoshi Funaba wymieniane niezliczone maile z nami aż wreszcie zrozumiał moduł Data. Guy Decoux i Clemens Hintze cierpliwie odpowiedział na nasze pytania na temat pisania Ruby extensions i Masaki Suketa pomógł nam zrozumieć WinOLE moduł.

Chociaż wiele z oryginalnej dokumentacji Ruby jest w języku japońskim, jest coraz więcej angielskich tłumaczeń, w większości prowadzonych przez japońskich twórców, których umiejętności z angielskim nigdy nie przestają nas zdumiewać. Chociaż istnieje zbyt wiele indywidualnych wkładów do tego wysiłku, aby wymienić każdego autora, chcielibyśmy wyróżnić Goto Kentaro, który wyprodukował dużą ilość wysokiej jakości dokumentacji i umieścił go w Internecie.

Wreszcie, musimy podziękować Matz” “ Yukihiro Matsumoto, twórca Ruby. Straciliśmy rachubę liczby pytań jakie zadawane z niego, a liczba odpowiedzi pacjenta i szczegółowy on wysłany z powrotem. Jak również tworzenie naprawdę wspaniały język, Matz sprzyja cudownie wspierającego i otwartego kultury, w którym język może prosperować.

Dziękuję wszystkim. Domo Arigato gozaimasu.

Dave Thomas, Andy Hunt
Pragmatycznych programistów

http://www.pragmaticprogrammer.com

Konwencje zapisu

W tej książce, używamy w następujących postaciach typograficzne.

Dosłowne przykłady kodu są wyświetlane przy użyciu maszyny do pisania, jak czcionkę:

SampleCode klasa
def run
# …
koniec
koniec

W tekście, Fred # doit jest odniesienie do metody instancji (DOIT) klasy Fred, podczas Fred.new [W innej dokumentacji Ruby, możesz zobaczyć klasy metod napisane jako Fred :: nowego. To jest całkowicie poprawny składni Ruby, my po prostu się czuje, że jest mniej rozprasza Fred.new czytać] jest metodą klasy, a Fred :: EOF jest klasa stała..

Książka zawiera wiele fragmentów kodu Ruby. Jeżeli to możliwe, staraliśmy się pokazać, co się dzieje, kiedy biegają. W prostych przypadkach, pokażemy wartość wyrażenia na tej samej linii, co wyrażenia. Na przykład:

= 1
b = 2
+ b »3

W czasach, jesteśmy również zainteresowani wartościami instrukcji przypisania, w tym przypadku pokażemy je.

= 1 »1
b = 2 »2
+ b »3

Jeśli program tworzy bardziej złożone wyjście, pokazujemy ją poniżej kod programu:

3x {puts “Hello!” }

produkuje:

Witaj!
Witaj!
Witaj!

W niektórych z dokumentacji biblioteki, chcieliśmy pokazać, gdzie obowiązuje pojawia się na wyjściu. Zobaczysz te przestrzenie jako “ [spacja]” widoczne znaki.

Wiersza wywołania są pokazane z literalnym tekstu w rzymskim czcionki, oraz parametry podać w kursywą. Opcjonalne elementy są pokazane w dużych nawiasach kwadratowych.

ruby [
Flagi
] *
[
progname
] [
argumenty
] +