Article View: pl.comp.lang.python
Article #26764Re: python vs php - potrzebne argumenty
From: Jaroslaw Zabiello
Date: Sun, 01 Nov 2009 17:48
Date: Sun, 01 Nov 2009 17:48
144 lines
7719 bytes
7719 bytes
Dnia 31-10-2009 o 19:54:08 pakalk <pakalk@gmail.com> napisał(a): >> Prawda, jakie to wspaniałe, że w PHP trzeba sprawdzać wartość każdej >> zmiennej przed jej użyciem aby uniknąć kompletnego upadku całej >> aplikacji? > > Nie no, nie kazdej. Zreszta to chyba nie nowosc, ze jezeli cos Ci moze > zwrocic rozne wartosci to sie to testuje. Chyba sobie żartujesz. Właśnie w tym problem, że nie zawsze wszystko przewidzisz. Gdyby PHP generował wyjątek, to można by to standardowo przechwycić w wyższej warstwie i automatycznie obsłużyć. Po prostu do dupy ten pehapowy design. >> To, że to wygląda jak kupa to jedno. > > Jak dla mnie to ify takie kupowate nie sa :P Tylko kto pisze w tak paranoidalny sposób testując każdą zmienną? Wyjątki tu dużo uproszczają. >> To, że nie można polegać na systemie wyjątków w PHP - to drugie. > > Czemu nie mozna? Tego, że nie można w prosty i spójny sposób założyć pułapki na wszelkie, możliwe błędy. Ani nie wychwycisz tym fatal errorów ani nie jesteś w stanie wyłapać tą drogą błędów z funkcji wbudowanych, bo po prostu one nie generują wyjątków. Niby dodali obsługę wyjątków tylko że mały z tego pożytek. >> Podobnie z modelem obiektowym. Za pierwszym razem (w wypadku PHP4) >> wyszło im to tak nieudacznie, że ten kod nie nadawał się do dalszych >> poprawek. > > Lepiej o tym nie mowic. To byla tylko proteza. Ta proteza pokazuje kompetencje programistycze tworców PHP. >> Stąd model obiektowy w PHP5 został napisany od podstaw! > > Podobnie jak caly Zend Engine. A to zle? Dobrze, że nie zostano przy modelu z PHP4. Źle, że musiano to robić od zera po raz drugi wprowadzając zamieszanie do już istniejącego bajzlu w PHP. I źle, że to zrobiono znowu kiepsko. >> Niestety, drugie podejście jest też niezbyt udane, bo twórcy pehapa >> zapatrzyli się trochę nie w tą stronę. Statycznie typowana, z silną >> typizacją Java to raczej kiepski wzorzec dla obiektowości w języku >> dynamicznym o słabej typizacji jakim jest PHP. Java nie jest językiem >> czystym obiektowo (poza tym model obiektowy Javy ma sporo wad). > > Jak dla mnie to ten model nie jest zly. Rzeklbym, ze uznany za > swiatowy standard. LOL! >> Wprowadzono do PHP zupełnie bezsensownie nieobiektowe konstrukcje w >> postaci metod statycznych, > > A to w pythonie nie ma? I dlaczego bezsensowne? Metody statyczne > (klasowe) to standard OOP. W Pythonie to też jest bez sensu, zgoda (w Ruby i w Scali takich głupot nie ma). Ale w Pythonie przynajmniej klasy są obiektami i nie trzeba w ogóle używać tych metod statycznych bo do niczego nie są potrzebne. Pythonowe ma metody klasowe. > Interfejsy sa nieobiektowymi konstrukcjami? Oczywiście że nie są. Już ci ktoś o tym napisał. Dodam jeszcze że interfejsy są głupią konstrukcją. Znacznie lepsze są miksiny (jak w Ruby) lub traits (jak w Scali) ktore z grubsza działają jak interfejsy z tą różnicą że mogą posiadać częściową implementację. Interfejsy nie mogą mieć żadnej implementacji. To jest ich główna wada. >> czy głupi podział na prymitywy i obiekty. > > No fakt, ze latwiej ogarnac jedne typ zmiennych. Ani nie można robić chain methods na stringach czy liczbach. Po co w języku dynamicznym tak niskopoziomowe struktury? Bez sensu. >> Gdyby "miszczowie" rzucili okiem na inne języki (z tej samej bajki, >> czyli dynamicznie typowane) to by może uniknęli głupich decyzji >> projektowych. No, ale jak to się mówi do trzech razy sztuka. Może >> trzecie podejście, jeśli do tego dorosną, w końcu im wyjdzie i PHP >> zbliży się trochę do nowocześniejszych języków programowania. > > Tzn. pythona bez podstawowego modyfikatora protected i __protezy dla > private? :) Ruby i Scala mają kwalifikatory dostępu :P Co do Pythona, to już ci odpowiadziano, że to kwestia bardziej konwencji, a nie zabezpieczeń. Kwalifikatory protected i private łatwo obejść w PHP: http://blog.zabiello.com/2009/06/21/zabezpieczenia-protected-private-java-scala-php5. >> Jest coraz wolniejszy w stosunku do innych języków dynamicznie >> typowanych. > > To zalezy od implementacji, ale nie znam dobrych benchamarkow. Jakie byś nie brał, PHP jest wolny. Szczególnie silnie to widać po webowych frameworkach. Wszystkie są wolniejsze od dowolnego frameworka napisanego w Ruby (Rails, Merb, Sinatra, Ramaze, etc.) czy Pythonie (Django, Pylons, Tornado itp). A wspomniany wcześniej Symfony to chodzi zupełnie jak żółw (Cake jest jeszcze wolniejszy!). Zresztą nic dziwnego. To wynika z pehapowej specyfiki pracy w stylu cgi. Żaden akcelerator nie zmieni tego, że PHP niszczy i tworzy na nowo obiekty przy każdym requeście, a to kosztuje. Możnaby spróbować pisać w PHP w stylu serwletowym, gdyby miał dobrą wielowątkowość i przede wszystkim wydajny garbage collector. Niestey, nie ma tego pierwszego, a to drugie jest kompletnie niedopracowane. Stąd im większy kod tym PHP bardziej odstaje wydajnościwo w stosunku do framworków pracujących serwletowo. >> Poza tym, przy pehapie tkwi dużo osób którzy w ogromnej większości >> prezentują bardzo niski poziom wiedzy na temat sztuki programowania. A >> każdy kto trochę więcej się podszkoli, szybko zaczyna tracić pierwotny >> entuzjazm fanboja i kieruje się do Pythona lub Ruby. > > Ci, ktorzy sie podszkola wola jave. Tylko skąd się bierze tyle konwertytów Javy do Ruby/JRuby? :) Java jest językiem przestarzałym i ograniczonym. Ale ma dobrego Hotspota i kupę ciekawszych języków zgodnych z JVM. >> To prawda, że wciąż łatwiej znaleźć programistę PHP niż Ruby czy >> Pythona. Jednak w tym wypadku ilość nie oznacza jakości. >> > > Co tez nie znaczy, ze dobrych programistow PHP jest mniej niz Pythona > czy Ruby. Myślę, że jest nawet mniej. Mało który dobry programista zostaje przy PHP. Zresztą, nowoczesny programista musi być poliglotą, znać więcej niż jeden język programowania. Takie czasy. A jak raz poznasz jakiś lepszy, to nie będziesz chciał używać gorszego. Proste i logiczne. Ja np. używam PHP tylko wtedy, kiedy muszę. Kiedy nie muszę, używam głównie JRuby. Prościej, szybciej i wygodniej. -- JZ http://blog.zabiello.com
Technical Details
Message-ID:
<op.u2p83sqyeaqjf2@macbook-pro-15-zbiru.local>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mailReferences:
<h83in7$rl3$1@inews.gazeta.pl> <b9dc7116-39db-474f-9282-8862b3f1cad2@d5g2000yqm.googlegroups.com> <a501db87-9ccf-4694-a8f8-330a67cdc839@15g2000yqy.googlegroups.com> <7aa62383-88c2-4138-89d6-594112504075@g27g2000yqn.googlegroups.com> <op.u2nhqrhyeaqjf2@macbook-pro-15-zbiru.local> <97ad13b9-95bf-4c61-8a1b-59c7c57e8499@s31g2000yqs.googlegroups.com> <op.u2oi93ceeaqjf2@macbook-pro-15-zbiru.local> <12b7fbaa-206c-4b39-8868-4e3b96eea704@37g2000yqm.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail From: "Jaroslaw Zabiello" <usenet@onet.eu> Newsgroups: pl.comp.lang.python Subject: Re: python vs php - potrzebne argumenty Date: Sun, 01 Nov 2009 17:48:54 -0000 Organization: http://onet.pl Lines: 261 Message-ID: <op.u2p83sqyeaqjf2@macbook-pro-15-zbiru.local> References: <h83in7$rl3$1@inews.gazeta.pl> <b9dc7116-39db-474f-9282-8862b3f1cad2@d5g2000yqm.googlegroups.com> <a501db87-9ccf-4694-a8f8-330a67cdc839@15g2000yqy.googlegroups.com> <7aa62383-88c2-4138-89d6-594112504075@g27g2000yqn.googlegroups.com> <op.u2nhqrhyeaqjf2@macbook-pro-15-zbiru.local> <97ad13b9-95bf-4c61-8a1b-59c7c57e8499@s31g2000yqs.googlegroups.com> <op.u2oi93ceeaqjf2@macbook-pro-15-zbiru.local> <12b7fbaa-206c-4b39-8868-4e3b96eea704@37g2000yqm.googlegroups.com> NNTP-Posting-Host: 78.16.107.141 Mime-Version: 1.0 X-Trace: news.onet.pl 1257097736 468 78.16.107.141 (1 Nov 2009 17:48:56 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Sun, 1 Nov 2009 17:48:56 +0000 (UTC) To: pakalk <pakalk@gmail.com> User-Agent: Opera Mail/10.01 (MacIntel) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit