🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #26760

Re: python vs php - potrzebne argumenty

#26760
From: Marek Wywiał
Date: Sat, 31 Oct 2009 21:17
161 lines
7385 bytes
On 31 Paź, 20:54, pakalk <pak...@gmail.com> wrote:
>
> > To, że nie można polegać na systemie  
> > wyjątków w PHP - to drugie.
>
> Czemu nie mozna?
try {
  jakis kod;
} catch(NieMatakiejKlasy $e) {
  print "chcialbym tu dotrzec";
}

póki kod przed w try jest ok, to ok
gdy dotrze do niestniejącejklasy wyjątku (literówka)
skończy się fatalem zamiast obsługą

>
>
>
> > 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.
>
> > Stąd model obiektowy w PHP5 został napisany od podstaw!
>
> Podobnie jak caly Zend Engine. A to zle?
>
>
>
> > 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.
>
>
>
> > 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.

Metoda statyczna, jest to metodą nie używająca właściwości obiektu w
którym się znajduje,
tylko np dodająca 2 wartości przekazane jako argumenty. A do tego
służą funkcje odpowiednim
namespace/pakiecie. To nie jest standard OOP tylko proteza na
upychanie funkcji w namespace klasy
w Javie.

W pythonie wystarczy umieścić funkcję w pakiecie, nie potrzeba do tego
wymyślać klasy, w której
chciałbym mieć tą funkcję.

Jak już zostało wspomniane moim zdaniem portowanie do języka
dynamicznego jakim jest PHP wzorców i konstrukcji
z języka statycznego jest przerostem formy nad treścią, gdyż wiele
rozwiązań w javie jest stworzonych po to
by obchodzić jego statyczność i pozwolić wykonać to co w językach
dynamicznych można na dzień dobry.

>
> > interfejsów
>
> Interfejsy sa nieobiektowymi konstrukcjami?

Interfejsy nie są OOP. W przypadku niektórych implementacji używa się
ich do oznaczania oraz wymuszania spójności interfejsów klas.


>
> > czy głupi podział na prymitywy i  
> > obiekty.
>
> No fakt, ze latwiej ogarnac jedne typ zmiennych.
>
> > 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? :)

Protected i private też nie należą do OOP tylko do konkretnej
implementacji OOP.
Nie służą one do wymuszania ale do informowania o przeznaczeniu
konkretnej właściwości.

Problem się zaczyna przy dużym projekcie, wielu klasach dziedziczących
(płasko, nie głębokie drzewa),
gdy okazuje się, że protected z klasy bazowej sprawia spory problem
przy rozwijaniu projektu.

Tworzy się wtedy obejście na niepotrzebne blokowanie przy pomocy klas
friendly.

W pytonie wystarczy oznaczyć element jako protected '_' czy private
'__' i każdy normalny programista
zrozumie jego znaczenie, czyli nie używaj, a jak musisz to w klasach
ściśle powiązanych i musisz być przygotowany
na zmiany jeżeli nie ty rozwijasz pakiet z daną właściwością. Czyli
masz to samo co w Java, tylko bez zbędnego pisania
i bez problemów przy złożonych systemach.

Hermetyzacja nie oznacza blokowania klasy przed idiotami, tylko jasne
oznaczenie przeznaczenia klas i ich elementów.
W php czy w java oznaczenie jako private nie oznacza, że nie uda się
dostać do danej właściwości, bo można choć nie wprost (identycznie jak
w pythonie).

>
> > Moim zdaniem, ten język brnie w ślepy zaułek.
>
> Nie jest tak zle, ale bez zerwania z BC dalszy rozwoj moze byc niezle
> zblokowany.
>
> > Popełniono wiele błędów  
> > projektowych i nadal się w nie brnie. PHP też już dawno nie jest językiem  
> > prostym, robi się coraz bardziej skomplikowany,
>
> Ale nie zagmagtwany. Akurat nowe biblioteki sa bardziej uporzadkowane,
> a konstrukcje pomagaja w programowaniu.
>
> > tracąc swój początgkowy  
> > atut jakim była prostota.
>
> I co za tym idzie, mnostwo prostych magic_quotes itp.
>
> > Jest coraz wolniejszy w stosunku do innych  
> > języków dynamicznie typowanych.
>
> To zalezy od implementacji, ale nie znam dobrych benchamarkow.
>
>
>
> > 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.

Nie uważam się za specjalistę od Java, więc lepiej przeczytać wywiad z
kimś kto chyba jest
 * http://www.artima.com/intv/aboutme.html

>
>
>
> > 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.
Technical Details
Message-ID: <43f4c68c-2cfa-4444-b8e7-f520d337cfcb@m16g2000yqc.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!feed.news.interia.pl!news.nask.pl!news.nask.org.pl!plix.pl!newsfeed1.plix.pl!news-out2.kabelfoon.nl!newsfeed.kabelfoon.nl!xindi.nntp.kabelfoon.nl!feeder.news-service.com!postnews.google.com!m16g2000yqc.googlegroups.com!not-for-mail
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>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!feed.news.interia.pl!news.nask.pl!news.nask.org.pl!plix.pl!newsfeed1.plix.pl!news-out2.kabelfoon.nl!newsfeed.kabelfoon.nl!xindi.nntp.kabelfoon.nl!feeder.news-service.com!postnews.google.com!m16g2000yqc.googlegroups.com!not-for-mail
From: Marek Wywiał <onjinx@gmail.com>
Newsgroups: pl.comp.lang.python
Subject: Re: python vs php - potrzebne argumenty
Date: Sat, 31 Oct 2009 14:17:14 -0700 (PDT)
Organization: http://groups.google.com
Lines: 185
Message-ID: <43f4c68c-2cfa-4444-b8e7-f520d337cfcb@m16g2000yqc.googlegroups.com>
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: 83.30.112.8
Mime-Version: 1.0
X-Trace: posting.google.com 1257023835 8659 127.0.0.1 (31 Oct 2009 21:17:15 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Sat, 31 Oct 2009 21:17:15 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: m16g2000yqc.googlegroups.com; posting-host=83.30.112.8;  posting-account=eUslOwoAAABzJHUPZYYTJJROK5AqCeD5
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.9.1.4)  Gecko/20091006 Firefox/3.5.4,gzip(gfe),gzip(gfe)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit