Wednesday, November 02, 2005

Początki z Ruby cz. 1.

Mamy ostatnio modę na Ruby - świetny język skryptowy autorstwa Yukihiro Matsumoto. Na najpopularniejszych blogach javowców co 5 wątek dotyczy Rubiego lub Ruby on Rails. Postanowiłem sprawdzić co takiego genialnego ma w sobie ten skryptowy język i zacząłem się go uczyć.

Ruby to przełom w programowaniu obiektowym. Jest to język, w którym wszystko jest obiektem. Nie ma tu typów prostych jak int, long czy double w Javie. Każda zmienna i wartość posiada więc metody i właściwosci. Jest to jednak przede wszystkim język dynamicznego typowania - nie trzeba definiowac typu obiektu ani rzutować typów. Brakuje tu interfejsów, są za to moduły. Mamy bardzo rozwinięte mechanizmy iteracji i bloki kodu będące wywołaniami zwrotnymi (ang. callbacks). Jest to język o bardzo skrótowym zapisie - z powodzeniem na jednym ekranie można mieć otwarte 2 edytory obok siebie (w javie monitora nie starcza na jednego;). To wszystko sprawia, że programuje się szybko i bezboleśnie - w myśl zasady Agile Programming. Ideą twórców zaś, jest sprawienie, że programujący w Ruby poczują prawdziwą przyjemność z programowania.

W następnych wątkach postaram się przybliżyć dobre strony (i być może złe strony) programowania w Rubym.

6 comments:

Unknown said...

Przełom bo to język, dzięki któremu będzie w końcu możliwe szybkie i bezproblemowe tworzenie aplikacji. Wystarczy spojrzeć na Rails - szkielet, dzięki któremu aplikacje tworzy sie od 5x do 10x szybciej niz np. w struts (!).

Anonymous said...

Smalltalk jest bardziej obiektowy niż Ruby, niemniej Ruby rocks.

Anonymous said...

"Przelom" ? Dla mnie za mocne slowa. Co do tworzenia szybciej aplikacji zalezy jakis narzedzi uzywasz, konkretnie ile kodu i plikow konfiguracyjnych i jsp generujesz. 5x i 10x szybciej - mowisz o twojej wydajnosci czy sa przeprowadzone jakies testy ?

Unknown said...

Chodzi o wydajność przeciętnego programisty Java - o szybkości tworzenia można przeczytać na wielu blogach programistów Java. Sam z doświadczenia wiem, że wielkie rzeczy to rzeczy zrobione szybko i wg potrzeb. Im technologia jest bardziej skomplikowana i stara się rozwiązać więcej problemów tym mniejsze szanse na stworzenie czegoś nowatorskiego i naprawdę dobrego. Java to przede wszystkim język do dużych przedsięwzięć, jednak nie nadaje się do robienia małych i średnich web-aplikacji czy stron www (świadczy o tym na przykład ilość stworzonych cmsów czy sklepów internetowych w technologiach takich jak PHP).

Ruby on Rails to naprawdę świetny framework, który pozwala zapomnieć programiście o wielu rzeczach nie związanych stricte z logiką biznesową (np. mechanizm utrwalania danych). To sprawia, że język ten jest świetny do prototypowania, jednak może być także użyty do tworzenia gotowych aplikacji.

P.S. Bardzo dobremu programiście Java zrobienie prostej aplikacji www może zająć niewiele więcej niż początkującemu programiście RoR. I właśnie w tym problem - dobry programista Java jest o wiele droższy i trudno takiego znaleźć. Można na przykład pokusić się o policzenie ilość phpowców i dobrych javowców (słaby programista Java albowiem może mieć spore problemy z pisaniem web-aplikacji) - obstawiam ze zwolenników PHP jest kilkadziesiąt razy więcej (i nie są to dane wyssane z palca... moja firma stara się od kilku miesięcy zatrudnić choćby przeciętnego Javowca - tymczasem przychodzą ludzie co potrafią jedynie pisać proste aplety czy bardzo proste swingowe aplikacje).

Anonymous said...

Chyba nikomu z nas nie zależy na większej konkurencji na rynku. A tym bardziej na uproszczeniu naszej pracy, jeśli jakiś program, początkujący programista, może wykonać szybciej niż zaawansowany programista Java, to poco ten drugi.

Ja też kiedyś pisałem proste aplikacje, każdy tak zaczyna. Może powinieneś powiedzieć ze twojej firmy nie stać na zainwestowanie kilku tysięcy na szkolenia dla nowego pracownika.

Anonymous said...

"Chyba nikomu z nas nie zależy na większej konkurencji na rynku. A tym bardziej na uproszczeniu naszej pracy..."

nie zależy nam na uproszczeniu naszej pracy? musisz być bardzo kiepskim programistą, nie masz podstawowego nawyku :>