Pozytywne informacje z Polski i ze Świata.

Tutaj znajdziesz je wszystkie!

Ruby (język programowania)

Z Wikipedii

Skocz do: nawigacji, szukaj
Ruby
Logo języka
Pojawienie się 1995
Paradygmat wieloparadygmatowy
Typowanie dynamiczne (duck typing)
Implementacje Ruby MRI, YARV, JRuby, Rubinius
Aktualna wersja stabilna 1.9.0 (26 grudnia 2007
Twórca Yukihiro Matsumoto
Licencja Ruby license], GNU GPL
Platforma sprzętowa wieloplatformowy
Platforma systemowa wieloplatformowy
http://www.ruby-lang.org/

Ruby to interpretowany, w pełni obiektowy i dynamicznie typowany język programowania stworzony w 1995 roku przez Yukihiro Matsumoto (pseudonim Matz). W języku angielskim ruby oznacza rubin.

Spis treści

[edytuj] Rozwój języka

Yukihiro Matsumoto, twórca Ruby

Od roku 2003 lawinowo zdobywa nowych zwolenników, głównie za sprawą popularnego frameworku do tworzenia aplikacji webowych o nazwie Ruby on Rails, tworzonego przez grupę programistów pod kierownictwem Davida Heinemeiera Hanssona.

W roku 2005 według statystyk sklepu Amazon dwie najpopularniejsze książki na temat Ruby i Ruby On Rails były najlepiej sprzedawanymi pozycjami z kategorii Programowanie.

Najnowsza stabilna wersja Ruby to 1.8.7, wydana 31 maja 2008 roku. Kolejna wersja, 1.9, jest w trakcie rozwoju. Docelowo ma poprawić obsługę Unicode i poprawić wydajność interpretera, dzięki wprowadzeniu nowego mechanizmu o nazwie YARV (ang. Yet Another Ruby VM).

[edytuj] Składnia

Ruby bazuje na wielu językach, takich jak CLU, Eiffel, Lisp, Perl, Python czy Smalltalk. Składnia jest zorientowana liniowo i oparta na składni CLU oraz, w mniejszym stopniu, Perla.

[edytuj] Cechy szczególne

Ruby posiada:

  • prostą składnię
  • automatyczne odśmiecanie pamięci
  • iteratory
  • przeciążanie operatorów (ang. operator overloading)
  • "normalne" i zaawansowane właściwości zorientowania obiektowego (klasa, metoda ...)
  • obsługa wyjątków (ang. exception handling)
  • wyrażenia regularne wbudowane w składnię
  • liczby całkowite o dowolnych rozmiarach
  • dodawanie metod do instancji klasy - możliwa jest zmiana lub dodanie metody do instancji danej klasy
  • bloki i lambdy (closures) - wygodne przekazywanie funkcji jako parametrów
  • "Duck typing" - rozpoznawanie typów na podstawie ich zachowania, a nie deklaracji
  • moduły - rodzaj wielodziedziczenia pozwalający włączyć gotową implementację zbioru metod do danej klasy
  • możliwość zmiany praktycznie wszystkiego - dodanie dodatkowych metod do klasy Array, czy zmiana sposobu drukowania liczb całkowitych są niezmiernie proste.

Podobnie jak w Perlu, programy napisane w Ruby są małe - ten sam program, który w C czy Javie zajmie setki linijek, w Ruby czy Perlu zajmie zwykle kilkadziesiąt. W Ruby programy są często mniejsze niż analogiczne programy w Perlu, zachowując przy tym czytelność. Osiągnięte zostało to głównie dzięki wszechobecnej obiektowej składni. Np. program, który liczy ilość różnych linijek bez względu na rozmiar liter, wygląda tak:

puts STDIN.map{|s| s.downcase}.uniq.size

Programy pisane w Ruby charakteryzują się wysoką przenośnością pomiędzy platformami (istnieją implementacje na wiele systemów Uniksowych, DOS, Windows, Mac OS X, BeOS itd.).

