publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
11 skomentuj »

TAGI: programowanie , node.js , javascript , troll , event driven architecture , religia

2011-10-05 11:15  |  Adam Golański

Node.js to jednak religia? Czyli coś o tym, jak można się zaplątać w pętle zdarzeń

Node.js to jednak religia? Czyli coś o tym, jak można się zaplątać w pętle zdarzeń

Kilka dni temu mieliśmy okazję donosić Wam o poczynaniach znanego webdewelopera Teda Dziuby, który dobrał się do skóry miłośnikom jednej z najmodniejszych ostatnio technologii internetowych – frameworka Node.js, a szczególnie jednemu z nich – Ryanowi Dahlowi, narzekającemu na skomplikowanie współczesnego oprogramowania. Stwierdzenie Dziuby, że Node.js jest „rakiem niszczącym mózgi programistów” wywołało zamierzony efekt (successful troll is successful) – na łamach forów dyskusyjnych, serwisów social newsowych i mikroblogów przerzucano się komentarzami, często odsądzającymi Dziubę od czci, wiary i umiejętności programistycznych. To ostatnie dlatego, że programista pokusił się w swoim benchmarku o wykorzystanie najgorszego chyba sposobu na generowanie ciągu Fibonacciego, jaki w życiu widzieliśmy. Czy naprawdę powinniście więc trzymać się z dala od Node.js?

Dziuba jest znany ze skutecznego trollowania (jak np. gdy sponiewierał fanów rozwiązań NoSQL), ale czy tym razem, ze swoim przykładem z Fibonaccim, nie okazał się ignorantem, jak twierdzą jego oponenci? Najwyraźniej nie. Na łamach swojego bloga pisze wyraźnie, że wybór tak nieefektywnego algorytmu do testów był celowy. „Potrzebowałem funkcji, która zużyje moc procesora, wybrałem tę, ponieważ jest mi znana i łatwa do zaimplementowania” – sensownie wyjaśnia programista eBaya.

Reakcje na upośledzony algorytm wyliczania ciągu Fibonacciego były bowiem przezabawne. Niektórzy wzięli się za implementowanie go w innych językach i mierzenie, jak szybko maszyny wirtualne zoptymalizują kiepski kod. Faktycznie, V8, na którym bazuje Node.js, nieźle sobie z tym radzi, w porównaniu np. do interpreterów Pythona czy Rubiego. Super! Inni na reddicie zachwycali się możliwością zaimplementowania rozwiązania na wyliczanie tych liczb w sposób nie blokujący serwera, „przez funkcję nextTick, pozwalającą na zaplanowanie uruchomienia nowej funkcji w kolejnej iteracji pętli zdarzeń”, a nawet „wyliczanie każdej iteracji dla każdego wywołania I/O czynionego przez node.js”. Dziuba pytał w swoim pierwszym tekście „czy przyjąłeś już epoll do swojego serca?” – i faktycznie, pomysły, jakimi fani Node.js się przerzucali, przypominają mocno reakcje amerykańskich protestantów odrzucających teorię ewolucji, a próbujących ateistom-scientystom wyjaśnić złożoność świata przyrody za pomocą „Inteligentnego Projektu”.

Inny fan node.js stworzył stronę na GitHubie dla tej techniki, dodając dodatkową optymalizację dla pamięci. Teraz rozwijając każdą iterację funkcji Fibonacciego do działania w pętli zdarzeń, do bufora wprowadzany jest n-ty wynik. Brakuje tylko jeszcze Cassandy lub MongoDB, by to wszystko zapisać.

Więcej zabawnych reakcji podaje Tony Arcieri w swoim blogu, pokazując, że Dziuba strollował całą społeczność Node.js wręcz celująco. Pisze, że teraz fanom tej technologii pozostaje zbudować system, któr będzie wykorzystywał Socket.IO, który buforować będzie poprzednio obliczone liczby Fibonacciego po stronie klienta za pomocą rozproszonej tablicy mieszającej, a potem na tej podstawie uruchomi się wartą miliony usługę w chmurze do wyliczania ciągu Fibonacciego. Czy nie za dużo złośliwości?

«poprzednia 1 2 następna »

publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
11 skomentuj »

