Article View: pl.comp.lang.ruby
Article #1084Re: ruby - wrażenia i pytania
From: Przemysław Kowalczyk
Date: Sat, 17 May 2008 07:47
Date: Sat, 17 May 2008 07:47
105 lines
5787 bytes
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-mailReferences:
<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