Rubinek, rubinek


Języków programowania jest bardzo dużo. Wszystkie mają zalety i wady, każdy nadaje się do innych zastosowań. Jednym z ciekawszych, moim zdaniem, jest Ruby. Gdzieś głębiej w mojej świadomości istniała informacja, że taki język istnieje. Ba wiedziałem, że tworzone są w nim strony internetowe za pomocą frameworka RubyOnRails. Chciałbym się bliżej przyjrzeć temu językowi oraz na początek napisać w nim jakieś proste narzędzie. Mam już pewne pomysły co to może być, ale na razie tego nie zdradzę.

Ale co … ?

Ruby jest to interpretowany, w pełni obiektowy i dynamicznie typowany język programowania. O co dokładnie chodzi z tymi dziwnymi sformułowaniami? Już tłumaczę.

Jeżeli mówimy, że język jest interpretowany znaczy to nie mniej i nie więcej, że kod który napiszemy w pliku z odpowiednim rozszerzeniem nie musi przechodzić procesu kompilacji do tzw. binarki. W systemie Windows są to pliki z rozszerzeniem .exe Interpreter, czyli mechanizm, który posiada Ruby, Java, czy Python a nie ma C/C++ lub Assembler jest programem, który interpretuje plik źródłowy z kodem programu i go wykonuje.

Języki programowania można też podzielić na typowane dynamicznie lub statycznie. Objawia się to tym, że przy deklaracji zmiennych podaje się ich typ lub nie. Jako przykładu użyję klasy o nazwie „Pies”. Typowanie statyczne wymusza podawanie typu zmiennej już w trakcie pisania kodu i niemożliwe jest już zmienienie go.

 Pies pies = new Pies();

Typowanie dynamiczne z kolei mówi, że typ zmiennej jest określany podczas wykonywania się programu. A dokładnie w trakcie wywołania konstruktora klasy.

pies = Pies.new

Stworzył go w 1995 Yukihiro „Matz” Matsumoto. Zawiera on w sobie części ulubionych języków jego twórcy, czyli Perla, Smalltalka, Eiffela, Ady oraz Lipsa. Matz chciał uczynić go podobnym do języka naturalnego. Jak sam mówi:

Ruby jest prosty z wyglądu, ale bardzo skomplikowany w środku, tak jak ciało ludzkie

Warto dodać, że Ruby jest także zupełnie ramowy. Darmowe jest nie tylko korzystanie, ale również kopiowanie, modyfikowanie i rozpowszechnianie tego języka.

Ale jak … ?

Gdy szukałem informacji nt Ruby’ego natknąłem się na blog Mike Clarka, a dokładnie wpis dotyczący tego jak on uczył się tego języka. Taki model nauki od razu przypadł mi do gustu. Jedyne, co jest potrzebne to wiedza co to są testy jednostkowe, spis klas i metod oraz zainstalowany interpreter języka. Ale o co chodzi? Idea jest prosta. Tworzymy test dla klasy string, definiujemy sobie zmienną, którą będziemy wykorzystywać do nauki i testujemy metody. Do tego celu wykorzystujemy asercje np. w Ruby’m istnieje możliwość użycia operatora ‚*’ na dowolnym stringu. Jak do dowiedzenia się co z tego wyniknie zaprząc test? Wystarczy taka metoda w teście:

def test_expression_substitution
   assert_equal("", "#{'Hello! ' * 3}")
end

W wyniku uruchomienia tego testu otrzymamy w konsoli coś takiego:

Loaded suite string_test
Started
F.
Finished in 0.093141 seconds.

  1) Failure:
test_expression_substitution(StringTest) [string_test.rb:13]:
<""> expected but was
<"Hello! Hello! Hello! ">.

Jasno nam to pokazuje co podaliśmy jako wartość oczekiwaną (pusty string „”) a co otrzymaliśmy (napis „Hello!” został pomnożony 3 razy).

Moim zdaniem jest to ciekawy i praktyczny sposób poznawania języka. Zachęcam do sprawdzenia w domu 🙂

Może by tak prościej?

Oczywiście nie jest wymagana znajomość konstrukcji i mechaniki testów, żeby nauczyć się dowolnego języka. Innym sposobem jest konstruowanie prostego programu i sukcesywne dodawanie kolejnych funkcjonalności wraz ze zdobywaniem wiedzy o języku. Oczywiście innym dobrym pomysłem jest na początku zapoznanie się z książką w której są opisane podstawy języka, którego chcesz się nauczyć.

Wydaje mi się, że droga do nauczenia się jakiegokolwiek języka jest połączenie tych technik. Wiadomo, że nie da się czegoś nauczyć nie mając podstaw teoretycznych, najlepiej do tego nadają się książki. Na samej teorii też nikt nie zbudował swojej wiedzy, tylko potrzebna jest praktyka, a tę zdobywa się po prostu pisząc kod. Z innej jednak strony w pewnym momencie nie będziemy w stanie sami sprawdzać dodawanej funkcjonalności i trzeba zaprząc do pracy framework do testów.

Książki jakie mogę polecić to:

Więcej książek książek możesz znaleźć na tej stronie ::click::

Advertisements

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s