🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: python vs php - potrzebne argumenty

#26765
From: pakalk
Date: Sun, 01 Nov 2009 19:14
143 lines
7233 bytes
On Nov 1, 6:48 pm, "Jaroslaw Zabiello" <use...@onet.eu> wrote:
>
> >> 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ą.

Jasne. Bo zamiast ifa, trzeba napisac try..catch - oczywiscie nie
badzmy paranoidalni - wowczas aplikacja staje i sprawdzamy w logach co
jest nie tak. Bo chyba nie wyswietlamy userowi komnunikatu z bledem?

>
> Tego, że nie można w prosty i spójny sposób założyć pułapki na wszelkie,  
> możliwe błędy.

Ale co to ma wspolnego z systemem wyjatkow? To jest system obslugi
bledow.

>
> >> 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.

W PHP4, nie aktualnej i jedynej wspieranej wersji, czyli PHP5. W PHP3
w ogole obiektowki nie bylo - i co? To tez mamy krytykowac? To moze
dorzucmy cos z PHP/FI, co co prawda nie ma juz nic wspolnego z
rzeczywistoscia, ale fajnie tak dowalic, byle dowalic ;)

> 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.

Czy kiepsko, to nie wiem. Ale jak dobrze zrobiono, to o co chodzi?

>
> LOL!

Obiektowy model Javy jest swiatowym standardem - tu nie ma nic do
smiania.

>
> W Pythonie to też jest bez sensu, zgoda (w Ruby i w Scali takich głupot  
> nie ma).

W skali nie ma metod statycznych? Pierwsze slysze. Toz to chocby main
() jest statyczny. Co z tego, ze klase z metodami statyczna nazywa sie
"object".

> Ale w Pythonie przynajmniej klasy są obiektami i nie trzeba w  
> ogóle używać tych metod statycznych bo do niczego nie są potrzebne.  

Nie trzeba uzywac, bo mozna zdefiniowac funkcje w modulach. Jakby sie
nie dalo, to by trzeba jako metdoy statyczne, coby je zagregowac. Poza
tym, to jest chyba jednak pozyteczne z tego wzgledu, ze mozna wtedy
uzyc metod prywatnych w metodach publicznych - da sie tak zrobic z
funkcjami? (Tzn. ustawic ich modyfikator na private? Nie znam sie na
tyle - wiec pytam)

> Pythonowe ma metody klasowe.

1. Metoda klasowa (np. w pythonie) == metoda statyczna (w np. Javie)
2. Metoda statyczna w pythonie == funkcja przyczepiona do klasy, nie
uruchamiana w jej kontekscie.

>
> > Interfejsy sa nieobiektowymi konstrukcjami?
>
> Oczywiście że nie są. Już ci ktoś o tym napisał.

Co z tego, ze napisal. Ja pisze, ze sa. Autorzy UML-a mnie popra.

> Dodam jeszcze że  
> interfejsy są głupią konstrukcją. Znacznie lepsze są miksiny (jak w Ruby)  

To inna konstrukcja, a nie lepsza i raczej przypominajaca inline'owe
klasy abstrakcyjne, ale nie pamietam dobrze, nie pisze na 100%.

> lub traits (jak w Scali) ktore z grubsza działają jak interfejsy z tą  
> różnicą że mogą posiadać częściową implementację.

Dzialaja jak (m/w) klasy abstrakcyjne. Nie wiem po co w Scali tyle
glupawych nazw.

> Interfejsy nie mogą mieć  
> żadnej implementacji. To jest ich główna wada.

To jest ich cecha, a nie wada. Fakt, ze klasy abstrakcyjne/wirtualne
przy dziedziczeniu wielokrotnym moga sie lepiej sprawdzac.


>
> > 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ń.  

No to moge kazdy argument przeciw PHP zbywac tym, ze to kwestia
konwencji, bo tak jest.

>
> >> 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!).

Mozliwe.
>
> > 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.

Java nie jest taka zla. Po prostu jest sztywna ;) JRuby/Jython
zapewniaja standaryzowana skryptowosc aplikacji, co czesto bywa
bardziej pozadane od silnego typowania (choc z dobrymi narzedziami do
tworzenia aplikacji, to roznie..).

>
> > 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.

Czemu nie Jython?
Technical Details
Message-ID: <c3247d6d-5199-4c45-9825-772387effd7b@f16g2000yqm.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!lublin.pl!uw.edu.pl!newsgate.cistron.nl!newsgate.news.xs4all.nl!194.109.133.84.MISMATCH!newsfeed.xs4all.nl!newsfeed5.news.xs4all.nl!xs4all!feeder.news-service.com!feeder1.cambriumusenet.nl!feed.tweaknews.nl!postnews.google.com!f16g2000yqm.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> <op.u2p83sqyeaqjf2@macbook-pro-15-zbiru.local>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!lublin.pl!uw.edu.pl!newsgate.cistron.nl!newsgate.news.xs4all.nl!194.109.133.84.MISMATCH!newsfeed.xs4all.nl!newsfeed5.news.xs4all.nl!xs4all!feeder.news-service.com!feeder1.cambriumusenet.nl!feed.tweaknews.nl!postnews.google.com!f16g2000yqm.googlegroups.com!not-for-mail
From: pakalk <pakalk@gmail.com>
Newsgroups: pl.comp.lang.python
Subject: Re: python vs php - potrzebne argumenty
Date: Sun, 1 Nov 2009 11:14:22 -0800 (PST)
Organization: http://groups.google.com
Lines: 164
Message-ID: <c3247d6d-5199-4c45-9825-772387effd7b@f16g2000yqm.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>  <op.u2p83sqyeaqjf2@macbook-pro-15-zbiru.local>
NNTP-Posting-Host: 83.4.162.97
Mime-Version: 1.0
X-Trace: posting.google.com 1257102862 27410 127.0.0.1 (1 Nov 2009 19:14:22 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Sun, 1 Nov 2009 19:14:22 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: f16g2000yqm.googlegroups.com; posting-host=83.4.162.97;  posting-account=rLTIYAoAAAAC0UY184o3dcMgnRpikGCw
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)  AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0,gzip(gfe),gzip(gfe)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit