3

ROzważania o RoR, PHP…

Posted by Dawid on mar 2, 2009 in Komentarz, Programowanie, Ruby, Ruby On Rails

Kilka miesięcy temu (gdzieś koło roku nawet, więc wypadałoby napisać – kilkanaście…) zetknąłem się z językiem Ruby, i oczywiście z frameworkiem Ruby On Rails. Jako że jestem programuję głównie dla sieci, ale też nie bezmyślnie, od dawna dostrzegam pewnie nazwijmy to niedostatki języka PHP. Dlatego właśnie wyczytałem w sieci wszystko, co się da na temat tej wówczas dla mnie nowości, mocno się zainteresowałem, przyrzekłem sobie, że będę się tego „czegoś” uczyć w wolnych chwilach, aby nie tylko podnieść własne kwalifikacje, ale po prostu – aby poznać nowe trendy, jak to się ładnie nazywa…
Niestety, smutna rzeczywistość zgotowała dla mnie coś zupełnie innego, bowiem w ciągu ostatnich kilku miesięcy tak byłem zawalony robotą, że początkowe „mocne postanowienia” musiałem, chcąc-niechcąc, odłożyć w kąt i skupić się na dotychczasowym klepaniu kodu.
Teraz, po lekturze http://www.oreillynet.com/ruby/blog/2007/09/7_reasons_i_switched_back_to_p_1.html zastanawiam się, czy właściwie nie zrobiłem dobrze? Czy Railsy nadal, mimo że upłynęło przecież kilka miesięcy, są w powijakach? Myślę, że tak, mimo wszystko nadal jest to technologia bardzo niszowa, z której przyswojeniem można jeszcze spokojnie poczekać.
Póki co, w naszym zresztą mocno zacofanym kraju wciąż niepodzielnie rządzi „cowboy-codding” w postaci zgraj licealistów, którzy za pół darmo piszą serwisy i-netowe (czy zresztą mocno wkurzają „prawdziwych” programistów; można o tym przeczytać na niemal każdym forum poświęconym językowi PHP).
Czy to źle, że Railsy tak kiepsko sobie radzą? Z mojej perspektywy – wcale nie. Mogę chociażby dzisiaj zasiąść do zgłębiania tego frameworka, i powiedzmy za miesiąc mieć go jako-tako opanowanego, a i tak pewnie byłbym jednym z pierwszych kilkudziesięciu zapaleńców, którym w ogóle chciało się to robić. :)
Z drugiej jednak strony, czy warto? Powiem szczerze: mocno mnie ten język pociąga, jego konstrukcja jest wręcz bajeczna, ale… no właśnie, zapytam po raz kolejny: czy warto uczyć się Ruby, Ruby On Rails???

Tagi: ,

 
1

Ruby on Rails, vol. 3 – podstawy Ruby

Posted by Dawid on lis 16, 2008 in Programowanie, Ruby, Ruby On Rails

Skoro instalację języka Ruby i frameworka Rails mamy już za sobą, warto byłoby poświęcić trochę czasu na bliższe zapoznanie się zarówno z samym językiem, jak i podstawami frameworka.
Zaznaczam, że w tym miejscu podaję podstawy tego języka, które w żadnym razie nie wyczerpują tematu, a czasami są tylko szczytem góry lodowej. Jeśli Twoja ciekawość, Drogi Czytelniku, w którymś momencie jest niezaspokojona, pod koniec tego wpisu podaję kilka przydatnych linków, pod którymi znaleźć powinieneś odpowiedzi na interesujące Cię pytania. Zapraszam oczywiście również do komentowania wpisu – wszelkie uczestnictwo jest jak najbardziej mile widziane!
No, ale zacznijmy już w końcu, prawda?

Nieco historii…
Jak każdy tutorial, czy opis technologii, tak i tutaj zacznę od pewnego rysu historycznego, który pozwoli Ci nieco przychylniej spojrzeć na język Ruby i Railsy.

Zacznijmy od samego języka Ruby. Jest to stosunkowo młody język, bo jego historia zaczęła się w roku 1995, kiedy to Yukihiro Matsumoto (pseudonim Matz) stworzył interpretowany, w pełni obiektowy i dynamicznie typowany język programowania, który nazwał Ruby (z angielskiego – rubin).
Aby zdobyć sobie popularność, trzeba było tylko 8. lat – wtedy to, w 2008 roku, na rynku pojawił się framework Ruby on Rails. Od tego czasu (darujmy sobie szczegóły historii i ewolucji Ruby’iego i Railsów) masowo zdobywa sobie popularność.
Co jest przyczyną aż takiej „kariery” Railsów (umówmy się: kiedy używam słowa Rails, to w kontekście połączenia Ruby’iego i frameworka Rails; kiedy natomiast wskazuję wyraźnie „ruby” – piszę o samym języku programowania)? Praktycy podawać tutaj będą dużo przyczyn, ale najczęściej wymienianymi są: prostota, szybkość pisania kodu (trudno właściwie mówić tutaj o pisaniu… ale nie uprzedzajmy wydarzeń), intuicyjność… Te zachwyty można by mnożyć, jednak wróćmy do głównego wywodu.
Co jeszcze nas w tym miejscu powinno interesować? Acha, licencjonowanie. Oczywiście Ruby i framework są otwartym oprogramowaniem, licencjonowanym na zasadach GPL. Czyli – w zasadzie dowolność.

Teraz przejdźmy dalej, do rzeczy bardziej interesujących…

