Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 9 Dołączył: 14.09.2009 Ostrzeżenie: (0%)
|
Witam.
Będąc na etapie programisty znającego php trochę lepiej niż średnio rozgarnięty szympans, poszukuję frameworka, który nauczy mnie dobrych praktyk programistycznych i projektowych (projektowych tzn. odnośnie całego projektu, włączając w to projekt w UML, coś jak rysunek techniczny dla architekta, tu projekt dla aplikacji). W grę wchodzi Symfony i Zend - bo znam ludzi, którzy mnie pokierują, doradzą etc. Wiem, że znajome mi osoby od ww FM zrobią wszystko w swoich narzędziach, bardzo je chwalą, nie chcieli by ich zmieniać. I tu pojawia się na horyzoncie jeszcze jeden konkurent Symfony i Zend - mianowicie Ruby on Rails. Przedstawię argumenty pehapowców i rorowców i prosiłbym o rozsądne rozstrzygnięcie, czy argumenty obydwu grup są cokolwiek warte (pokrywają się z prawdą). W nawiasach przedstawię własną opinię dot. danego punktu. Chciałbym podkreślić, że argumenty za lub przeciw dot. wyboru któregoś z frameworków mają na celu odpowiedzieć na pytania: - czy nauka danego frameworka wniesie coś dla programisty odnośnie programowania ogólnie (nie zależnie od języka), - czy nauka danego frameworka przyda się w praktyce (szybkie wdrożenie, hosting). Proszę również o swoje argumenty odnośnie Symfony, Zend i Ruby on Rails. 1. Argumenty pehapowców za PHP: - PHP jest prosty do wdrożenia na serwer produkcyjny. - Miliony użytkowników, wielka społeczność. - W PHP można zrobić wszytsko - od strony www dla cioci co ma stoisko na bazarze (proceduralnie) do najbardziej zaawansowanych projektów jakie można znaleźć w sieci. - Jest ogromna ilość podręczników do PHP po polsku. - PHP jest kompatybilne wstecz (w rozsądnych granicach). - Nowoczesne frameworki do PHP oferują wszystko to co konkurencja (Python Django, RoR, Merb i inne). - Programista nie musi być jednocześnie administratorem serwerów, żeby wdrożyć projekt na hosting. 1a. Argumenty pehapowców przeciw Ruby on Rails. - Brak polskich książek (te obydwie na rynku są do wersji przestarzałych). - Hostowanie to dodatkowa praca, dodatkowy czas, dodatkowe problemy. - Hostowanie to koszmar i drożyzna. - Bez sensu używać do małych projektów (czyli przez conajmniej 50% programistów). - Kłótnie w samym sercu założycieli frameworka (odszedł twórca serwera mongrel). - Zdarza się przepiswyanie gotowych już projektów w RoR na PHP np. a. http://www.wykop.pl b. http://www.oreillynet.com/ruby/blog/2007/0...ack_to_p_1.html - Jeśli coś już pójdzie nie tak, to będziesz szukał powodu conajmniej tygodniami w źródłach RoR. - Brak kompatybilności jakiejkolwiek wstecz. Pojawienie się nowej wersji RoR grozi powrotem do korzeni (może nie trzeba uczyć się od nowa wyświetlania "Hello World", ale trzeba douczyć się ogromnej ilości nowych rzeczy i zapomnieć o tych starych rozwiązaniach). - Bardzo agresywny marketing, rodem z telezakupów "Mango", tu zacytuję dla przykładu: książka "Rails Space" M. Hartl, A.Prochazka - Helion 2008, str. 31 "Witryna Rails Space (wykonana w RoR) będzie miała wiele elementów kojarzonych z popularnymi sieciami społecznościowymi jak Facebook". - ZARAZ ZARAZ - Facebook jest w PHP ! str. 26 " (...)stwierdził, że gdy porządnie przyjrzał się PHP, uznał, że jest do niczego(...)". - brak argumentów. - Programista RoR MUSI być jednocześnie administratorem serwerów, żeby wdrożyć projekt na hosting. 2. Argumenty zwolenników Ruby on Rails: - PHP to nakładka na język C. - RoR jest w Ruby, a ten jest całkowicie obiektowy (moja uwaga: rozumiem, że programista RoR na co dzień wykorzystuje tą obiektowość i tworzy sobie nowe klasy na bazie znaków "+", "-", "=", ";" itp. ). - Sam język Ruby daje o wiele większe możliwości niż sam PHP ( moja uwaga: a mimo to, nikt nie używa samego rubiego bez frameworka do webaplikacji ). - PHP ma koszmarną składnię. - RoR daje duże możliwości w zakresie ORM, testów jednostkowych, MVC (moja uwaga: podobną funkcjonalność oferował już pięc lat temu CodeIgniter napisany w PHP4). - Kto raz spróbował RoR nigdy nie wróci do PHP (moja uwaga: to zdanie można znaleźć wszędzie co ma związek z RoR, ale brak argumentacji). - PHP to bajzel, PHP to zło. - PHP jest dla dzieci i wieśniaków. - Rorowiec zarabia więcej niż pehapowiec ( moja uwaga: jeśli zna tak dobrze RoR, że może porównac się z kimś kto np. 5 lat programuje w Zend i na dodatek w swoim województwie uda mu się znaleźć pracę przy RoR to może rzeczywiście ). Dziekuję za opnie, wskazówki, swoje uwagi i wszelkie komentarze. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
Hipertracker to mam zasadnicze pytanie dla przykładu z obiektowymi bazami danych: Widziałeś jak w standardzie wygląda dowiązanie dla obiektowych baz danych dla C++? Kijowo. Standard takich baz niby istnieje ale dlatego obiektowe bazy "wtopiły" bo przez grube lata nie były ustandaryzowane i przegrały wojnę z RDBMS. Standard jest chyba już od 2000 roku w wersji 3.0, ale wcześniej to była bieda z nędzą i tylko w sumie 3 języki mają jakieś dowiązania: C++, Smalltalk i Java. Spośród nich C++ ma najgorsze. Dodatkowo każdy z tych (i nie tylko tych) języków pozwala na samodzielne napisanie takiej bazy w zależności od wymagań projektu, więc to nieco dziwne by uznać ów przykład za wadę/wyższość jednego języka nad innym.
Teraz nieco na punkty odpowiem... 1) elastyczność, elastycznością, ale jeśli klient zmienia Ci nie coś z modułu ale wymaga zmian w szkielecie aplikacji to i tak jesteś z ręką w nocniku. I tutaj nawet najbardziej zajebisty język świata nie pomoże. A i takie zmiany nieraz bywają. Dobrze napisany i przemyślany projekt jest do wdrożenia w dowolnym języku. Czy będzie to php czy ruby - sprawa drugorzędna. Błędy na poziomie projektowania aplikacji zemszczą się, nieważne w jakim języku pracujesz. 2) nieco haczy o punkt pierwszy. Źle zaprojektowana aplikacja i trzymanie złych nawyków, złych wzorców rozłoży każdy projekt i sprawi, że będzie nieczytelny do granic możliwości. Ładnie uporządkowany, będzie czytelny i łatwy do konserwacji oraz modyfikacji niezależnie od użytego języka czy podejścia (strukturalny dobrze zrobiony nie jest wcale gorszy do konserwacji niż obiektowy). Może być, że jeden z nich zrobi jedną funkcją to co inny 3-4 bardziej elementarnymi, ale to jedyna poważniejsza różnica tak naprawdę. 3) sam zauważyłeś, że punkt 3 wynika z 2. Nadal Twoje prawdy są bardzo ogólne i pasują do dowolnego języka programowania. Nie tylko Ruby'ego. 4) tutaj plus dla języków, które mają pewne mechanizmy wbudowane. Nie wiem jak w Rubym to jest zrobione, ale zapewne nie jest to "out of box" i sam to musisz oprogramować by działało jak opisujesz. Jeśli tak jest jak piszę, to przynajmniej część języków także potrafi to sobie zaimplementować. Znając życie polecimy z użyciem debug_backtrace w php ;) 5) Biblioteki/aplikacje tego typu o jakich wspominasz (konkretnie do testów). Niewątpliwy plus. 6) Nie ma takiej aplikacji, która klienta nietechnicznego by "nauczyła posługiwać się" informatycznymi terminami lub przetworzyła język naturalny na specyfikację techniczną. Są tylko tego mniej lub bardziej udane próby. Z reguły mniej. Klient i tak może Ci przez 10 spotkań mówić, że chce tak i tak, by na 11 stwierdzić, że jednak miało być inaczej i inaczej to on tłumaczył, nazywał, a Ty go po prostu źle zrozumiałeś. Najczęściej są to zmiany dodawane na szybko, bo się klientowi coś "uwidziało", a przecież "klient ma zawsze rację" ;) 7) szybkość jest w dużej mierze wynikiem doboru testów i kryteriów oceny. Szybkość jest wynikiem walki z zasobożernością. Chcesz mieć system szybki? Pakuj do RAMu najczęściej używane rzeczy i masz już przyrost wydajności. Ale licz się z tym, że jeśli przesadzisz, efekt będzie odwrotny do zamierzonego, a i serwer może nie wytrzymać obciążenia. Tak więc prawdziwie miarodajne testy pokrywały by wiele aspektów działania strony/serwisu/portalu/aplikacji, począwszy od obsługi plików, poprzez bazy danych, generowanie grafiki, czy dokumentów, a całość pod kątem nie tylko szybkości, ale i zużywanych zasobów przy takiej samej maszynie testowej. Tylko to ma jakikolwiek sens by wyłapać "atrakcyjność" danej platformy. Niektóre nie nadają się na małe serwery, inne tylko na takich czują się dobrze i mają jedyny sens z racji zastosowanych rozwiązań. Przykład? Systemy/aplikacje embedded. Z założenia pracują w innych warunkach niż normalne i inaczej rozwiązuje się w nich pewne problemy. Tu nie zawsze liczy się czas, ale konieczność choćby pracy w ograniczonej i nierozszerzalnej pamięci. Tak lubisz jRuby ale masz zapewne świadomość, że im mniej pamięci tym to rozwiązanie zaczyna radzić sobie gorzej i GC tutaj zaczyna po prostu aplikację zajeżdżać, bo jest wywoływany bardzo często. Nieraz zbyt często. Tutaj już optymalizacje JVM niewiele pomogą. GC zaczyna stawać kością w gardle, choć i tak zachowa się ładniej niż PHP, który po prostu wywali się na braku pamięci ;) 8) znowu mam wrażenie, że odnosisz się głównie do możliwości jRuby zamiast samego Ruby'ego czy też RoR ;) Bardziej to przypomina w takiej sytuacji rozmowę o pisaniu GUI w C++. Są biblioteki pokroju Qt czy wxWidgets i opisywanie ich możliwości, nie wspominając że "goły" C++ bez bibliotek dodatkowych specjalnie do tworzenia i obsługi GUI napisanych kiepsko się nadaje. A przynajmniej ja takie wrażenie odnoszę czytając Twoje posty. Gdy pisaliśmy o języku nie wiedziałem bowiem nigdy gdzie kończy się opis możliwości samego Ruby'ego, a gdzie wkraczałeś na tereny zarezerwowane dla jRuby. Jedynie wstawki niektore zapalały mi lampkę "Kurka... To już chyba w Javie kiedyś widziałem". 9) to samo co punkt 8... Nie wiedzieć czemu mam wrażenie, że gdybyś miał punkt 10, znowu byś rzucił tekstem o Maglevie ;) Nie zrozum mnie źle, ale patrzę na to co piszesz i widzę, że masz duża wiedzę (najprawdopodobniej większą niż moja), ale jednocześnie zamknąłeś się w określonych plusach i poza nie raczej nie wychodzisz. Powiedziałbym, że są nieco jak mantra powtarzane w różnym natężeniu i z użyciem nieco innych słów. Jak widzisz, ja też potrafię pisać "elaboraty", więc na mnie ilość tekstu nie sprawia żadnego wrażenia ;) Już i tak część osób się śmieje, że z moich postów tu na forum bym mógł książkę napisać. Co do załączonych linków autor zrobił to, co ja już wypunktowałem: JVM dano czas na "rozgrzewkę" zanim przystąpiono do testów, a więc dynamiczny kompilator zoptymalizował się pod maszynę produkcyjną. Oczywiście patrząc na same wykresy nie dowiemy się o tym i potrafią one niektórych przekonać, że jednak Java jest bardzo szybka od razu. C++ nie potrzebuje takich przygotowań. Rusza z odpowiednio ustawionymi parametrami i jego wyniki są powtarzalne. JVM z każdym testem, do pewnego momentu, będzie coraz szybsza. Gdyby rozgrzewki zabrakło wyniki byłyby nieco inne. W dynamicznym środowisku webowym, gdzie mogą następować przełączania serwerów, częste zmiany osłabiają znaczenie dynamicznej kompilacji. |
|
|
|
Wiktor P. Frameworki PHP vs Ruby On Rails 10.06.2010, 09:26:10
jan3sobi3ski Większość z tych argumentów to jakieś totalne bzdu... 10.06.2010, 14:19:32
Zbłąkany Argumenty odnośnie serwerów są całkowicie nietrafi... 10.06.2010, 16:00:29 
jan3sobi3ski Cytat(Zbłąkany @ 10.06.2010, 17:00:29... 10.06.2010, 16:17:47
Wiktor P. Cytat(jan3sobi3ski @ 10.06.2010, 17:17... 10.06.2010, 18:42:33 
jan3sobi3ski Cytat(Wiktor P. @ 10.06.2010, 19:42:3... 10.06.2010, 19:24:36
Zyx Cytat- Sam język Ruby daje o wiele większe możliwo... 11.06.2010, 09:32:40
Wiktor P. Dzięki Zyx za opinię.
Zawsze napiszesz coś konkret... 11.06.2010, 10:07:05
Cysiaczek @Zyx - Są trzy warstwy.
Model (uproszczony do mixu... 11.06.2010, 11:08:21
Zbłąkany @Wiktor P.: nie tylko, ogólnie wszystkie uwagi do ... 11.06.2010, 18:13:42
marcio http://www.goldenline.pl/forum/891204/php-...ch-pr... 11.06.2010, 18:44:52
Zyx Cysiaczek ->
1. Jeśli model upraszczasz do ORM... 11.06.2010, 19:57:20
destroyerr @Zyx im dłużej o tym piszesz tym bardziej jestem s... 11.06.2010, 20:33:30
Cysiaczek Rozumiem to co piszesz, ale jeśli masz chwilę, pok... 11.06.2010, 20:55:48
Zyx Na szybko taką realizację MVC można zobaczyć w Joo... 11.06.2010, 21:13:02
dr_bonzo Co do marketingu RORa - powstał jako nowa technolo... 1.09.2010, 20:35:14
cojack Cytat- PHP jest dla dzieci i wieśniaków. 1.09.2010, 21:00:03
kwiateusz az sprawdziłem czy mi słoma z butów nie wystaje...... 1.09.2010, 22:06:33
mike Cytat(Wiktor P. @ 10.06.2010, 10:26:1... 1.09.2010, 22:10:06
Crozin Ale jedzie na HipHopie więc w sumie ciężko powiedz... 1.09.2010, 22:41:09
marcio A jednak kazdy na tym forum robi/robil cos w php w... 1.09.2010, 22:54:01
Crozin Czekaj, czekaj... ja pierwszą styczność miałem z P... 2.09.2010, 01:23:30
hipertracker Co wy tu za pierdoły wypisujecie? Hosting RoR może... 2.09.2010, 04:06:44 
Wujashek Przewrotnie PHP ma najszybszy GC ;-)
Po tym jak sk... 2.09.2010, 12:31:34
Pilsener CytatW Ruby można pisać dowolne aplikacje - a znac... 2.09.2010, 08:24:48 
hipertracker Cytat(Pilsener @ 2.09.2010, 08:24:48 ... 2.09.2010, 09:11:58
marcio CytatAkurat to, że Ruby jest językiem ogólnego zas... 2.09.2010, 09:34:38 
hipertracker Cytat(marcio @ 2.09.2010, 09:34:38 ) ... 2.09.2010, 10:08:04
dr_bonzo CytatPrzewrotnie PHP ma najszybszy GC ;-)
Po tym j... 2.09.2010, 12:43:58 
Wujashek Cytat(dr_bonzo @ 2.09.2010, 13:43:58 ... 2.09.2010, 13:14:45
yevaud troszke gorzej jesli ruby(konkretnie 1.8) jest tyl... 2.09.2010, 19:12:28
Zyx hipertrackerze, odpowiem Ci w sposób następujący: ... 2.09.2010, 21:27:16
cojack Wiecie co, chciałbym podziękować chłopakom od r... 2.09.2010, 23:22:33
thek Nie znam Ruby'ego, nie uczyłem się go jeszcze,... 3.09.2010, 00:13:43
yevaud CytatRuby w jakiejkolwiek wersji miałby zagrozić j... 3.09.2010, 02:21:20
hipertracker Kwestia obiektowości
Obiekty w PHP3? Dodaj że rów... 3.09.2010, 04:22:11 
mike Cytat(hipertracker @ 3.09.2010, 05:22... 3.09.2010, 10:14:11 
hipertracker Cytat(mike @ 3.09.2010, 10:14:11 ) Bz... 3.09.2010, 10:34:25
SHiP 1. A ja piszę serwer gry w php i uruchamiam go jak... 3.09.2010, 07:52:31 
hipertracker Cytat(SHiP @ 3.09.2010, 07:52:31 ) 4.... 3.09.2010, 10:17:36 
mike Cytat(hipertracker @ 3.09.2010, 11:17... 3.09.2010, 10:23:22 
hipertracker Cytat(mike @ 3.09.2010, 10:23:22 ) Oj... 3.09.2010, 10:44:36 
mike Cytat(hipertracker @ 3.09.2010, 11:44... 3.09.2010, 10:55:00 
SHiP Cytat(mike @ 3.09.2010, 09:55:00 ) ~S... 3.09.2010, 12:16:02
wookieb CytatRuby on Rails 3.0 pójdzie przecież zarówno po... 3.09.2010, 08:24:41
Cysiaczek CytatOgólnie model oparty na interfejsach i klasac... 3.09.2010, 08:47:20
cojack Cysiaczek ja się z Tobą zgadzam i nie.
Dlaczego t... 3.09.2010, 09:03:39
hipertracker Cytat(yevaud @ 2.09.2010, 19:12:28 ) ... 3.09.2010, 09:59:10
SHiP Ok, powiedzmy, że mnie przekonałeś ale ja jestem t... 3.09.2010, 10:25:19 
mike Cytat(SHiP @ 3.09.2010, 11:25:19 ) W ... 3.09.2010, 10:32:15 
hipertracker Cytat(SHiP @ 3.09.2010, 10:25:19 ) W ... 3.09.2010, 10:51:50
wookieb Cytat(SHiP @ 3.09.2010, 11:25:19 ) W ... 3.09.2010, 10:29:04
SHiP Ale po co takie nerwy? Ciekawy jestem. Kolega post... 3.09.2010, 10:37:23
wookieb To, że nie ma wielokrotnego dziedziczenia w PHP da... 3.09.2010, 10:39:19
marcio Cytat(wookieb @ 3.09.2010, 11:39:19 )... 3.09.2010, 10:49:19
SHiP @hipertracker: ale wzorzec spagetti(o ile można to... 3.09.2010, 10:52:04 
hipertracker Cytat(SHiP @ 3.09.2010, 10:52:04 ) Ni... 3.09.2010, 11:19:15 
Radarek Cytat(SHiP @ 3.09.2010, 10:52:04 ) Ni... 3.09.2010, 11:46:22 
hipertracker Cytat(Radarek @ 3.09.2010, 11:46:22 )... 3.09.2010, 12:17:32
thek A czy ja wspomniałem, że chodzi o implementację ob... 3.09.2010, 13:37:45
hipertracker @thek: pewnie ci chodzi o to zamieszanie między w... 4.09.2010, 01:38:24
wiewiorek W starciu z ASP.NET MVC - Ruby on Rails jest pod k... 4.09.2010, 20:24:48
Pr0100 CytatW starciu z ASP.NET MVC - Ruby on Rails jest ... 4.09.2010, 21:03:53
thek Jak wspomniałem nie znam Ruby'ego i mówię o ni... 5.09.2010, 00:57:40
wiewiorek A jakie duże strony powstały w RoR ? Nie za bardzo... 5.09.2010, 09:23:55
SHiP Thek tutaj dobrze zauważył, że w php bardzo ogromn... 5.09.2010, 09:32:16
dr_bonzo CytatThek tutaj dobrze zauważył, że w php bardzo o... 5.09.2010, 09:47:25
SHiP @dr_bonzo: podoba mi się to rozwiązanie z Ruby. Mą... 5.09.2010, 09:55:15
hipertracker Cytat(thek @ 5.09.2010, 00:57:40 ) Pr... 5.09.2010, 11:47:15
vokiel Temat wątku to "Frameworki PHP vs Ruby On Rai... 5.09.2010, 12:32:02 
hipertracker Cytat(vokiel @ 5.09.2010, 12:32:02 ) ... 6.09.2010, 01:50:07 
uupah5 Cytat(vokiel @ 5.09.2010, 13:32:02 ) ... 6.09.2010, 02:00:50
thek Sam C jeszcze nie obsługiwał klas, ale miał już ic... 5.09.2010, 21:08:46
wiewiorek to ja też dam linka do google trends jak kolega wy... 6.09.2010, 05:44:13 
hipertracker Cytat(wiewiorek @ 6.09.2010, 05:44:13... 6.09.2010, 07:20:19
dr_bonzo Google trends? A co to zlicza? Ilosc newsow o dany... 6.09.2010, 07:08:49
wookieb Masakra. Dzieci dorwały statystyki i będą się kłóc... 6.09.2010, 07:32:05
Daiquiri @hipertracker - prowadzisz iście akademickie wywod... 6.09.2010, 08:45:43
Radarek @wookieb: +1
@Daiquiri: dlaczego oceniasz przez p... 6.09.2010, 09:55:38
Daiquiri Cytat(Radarek @ 6.09.2010, 10:55:38 )... 6.09.2010, 10:31:04 
Radarek Cytat(Daiquiri @ 6.09.2010, 09:31:04 ... 6.09.2010, 10:52:11
Daiquiri @Radarek
Prosiłam o realne korzyści dla klienta.... 6.09.2010, 11:20:03 
hipertracker Cytat(Daiquiri @ 6.09.2010, 11:20:03 ... 6.09.2010, 20:20:09 
SHiP Ogólnie się zgadzam ale nie ze wszystkim
Cytat(hip... 6.09.2010, 20:21:49 
hipertracker Cytat(SHiP @ 6.09.2010, 20:21:49 ) Tu... 6.09.2010, 20:29:41
dr_bonzo CytatPytam o to jakie realne korzyści przyniesie k... 6.09.2010, 11:32:15
SHiP Teoretycznie wyższe koszty utrzymania. Bo o ile fi... 6.09.2010, 11:38:30
Daiquiri Cytat(dr_bonzo @ 6.09.2010, 12:32:15 ... 6.09.2010, 11:45:03
thek W ogólnym zarysie z tym co pisze Radarek lub hiper... 6.09.2010, 12:08:36
Theqos Pomijając zadowolenie programisty i jego umiejętno... 6.09.2010, 13:48:18
marcio CytatPomijając zadowolenie programisty i jego umie... 6.09.2010, 13:59:28
dr_bonzo Cytat.NET lubie ale i tak poki co wydajnosciowo w ... 6.09.2010, 14:16:50
marcio CHodzi o to ze JIT na pewno dziala szybciej niz je... 6.09.2010, 14:59:26
thek Theqos. Musiałbyś naprawdę bardzo nieoptymalnie pi... 6.09.2010, 15:18:56
SHiP Czemu od razu miszczu?
[PHP] pobierz, plaintext ... 6.09.2010, 21:17:25 
hipertracker Cytat(SHiP @ 6.09.2010, 21:17:25 ) re... 7.09.2010, 02:05:59
Cysiaczek @hipertracker - to, co opisałeś jako zalety używan... 6.09.2010, 22:09:42
everth Dyskusja typu: moje jest fajne bo a),,c) - wcale n... 7.09.2010, 02:27:34
Cysiaczek CytatJaki marketing, jaka erystyka? Pleciesz coś b... 7.09.2010, 07:17:09 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 13:33 |