Ruby jest rozwijany jako otwarte oprogramowanie i dostępny na licencji GPL oraz na własnej licencji wymagającej zmiany nazw plików wykonywalnych w przypadku zamknięcia kodu.

[edytuj] Przykłady

[edytuj] Zmienna liczba argumentów funkcji

Ruby ma bardzo ciekawy sposób przekazywania zmiennej liczby argumentów do funkcji. Ostatni parametr można zacząć od znaku *, co oznacza, że dowolna liczba parametrów zostanie przekształcona w tablicę. Można też w drugą stronę - tablicę przekształcić w listę argumentów (zarówno dla funkcji o stałej jak i dla funkcji o zmiennej liczbie argumentów) umieszczając znak * na początku:

def reverse_array(*b)
    if b.size == 1
        return b
    else
        return reverse_array(*b[1..-1])+[b[0]]
    end
end
 
print reverse_array("!\n","ld","wor",", ","llo","He")

[edytuj] Argumenty domyślne

Argumenty funkcji mogą mieć domyślne wartości. W poniższym przykładzie pierwszy parametr - greeted - ma nadpisaną wartość "people", a drugi - greeting - zostaje z domyślnym "Hello".

def greet(greeted="world",greeting="Hello")
    greeting + ", " + greeted + "!\n"
end
 
print greet("people")

[edytuj] Lambda-wyrażenia

W Ruby można konstruować anonimowe funkcje za pomocą lambda-wyrażeń. Wywołuje się je za pomocą metody call.

add2 = lambda {|x| x+2}
 
print add2.call(10), "\n"
 
def addX(x)
    lambda {|y| y+x}
end
 
add3=addX(3)
print add3.call(10), "\n"

[edytuj] Domknięcia

Każde lambda-wyrażenie posiada zasięg leksykalny zakresu, w którym zostało stworzone (tak więc jeśli w bloku domknięcia użyjemy zmiennej lokalnej, będzie ona istnieć do chwili destrukcji samego lambda-wyrażenia).

def fun
    a=0     # zmienna lokalna
 
    lambda{p a+=1} # uchwycenie zmiennej lokalnej w domknięciu
end
 
f=fun
 
f.call      # 1
f.call      # 2

[edytuj] Bindings

W Ruby w każdej chwili można zamrozić 'stan' danego zakresu leksykalnego i zachować referencję do niego. Następnie możemy odwołać się do wartości zmiennych (nawet lokalnych), które już dawno zmieniły swój stan lub przestały istnieć (leksykalnie)

def fun arg
    # w tym zakresie mamy zmienną lokalną arg
    return binding
end
 
b1 = fun 10
b2 = fun 20
 
p eval("arg",b1)    # 10
p eval("arg",b2)    # 20

[edytuj] Kontynuacje

W Ruby istnieją kontynuacje (obiekty zachowujące adres kontekstu wykonania), pozwalają one na nielokalne skoki i powroty (np. można wskoczyć w środek metody z zupełnie innego kontekstu)

def fun arg
    p "fun called"
    callcc{|$cc|}   # zachowujemy kontekst wykonania
    arg.shift
 
end
 
tab=[1,2,3,4,5]
 
fun tab
 
$cc.call if tab.size > 2    # nielokalny skok
 
p tab
 
output:
    "fun called"
    [3,4,5]

[edytuj] Marshalling

W Ruby nawet bardzo skomplikowane dane można po prostu zrzucić do łańcucha tekstowego, wysłać go lub zachować do pliku, po czym wczytać ponownie. b w poniższym przykładzie to zwykły łańcuch tekstowy.

a=["hello",["world"]]
b=Marshal.dump a
c=Marshal.load b
 
print a.inspect, "\n"
print c.inspect, "\n"

[edytuj] Metody dodawane do obiektu

