🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.ruby
Article #1084

Re: ruby - wrażenia i pytania

#1084
From: Przemysław Kowalczyk
Date: Sat, 17 May 2008 07:47
105 lines
5787 bytes
On Fri, 16 May 2008 00:14:22 +0200, Marcin Gryszkalis <mg@fork.pl> wrote:
>
> Napisałem aplikację w rubim, serwerek SOAP, kilka funkcji plus proste

SOAP - bleeee :)

> operacje na bazie, plus wysyłanie maili w oparciu o szablony,  
> konfiguracja
> w yamlu. Wszystko razem niecałe 500 wierszy.

sweet. moglbys sie podzielic swoim oszacowaniem, ile "wierszy" zajeloby to  
w Javie? :)

> Uzyłem NB6 jako środowiska i "programowania w ruby" pragmatycznych
> programmerów jako przewodnika. Moje doświadczenie to głównie java (razem  
> z
> ee) i perl.

ja tez sie przesiadlem z Javy na Ruby okolo rok temu, wiec moja droga byla  
podobna :)

> No i muszę przyznać, że jestem troszkę zawiedziony :) Być może tutejsi  
> spece
> odpowiedzą coś konstruktywnego na to co mi wyszło w trakcie...
>
> 1. środowisko - dużo słyszałem, że NB6 jest wspaniale jeśli chodzi o
> rubiego, sam używałem go do javy i byłem zadowolony a tutaj:
>  - podpowiedzi działają sensownie jedynie jeśli zmienna jest wcześniej
> przypisana do stałej albo do Klasa.new - niby rozumiem, że język  
> dynamiczny
> i można zwracać co się chce, ale... jakoś tak jak jestem w NB to
> przyzwyczajony jestem do tego, że w Javie podpowiedzi są 100%. Dla nowego
> programisty, który nie zna jeszcze API są one nieco mało pomocne...
> kiedy .add prezentuje mi listę 1000 klas, w których takowa meta się  
> pojawia

zapomnij o IDE (ja uzywalem Eclipse). najlepszy jest dobry, lekki edytor  
(w pracy uzywamy TextMate) plus porzadne srodowisko z linia polecen (czyli  
bash z odpowiednimi skrotami, aliasami itp.) im szybciej pozbedziesz sie  
naiwnej wiary, ze IDE jest Ci do czegos potrzebne w Rubym, tym lepiej :)

podpowiadanie metod - zapomnij o tym :) nie potrzebujesz tego.  
potrzebujesz tylko dobrego helpa z lista wszystkich metod (polecam  
gotapi.com) i odrobine doswiadczenia/intuicji, zeby wiedziec jak moze sie  
nazywac to, czego szukasz. poczatkujacemu moze byc z poczatku nieco  
trudno, ale nie sadze, zeby to bylo duzo gorsze od szukania metod w  
Javadoc :)

TextMate nie ma podpowiadania metod, za to ma cos znacznie  
przydatniejszego: dopelnianie kontekstowe (czy jak to sie nazywa, w vimie  
^P/^N). piszesz np. so, naciskasz Esc i wyskakuje Ci some_long_method czy  
co tam ostanio pisales. dziala to oczywiscie nie tylko dla metod, ale dla  
wszelkich nazw - klas, modulow, zmiennych, parametrow, symboli, stringow  
itp.

>  - debugger działa fatalnie (używałem "classic debugger" bo jakoś nie  
> bardzo
> byłem w stanie uruchomić "fast"), nie zatrzymuje się na ustawionych
> breakpointach a zatrzymuje się w nieokreslonych miejscach, czasami wogóle
> się gubi...

zapomnij o debuggerze :) w czasie roku pracy z Rubym nie uzylem go ani  
razu. testy, irb i p Twoimi przyjaciolmi. prawdziwymi przyjaciolmi.  
debugger nie jest Twoim przyjacielem. bedzie Ci wmawial ze jest, ale tak  
na prawde jest jak diler narkotykow :)

> 2. sam ruby
>  - jeszcze się nie przyzwyczaiłem do "kontroli typów bez określania  
> typów",
> dotychczas pisałem albo w Javie, gdzie wszystko jest precyzynie z góry
> określone, albo w perlu, gdzie właściwie nie ma typów...

w Rubym masz najlepsze z obu wymienionych: dynamic, strong typing. czyli  
jest dynamicznie, ale wszystko jest pilnowane. przyklad - jaki jest wynik  
wyrazenia: "2" + 1 w Javie? "21". a w Rubym leci wyjatek. wiec ktory jezyk  
ma silniejsza kontrole typow? :)

i znow: w czasie roku pracy z Rubym chyba nigdy nie zastanawialem sie  
"wlasciwie jakiego typu jest dany obiekt?". w 99% to albo jest oczywiste z  
kontekstu, albo nie ma znaczenia.

owszem, zdarzaja sie bledy polegajace na wywolaniu niewlasciwej metody na  
niewlasciwym obiekcie, ale wiesz jaki jest to najczesciej obiekt? nil  
oczywiscie. w Rubym nie ma NullPointerException (ktory jest chyba  
najczesciej spotykanym wyjatkiem w Javie), zamiast tego dostajesz wyjatek  
"NoMethodError: undefined method `metoda' for nil:NilClass".

>  - niektórych rzeczy nie czuję - czy modyfikowanie istniejących klas (np.
> String) przez dodawanie metod nie powoduje zbyt dużego zamętu? Czemu nie
> zrobić tego "normalnie", czyli odziedziczyć, rozszerzyć i używać jawnie
> zmodyfikowanej wersji? Przecież przekazując projekt komuś innemu wpędzimy
> go w nerwicę zanim się zorientuje, że przedefiniowaliśmy metodę '+' w
> bibliotecznej klasie String...

musisz pozbyc sie podejscia typowego dla javowcow, czyli "wszyscy  
programisci (poza mna) chca mi (i/lub sobie) zrobic krzywde". przestan tak  
myslec, a przestaniesz sie o to martwic. "w czasie roku pracy z Rubym"(TM)  
nie spotkalem sie z takim przypadkiem (tzn. zeby modyfikacje jakiejs klasy  
spowodowaly jakies wieksze problemy, ktorych nie wylapaly testy).

pzdr
	szeryf

-- 
Przemysław ,,Szeryf'' Kowalczyk :: http://szeryf.wordpress.com/
Technical Details
Message-ID: <op.ubafw7fzuw9fft@negative-361apc>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.task.gda.pl!not-for-mail
References: <g0ia32$571$1@node1.news.atman.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.task.gda.pl!not-for-mail
From: Przemysław Kowalczyk <someone@microsoft.com>
Newsgroups: pl.comp.lang.ruby
Subject: Re: ruby - wrażenia i pytania
Date: Sat, 17 May 2008 09:47:21 +0200
Organization: CI TASK http://www.task.gda.pl/
Lines: 105
Message-ID: <op.ubafw7fzuw9fft@negative-361apc>
References: <g0ia32$571$1@node1.news.atman.pl>
NNTP-Posting-Host: xdsl-10757.wroclaw.dialog.net.pl
Mime-Version: 1.0
X-Trace: news2.task.gda.pl 1211010875 16102 84.40.237.5 (17 May 2008 07:54:35 GMT)
X-Complaints-To: abuse@news.task.gda.pl
NNTP-Posting-Date: Sat, 17 May 2008 07:54:35 +0000 (UTC)
User-Agent: Opera Mail/9.10 (Win32)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit