SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
Język Ruby
   wprowadzenie




    Radosław Bułat
http://radarek.jogger.pl
      29 luty 2008
O czym prezentacja?
●   wstęp do Rubiego
    ●   to nie jest tutorial
    ●   raczej przedstawienie możliwości oraz
        ekosystemu Rubiego
●   próba zainteresowania Was Rubym
    ●   `Hej, może warto to „obczaić“?`
    ●   pokazanie powodów, dla których warto
        zainteresować się nim
Może chociaż jedna osoba
       zrobi tak...
O czym nie jest prezentacja?
●   porównanie języków
●   wyższości jednego języka nad drugim
     ●   flame war'om – mówimy stanowcze NIE :-)
●   Ruby on Rails
     ●   Ruby to nie Ruby on Rails
Język Ruby
Cechy Rubiego
●   skryptowy             ●   zorientowany na
●   interpretowany            umysł człowieka a
                              nie maszynę
●   dynamiczny
                          ●   open source
●   w pełni obiektowy
                          ●   prosty w pisaniu,
●   automatyczne              prosty w czytaniu
    odśmiecanie
    (Garbage Collector)
                          ●   „fun“
●   bardzo wysokiego
    poziomu (VHLL)
Cechy Rubiego
●   prosta składnia,         ●   obsługa dowolnie
    podobna do innych            dużych liczb
    języków                  ●   wbudowane regexpy
●   wiele elementów          ●   obsługa wyjątków
    zaczerpniętych z
    takich języków jak       ●   elastyczność,
    Smalltalk, Perl, Lisp,       dynamizm,
    Python i innych              rozszerzalność,
                                 ekspresyjność
Twórca języka
Yukihiro „Matz“ Matsumoto




    http://flickr.com/photos/strangecontext/1850262566/
Historia
   ●   1993 – Yukihiro Matsumoto (Matz) rozpoczyna prace
       nad językiem gdyż ówczesne popularne języki nie
       spełniały jego wymagań. Ruby z założenia ma być
       połączeniem najlepszych cech takich języków Perl,
       Python, Lisp, Smalltalk oraz innych
   ●   1995 – wydanie pierwszej wersja języka, zdobywa
       popularność w Japonii
   ●   2004 – pierwsza wersja i od razu ogromny sukces
       Ruby on Rails, który zostaje killer application
   ●   2005 – dwie najpopularniejsze książki na temat Ruby
       i Ruby on Rails w sklepie Amazon były najlepiej
       sprzedawanymi pozycjami w kategorii
       Programowanie
   ●   2006 – Ruby językiem roku według TIOBE*
* http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Obecnie (luty 2008) 11 miejsce w rankingu TIOBE
W czym jest dobry?
●   jednolinijkowce (ruby –e ”puts ‘hello world’”)
●   skrypty „quick and dirty” (napisz, uruchom, skasuj)
●   skrypty „administratorskie“
●   przetwarzanie tekstu
●   prototypowanie
●   aplikacje webowe
●   aplikacje bazodanowe
●   aplikacje sieciowe i rozproszone
●   DSL (Domain Specific Language)
Myśli przewodnie
●   Principle of Least Surprise
●   język jest dla ludzi, nie dla komputerów
●   naturalność, swoboda
●   proste rzeczy powinny być proste,
    skomplikowane powinny być możliwe
Przegląd składni
Składnia
Składnia
Składnia
Wszystko jest obiektem



      Wszystko!*



* czyli to co możesz przypisać do zmiennej
Typy „proste“ także są
      obiektami
Klasy
Otwarte klasy
Bloki, domknięcia
●   do wywołania metody można dołączyć
    stowarzyszony z nią blok
●   blok to kawałek kodu, ale to wywołana metoda
    decyduje kiedy i jak wywołać blok
●   bloki to podstawowym element Rubiego i stosowane
    są do:
    ●   iteracji
    ●   callbacków
    ●   pozyskiwania zasobów
    ●   wątków
    ●   tranzakcji
