Roman Piekarski

Roman Piekarski Programista do
wynajęcia

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Witam,

Jestem ciekawy, jakie są wasze doświadczenia z przejścia z języka PHP do któregoś z tych języków. Interesuje mnie wypowiedź doświadczonych/zaawansowanych programistów PHP, którzy programują w Ruby (RoR) lub w Python. Wielu programistów wypowiada się negatywnie na temat PHP, a nie mają dużego doświadczenia w tym języku i nie znają jego możliwości.

Szczególnie interesuje mnie zdanie programistów którzy aktywnie kożystają z symfony (1.0 - 1.2) lub z ZF.

Licze na ciekawą dyskusje:)

Pozdrawiam.

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

pozytywne ;)

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Programowanie w Ruby daje Ci po prostu mozliwosc latwego wyrazenia tego co chcesz zrobic. Jezyk Cie ogranicza, i zawsze dziala tak jak oczekujesz. Programowanie w PHP w porownaniu z Ruby to udreka.

Jestes zmuszony pisac sporo niepotrzebnego kodu.

Co wiecej, metaprogramowanie w Ruby po prostu dziala. Sprobuj zrobic cos podobnego w PHP. Tam to jest porazka.

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Znam php i zgadzam sie, ze pisanie w Php to udreka, Ruby i Python sa jezykami bardziej zwiezlymi i czytelniejszymi. Wydaje mi sie ze Python jest bardziej wszechstronny, posiada tez spora baze dojrzalych bibliotek. Jesli chodzi o programowanie aplikacji www to polecam framework Django napisany w Pythonie nie jest on tak elastyczny jak ROR ale w wiekszosci sytuacji sie sprawdza. Trzeba powiedziec ze Python jest jezykiem szybszym niz Ruby. Na zakonczenie nie skreslalbym do konca Php a to dlatego ze sporo juz w tym jezyku powstalo i mozna bazowac na tym doswiadczeniu( nie ma sensu tworzyc kola na nowo ). W tej dyskusji pominieto Jave ;) ( to tak na marginesie )

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Roman Piekarski:
Witam,

Jestem ciekawy, jakie są wasze doświadczenia z przejścia z języka PHP do któregoś z tych języków. Interesuje mnie wypowiedź doświadczonych/zaawansowanych programistów PHP, którzy programują w Ruby (RoR) lub w Python.

Szybkość działania: PHP > Python > Ruby
Szybkość pisania kodu: Ruby >= Python > PHP
Jeśli chodzi o dostępność bibliotek i frameworków zdecydowanie wygrywa Python, Ruby próbuje go gonić (np. "kradnąc" pewne pomysły np. WSGI --> rack). W PHP bibliotek też jest sporo, ale niestety są one wątpliwej jakości (przeglądał ktoś kiedyś kod Smarty?), jedynym wyjątkiem od reguły, o którym mi wiadomo to Zend Framework, który jest na prawdę porządnie przemyślany i napisany.

Siermiężność PHP wbrew pozorom ma swoje zalety - na dobrym programiście wymusi ona przemyślenie i dobre zaplanowanie obiektowej struktury projektu, by dalsze rozwijanie aplikacji było mu lekkie i przyjemne.
Uświadomiłem to sobie, jak pisałem testy jednostkowe do pewnego modułu i nagle okazało się, że w phpunit nie da się mockować metod statycznych i natywnych metod PHP. Z pomocą przyszło mi dependency injection, co znacząco poprawiło czytelność kodu.
Niestety wadą "siermiężności" jest to, że trzeba się troszeczkę więcej napisać, a wiadomo więcej kodu => więcej błędów i więcej WTF :D

Ruby i Python w stosunku do PHP mają "wyższy próg startu". Wydaje mi się, że w przypadku tych dwóch języków trzeba o wiele większego zrozumienia istoty rzeczy by zacząć pisać pierwsze projekty, które robią coś więcej niż wypisanie "Hello World".

I kolejne moje subiektywne odczycie: Rubiego i Railsów trzeba ciągle się uczyć. Chodzi mi tu głównie o śledzenie blogów, przeglądanie nowych gemów i pluginów. Słowem ciągle ulepszanie swojego warsztatu by nadążyć za nowymi trendami. Mam wrażenie, że świat PHP nie rozwija się aż tak dynamicznie. Mnogość narzędzi Rubiego i Rails, które mogą ułatwić nam pracę może przyprawić o zawrót głowy. Dla przykładu: RSpec, Shoulda, factory_girl, cucumber, mocha.. a PHP mamy tylko biedny PHPUnit ;)
Podejrzewam, że to samo można powiedzieć o Pythonnie.
W przypadku PHP wydaje mi się, że jest troszeczkę mniej rzeczy do ogarnięcia.
Roman Piekarski