Komentarze

  • wujek

    #1 wujek 2011-10-05 12:55:15 0

    Teoria teorią a praktyka pokazuje że nginx robi kółka dookoła apache.

    IP: 83.8.6.[...] Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.187 Safari/535.1

  • Wszerad

    #2 Wszerad 2011-10-05 13:05:51 0

    Wy też chcecie potrollować? Naszego trolla boli to, że PHP nie jest ani tak szybkie ani tak konfigurowalne jak node.js. Jedno jest jeszcze pewne, jeżeli gdzieś odsetek dzieci jest większy to na bank w PHP...

    IP: 213.17.128.[...] Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0a1) Gecko/20111002 Firefox/10.0a1

  • none.je

    #3 none.je 2011-10-05 13:08:15 0

    W poprzednim artykule dot. node.js wypowiadałem się bardzo źle o nim. Wczoraj w mojej aplikacji/framework'u musiałem zaimplementować walidację formularza, i się okazało że tę samą funkcję muszę napisać 3x, raz w plpgsql - wiadomo w bazie danych muszą być dane poprawne na 200%, drugi raz w ruby - przy samym tylko sprawdzaniu czy jakaś liczba jest mniejsza od 10 nie będę się odwoływał do serwera bazodanowego, trzeci raz w java script - jak można coś na szybko sprawdzić jeszcze po stronie klienta to po co obciążać łącza...

    Teraz tak sobie pomyślałem, a jak by tak był język, jeden i ten sam, wszędzie, w przeglądarce, na serwerze i w bazie danych...

    IP: 95.143.242.[...] Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.15 Safari/535.2

  • ArturL

    #4 ArturL 2011-10-05 13:49:40 0

    node.js to wciąż bardzo nowa technologia - trzeba poczekać co z niej wyrośnie. Emocjonowanie się nic tu nie wnosi. W rozwoju technologii ważniejsza jest stabilność - dla mnie gorsza jest zmienność Google w otwieraniu i zamykaniu różnych technologii tak po prostu bez pardonu....

    IP: 95.40.58.[...] Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1

  • slepiec

    #5 slepiec 2011-10-05 18:25:00 0

    @ArturL : ale node.js nie jest googlową technologią, opiera się tylko o Googlowy silnik JavaScriptowy V8, który jest użyty w Chrome.

    CouchDB jeszcze powinni wziąc, można pisac funkcje w JS po stronie bazy.

    IP: 82.146.243.[...] Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.15 Safari/535.2

  • wujekbogdan

    #6 wujekbogdan 2011-10-05 19:52:49 0

    @slepiec

    V8...który z resztą nie jest googlowy, bo pochodzi przecież z projektu Chromium, na którym bazuje Goolge Chrome ;)

    IP: 89.68.6.[...] Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.187 Safari/535.1

  • wujekbogdan

    #7 wujekbogdan 2011-10-05 21:31:02 0

    pomyliłem sie jednak jest googlowy, a przynajmniej zapoczatkowany i prowadzony, mea culpa, debil ze mnie

    IP: 194.42.110.[...] Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1

  • slawek22

    #8 slawek22 2011-10-05 22:35:34 0

    @none.je: Tutaj jest problem z samą logiką a nie z tym, że piszesz 3 razy to samo. Co to za różnica, czy coś napiszesz 3 razy czy to samo 3 razy skopiujesz?

    Produkujesz spagetti. Taki kod nie dość, że nie nadaje się do niczego to jest koszmarny w modyfikacji. Za 3 tygodnie zapomnisz, że sprawdzanie czy tytuł ma 5 znaków masz zaimplementowane w 8 miejscach i przy wykorzystaniu 3 różnych technologii. I zamiast 5 sekund będziesz to zmieniał godzinę.

    Po co obciążać łącza? Choćby po to, że jeśli nie umiesz czegoś zrobić porządnie to lepiej przesłać te parę kilobajtów niż kombinować i produkować kod-sieczkę. Takie coś się nadaje na śmietnik.

    Ile zajmuje takie odwołanie do serwera bazodanowego.

    IP: 83.27.73.[...] Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1

  • slawek22

    #9 slawek22 2011-10-05 22:41:13 0

    No i wycięło mi dalszą część komentarza, w którym stwierdziłem, że mniej niż milisekundę. Dostawca usług liczy ci 3 złote za każde przesłane 40 bajtów, że głupi request AJAXowy który ma 1-3kb i sprawdzenie requested-with to taki problem?

    Nie do wiary jak ludzie potrafią kombinować i jakie są tego (opłakane) efekty.

    IP: 83.27.73.[...] Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1

  • rzs

    #10 rzs 2011-10-07 00:53:07 0

    Już nie wspominając o tym iż można generować walidację bez ajaxa w oparciu o dane wyciągnięte z bazy. Jedna biblioteka więcej parę dodatkowych lini kodu na początek i życie staje się łatwiejsze.

    IP: 87.206.35.[...] Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.6 (KHTML, like Gecko) Chrome/16.0.899.0 Safari/535.6

  • walec51

    #11 walec51 2011-10-10 02:49:31 0

    trolling po obu stronach

    dyskusje nt. threads vs event lookps są bez sensu bez uwzględnienia kosztów CPU context swtiching i call stack memory management

    IP: 83.23.252.[...] Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20100101 Firefox/7.0.1

Uwaga! Możesz zarejestrować się w serwisie i w ten sposób zarezerwować swój nick oraz ominąć konieczność ciągłego odczytywania wyrazów.

Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka (słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.

Polecane książki

Czytaj Webhosting

Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.

Zarejestruj domenę

Sprawdź dostępność swojej domeny:

.pl: 0 zł   .com: 19.90 zł
.com.pl: 0 zł   .eu: 19.90 zł