Przykłady bloków
Przykłady bloków
Domain Specific Language (DSL)
Domain Specific Language – język
 programowania zaprojektowany, w
 przeciwieństwie do języków takich jak C lub
 Java, do ściśle określonego zadania.
Przykładem takich języków są wyrażenia
 regularne, SQL, make. Język dziedzinowy
 skupia się na robieniu jednego rodzaju zadań
 dobrze. Np. narzędzie make służy do
 definiowania celów oraz zależności między
 nimi.
Ruby i DSL
●   elastyczność składni Rubiego ułatwia
    tworzenie takich języków
●   możesz tworzyć mini języki i wykorzystywać
    bezpośrednio w kodzie
●   przykłady:
    ●   rake – Ruby make
    ●   Ruby on Rails
    ●   RSpec
●   dobrze napisany kod Rubiego z natury jest
    bliski DSL
Przykład DSL - Rake
Przykład DSL - Rake

$ rake -T
rake clean   # cleans everything
rake hello   # build hello executable
rake run     # runs hello
$ rake hello
cc -c -o main.o main.c
cc -o hello main.o
$ rake run
./hello
Hello!
Przykład DSL - ActiveRecord
Metaprogramowanie
●   technika która umożliwia programom
    tworzenie lub modyfikację kodu innych
    programów (lub ich samych)
●   odpowiednio wykorzystana daje
    ogromne możliwości
●   „zaprogramuj Twój program“
●   w Rubym to bułka z masłem!
Metaprogramowanie - przykład
Rspec - Behaviour Driven Development framework
Rspec - Behaviour Driven Development framework
Rspec - Behaviour Driven Development framework


$ spec stack_spec.rb -f specdoc


Stack
- should be empty after create
- should increase size after push
- should raise error when pop on empty stack
- should return top item when pop


Finished in 0.021827 seconds


4 examples, 0 failures
Narzędzia
●   irb (interactive ruby) – interaktywna
    konsola
●   rake – ruby make
●   rubygems – instalacja, dystrybucja
    bibliotek
●   rdoc, ri – dokumentacja kodu
    źródłowego
IRB
Przyszłość Rubiego?
●   wiele usprawnień w wersji 1.9
    ●   obsługa kodowań (np. utf8)
    ●   lepsza wydajność
●   Rubinius – maszyna wirtualna
    wzorowana na Smalltalk
●   JRuby (Sun)
●   IronRuby (Microsoft)
    ●   Silverlight
JRuby
Dlaczego warto?
●   przejrzysty, czytelny kod
●   radość z programowania


„Wiesz, ja jestem maniakiem jeśli chodzi
 o piękno mojego kodu. Czasem robię
 przerwę i patrzę na niego. Bo jest super
 :D.“
Ruby czyni programistę szczęśliwym
Dziękuję!




    Radosław Bułat
http://radarek.jogger.pl
      29 luty 2008

Mais conteúdo relacionado

Semelhante a Język Ruby - wprowadzenie

Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzkeGaldoMedia
 
Jak ugryźć Ruby, żeby nie połamać zębów?
Jak ugryźć Ruby, żeby nie połamać zębów?Jak ugryźć Ruby, żeby nie połamać zębów?
Jak ugryźć Ruby, żeby nie połamać zębów?The Software House
 
PHP@Docker - w produkcji
PHP@Docker - w produkcjiPHP@Docker - w produkcji
PHP@Docker - w produkcjiMarcin Kurzyna
 
Ruby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowych
Ruby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowychRuby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowych
Ruby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowychWydawnictwo Helion
 
Pocałunek śmierci
Pocałunek śmierciPocałunek śmierci
Pocałunek śmierciDivante
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
Rails 2 - web aplikacje bardziej subiektywnie
Rails 2 - web aplikacje bardziej subiektywnieRails 2 - web aplikacje bardziej subiektywnie
Rails 2 - web aplikacje bardziej subiektywnieBootstrap
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPROIDEA
 

Semelhante a Język Ruby - wprowadzenie (17)

Scala
ScalaScala
Scala
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzke
 
OpenEmbedded
OpenEmbeddedOpenEmbedded
OpenEmbedded
 
Iron Python I Dlr
Iron Python I DlrIron Python I Dlr
Iron Python I Dlr
 
Jak ugryźć Ruby, żeby nie połamać zębów?
Jak ugryźć Ruby, żeby nie połamać zębów?Jak ugryźć Ruby, żeby nie połamać zębów?
Jak ugryźć Ruby, żeby nie połamać zębów?
 
PHP@Docker - w produkcji
PHP@Docker - w produkcjiPHP@Docker - w produkcji
PHP@Docker - w produkcji
 
Ruby on Rails. Ćwiczenia
Ruby on Rails. ĆwiczeniaRuby on Rails. Ćwiczenia
Ruby on Rails. Ćwiczenia
 
Ruby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowych
Ruby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowychRuby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowych
Ruby on Rails 2.1. Tworzenie nowoczesnych aplikacji internetowych
 
Java. Wprowadzenie
Java. WprowadzenieJava. Wprowadzenie
Java. Wprowadzenie
 
Pocałunek śmierci
Pocałunek śmierciPocałunek śmierci
Pocałunek śmierci
 
Wprowadzenie do OpenEmbedded
Wprowadzenie do OpenEmbeddedWprowadzenie do OpenEmbedded
Wprowadzenie do OpenEmbedded
 
Java. Sztuka programowania
Java. Sztuka programowaniaJava. Sztuka programowania
Java. Sztuka programowania
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
DSL - DYI
DSL - DYIDSL - DYI
DSL - DYI
 
Rails 2 - web aplikacje bardziej subiektywnie
Rails 2 - web aplikacje bardziej subiektywnieRails 2 - web aplikacje bardziej subiektywnie
Rails 2 - web aplikacje bardziej subiektywnie
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
 

Język Ruby - wprowadzenie

  • 1. Język Ruby wprowadzenie Radosław Bułat http://radarek.jogger.pl 29 luty 2008
  • 2. O czym prezentacja? ● wstęp do Rubiego ● to nie jest tutorial ● raczej przedstawienie możliwości oraz ekosystemu Rubiego ● próba zainteresowania Was Rubym ● `Hej, może warto to „obczaić“?` ● pokazanie powodów, dla których warto zainteresować się nim
  • 3. Może chociaż jedna osoba zrobi tak...
  • 4.
  • 5. O czym nie jest prezentacja? ● porównanie języków ● wyższości jednego języka nad drugim ● flame war'om – mówimy stanowcze NIE :-) ● Ruby on Rails ● Ruby to nie Ruby on Rails
  • 7. Cechy Rubiego ● skryptowy ● zorientowany na ● interpretowany umysł człowieka a nie maszynę ● dynamiczny ● open source ● w pełni obiektowy ● prosty w pisaniu, ● automatyczne prosty w czytaniu odśmiecanie (Garbage Collector) ● „fun“ ● bardzo wysokiego poziomu (VHLL)
  • 8. Cechy Rubiego ● prosta składnia, ● obsługa dowolnie podobna do innych dużych liczb języków ● wbudowane regexpy ● wiele elementów ● obsługa wyjątków zaczerpniętych z takich języków jak ● elastyczność, Smalltalk, Perl, Lisp, dynamizm, Python i innych rozszerzalność, ekspresyjność
  • 9. Twórca języka Yukihiro „Matz“ Matsumoto http://flickr.com/photos/strangecontext/1850262566/
  • 10. Historia ● 1993 – Yukihiro Matsumoto (Matz) rozpoczyna prace nad językiem gdyż ówczesne popularne języki nie spełniały jego wymagań. Ruby z założenia ma być połączeniem najlepszych cech takich języków Perl, Python, Lisp, Smalltalk oraz innych ● 1995 – wydanie pierwszej wersja języka, zdobywa popularność w Japonii ● 2004 – pierwsza wersja i od razu ogromny sukces Ruby on Rails, który zostaje killer application ● 2005 – dwie najpopularniejsze książki na temat Ruby i Ruby on Rails w sklepie Amazon były najlepiej sprzedawanymi pozycjami w kategorii Programowanie ● 2006 – Ruby językiem roku według TIOBE* * http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
  • 11. Obecnie (luty 2008) 11 miejsce w rankingu TIOBE
  • 12. W czym jest dobry? ● jednolinijkowce (ruby –e ”puts ‘hello world’”) ● skrypty „quick and dirty” (napisz, uruchom, skasuj) ● skrypty „administratorskie“ ● przetwarzanie tekstu ● prototypowanie ● aplikacje webowe ● aplikacje bazodanowe ● aplikacje sieciowe i rozproszone ● DSL (Domain Specific Language)
  • 13. Myśli przewodnie ● Principle of Least Surprise ● język jest dla ludzi, nie dla komputerów ● naturalność, swoboda ● proste rzeczy powinny być proste, skomplikowane powinny być możliwe
  • 18. Wszystko jest obiektem Wszystko!* * czyli to co możesz przypisać do zmiennej
  • 19. Typy „proste“ także są obiektami
  • 20. Klasy
  • 22. Bloki, domknięcia ● do wywołania metody można dołączyć stowarzyszony z nią blok ● blok to kawałek kodu, ale to wywołana metoda decyduje kiedy i jak wywołać blok ● bloki to podstawowym element Rubiego i stosowane są do: ● iteracji ● callbacków ● pozyskiwania zasobów ● wątków ● tranzakcji
  • 25. Domain Specific Language (DSL) Domain Specific Language – język programowania zaprojektowany, w przeciwieństwie do języków takich jak C lub Java, do ściśle określonego zadania. Przykładem takich języków są wyrażenia regularne, SQL, make. Język dziedzinowy skupia się na robieniu jednego rodzaju zadań dobrze. Np. narzędzie make służy do definiowania celów oraz zależności między nimi.
  • 26. Ruby i DSL ● elastyczność składni Rubiego ułatwia tworzenie takich języków ● możesz tworzyć mini języki i wykorzystywać bezpośrednio w kodzie ● przykłady: ● rake – Ruby make ● Ruby on Rails ● RSpec ● dobrze napisany kod Rubiego z natury jest bliski DSL
  • 28. Przykład DSL - Rake $ rake -T rake clean # cleans everything rake hello # build hello executable rake run # runs hello $ rake hello cc -c -o main.o main.c cc -o hello main.o $ rake run ./hello Hello!
  • 29. Przykład DSL - ActiveRecord
  • 30. Metaprogramowanie ● technika która umożliwia programom tworzenie lub modyfikację kodu innych programów (lub ich samych) ● odpowiednio wykorzystana daje ogromne możliwości ● „zaprogramuj Twój program“ ● w Rubym to bułka z masłem!
  • 32. Rspec - Behaviour Driven Development framework
  • 33. Rspec - Behaviour Driven Development framework
  • 34. Rspec - Behaviour Driven Development framework $ spec stack_spec.rb -f specdoc Stack - should be empty after create - should increase size after push - should raise error when pop on empty stack - should return top item when pop Finished in 0.021827 seconds 4 examples, 0 failures
  • 35. Narzędzia ● irb (interactive ruby) – interaktywna konsola ● rake – ruby make ● rubygems – instalacja, dystrybucja bibliotek ● rdoc, ri – dokumentacja kodu źródłowego
  • 36. IRB
  • 37. Przyszłość Rubiego? ● wiele usprawnień w wersji 1.9 ● obsługa kodowań (np. utf8) ● lepsza wydajność ● Rubinius – maszyna wirtualna wzorowana na Smalltalk ● JRuby (Sun) ● IronRuby (Microsoft) ● Silverlight
  • 38. JRuby
  • 39. Dlaczego warto? ● przejrzysty, czytelny kod ● radość z programowania „Wiesz, ja jestem maniakiem jeśli chodzi o piękno mojego kodu. Czasem robię przerwę i patrzę na niego. Bo jest super :D.“
  • 40. Ruby czyni programistę szczęśliwym
  • 41. Dziękuję! Radosław Bułat http://radarek.jogger.pl 29 luty 2008