Każdy obiekt może nadpisać metody danej klasy - właściwie każdy obiekt jest pseudoklasą (tzw. singleton class). W poniższym przykładzie metoda greet obiektu y zostaje nadpisana.

class Foo
    def greet
        print "Hello, world!\n"
    end
end
 
x=Foo.new
y=Foo.new
 
class << y
    def greet
        print "Goodbye, world!\n"
    end
end
 
x.greet
y.greet



[edytuj] Linki zewnętrzne

Wikibooks
Zobacz publikację na Wikibooks:
Ruby

[edytuj] Strony o Ruby

[edytuj] Pomoce do nauki


Prezydent do generała: „Proszę się wynosić”

- Prezydent nie najlepiej potraktował szefa BOR-u. Ponoć padły słowa proszę się wynosić - powiedział Zbigniew Chlebowski, szef klubu parlamentarnego PO w porannej audycji na antenie radia RMF. Przyznał, że jest różnica między tym sformułowaniem, a "won gnoju", powtarzanym przez posła Palikota.

Drugi dzień protestu ekologów na kominie elektrowni w Koninie

Pięcioro ekologów z Greenpeace, w tym Polka, przebywa od wtorku na 150-metrowym kominie Zespołu Elektrowni Pątnów-Adamów-Konin w Koninie.

Górnik zginął w "Wujku"

47-letni górnik - kombajnista zginął w katowickiej kopalni "Wujek" - podała w środę rzeczniczka Wyższego Urzędu Górniczego Edyta Tomaszewska.

Strażnicy miejscy łamali prawo, by zasłużyć na premie?

Prokuratura ustala, czy w czasie, gdy Lech Kaczyński był prezydentem Warszawy, nie dochodziło do nieprawidłowości w pracy straży miejskiej - informuje dziennik "Polska". Strażnicy mieli bowiem dokonywać czynności, na które prawo pozwala jedynie policji. Według "Polski" wszystko po to, żeby zasłużyć na premie według nowego systemu punktowego.

Komorowski: Moje żarty nie są najwyższej jakości, ale odwoływać?

- To dopiero jest śmieszne - jeżeli za żarty chce się odwołać Marszałka Sejmu. Nawet jeśli niekoniecznie były najwyższej jakości (...) i to w chwili, gdy Sejm będzie głosował nad budżetem - tak w radiowej Jedynce Bronisław Komorowski skomentował wniosek PiS o odwołanie go z funkcji Marszałka Sejmu. Chodzi o słowa wypowiedziane zaraz po incydencie prezydenta w Gruzji. Komorowski stwierdził wtedy "jaka wizyta, taki zamach".

Czy minogi mogą dostać zawału?

Z powodu minogów zagrzebanych w dnie Wisły pod Kwidzynem wstrzymano budowę najważniejszego mostu na Pomorzu. - Czy z ich powodu mamy poświęcić interesy mieszkańców Powiśla? - pyta eurodeputowany Janusz Lewandowski. Ekolodzy odpowiadają: - Trzeba było nie zmieniać projektu na szkodliwy dla środowiska.

„Orliki” Tuska w telewizji Urbańskiego. Do przerwy 0:1

Znany dziennikarz chce robić w publicznej telewizji teleturniej o „orlikach”, ale TVP go zbywa.

Polska nie zrezygnuje z bomb kasetowych

Nasz rząd nie podpisze międzynarodowej konwencji zakazującej produkcji, handlu i stosowania bomb kasetowych. Dziś w Oslo zrobi to ponad sto krajów. Nowa konwencja już została uznana za najważniejszy traktat humanitarny i rozbrojeniowy całej dekady.

Koniec armii poborowych

Zaczęło się ostatnie przymusowe wcielenie do polskiej armii. Potem kontakt z wojskiem skończy się na wizycie w WKU. A może nawet przez internet.

Bunt proboszczów

Proboszcz jak poseł na kadencję? Proboszczowie torpedują pomysł biskupów