Podstawowe typy danych
Ruby wspiera wszystkie typy danych znane programistom. Są to więc stringi, integery, floaty, itd. Nieco inaczej się nazywają, ale – jak napisano wyżej – jest to jeden z języków typowanych dynamicznie, w związku z czym nie musimy jawnie deklarować używanego typu danych, jak to ma miejsce chociażby w języku C. Tutaj wystarczy napisać:

puts 1+2
w odpowiednim miejscu, żeby „na wyjściu” otrzymać wynik z dodawania 1 + 2.

Ach, ale jeszcze nie wspomnieliśmy o najpopularniejszych sposobach pracy z Rubym!
Już nadrabiam…

Jeśli tak się nieszczęśliwie składa, że naszym środowiskiem roboczym jest jedynie słuszny Windows, nie rozpaczajmy! Mamy tutaj do dyspozycji „okienkowego” (a jakże…) fxri. Wyglądem przypomina komunikator w rodzaju GG, w swojej przed-betowej wersji. Ta całkiem niepozornie wyglądająca aplikacyjka może być całkiem przydatnym narzędziem, szczególnie teraz, kiedy stawiamy dopiero pierwsze kroki… Zwróćmy chociażby uwagę na lewą, dość długą listę klas i metod. Wystarczy jedno kliknięcie, by dowiedzieć się składni wybranej klasy, czy metody. Taki podręczny help na pewno nam nie zaszkodzi. Ale wróćmy teraz do głównego wywodu.

Wpiszmy więc do naszego fxri puts 1+2. Po zatwierdzeniu Enterem otrzymamy poniżej coś takiego:

3
=> nil

Trójka – to oczywiście wynik naszego dodawania, bo właśnie takie polecenie wydaliśmy (1+2). Komenda puts była zwykłym poleceniem wyświetlenia ciągu tekstowego na domyślnym wyjściu. A ponieważ jako ciąg tekstowy wpisaliśmy 1+2, interpreter policzył wynik tego dodawania i po prostu nam go wypisał.
Zmodyfikujmy teraz nieco nasze polecenie; napiszmy

puts "1+2"

No, tym razem rzeczywiście zażyczyliśmy sobie na wyjściu stringa składającego się z trzech znaków! (1, 2, oraz znaku +). Na wyjściu otrzymaliśmy

1+2
=> nil

Aby zachować w tym miejscu pewną dokładność, przyznać należy, że polecenie puts dokłada na końcu ciągu znak nowej linii, dlatego też => nil pojawia się niżej.
Z kolei => nil oznacza zakończenie działania naszego „programu” (mówiąc w wielkim skrócie, ale o tym kiedy indziej…).
Aby karetka nie przechodziła nam do kolejnej linii, wystarczy nieco zmodyfikować nasz program:

print „1+2″

Teraz na wyjściu otrzymamy

1+2
=> nil

W ten właśnie sposób doszliśmy do miejsca, w którym zaczyna się każdy podręcznik programowania, jaki tylko wzięlibyśmy do ręki: czas na napisanie „Hello world!„.

Jeśli nie jesteś na tyle bystry, by zrobić to samemu, masz dwa wyjścia: przewinąć nieco stronę i raz jeszcze przeczytać ten wpis, albo skorzystać z „gotowca”, który wygląda następująco:

puts „Hello world”

Prostsze, niż budowa cepa, prawda?

Wejście-wyjście
Poznaliśmy już dwie metody wyprowadzenia ciągu znaków na standardowe wyjście, jakim jest ekran konsoli. Są to:
puts – wyprowadzenie ciągu znaków na ekran i dodanie na koniec „ukrytego” znaku nowej linii, oraz
print – jak wyżej, tylko bez dodawania nowej linii.
Jest jeszcze printf, który działa identycznie, jak analogiczna funkcja znana z języka C (więcej informacji znajdziecie tutaj).
Czas bliżej poznać polecenie open – najprostsze z serii poleceń operujących na plikach.
Przeanalizujmy prosty przykład:
plik = open "C:\\dowolny_plik.txt"
puts plik.gets

a teraz porównajmy go z nieco dłuższym zapisem:
open "C:\\dowolny_plik.txt" do |plik|
puts plik.gets
end

Skutek działania tych dwóch zapisów jest w zasadzie ten sam: oba otwierają dowolny_plik.txt, pobierają z niego pierwszą linię, po czym wypisują ją (stosując znane nam już puts) na ekranie.
Odczytu danych z dowolnego w zasadzie pliku możemy dokonać na dwa sposoby: klasycznie, lub w sposób blokowy. Zarknijmy na dwa przykłady:
plik = File.open "C:\\dowolny_plik.txt"
while ln = plik.gets do puts ln end
plik.close

i drugi:
File.open "C:\\dowolny_plik.txt" do |plik|
while ln = plik.gets do puts ln end
end

Przewaga tego drugiego sposobu widoczna jest wtedy, kiedy przyjdzie nam śledzić wyjątki. W pierwszym przykładzie, jeśli wystąpi błąd proces może pominąć zamknięcie pliku, czego oczywiście byśmy nie chcieli. W drugim przykładzie plik zostanie zawsze zamknięty, nawet w przypadku wystąpienia błędu. Dlatego oczywiście zalecany jest ten drugi, jak można się domyślić… :)

Na tym zakończymy „podstawy podstaw” Ruby’ego. W następnym odcinku zajmiemy się sterowaniem programem. :)

Tagi: ,

Copyright © 2010 Dawid pisze… All rights reserved. Theme by Laptop Geek.