Roman Piekarski Programista do
wynajęcia

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Łukasz Bandzarewicz:

Szybkość działania: PHP > Python > Ruby
Z twojego porownania wynika, że ruby jest szybszy od pythona. Z tego co sie orientowałem, to python jest najszybszy z tych trzech jezykow.
Moge się mylić. Czym się kierowałeś?

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Roman Piekarski:
Łukasz Bandzarewicz:

Szybkość działania: PHP > Python > Ruby
Z twojego porownania wynika, że ruby jest szybszy od pythona. Z tego co sie orientowałem, to python jest najszybszy z tych trzech jezykow.
Moge się mylić. Czym się kierowałeś?

Z tego co napisałem wynika, że najszybszy jest PHP, potem jest Python, a Ruby jest na szarym końcu ;)
Roman Piekarski

Roman Piekarski Programista do
wynajęcia

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Łukasz Bandzarewicz:
Roman Piekarski:
Łukasz Bandzarewicz:

Szybkość działania: PHP > Python > Ruby
Z twojego porownania wynika, że ruby jest szybszy od pythona. Z tego co sie orientowałem, to python jest najszybszy z tych trzech jezykow.
Moge się mylić. Czym się kierowałeś?

Z tego co napisałem wynika, że najszybszy jest PHP, potem jest Python, a Ruby jest na szarym końcu ;)

W takim razie zle odczytalem twoja mysl. Dziwi mnie, że napisales o przewadze php w szybkosci nad pythonem. Jak napisalem wczesniej widzialem benchmarki odnosnie pythona i jego przewagi nad php. Możesz napisać mi skad twoj wniosek?

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Roman Piekarski:

W takim razie zle odczytalem twoja mysl. Dziwi mnie, że napisales o przewadze php w szybkosci nad pythonem. Jak napisalem wczesniej widzialem benchmarki odnosnie pythona i jego przewagi nad php. Możesz napisać mi skad twoj wniosek?

Ja widziałem benchmarki, które mówiły, że PHP jest szybsze, ale nie będę specjalnie przy tym obstawał ;)
ps. http://www.timestretch.com/FractalBenchmark.html
Gdzieś widziałem bardzo fajne zestawienie testów języków pod różnym kątem (szybkość, zużycie pamięci itp.), ale niestety nie mogę znaleźć linku.
Marek Sybilak

Marek Sybilak raportzaukcji.pl

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

I tak najlepsze jest Groovy/Grails :)

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Marek Sybilak:
I tak najlepsze jest Groovy/Grails :)

Dlaczego?
Marek Sybilak

Marek Sybilak raportzaukcji.pl

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Dlaczego?

Potęga rozwiązań javowych, tyle że łatwa, szybka i przyjemna w używaniu.

Łatwy i dobrze zaplanowany framework Grails - podobny do Rails,
przyjazny język Groovy - pisze się szybciej i prościej niż w Javie,
kompilowany kod - szybkość i bezpieczeństwo,
biblioteki Javy (!!!) - przetestowane i sprawdzone w boju,
w tym Spring i Hibernate jako fundamenty.

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Dla programistów PHP dość ciężka jest przesiadka z PHP na Ruby. Jakiś czas temu przeemigrowałem z PHP na Ruby i teraz nie żałuję tej decyzji. Niegdyś byłem wielkim zwolnennikiem Zend Frameworka, wykonałem w nim kilka dużych projektów. Byłem, lecz już nie jestem... Kiedy poznałem Ruby on Rails przekonałem się, ile pracy jeszcze czeka developerów ZF, by stworzyć na prawdę pożyteczny framework, w którym uruchomienie kolejnego startupa będzie szybkie i zarazem przyjemne.

Ruby on Rails ma znakomite narzędzia, jak konsola IRB, pożyteczne skrypty jak generowanie rusztowań zasobów, kontrolerów, modeli, migracji. To na prawdę przyspiesza pracę. Do tego możliwości Ruby są nieporównywalnie większe niż PHP. Pomijając już brak konsekwencji w nazewnictwie funkcji w PHP (np. operujące na stringach str_replace i strpos - raz z podkreśleniem, raz bez), dziwne zachowywanie coniektórych funkcji (pamiętam, że miałem kiedyś bardzo dziwny przypadek z funkcjami od dat) czy mało logiczne działanie innych funkcji ($a = 0; empty($a) => zwraca true, ale przecież $a nie jest puste! 0 to też wartość; podobnych przypadków jest jeszcze kilka).

