"Enterprise" jest wtedy gdy programiści Javy dyskutują na temat sposobów implementacji odwrócenia stringa (łańcucha znaków), podczas gdy każdy programista Rubiego napisałby:
puts "string".reverse
Any fool can make things bigger, more complex, and more violent. It takes a touch of genius and a lot of courage to move in the opposite direction.Albert Einstein
"Enterprise" jest wtedy gdy programiści Javy dyskutują na temat sposobów implementacji odwrócenia stringa (łańcucha znaków), podczas gdy każdy programista Rubiego napisałby:
puts "string".reverse
Jeśli spodobał Ci się wpis to może umieścisz ten blog w swoim czytniku RSS?
Nie tylko Ruby :-). W JavaScript co prawda nie ma metody reverse dla stringa, ale można ją napisać:
String.prototype.reverse = function() { tmp = ""; for (var i = this.length - 1; i >= 0; i--) tmp += this[i]; return tmp; }Proste.
Będzie w Javie 7 ;)
Buehehe.
Ale mi podnieta, że w Ruby można odwrócić String za pomocą jednej metody. W Java odwrócić String można za pomocą jednej lini kodu:
new StringBuffer(„test”).revers().toString();
Tylko oczywiście trzeba znać Java, w pełni znaczenia słowa „znać”, podobnie jak każdą inną technologię, w której chce się zawodowo tworzyć cokolwiek. A porównanie odwórcenia String do rozwiązań klasy Enterprise świadczy, iż autor nie ma pojęcia o profesjonalnym projektowaniu i programowaniu systemów, a już z pewnością systemów opartych o logikę biznesową.
Pozdrawiam!
@Programmer, nie załapałeś ironii ;). Chodziło o to, że wy programiści Javy potraficie pisać rozprawki na takie tematy jak odwracanie stringa. Już nie mówiąc już o tym, że najchętniej zrobicie nowego design patterna. Typowy programista Rubiego po prostu odwróci ten cholerny string ;).
Więcej luzu.
Pozdrawiam także :).
Dostarczmy wiele sposobów odwrócenia stringa dostarczając strategie operacji reverse (Strategy design pattern), oraz fabrykę ów strategii. Dla kilku domyślnych implementacji stwórzmy wzorzec Prototype, na pewno się przyda. Całość opakujmy w dekorator aby można było opakowywać powstały wynik czymś dodatkowo.
a na poważnie, fajny design, życze takiej popularności jaką zdobywa kolega Zabiełło :)
Radarek, widzisz generalizujesz i piszesz rzeczy, o których nie masz pojęcia, skąd wiesz co prawdziwy programista Java czy innego języka zrobi, aby odwrócić String`a? Poprostu chcesz podkreślić atrakcyjność Ruby stosując ironię wobec innych języków, ale ok -> fani każdej technologii robią podobnie wobec innej (fani Java również...). Ja poprostu piszę, że programista Java nie będzie płakał i zastanawiał się jak odwrócić string tylko walnie jedną linię kodu:
new StringBuffer(„test”).revers().toString();
której napisanie nie zajmie godziny więcej czasu niż napisanie tej samej operacji w Ruby.
I tutaj proszę nie generalizuj, że programiści Java na wszystko obmyślają kolejny design pattern i do najprostszych rzeczy stosują EJB. Bo jak w każdej technologii są mocni i słabi programiści, profesjonalni i mniej profesjonalni projektanci itp…
Jeśli miałeś do czynienia z tymi słabszymi i mniej profesjonalnymi to uwierz nie wszędzie tak jest.
I również nie pisz co zrobi typowy programista Ruby, bo podobnie to już zależy od człowieka, bo może też się zdarzyć osoba, która w Ruby, aby odwrócić string wpadnie na pomysł, aby go pociąć na poszczególne litery…
Pozdrawiam!
@Programmer, generalizuje bo wystarczająco dużo wiem o javie. Wystarczy spojrzeć na jej API. Wczytanie czegoś z pliku? Oczywiście w javie kilka klas (piękny pattern dekoratora), przyklad. Tak wiem, tzw „elastyczność”... Tylko że w 95% przypadkach jak po prostu chcę odczytać coś z pliku. I tu jest pies pogrzebany. Ruby powstał do tych typowych, prostszych przypadków. Typowy javowiec niestety nie jest w stanie dopuścić takiej myśli, że coś można łatwiej, prościej, bez opakowywania tego w dziesiątki zbędnych klas. I nie, nie uważam, że programiści javy są głupi. Tylko są tak nauczeni. Uczy ich tego język, API języka, autorzy książek (np powtarzany Bruce Eckel, który taki styl w swojej serii „Thinking in Java” prezentuje).
Skąd Ty bierzesz takie określenia:
„Typowy javowiec niestety nie jest w stanie dopuścić takiej myśli”
Nie ma kogoś takiego jak typowy javowiec, każdy człowiek może mieć swój styl programowania obojętnie w jakiej technologii się porusza.
W ogóle Twoje przykłady porównania prostoty języka Ruby z Java np. odwrócenie String, wczytanie czegoś z pliku są mocno nie trafione bo jeśli myślisz, że przyszedł byś do swojego project managera i przekonując go, aby wybrać Ruby podał byś przykład, że w Ruby wystarczy zrobić to tylko:
puts „string”.reverse
A w Java to trzeba aż:
new StringBuffer(„test”).revers().toString();
To nikt by Cię poważnie nie potraktował.
A jeśli chodzi o obudowanie czegoś w dziesiątki klas i stosowanie wzorców projektowych, to nie wynika, że ktoś lubi sobie komplikować życie, ale tego wymaga każdy większy projekt. Proste rzeczy w Java można robić również bardzo prosto.
Nie stosując żadnych wzorców projektowych i dziesiątek klas, jeśli ktoś ma potrzebę programowania wszystkiego w jednej metodzie najlepiej odrazu pod przyciskiem to Java również na to pozwala.
A jeśli chodzi o Thinking in Java, to powinieneś raczej pomyśleć w szerszym kontekście całego cyklu tworzenia projektów i odwzorowania rzeczywistości na język programowania. Piszesz jak byś zarzucał Java, że można w niej programować stosując właściwości obiektowe? To jest jakiś non sens.
Kończąc, moja konkluzja jest taka, iż proste rzeczy można również w Java robić prosto, a do dużych projektów Ruby poprostu nie nadaje się więc nie ma sensu porównywać.
Dlatego radarek szukasz dziwnych problemów na siłę, aby udowodnić atrakcyjność Ruby.
P.S. Ja nic nie ma do Ruby, tylko następnym razem pomyśl nad tematem zanim go rzucisz online, bo ten wydaje się mocno nietrafiony, a przytaczane przez Ciebie argumenty świadczą raczej o braku doświadczenia i ogólnej wiedzy o tworzeniu oprogramowania niż o jakiejkolwiek „złotej myśli”.