Zobacz także inne, godne uwagi serwisy. Piewrszy z nich prezentuje wysokiej jakości drzwi natomiast drugi z nich projekty domów parterowych.
Prezydent do generała: „Proszę się wynosić”

- Prezydent nie najlepiej potraktował szefa BOR-u. Ponoć padły słowa proszę się wynosić - powiedział Zbigniew Chlebowski, szef klubu parlamentarnego PO w porannej audycji na antenie radia RMF. Przyznał, że jest różnica między tym sformułowaniem, a "won gnoju", powtarzanym przez posła Palikota.

Drugi dzień protestu ekologów na kominie elektrowni w Koninie

Pięcioro ekologów z Greenpeace, w tym Polka, przebywa od wtorku na 150-metrowym kominie Zespołu Elektrowni Pątnów-Adamów-Konin w Koninie.

Górnik zginął w "Wujku"

47-letni górnik - kombajnista zginął w katowickiej kopalni "Wujek" - podała w środę rzeczniczka Wyższego Urzędu Górniczego Edyta Tomaszewska.

Strażnicy miejscy łamali prawo, by zasłużyć na premie?

Prokuratura ustala, czy w czasie, gdy Lech Kaczyński był prezydentem Warszawy, nie dochodziło do nieprawidłowości w pracy straży miejskiej - informuje dziennik "Polska". Strażnicy mieli bowiem dokonywać czynności, na które prawo pozwala jedynie policji. Według "Polski" wszystko po to, żeby zasłużyć na premie według nowego systemu punktowego.

Komorowski: Moje żarty nie są najwyższej jakości, ale odwoływać?

- To dopiero jest śmieszne - jeżeli za żarty chce się odwołać Marszałka Sejmu. Nawet jeśli niekoniecznie były najwyższej jakości (...) i to w chwili, gdy Sejm będzie głosował nad budżetem - tak w radiowej Jedynce Bronisław Komorowski skomentował wniosek PiS o odwołanie go z funkcji Marszałka Sejmu. Chodzi o słowa wypowiedziane zaraz po incydencie prezydenta w Gruzji. Komorowski stwierdził wtedy "jaka wizyta, taki zamach".

Czy minogi mogą dostać zawału?

Z powodu minogów zagrzebanych w dnie Wisły pod Kwidzynem wstrzymano budowę najważniejszego mostu na Pomorzu. - Czy z ich powodu mamy poświęcić interesy mieszkańców Powiśla? - pyta eurodeputowany Janusz Lewandowski. Ekolodzy odpowiadają: - Trzeba było nie zmieniać projektu na szkodliwy dla środowiska.

„Orliki” Tuska w telewizji Urbańskiego. Do przerwy 0:1

Znany dziennikarz chce robić w publicznej telewizji teleturniej o „orlikach”, ale TVP go zbywa.

Polska nie zrezygnuje z bomb kasetowych

Nasz rząd nie podpisze międzynarodowej konwencji zakazującej produkcji, handlu i stosowania bomb kasetowych. Dziś w Oslo zrobi to ponad sto krajów. Nowa konwencja już została uznana za najważniejszy traktat humanitarny i rozbrojeniowy całej dekady.

Koniec armii poborowych

Zaczęło się ostatnie przymusowe wcielenie do polskiej armii. Potem kontakt z wojskiem skończy się na wizycie w WKU. A może nawet przez internet.

Bunt proboszczów

Proboszcz jak poseł na kadencję? Proboszczowie torpedują pomysł biskupów

Zobacz także inne, godne uwagi serwisy. Piewrszy z nich prezentuje wysokiej jakości drzwi natomiast drugi z nich projekty domów parterowych.

Jeśli skorzystałeś z informacji przedstawionych tutaj?

Nie bądź samolubem. Daj link do serwisu http://www.theplaceofhousesinc.com wszystkim z Twojego GG.