ZF i PHP jest dobre na początek, proste, nieskomplikowane, do nauki czy stworzenia pierwszych projektów. Idealne dla dużych agencji interaktywnych, gdzie rotacja pracowników jest dość zaawanasowana, a programistów PHP jest na pęczki. Natomiast jeżeli ktoś chce zrealizować jakiś własny ambitny projekt, zależy mu na czasie i zamierza czerpać przyjemność z programowania, cieszyć się ładnym i łatwym w utrzymaniu kodem, to Ruby on Rails jest właśnie dla niego.Marcin Lewandowski edytował(a) ten post dnia 09.12.09 o godzinie 12:12

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Marek Sybilak:
Dlaczego?

Potęga rozwiązań javowych, tyle że łatwa, szybka i przyjemna w używaniu.

Łatwy i dobrze zaplanowany framework Grails - podobny do Rails,
przyjazny język Groovy - pisze się szybciej i prościej niż w Javie,
kompilowany kod - szybkość i bezpieczeństwo,
biblioteki Javy (!!!) - przetestowane i sprawdzone w boju,
w tym Spring i Hibernate jako fundamenty.

Podobne efekty można osiągnąć stosując jRuby, ale domyślam się, że groovy jest wydajniejszy i lepiej dogaduje się z maszyna wirtualną.
Marek Sybilak

Marek Sybilak raportzaukcji.pl

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Podobne efekty można osiągnąć stosując jRuby, ale domyślam się, że groovy jest wydajniejszy i lepiej dogaduje się z maszyna wirtualną.

JRuby z Rails można zastosować właściwie tylko na serwerze GlassFish (mocno zasobożerny). Ruby ma zupełnie inną składnię niż Java. Groovy natomiast jest w pewnym sensie jakby rozszerzeniem Javy i miesza się z nią bezboleśnie.
Ponadto Grails w założeniu jest ulepszonym Rails.
Convention over configuration może być niewygodne, nawet w niezbyt dużych projektach. Dotyczy to wielu frameworków (np. Django). W Grails fundmenty stanowią Spring i Hibernate, więc w nich bezpośrednio możemy pogrzebać, a jeśli Hibernate nam nie odpowiada to spokojnie możemy się go pozbyć i podłączyć plugin z innym ORMem.
W przypadku Grails mamy znacznie większą możliwość konfiguracji, a jednocześnie dużo ustawień domyślnych (sensible defaults).

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Marek Sybilak:

JRuby z Rails można zastosować właściwie tylko na serwerze GlassFish (mocno zasobożerny). Ruby ma zupełnie inną składnię niż Java.

Bez problemów udało nam się uruchamiać Rails na GlassFish, Tomcat i Jetty. Prawdę mówiąc nie słyszałem by jRails sprawiał problemy na innych serwerach jak GlassFish. Skąd masz takie informacje?

Akurat składnia języka i kompatybilność z JVM nie ma tutaj żadnego znaczenia.
Groovy..

Możesz rzucić przykłady jakiś aplikacji Grails, które można obejrzeć w działaniu gdzieś w sieci?
Marek Sybilak

Marek Sybilak raportzaukcji.pl

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Bez problemów udało nam się uruchamiać Rails na GlassFish, Tomcat i Jetty.

To prawda, teoretycznie zresztą nie powinno być z tym problemu.
Chyba coś nie tak napisałem. Muszę dokładnie sprawdzić. Może powinienem bardziej przyjrzeć się JRuby on Rails ;)
Tym bardziej, że książka "Practical JRuby on Rails Web 2.0 Projects" na Ebayu kosztuje tylko $2 (nowa). Sam właśnie kupiłem "XML and E4X for Flash nad Flex" za $4. Przesyłka $10 ;)

Akurat składnia języka i kompatybilność z JVM nie ma tutaj żadnego znaczenia.

?
Możesz rzucić przykłady jakiś aplikacji Grails, które można obejrzeć w działaniu gdzieś w sieci?

Właśnie czytałem blog Tomasa Lina.
Przykłady Flex/Flash + Grails:

