Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

11 Stron V  « < 8 9 10 11 >  
Reply to this topicStart new topic
> Python
Jabol
post
Post #181





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


@dr_bonzo: 1. odpowiedź to ta na którą czekałem. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) .

Fajne, nie? Ciekawiło mnie, czy ktoś z Was w ogóle się pokusi o wykonanie tego programu na swoim komputerze...

Pozdrawiam
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #182





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Jabol: wykonalem, bo on tylko printa robi wiec nic nie poniszczy.

i

gdzie ta sztuczka?
Go to the top of the page
+Quote Post
skali
post
Post #183





Grupa: Zarejestrowani
Postów: 70
Pomógł: 3
Dołączył: 21.08.2006
Skąd: Zheshuv

Ostrzeżenie: (0%)
-----


a ja mam takie ogolne pytanie. co lepiej zaczac sie uczyc? php znam podstawy w minimalnym slowa znaczeniu (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

python czy php?
Go to the top of the page
+Quote Post
Sedziwoj
post
Post #184





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


@skali
Sam musisz wybrać, a już chyba sporo jest nawet w tym wątku abyś sam zdecydował.

A co do "napisz w dwóch linijkach" to nie na tym polega siła języka.
Ja raczej często rozbijam takie konstrukcje, aby były czytelne co robią.
Go to the top of the page
+Quote Post
sp_
post
Post #185





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 9.09.2007

Ostrzeżenie: (0%)
-----


Z trzech: java, python, php uważam, że najlepsza i tak jest java. Python ma kilka zalet, ale ma też potężną wadę. Po (prawie) każdej zmianie wersji trzeba zmieniać kod aplikacji. Dotyczy to zwłaszcza Zope, które przecież jest najczęstszym powodem u
ywania pythona. W php jest to mimo wszystko mniej uciążliwe. Trzeba też się zastanowić do czego używa się php. Jeśli mamy zrobić krótki skrypt, to jasne, że nie potrzeba nam nie_wiadomo_jakiej obiektowości (po co sobie życie komplikować), a jeśli mamy do zbudowania potężną aplikację, to python okaże się zbyt nieprzewidywalny i jednak za trudny w utrzymaniu, ze swoimi wszystkimi kruczkami i sztuczkami.
Go to the top of the page
+Quote Post
Jabol
post
Post #186





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


@dr_bonzo: nie ma, bo rozwiązaliście zagadkę.

@Sedziwoj: ja też zazwyczaj zapisuje normanlą wersję takich kombinacji.... w komentarzach. Aczkolwiek w Pythonie jest to raczej normalny zapis, nic specjalnego...

@sp_: Python jest kompatybilny wstecz. Jeżeli już coś to się zaczną jaja z Pythonem 3k, ale nikogo to dziś nie powinno interesować, bo to będzie praktycznie nowy język. Jestem pewnien, że Python 2.x jeszcze długo pożyje i nie będzie tak jak w przypadku PHP to życie w którym wszyscy będą mu życzyli śmierci. Jeżeli zresztą wszystko co słyszałem o Pythonie 3k jest prawdą, szybko ktoś zrobi forka z 2.x i po prostu ten język tak szybko nie umrze. A co do Zope, to już możesz mieć zastrzeżenia do programistów Zope. To akurat z Pythonem nie ma nic wspólnego.
Go to the top of the page
+Quote Post
Sedziwoj
post
Post #187





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(Jabol @ 10.09.2007, 10:36:52 ) *
@Sedziwoj: ja też zazwyczaj zapisuje normanlą wersję takich kombinacji.... w komentarzach. Aczkolwiek w Pythonie jest to raczej normalny zapis, nic specjalnego...


Normalny zapis? czyli nieczytelny... ciekawe, a tak chwalicie, a tu jest nieczytelny język, przez te wszystkie bajery, chociaż wcięć nie ominiecie (IMG:http://forum.php.pl/style_emoticons/default/aaevil.gif)
Go to the top of the page
+Quote Post
Jabol
post
Post #188





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


Cytat(Sedziwoj @ 10.09.2007, 10:53:07 ) *
Normalny zapis? czyli nieczytelny... ciekawe, a tak chwalicie, a tu jest nieczytelny język, przez te wszystkie bajery, chociaż wcięć nie ominiecie (IMG:http://forum.php.pl/style_emoticons/default/aaevil.gif)

Czemu nieczytelny? Przecież to jest zwykły konstruktor listy, nic w nim specjalnego i nieczytelnego nie ma... Akurat to jeszcze ujdzie, ale np. metoda zrobienia "switch" w Pythonie jest dość ciekawa:
Kod
{1:  (lambda x: action_1(x)), 2: (lambda x: action_2(x))}.get(key, (lambda x: default_action()))(key)

I do takiego kodu już zapisuje w komentarzach:
Kod
if key == 1:
    action_1(1)
elif key == 2:
    action_2(2)
else:
   default_action()

Ale chyba widać różnice w czytelności pomiędzy tą czarną magią a tamtym prostym przykładem konstruktora listy...

Ten post edytował Jabol 10.09.2007, 13:07:29
Go to the top of the page
+Quote Post
Sedziwoj
post
Post #189





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Takie przykłady tylko mnie zniechęcają do Pythona...
Choć w testach (tych test.php.pl) też ludzie dają takie konstrukcje, że tylko wkurza, brak czytelności i trudnością nie jest sam to co to robi, tylko dojście co to w ogóle robi.
Go to the top of the page
+Quote Post
qqrq
post
Post #190





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


A ja się chciałem Szanownych Kolegów spytać - co to za magia z z tą całą pełną obiektowością ("wszystko jest obiektem")? Przy rozbudowanych programach/aplikacjach jest to rzecz b. przydatna, fakt, ale jak ktoś chce to może to sobie w PHP zaimplementować i tak. No a przy małych programikach? Ładniej (i bardziej przejrzysto, co ważniejsze) wygląda te 15 linijek pisanych strukturalnie, a nie klasa, prawda?
Go to the top of the page
+Quote Post
NuLL
post
Post #191





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

Ostrzeżenie: (0%)
-----


Nie da sie zaimplementowac w PHPie "pelnej obiektowosci" - to jakby cos (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
qqrq
post
Post #192





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Nie nie, nie o to mi chodzi, wiem, że w PHP nie jest w pełni obiektowe, ale jaki sens ma "pełna obiektowość" - nie lepiej przy prostych programach pozostać przy kodzie strukturalnym, obiektowość pozostawiająć do zaimplementowania chętnym (i umiejącym to zrobić), a nie wymuszać używanie klas od samego początku?
Go to the top of the page
+Quote Post
Jabol
post
Post #193





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


Cytat(qqrq @ 10.09.2007, 15:55:04 ) *
A ja się chciałem Szanownych Kolegów spytać - co to za magia z z tą całą pełną obiektowością ("wszystko jest obiektem")? Przy rozbudowanych programach/aplikacjach jest to rzecz b. przydatna, fakt, ale jak ktoś chce to może to sobie w PHP zaimplementować i tak. No a przy małych programikach? Ładniej (i bardziej przejrzysto, co ważniejsze) wygląda te 15 linijek pisanych strukturalnie, a nie klasa, prawda?

Wiesz, czym jest pełna obiektowość? Wprowadzeniem niech będzie: ani Java, ani PHP ani nawet C++ nie są językami w pełni obiektowymi. Czemu? Bo nie wszystko w nich jest obiektem.

A jak to jest w Pythonie? W Pythonie *wszystko* jest obiektem. W Pythonie każda operacja jest operacją na obiekcie.

Tzn. jest sobie system obiektowy, a Python to tylko system zarządzania tymi objetami. Język który je oraz interakcje między nimi definiuje.

Np.
Kod
a = 1 + 1
Tłumaczone jest do:
Kod
a = 1.__add__(1) # 1 jest obiektem typu types.IntType
W powyższym przykładzie a to tylko nazwa referencji do obiektu.
W Javie np. przykładowa klasa:
Kod
class Abc {}
I teraz Abc nie jest obiektem, a klasą. Natomiast Abc.class jest obiektem reprezentującym klasę, czy jakoś tak. I teraz swoją drogą jak w ogóle Abc może posiadać atrybut class skoro nie jest obiektem?
W Pythonie każda klasa jest obiektem. A raczej definicja klasy to nic innego jak zdefiniowanie referencji o pewnej nazwie do obiektu klasy. Dalej idąc, funkcje, czy raczej obiekty wykonywalne też są obiektami. Tego nie ma ani w Javie ani w PHP. Pomimo, że istnieje klasa Method w Javie, nie reprezentuje ona wykonywalnej metody, a jedynie ją obudowuje.
Rozważ np,
Kod
a = 1
b = "str"
class c:
    pass
def d():
    pass
e = c()
W powyższym przykładzie a,b,c,d oraz e to dokładnie to samo: referencje do obiektów. I pomimo, że niektóre obiekty można tworzyć inaczej niż poprzez Name(*args, **kwargs), to są to tylko skróty interpretera.

Każda funkcja zwraca jakiś obiekt, każda referencja odnosi się do jakiegoś obiektu. I tak np. możesz wykonywać operacje na obiektach zwróconych przez jakieś funkcje referencje.
Rozważ ten przykład z PHP.
  1. <?php
  2. class Cba {
  3. public $a = 1;
  4. }
  5.  
  6. class Abc {
  7. public function getCba() { return new Cba();}
  8. }
  9. // i w ten sposób całkiem poprawne będzie napisanie:
  10. echo new Abc()->getCba()->a;
  11. // ale jakby getCba zwracało funkcje, czego swoją drogą w PHP nie da się zrobić, nie ma możliwości zrobienia:
  12. //new Abc()->getCba()();
  13. ?>
Tymsamym, jak widizisz nie wszystko jest obiektem, a wartości są dużo bardziej powiązane ze zmiennymi niż teoretycznie powinny. W Pythonie jest dokładnie na odwrót. Rozważ ten przykład
Kod
def abc():
    def bca():
        return 1
    return bca

// następujące wywołanie jest całkiem poprawne spowoduje wypisanie jedynki. Czemu? Bo abc() zwraca referencje do obiekty wykonywalnygo, a drugi zestaw nawiasów powoduje, że interpreter go wywołuje
print abc()()
// w rzeczywistości następuje takie oto wywołanie (pomijam, na co jest tłumaczony print)
print abc.__call__().__call__()

Teraz co do klas jeszcze. Jak powstają atrybuty klas? Nie inaczej, jak poprzez umieszczenie referencji do ich obiektów w tzw. słowniku klasy. Każda klasa ma atrybut __dict__, który jest słownikiem przechowującym jej atrybuty. Oczywiście __dict__ jest jakąś tam specjalną nazwą i nie znajduje się sam w sobie. A czym są metody? Metody klas to nic innego jak obiekty wykonywalne do których referencje przechowywane są w słowniku klasy... Tzn., że pomiędzy atrybutami nie ma żadnej różnicy ze strony klasy. Różnią się one tylko między sobą swoim typem.
I tak np. kolejne tłumaczenie
Kod
class A:
    def b(self):
        pass

anA = A()
anA.b()
// jest tłumaczone na
anA = A.__new__()
anA.__dict__["__init__"].__call__(anA)
anA.__dict__["b"].__call__(anA)


Mam nadzieje, że było to zrozumiałe i pouczające.

Pozdrawiam
Adam

PS. Mam wrażenie, że gdzieś już o tym pisałem

Ten post edytował Jabol 10.09.2007, 16:14:14
Go to the top of the page
+Quote Post
qqrq
post
Post #194





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Dziękuję uprzejmię (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Może się nie dość jasno wyraziłem... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Czy aby ta wszędobylska obiektowość jest naprawdę WSZĘDZIE potrzebna? Czy języki strukturalne nie działają szybciej? I wreszcie... Jakie są jej zalety (poza pełnym zachwytu mlaskaniem nad pięknem obiektowego świata)?

Jabol => Jeżeli będziesz musiał się powtarzać, to sorry, gapa ze mnie...

Gwoli ścisłości, nie jestem jakimś wrogiem obiektowości, chciałbym tylko żeby Szanowni Koledzy w sposób w miarę przekonujący przekonali niżej podpisanego o powyższym. Pozdrawiam! (IMG:http://forum.php.pl/style_emoticons/default/party.gif)

Ten post edytował qqrq 10.09.2007, 16:49:27
Go to the top of the page
+Quote Post
Jabol
post
Post #195





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


qqrq: obiektowość pythona nie narzuca stylu pisania. Możesz wciąż tworzyć strukturalnie.
Go to the top of the page
+Quote Post
Sedziwoj
post
Post #196





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


CZy mi się wydaje, czy Smalltalk nie jest czymś podobnym ;>
A JS która ma podobne zachowanie, nie oznacza że jest lepsza. To że masz olbrzymie możliwości zmiany działania, nie oznacza że jest lepsze.
Jak już dziś wspominałem Python to taki pojazd z trzema kołami, nie czyni to gorszym od samochodu, ale nie można powiedzieć że nim jest.
Go to the top of the page
+Quote Post
Jabol
post
Post #197





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


Cytat(Sedziwoj @ 10.09.2007, 23:49:10 ) *
CZy mi się wydaje, czy Smalltalk nie jest czymś podobnym ;>
A JS która ma podobne zachowanie, nie oznacza że jest lepsza. To że masz olbrzymie możliwości zmiany działania, nie oznacza że jest lepsze.
Jak już dziś wspominałem Python to taki pojazd z trzema kołami, nie czyni to gorszym od samochodu, ale nie można powiedzieć że nim jest.

Co nazwałbyś samochodem w takim razie? Bo rozumiem, że są wg Ciebie języki od których w takim razie Python jest ewidentnie gorszy?

Smalltalka nie znam
Go to the top of the page
+Quote Post
Sedziwoj
post
Post #198





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(Jabol @ 11.09.2007, 08:41:29 ) *
Co nazwałbyś samochodem w takim razie? Bo rozumiem, że są wg Ciebie języki od których w takim razie Python jest ewidentnie gorszy?


Czy Ty w ogóle przeczytałeś co ja napisałem?
Może powtórzę:
Cytat
Python to taki pojazd z trzema kołami, nie czyni to gorszym od samochodu
Go to the top of the page
+Quote Post
sztosz
post
Post #199





Grupa: Zarejestrowani
Postów: 866
Pomógł: 32
Dołączył: 2.06.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Jak robisz analogie to powinieneś powiedzieć do czego (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Nadal nie wiemy czym jest samochód (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Sedziwoj
post
Post #200





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(sztosz @ 11.09.2007, 10:20:01 ) *
Jak robisz analogie to powinieneś powiedzieć do czego (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Nadal nie wiemy czym jest samochód (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


O a jednak ktoś zauważył (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
A zobacz, że mimo że poprzednik mimo że nie wiedział o czym mowa, bronił Pythona...
Go to the top of the page
+Quote Post

11 Stron V  « < 8 9 10 11 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.06.2026 - 14:40