Robiąc sobie przerwę w uczeniu się analizy do kolosa przeglądam jakieś głupoty w sieci i natrafiłem na przepiękny artykuł: http://blog.alieniloquent.com/2009/08/20/cargo-cult-on-rails/
Może komuś też humor poprawi
Robiąc sobie przerwę w uczeniu się analizy do kolosa przeglądam jakieś głupoty w sieci i natrafiłem na przepiękny artykuł: http://blog.alieniloquent.com/2009/08/20/cargo-cult-on-rails/
Może komuś też humor poprawi
Mnie tam nic nie rozśmieszyło. Wręcz przeciwnie, uważam, że gość ma sporo racji.
Znaczy, pieprzenie.
Że gość nie ma racji odnośnie “celebrities” widać chociażby po dyskusji jaka była wokół prezentacji Matta Aimonettiego “CouchDB: Perform like a Porn Star”. Społeczność (a raczej jej blogująca część) w swojej ocenie podzieliła się mniej-więcej po połowie i nie miało zupełnie na to wpływu stanowisko DHH (który zasadniczo był “za”).
Wyciąganie ekipy Twittera jako argumentu za “zrobienie niektórych rzeczy w Rails jest bardzo trudne / prawie niemożliwe” właściwie samo z siebie przekreśla autora i artykuł, kropka.
Nie chcę tutaj jakiegoś flame’a wywoływać, ale muszę zapytać. W którym miejscu ma rację?
Dobre
Nie chcę tutaj jakiegoś flame’a wywoływać, ale muszę zapytać. W którym miejscu ma rację? :)[/quote]
Czemu od razu flame? Widzicie, tu jest właśnie problem. Gość rzucił jakieś argumenty. Pokazał swój punkt widzenia. Nie obraził nikogo. A Wy go od razu wyśmialiście i jeszcze od trolli wyzywacie. To, że ktoś ma inny (przeciwny) punkt widzenia nie znaczy, że jest trollem…
Ok, to może była trochę przesada, ale mnie naprawdę ten tekst rozśmieszył.
Pierwsza i najważniejsza rzecz jest taka, że ten tekst nie ma zupełnie żadnej wartości merytorycznej. Gdybym dostał chociaż jeden konkretny przykład czegoś co jest Rails Way i jest używane w miejscu gdzie używane być nie powinno, to może spojrzałbym na to inaczej. Tymczasem w powyższym poście tylko ogólniki. A czytałem wiele artykułów, w których przestrzegano przed ślepym podążaniem za konwencjami (chociażby REST) - gdzie tutaj ślepe podążanie jedyną słuszną ścieżką?
Jest przykład twittera, który dowodzi tylko tyle, że autor artykułu coś niecoś o całej sytuacji słyszał, ale chyba nie załapał w czym leżał problem. Nie wiem jaki to ma konkretnie związek z ślepym podążaniem za konwencjami i DHH. Nie wiem też ile razy można tłumaczyć, że zapytania do aplikacji railsów, to bardzo mały procent requestów - większość pochodziła z API, więc railsów nawet nie dotykała.
Idąc dalej. Ruby i railsy mają chyba jedną z najbardziej dynamicznie rozwijających się społeczności. Stagnacja? Ślepe podążanie za wzorcami? To skąd się wziął merb i dlaczego tak promował swoją filozofię? Dlaczego wreszcie zostaje zmerge’owany z railsami? Czy w obliczu ogromnych zmian w railsach na poziomie architektury (rack, rails metal, rack middlewares, można przecież stosunkowo łatwo podpiąć pod railsy np. aplikację sinatry) można mówić o railsach: “Every web app should be written exactly the same, and the only thing that changes is the bits between the browser and the RDBMS. Rails is the glue that holds it together, and you just need to describe the data.” (nie mówiąc już nawet o RDBMS kiedy świat railsów zachwyca się kolejnymi bazami dokumentowymi i key-value stores - mongodb, redis, tokyo cabinet, couchdb).
I wreszcie… właściwie cała końcówka posta. Co to znaczy, że programiści railsów umieją robić rzeczy tylko “Rails Way”? O co konkretnie chodzi? Czy autor nie zauważył, ze idea frameworków MVC jest kopiowana do każdego możliwego języka, wliczając w to asp.net i 50 różnych klonów railsów w php? A może autorowi chodzi o to, że jak ktoś dostanie do ręki czyste php, to nie będzie wiedział jak napisać ten wspaniały spaghetti code?
Ostatni akapit jest chyba najbardziej zagadkowy “You had to be a Struts developer or a J2EE developer because you needed to know the deep inner workings of the framework you were going to use. Now Rails is the same way.” Czy ktoś może mi to wytłumaczyć? To znaczy, że jeżeli posadzimy przed railsami programistę, który umie programować w ruby, to nie będzie umiał nic napisać prostej aplikacji po 20-30 minutowym tutorialu tłumaczącym podstawy? Ciężko mi w to uwierzyć. Ludzie, którzy nigdy na oczy rubiego nie widzieli potrafią po kilku godzinach zrobić coś konkretnego.
Podsumowując… cały ten tekst to pozbawiony żadnych merytorycznych argumentów bełkot. Najbardziej chyba śmieszy mnie część o “gwiazdach” w community rails. W większości wypadków są to naprawdę niesamowici programiści i powinniśmy się od nich uczyć. “Because conventions are so important, they need somebody to tell them what the conventions are, so the rails groupies flock to their rockstars to be told how to write their applications.”. Rozumiem, że autor tekstu, programując we wszelakich innych językach, był samoukiem, który uczył się z jedynie z dokumentacji i kodu źródłowego kompilatora. I nie kupował żadnych książek, żeby przypadkiem nikt nie napisał mu jak ma pisać aplikację i jakich standardów się trzymać. Co to to nie! Nie damy się systemowi, nikt nie będzie mówił nam jak mamy programować!
To jest śmieszne…
Flame, ponieważ
a) obserwacje są błędne – zupełnie niepoparte jakimikolwiek dowodami, jeno obserwacje “misiowe” (“wydaje misie”)
b) argumenty są z dupy, patrz mój poprzedni post
Naprawdę, szkoda naszego czasu.
Reagując na tego kolesia i traktując go poważnie tylko potwierdzimy, że jego metodologia (obserwacji i argumentacji) jest traktowalna poważnie.
Akurat z tym fragmentem się zgodzę. Nie chcę tutaj twierdzić, że jest to tak tragiczne jak w przypadku Javy i J2EE, ale powoli właśnie tak się dzieje.
(uwaga długa historyjka)
Pamiętam moją pierwszą “webapp”, był 1997 rok, na Boże Narodzenie zamiast Kevina samego w domu puszczali Hackerów (Angelina jeszcze wtedy nie znana ), a ja pisałem w htmlu i javascript (chyba już jakieś alerty wtedy robiłem)… później pierwsza aplikacja CGI w C (albo C++, nie pamiętam, ale mam gdzieś książkę z tego okresu)… pełen zachwyt… licznik odwiedzin działa - z zapisem do pliku. Następnie powoli zabawa z J2EE, a właściwie tylko servlety i JSP… no i gdzieś właśnie w tym momencie wszystko zaczęło się “jebać”… bo przecież, żeby zrobić to dobrze to nie można korzystać przy dostępie do bazy z biblioteki tagów sql. Należało nauczyć się beanów, i EJB. Oczywiście wcześniej xml… dużo xmla. W między czasie pojawiły się Struts, JSF i inne bajery do prezentacji/kontroli itp, Hibernate i znów co? dużo xmla.
Pojawił się też w końcu “wspaniały” Spring. Nie zapomnę chyba nigdy tutoriala “Hello world” na jakieś 8 stron i z 10 plików. Oczywiście jeszcze więcej xmla, do tego Dependency Injection, Inversion of Control. Aha zapomniałem wcześniej, że wskazane było nauczenie się anta, a zaraz po nim mavena. Oczywiście to jest tylko cząstka skrótowców jaka co chwile pojawiała się w J2EE. W odpowiedzi na Spinga pojawił się EJB3 (o wiele spóźniona reakcja Sun moim zdaniem), ale wtedy właśnie czytałem książkę Bruce Tate o Springu i przedstawił w niej Ruby i Railsy i jak przy tym liczniku odwiedzin - pisanie webapp znów miało ten smaczek i było fun (tak, wiem profesjonalne webapp to coś więcej niż licznik odwiedzin).
No i teraz jest podobnie, choć i troszkę inaczej… tzn się te wszystkie nowe rzeczy w Railsach są akurat fun (no może nie wszystkie) i warto się ich nauczyć, ale przyznacie, że kilka lat temu było łatwiej zacząć. Na szczęście nie tylko te rzeczy są fun, ale i jakoś spójnie przechodzi jedno w drugie (a nie zmiana z EJB2 na IoC i DI w Springu) i wyznacza tak naprawdę jakiś standard… takie MS ze swoim ASP .Net MVC zanim wypuści wersje 2 będzie i tak daleko, daleko w tyle.
pozdrawiam
Sorry, ale dalej nie rozumiem. Piszesz o 10 stronicowych tutorialach, ant, maven, spring, tonach XMLa. “No i teraz jest podobnie” - w czym konkretnie jest podobnie? Jak to się ma do Railsów?
Zakładając, że ktoś już ma zainstalowane railsy (pehapa z apachem też trzeba postawić, nie?) wystarczy kilka linijek kodu do działającej aplikacji. Można sobie wygenerować scaffold. Oczywiście, jest kilka rzeczy, które trzeba zrozumieć, żeby przejść dalej, ale czy aby przypadkiem nie przesadzasz? Wiadomo, że nie możesz wszystkiego wrzucić jako spaghetti code, ale ja cały czas nie widzę żadnego konkretu…
To jest jasne, że jak ktoś siada do railsów, to musi poznać czym są kontrolery, modele, widoki, ale to przecież nie jest specyficzne dla railsów. MVC, right? Więc o co chodzi?
Pamiętam jak się kiedyś uczyłem PHP. Zobaczmy…
Nie rozumiem… naprawdę nie rozumiem… Co jest w tym takiego specyficznego i magicznego dla railsów i trudniejsze od innych języków frameworków? Przecież napisanie prostej aplikacji z tutorialem to 20-30 minut
Dobra, serio, ja już się nie odzywam w tym temacie dopóki nie dostanę jakichś konkretów
Railsy mają taką cechę (której Java już nie ma w tak wielkim stopniu), że są tolerancyjne. Niby propagują maksymalną elegancję, ale dopuszczają bloat, syf itp. Bloga robionego zgodnie z 15 minutowym screencastem ciężko spaprać, ale już wielką aplikację – jak najbardziej. Dobry i ładny kod to właśnie część „rails way”, a ten wymaga dużo wiedzy.
I tak dalej. Można wiele wymieniać. Każdy początkujący w naszym frameworku ma przed sobą dużo pracy, nawet jeśli jest doświadczonym koderem Java/PHP/.NET. Może nie jest to wiedza o zbędnej biurokracji, jak to jest w Javie, ale moim zdaniem Railsy wymagają bardzo dużo nauki, by posługiwać się nimi sprawnie i poprawnie.
Ale czy „rails way” jest złe/szkodliwe/błędne? Oczywiście że nie. Tutaj autor posta się myli i to ostro.
A rockstars? Spytajcie programistów Javy albo PHP jak ma na imię twórca ich języka. Spytajcie programistów CodeIgnitera albo Struts jak się nazywa twórca ich ulubionego frameworka. I to samo zróbcie z Rubim, Railsami, Merbem – wiadomo jak będzie… Same osobowości amerykańskiej sceny są dość charakterystyczne – choćby przez to, że jest u nich ostra nadreprezentacja użytkowników Maków i iPhone’ów. Myślę, że tutaj można przyznać autorowi rację, elementy tego, o czym wspominał są silniejsze w railsowym ekosystemie. Ale czy to źle? Nie!
Inna sprawa to jego foch „nikt mi nie będzie mówił jak mam pisać”. Ciekawe czy gość w ramach protestu przestał używać jakichkolwiek wzorców projektowych…
Nie.
Nie.
Nie trzeba, nikt Cię do niczego nie zmusza.
A tak poza tym przywołanie takich nazw jak Ant i Maven w dyskusji o tym, jakie to Railsy są pokomplikowane, niefajne i wymagające od programisty właśnie zamknęło wątek
Imho dobry kod wymaga dużo wiedzy niezależnie od języka/frameworka.
Co do tych 5 punktów, to się nie zgadzam. Nikt Ci nie każe testować, używać capistrano czy resta. Zapytaj się początkujących ile z nich testuje, używa capistrano, albo jakiejkolwiek automatyzacji. A jak już nawet używasz, to nie jest to w żaden sposób specyficzne dla railsów. Capistrano używają goście od django, REST też już się przyjął w wielu frameworkach, a testować powinno się pisząc w każdym języku.
Dlatego dalej nie widzę gdzie tutaj jakieś magiczne rzeczy specyficzne dla railsów, po których programista już nic innego nie będzie umiał robić, tylko klepać kod w railsach.
offtop: używacie RESTA, ja jakoś nie mogę się do niego przekonać?
Chyba się nie zrozumieliśmy.
Nie mówię, że jest coś specyficznego i magicznego… wręcz przeciwnie… Railsy są bardzo łatwe i łatwiejsze od innych frameworków. To co moim zdaniem chciał powiedzieć autor notki i to z czym się zgadzam to postępująca rozbudowa środowiska i stosowanie coraz to nowych “zasad” i “technik”.
Postawmy się w roli osoby zaczynającej z railsami:
z 3 lata temu pisząc aplikację robiło się testy jednostkowe/funkcjonalne/integracyjne jeśli w ogóle. Teraz to dobrze jest zacząć od Cucumber i RSpec. Ledwo młody się nauczy, a tu się okazuje, że jeszcze przydało by się, żeby poznał Celerity i Culerity itd.
I żeby nie było: nie mówię, że to jest trudne… z pewnością dużo łatwiejsze niż to było w Javie czy nie daj Boże w .NET (tam testowanie to tragedia).
pozdrawiam
ps. w ogóle nie rozumiem tych EMOcji
Nie.[/quote]
jasne, że nie… można napisać kod z akcjami typu
nowy, add, delete, display, aktualizuj (Edycja: tak wiem nie tylko o ładne urle i nazwy akcji chodzi w REST)
działać będzie
nie za bardzo też widzę miejsce w którym można dopatrzyć się twierdzenia, że ant i maven sprawia, że railsy są skomplikowane.
pozdrawiam
Prawda. Doświadczenie z innych języków jest pomocne.
Dokładnie nikt Ci nie nakazuje. Można pisać przecież spagheti code w PHP, mniejsza bariera wejścia, a mimo to programiści PHP też przerzucają się na MVC.
REST nie tylko był innym podejściem do webserwisów ale całkiem innym podejściem do dostępu do zasobu i dobrze jest się do tego zastosować.
Ja nie widzę nigdzie takiego twierdzenia.
pozdrawiam
Nie zrozumiałeś
Chodziło mi o to, że w dyskusji o skomplikowaniu jakiegokolwiek software’owego narzędzia dla programisty Maven i Ant (ogólnie połowa stosu javowego) absolutnie nokautują swoją złożonością i upierdliwością większość pozostałych narzędzi. W sensie, przy nich Railsy to prosta zabawka a’la kontroler Guitar Hero na Maca (ten z jednym przyciskiem ),
heh widzę, że nawzajem się nie rozumiemy… tzn się teraz rozumiem
dokładnie też tak uważam. rake z rubiego jest nie tylko łatwym narzędziem ale i wspaniałym (dodanie tasku jest proste jak 2+2*2 ;p, gdzie przy ant to nie dość, że napisać się trzeba to pewnie po drodze nie domkniesz jakiegoś znacznika)
Uważam, że rozwój środowiska postępuje, trzeba coraz więcej narzędzi poznać, choć jest to nieporównywalnie łatwiejsze i przyjemniejsze niż w Javie.
pozdrawiam
Ja nie widzę nigdzie takiego twierdzenia.[/quote]
Chodziło mi o artykuł, który rozpętał tą dyskusję