http://www.blueembergrills.com
http://www.danaykroydwines.com
http://www.empora.com

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Marek Sybilak:
Akurat składnia języka i kompatybilność z JVM nie ma tutaj żadnego znaczenia.

?
>

Składnia to tylko lukier dla programisty piszącego kod, pod spodem i tak wszystko jest kompilowane do bytecodu, więc problem tutaj stanowi odpowiednie napisanie kompilatora do języka. jRuby radzie sobie z tym całkiem nieźle. Polecam prezentację: http://www.infoq.com/presentations/bini-power-on-jvm
Bardzo ładnie tam przedstawione są trzewia jRubiego ;)
Marek Sybilak

Marek Sybilak raportzaukcji.pl

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Akurat składnia języka i kompatybilność z JVM nie ma tutaj żadnego znaczenia.


Jakby składnia nie miała znaczenia, to nie powstałby Groovy.
Istotna jest wygoda używania, łatwość uczenia się języka programowania, oraz to że szybciej możemy budować w nim projekty.
To wszystko odbywa się kosztem wydajności JVM. Groovy jest chyba ze dwa razy wolniejszy od Javy, a być może jest nawet gorzej.

Moim zdaniem sprawa wydajności w większości przypadków, gdzie budujemy aplikacje webowe nie jest aż tak istotna. W końcu Twitter zrobiony jest na wolnym Ruby on Rails i jakoś działa.

Tak naprawdę nie ma idealnych frameworków i wszystkie są dobre. Zależy czego oczekujemy. Zawsze coś odbywa się kosztem czegoś. Łatwy to wolny, wydajny to skomplikowany.

Istotny też jest czas jaki należy poświęcić na naukę języka i frameworka. Jak ktoś zna Ruby, albo Pythona, to przejście na Javę i Groovy jest kosztowne. Osiągnięcie biegłości zajmie trochę czasu.
Sam chętnie poznałbym lepiej Ruby albo Pythona, ale czas nie jest z gumy.

konto usunięte

Temat: PHP VS Ruby VS Python - prosze o wypowiedź zaawansowanych...

Marek Sybilak:
Akurat składnia języka i kompatybilność z JVM nie ma tutaj żadnego znaczenia.


Jakby składnia nie miała znaczenia, to nie powstałby Groovy.
Istotna jest wygoda używania, łatwość uczenia się języka programowania, oraz to że szybciej możemy budować w nim projekty.

Zgadzam się w pełnej rozciągłości, pisząc, że 'składnia nie ma znaczenia', miałem na myśli, że składnie nie ma znaczenia dla wydajności/kompatybilności języka z JVM.

Moim zdaniem sprawa wydajności w większości przypadków, gdzie budujemy aplikacje webowe nie jest aż tak istotna. W końcu Twitter zrobiony jest na wolnym Ruby on Rails i jakoś działa.

Pewnie dlatego, bo zwykle wąskim gardłem aplikacji webowych jest baza danych.

Istotny też jest czas jaki należy poświęcić na naukę języka i frameworka. Jak ktoś zna Ruby, albo Pythona, to przejście na Javę i Groovy jest kosztowne. Osiągnięcie biegłości zajmie trochę czasu.

Przyglądałem się nieco grooviemu, język jest bardzo podobny do rubiego, więc dla doświadczonego programisty rubiego ogarnięcie groovy i grails nie powinno być dużym problemem. Inna sprawa to mnogość bibliotek i rozwiązań na platformę javy, której ogarnięcie może być bardzo czasochłonne.

Jeśli ktoś zna Rubiego i/lub Pythonna, to chyba przejście na inna technologię powinno być dla niego łatwiejsze niż uczenie się tej technologii z zerową wiedzą programistyczną.

Moim zdaniem nauka technologii informatycznych wygląda podobnie jak nauka języków obcych - im więcej języków już znasz, tym łatwiej i szybciej jest ci się nauczyć kolejnego. Trzeba przy tym zachować dużą dozę ostrożności i uważać by nie przenosić filozofii jednego języka/technologii do drugiego.

ps. kiedyś pracowałem na kodem rubiego, nad którym pracowali programiści javy.. strasznie ciężko było im się rozstać z metodami setXXX getXXX ;)
Sam chętnie poznałbym lepiej Ruby albo Pythona, ale czas nie jest z gumy.

Podobnie ja mam w drugą stronę. Chętnie zapoznałbym się z javowymi wynalazkami.



Wyślij zaproszenie do