Article View: pl.comp.lang.ruby
Article #1070ruby - wrażenia i pytania
From: Marcin Gryszkalis
Date: Thu, 15 May 2008 22:14
Date: Thu, 15 May 2008 22:14
61 lines
4269 bytes
4269 bytes
Witam Napisałem aplikację w rubim, serwerek SOAP, kilka funkcji plus proste operacje na bazie, plus wysyłanie maili w oparciu o szablony, konfiguracja w yamlu. Wszystko razem niecałe 500 wierszy. 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. 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 - 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... 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... - składnia jest miła, do braku średników się przyzwyczaiłem szybko, bloki i yield są fajne, regexpy są na szczęście w języku i nie trzeba się wygłupiać jak w Javie - 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... - dlaczego w haszach czasem używa się po prostu stałych Stringów, a czasem symboli (tj. 'a' => 'a' VS :a => 'a')? 3. biblioteki i dokumentacja - bardzo mi brakuje czegoś jak CPAN dla perla, jedno miejsce, gdzie w ustandaryzowanej postaci znajdę wszystkie możliwe biblioteki, z dokumentacją, historią wersji, plikami itd. a w rubym? weźmy taki sobie rubymail - na rubyforge są pliki ale nie ma dokumentacji, na ruby-doc jest dokumentacja tylko do biblioteki standardowej, historię i linki mam na http://raa.ruby-lang.org, dokumentacje po instalacji z gema lokalnie (a jeśli najpierw chciałbym sprawdzić API czy wogóle warto instalować?) A do tego wszystkiego pakiet nazywa się rubymail a klasy są w przestrzeni RMail, super spójne ;) - ruby-mysql i mysql-ruby, jeden o statusie preview a drugi "test", obydwa tego samego autora. Na razie tyle wywnętrznień bo zasypiam, dalesze uwagi i pytania później ;) pozdrawiam -- Marcin Gryszkalis, PGP 0x9F183FA3 jabber jid:mg@fork.pl, gg:2532994 http://the.fork.pl
Technical Details
Message-ID:
<g0ia32$571$1@node1.news.atman.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!goblin1!goblin2!goblin.stu.neva.ru!newsfeed.atman.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!goblin1!goblin2!goblin.stu.neva.ru!newsfeed.atman.pl!not-for-mail
From: Marcin Gryszkalis <mg@fork.pl>
Newsgroups: pl.comp.lang.ruby
Subject: ruby - wrażenia i pytania
Date: Fri, 16 May 2008 00:14:22 +0200
Organization: ATMAN
Lines: 62
Message-ID: <g0ia32$571$1@node1.news.atman.pl>
NNTP-Posting-Host: hq.fork.pl
Mime-Version: 1.0
X-Trace: node1.news.atman.pl 1210887074 5345 217.113.238.142 (15 May 2008 21:31:14 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Thu, 15 May 2008 21:31:14 +0000 (UTC)
User-Agent: KNode/0.10.5
X-Face: 3lWCHK"z<l`G[{^:C!&<dNf3*y_BdT>/\at`d$|$iAy<gSBYxP83qoKh)c:l%/CRs:R^Ou
N;#n.hv|{ytUQcw@cLj7j0^CNiES5xRq#z,=0@i9*do;l'B~JQdK4gUA6K01_gJWkaJ@c|
^<=$t*k)A(n=>VLwc?V{9Q*]j>4Tz(B7xf"fUHo4"B4;hzt&sH~\iSHbn9}S4uDKFm)F\$
]!58*|z0F&=^`NBv9*FyFKQm]:O78^8VR2MZnBAn|T-_r>AHzr!Zq7aZ5G]-5_A_*w<N&>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit