Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Największy problem Pythona.

247 views
Skip to first unread message

Qertoip

unread,
May 10, 2005, 5:14:12 AM5/10/05
to

Na początek uczciwie zaznaczę, że jestem w Pythonie początkujący. Nie
licząc różnych "wprawek", napisałem około 1000 wierszy działającego kodu
(wątki, sockety, XML). Inną część tej samej aplikacji (również: wątki,
sockety, XML) piszę w .NET (VS2003).

Tym samym miałem okazję porównać swoją produktywność na tych dwóch
platformach. Podkreślę - nie tyle językach, co *platformach*.

Zauważyłem, że choć Python jest bardziej ekspresywny niż C#, to jednak
wydajność tworzenia oprogramowania jest istotnie większa w tym drugim...

Spostrzegłem, że składają się na to dwie prozaiczne rzeczy:
- bardzo słaba (w porównaniu do MSDN) dokumentacja bibliotek Pythona
- niemożność wylistowania składowych obiektu (w VS: Ctrl+Space) wraz z
podręczną dokumentacją dla każdej składowej (metody, atrybuty). Osoby
piszące w nowoczesnych IDE wiedzą o co mi chodzi.

To drugie wynika z faktu, że w Pythonie rzadko kiedy da się statycznie
ustalić typ obiektu (jeśli się da, najlepsze pythonowe IDE potrafią
wylistować składowe).

Niby pierdółki... ale *naprawdę* ma to zasadniczy wpływ na wydajność.

Jestem głodny Waszych uwag na ten temat.
Czy da się jakoś zniwelować powyższe problemy?
Jak porównujecie swoją wydajność w Pythonie do wydajności w innych
nowoczesnych językach?


--
Pozdr.
Piotrek

Przemek Wiśniewski

unread,
May 10, 2005, 5:17:49 AM5/10/05
to
Qertoip napisał(a):

zgadzam sie w 100%;

--
Przemek Wiśniewski

Mateusz Sołtysek

unread,
May 10, 2005, 5:28:51 AM5/10/05
to
Qertoip wrote:

> - niemożność wylistowania składowych obiektu (w VS: Ctrl+Space) wraz z
> podręczną dokumentacją dla każdej składowej (metody, atrybuty). Osoby
> piszące w nowoczesnych IDE wiedzą o co mi chodzi.

To zleży jakiego ID używasz, opcję o której mówisz posiadają takie
edytory jak: PythonWin czy też (Eclipse + pydev) - innych nie pamiętam.
Co do dokumentacji, to nie wiem co myśleć dla mnie zawsze była
wystarczająca i jakiś takich większych zastrzeżeń nie mogę zgłosić.

Pozdrawiam
Mateusz

JZ

unread,
May 10, 2005, 5:51:07 AM5/10/05
to
Dnia Tue, 10 May 2005 11:14:12 +0200, Qertoip napisał(a):

> - niemożność wylistowania składowych obiektu (w VS: Ctrl+Space)

Ty chyba żartujesz. Prawie wszystkie edytory do Pythona to potrafią. Chyba
nie widziałeś Wing IDE w akcji... Podpowiadać podobnie potrafi zarówno
PythonWin, Eclipse+pydev, SPE, Boa Constructor itp. Poza tym WingIDE,
PythonWin i Eclipse+pydev maja b. dobry wizualny debugger nie liczac
mozliwosci sprawdzenia czegos od reki w interpreterze, co jest zupelnie
poza zasiegiem takiego c#.

> To drugie wynika z faktu, że w Pythonie rzadko kiedy da się statycznie
> ustalić typ obiektu (jeśli się da, najlepsze pythonowe IDE potrafią
> wylistować składowe).

Tego nie porafi chyba tylko jakis obskurny Notatnik, albo SciTe (ktory
trzeba odpowiednio skonfigurowac).



> Jak porównujecie swoją wydajność w Pythonie do wydajności w innych
> nowoczesnych językach?

Probowalem ja, probowal kolega, napisac w C# aplikacje ktora cos pobiera z
netu. Nawet nie ma porownania. Python byl znacznie prostszy, z glowy od
reki napisalem pare linijek. Generalnie z moich wieloletnich doswiadczen z
roznymi jezykami zauwazylem ze podczas pracy z pythonem prawie w ogole nie
musze zagladac do manuala. No chyba zeby uzyc jakies nowej biblioteki.
Latwo sie zapamietuje skladnie i wywolania wszystkich funkcji a IDE
dopelnia reszty podpowiedziami. Kod Pythona jest nie tylko bowiem spojny
ale takze b. krotki i b. czytelny. No bo pobranie stronki www to przeciez 2
linijki, podobnie proste sa inne operacje, np. na plikach. Nawet Bruce
Eckel wyznal ze musi zagladac do manuala aby sobie czasem przypomniec
skladnie operacji na plikach w javie, a w pythonie tego nie musi robic mimo
ze zna go krocej.

--
JZ

Przemek Wiśniewski

unread,
May 10, 2005, 5:55:29 AM5/10/05
to
Mateusz Sołtysek napisał(a):

Mozna zrobic prosta przegladarke kodu zrodlowego (drzewka klas itp). Nie
da sie zrobic skutecznych narzedzi do refaktoryzacji, bo kod zawiera za
malo informacji i dodatkowo python pozwala typy tworzyc dynamicznie.
Mozna co najwyzej regexpami podmieniac na chybil trafil nazwy metod i
klas, trudno wylapac bledy powstale w wyniku takiej zabawy. Wszystkie
narzedzia do pythona wygladaja malo powaznie.

Na sile mozna w pythonie tworzyc spore rzeczy (np: zope i plone), bardzo
latwo spore rzeczy kompletnie spieprzyc (np: zope i plone).

--
Przemek Wiśniewski

Przemek Wiśniewski

unread,
May 10, 2005, 5:56:49 AM5/10/05
to
JZ napisał(a):
[..]

Ty jestes maniakiem pythona i cherrypy. Twoje zdanie sie nie liczy :P

--
Przemek Wiśniewski

Grzegorz Staniak

unread,
May 10, 2005, 5:58:29 AM5/10/05
to
... W dole szumi rzeka, w górze fruwa ptak
A Przemek Wiśniewski sobie idzie i śpiewa sobie tak:

>> To zleży jakiego ID używasz, opcję o której mówisz posiadają takie
>> edytory jak: PythonWin czy też (Eclipse + pydev) - innych nie pamiętam.
>> Co do dokumentacji, to nie wiem co myśleć dla mnie zawsze była
>> wystarczająca i jakiś takich większych zastrzeżeń nie mogę zgłosić.
>
> Mozna zrobic prosta przegladarke kodu zrodlowego (drzewka klas itp). Nie
> da sie zrobic skutecznych narzedzi do refaktoryzacji,

http://bicyclerepair.sourceforge.net/

> bo kod zawiera za malo informacji

A introspekcja ze wstydu kurczy się i pufff! - znika w obłoku logiki.

> i dodatkowo python pozwala typy tworzyc dynamicznie.
> Mozna co najwyzej regexpami podmieniac na chybil trafil nazwy metod i
> klas, trudno wylapac bledy powstale w wyniku takiej zabawy. Wszystkie
> narzedzia do pythona wygladaja malo powaznie.

Uwaga na nisko przelatujące kwantyfikatory.

[---]
--
Grzegorz Staniak <gstaniak _at_ wp [dot] pl>

Adam Przybyla

unread,
May 10, 2005, 6:39:38 AM5/10/05
to
Qertoip <qe...@o2.pl> wrote:
>
> Na początek uczciwie zaznaczę, że jestem w Pythonie początkujący. Nie
> licząc różnych "wprawek", napisałem około 1000 wierszy działającego kodu
> (wątki, sockety, XML). Inną część tej samej aplikacji (również: wątki,
> sockety, XML) piszę w .NET (VS2003).
>
> Tym samym miałem okazję porównać swoją produktywność na tych dwóch
> platformach. Podkreślę - nie tyle językach, co *platformach*.
>
> Zauważyłem, że choć Python jest bardziej ekspresywny niż C#, to jednak
> wydajność tworzenia oprogramowania jest istotnie większa w tym drugim...
>
> Spostrzegłem, że składają się na to dwie prozaiczne rzeczy:
> - bardzo słaba (w porównaniu do MSDN) dokumentacja bibliotek Pythona
import os
help(os)
w ten sposb mozesz sprawdzic wszystko co wiemy o danym obiekjcie/module.

> - niemożność wylistowania składowych obiektu (w VS: Ctrl+Space) wraz z

dir(obiekt) - listuje metody i dane

> podręczną dokumentacją dla każdej składowej (metody, atrybuty). Osoby
> piszące w nowoczesnych IDE wiedzą o co mi chodzi.

A IDE ci panie pod dostatkiem, nie porownuj tego z konsola,
choc ja np lubei konsole.

>
> To drugie wynika z faktu, że w Pythonie rzadko kiedy da się statycznie
> ustalić typ obiektu (jeśli się da, najlepsze pythonowe IDE potrafią
> wylistować składowe).
>
> Niby pierdółki... ale *naprawdę* ma to zasadniczy wpływ na wydajność.
>
> Jestem głodny Waszych uwag na ten temat.
> Czy da się jakoś zniwelować powyższe problemy?
> Jak porównujecie swoją wydajność w Pythonie do wydajności w innych
> nowoczesnych językach?

... nie porownuj "obrazkow", bo IDE jest wiele, jak chcesz
miec cos z duza iloscia podpowiedzi, to wybierz te najbardziej bajerzaste.
Z powazaniem
Adam Przybyla

RobertSzefler

unread,
May 10, 2005, 7:24:22 AM5/10/05
to
Qertoip wrote:
> Na początek uczciwie zaznaczę, że jestem w Pythonie początkujący. Nie
> licząc różnych "wprawek", napisałem około 1000 wierszy działającego kodu
> (wątki, sockety, XML). Inną część tej samej aplikacji (również: wątki,
> sockety, XML) piszę w .NET (VS2003).

Ja osobiście w dotnecie dotarłem do etapu hello world i tam poległem,
dokładnie z tego samego powodu, dla którego Ty wolisz C#... Mi się
wydaje, że to jest jednak w większym stopniu kwestia
przyzwyczajeń/doświadczeń/traum.

> Tym samym miałem okazję porównać swoją produktywność na tych dwóch
> platformach. Podkreślę - nie tyle językach, co *platformach*.
>
> Zauważyłem, że choć Python jest bardziej ekspresywny niż C#, to jednak
> wydajność tworzenia oprogramowania jest istotnie większa w tym drugim...
>
> Spostrzegłem, że składają się na to dwie prozaiczne rzeczy:
> - bardzo słaba (w porównaniu do MSDN) dokumentacja bibliotek Pythona

To fakt, nie jest z tym najlepiej. Nie ukrywam, że zdarza mi się np.
zerkać do sorców żeby wykumać, jak to wszystko jest poskładane i co się
dzieje w "corner cases".

> - niemożność wylistowania składowych obiektu (w VS: Ctrl+Space) wraz z
> podręczną dokumentacją dla każdej składowej (metody, atrybuty). Osoby
> piszące w nowoczesnych IDE wiedzą o co mi chodzi.

Ja nie wiem, ostatnio jadę pod windą w Notepad2 a tradycyjnie joe'm (od
którejś tam wersji ma fajne podświetlanie składni Pythona). Mi inspektor
obiektów nie jest z reguły potrzebny, chociaż wiadomo, co osoba to inne
preferencje.

> To drugie wynika z faktu, że w Pythonie rzadko kiedy da się statycznie
> ustalić typ obiektu (jeśli się da, najlepsze pythonowe IDE potrafią
> wylistować składowe).

Nie ma problemu z inspekcją metod klasy i atrybutów klasowych. Natomiast
fakt, w praktyce sprawdzenie atrybutów w teorii i praktyce jest poza
runtimem właściwie niemożliwe. Jakimś tam lekarstwem na to są sloty w
składni 2.4, ale to półśrodek. Python jest językiem młodym i ciągle
ewoluującym, a ta sprawa właśnie (bardziej statyczna obiektowość) jest
co chwilę poruszana wśród jego tfurców, bodajże nawet sam BDFL Guido się
do tego skłania.

Zobaczymy, co nadejdzie z Py3K. Chociaż ja osobiście wolałbym dobrze i
wydajnie zaimplementowaną maszynę wirtualną dla 2.4, no ale cóż...

> Niby pierdółki... ale *naprawdę* ma to zasadniczy wpływ na wydajność.

Kwestia gustu, acz oczywiście rozumiem i po części podzielam Twoje obiekcje.

> Jestem głodny Waszych uwag na ten temat.
> Czy da się jakoś zniwelować powyższe problemy?

Kwestia paradygmatu inżynieryjnego i organizacji pracy w grupie. Uwierz
mi, brak statycznych prototypów dla klas nie jest największym problemem
przy współpracy grupowej. Są poza tym różne podejścia próbujące to w
pewnym sensie niwelować (PyProtocols chociażby).

To w ogóle taki temat trochę szeroki, bo trzebaby najpierw zdefiniować,
czym na prawdę jest atrybut obiektu i czy ma konkretny związek z klasą
obiektu - Guido i spółka przyjęli, że tak nie jest, większość reszty
świata, szczególnie z korzeniami w C, jest innego zdania...

> Jak porównujecie swoją wydajność w Pythonie do wydajności w innych
> nowoczesnych językach?

Ja mogę z osobistego doświadczenia porównać to schematycznie tak:

Angielski > Polski > Python > C ~ C++ > asembler x86 ;) > Java > Perl
>>>>> PHP

od najwydajniejszych dla swojej klasy zastosowań do najmniej wydajnych
;) co przekłada się bezpośrednio na jakość "ideologiczną" języka.

RobertSzefler

unread,
May 10, 2005, 7:26:02 AM5/10/05
to
RobertSzefler wrote:

> Zobaczymy, co nadejdzie z Py3K. Chociaż ja osobiście wolałbym dobrze i
> wydajnie zaimplementowaną maszynę wirtualną dla 2.4, no ale cóż...

Btw, mają zabrać lambdy podobno, map, filter i inne helpery funkcyjne...
aaargh!

RobertSzefler

unread,
May 10, 2005, 7:37:51 AM5/10/05
to
Grzegorz Staniak wrote:

> http://bicyclerepair.sourceforge.net/

To jakiś chyba niezgorszy wypas, dziex za link

> A introspekcja ze wstydu kurczy się i pufff! - znika w obłoku logiki.

Czasami analiza statyczna jest konieczna, w tym sęk... Szczególnie jeśli
kiero projektu jest zatwardziałym dżawowcem ;)

>>i dodatkowo python pozwala typy tworzyc dynamicznie.
>>Mozna co najwyzej regexpami podmieniac na chybil trafil nazwy metod i
>>klas, trudno wylapac bledy powstale w wyniku takiej zabawy. Wszystkie
>>narzedzia do pythona wygladaja malo powaznie.
>
>
> Uwaga na nisko przelatujące kwantyfikatory.

que?

Grzegorz Staniak

unread,
May 10, 2005, 8:00:58 AM5/10/05
to
... W dole szumi rzeka, w górze fruwa ptak
A RobertSzefler sobie idzie i śpiewa sobie tak:

>> http://bicyclerepair.sourceforge.net/
>
> To jakiś chyba niezgorszy wypas, dziex za link

Pierwsze trafienie z http://www.google.com/search?q=python+refactoring ;)

Intregrowalny przynajmniej z Idle, emacsem i vimem, założenia masz opisane na
http://c2.com/cgi-bin/wiki?PythonRefactoringBrowser, więcej info na
http://c2.com/cgi-bin/wiki?BicycleRepairMan



>> A introspekcja ze wstydu kurczy się i pufff! - znika w obłoku logiki.
>
> Czasami analiza statyczna jest konieczna, w tym sęk...

Ale wiesz, to jeszcze nie znaczy, że refaktoryzacja jest niemożliwa, a jedyne
co można zrobić to "regexpami podmieniac na chybil trafil nazwy metod".

> Szczególnie jeśli kiero projektu jest zatwardziałym dżawowcem ;)

Naprostować go. ;)

[---]


>>>klas, trudno wylapac bledy powstale w wyniku takiej zabawy. Wszystkie
>>>narzedzia do pythona wygladaja malo powaznie.
>>
>>
>> Uwaga na nisko przelatujące kwantyfikatory.
>
> que?

"Poważny wygląd" to oczywiście DGCC, ale słowo "wszystkie" jest za mocne. Co
jest niepoważnego w Eclipse?

http://www.python.org/moin/EclipsePythonIntegration

Przyglądałeś się Komodo?

http://www.activestate.com/Products/Komodo/?utm_source=home&utm_medium=banner&utm_campaign=komodo_home_page
http://www.activestate.com/Products/Komodo/more_information.plex
http://www.activestate.com/Products/Download/featuretour.plex?id=Komodo&pageid=KomodoMain

JZ

unread,
May 10, 2005, 8:03:55 AM5/10/05
to
Dnia Tue, 10 May 2005 11:56:49 +0200, Przemek Wiśniewski napisał(a):

> Ty jestes maniakiem pythona i cherrypy. Twoje zdanie sie nie liczy :P

Argumentum ad hominem sie nie liczy. Ja podalem konkretne, merytoryczne
argumenty.

--
JZ

Przemek Wiśniewski

unread,
May 10, 2005, 8:06:10 AM5/10/05
to
JZ napisał(a):

Czy Ty wszsytko odbierasz ze smiertelna powaga?

--
Przemek Wiśniewski

JZ

unread,
May 10, 2005, 8:22:36 AM5/10/05
to
Dnia Tue, 10 May 2005 11:55:29 +0200, Przemek Wiśniewski napisał(a):

> Mozna zrobic prosta przegladarke kodu zrodlowego (drzewka klas itp). Nie
> da sie zrobic skutecznych narzedzi do refaktoryzacji, bo kod zawiera za
> malo informacji i dodatkowo python pozwala typy tworzyc dynamicznie.

To nie dotyczy w ogole Pythona jako takiego ale ogolnie jezykow
dynamicznych. Nie mozna wszystkiego miec. Kazde rozwiazanie ma swoje zalety
i wady. To odwieczny spor zwolennikow statycznej kompilacji i definicji
typow ze zwolennikami podejscia dynamicznego. Czesto osoby 'spaczone' praca
z java czy c++ tworza potem potworki jezykowe w Pythonie lub Ruby bo nie
moga pozbyc sie swoich nawykow ktore tu nie maja specjalnie sensu. To tez
moze tez przeszkoda w skutecznym poslugiwaniu sie takim jezykiem jak
Python. Dla mnie to b. intuicyjny jezyk i prawie w ogole nie musze zagladac
do manuali czego nie powiedzialbym np. o php (ktorego znam wiele lat
dluzej). Jezyk C porzucilem kupe lat temu, od Javy odrzucily mnie
(paradoksalnie) opinie Bruce Eckela, javowego guru no i koszmarna
nadmiarowosc kodu Javy. Nie przekreslam javy, ale jest na pewno mniej sexy
niz jezyki dynamiczne. ;)

> Na sile mozna w pythonie tworzyc spore rzeczy (np: zope i plone), bardzo
> latwo spore rzeczy kompletnie spieprzyc (np: zope i plone).

Plone nie jest spieprzony. To dobry projekt, ma doskonale zalozenia
obiektowego podejscia do CMS'a. Problemem jest Zope2 (na ktorym Plone sie
opiera). Zope2 ktory ma niekonsekwentne API, trudno w tym sie faktycznie
polapac.
Widziales jednak Zope3? Jest znacznie lepiej zaprojektowany. Zalozyli duza
skale zastosowan, stad powprowadzali np. interfejsy, adaptory itp. Polecam
prawie 500 stronicowa ksiazke dostepna online. http://tinyurl.com/74byh

--
JZ

JZ

unread,
May 10, 2005, 8:23:57 AM5/10/05
to
Dnia Tue, 10 May 2005 14:06:10 +0200, Przemek Wiśniewski napisał(a):

> Czy Ty wszsytko odbierasz ze smiertelna powaga?

Akurat nie mialem nastroju. Spoko;)

--
JZ

RobertSzefler

unread,
May 10, 2005, 8:43:59 AM5/10/05
to
JZ wrote:
> Widziales jednak Zope3? Jest znacznie lepiej zaprojektowany. Zalozyli duza
> skale zastosowan, stad powprowadzali np. interfejsy, adaptory itp. Polecam
> prawie 500 stronicowa ksiazke dostepna online. http://tinyurl.com/74byh

No, to akurat jest argument za spieprzeniem. Vide J2EE: "firmowy"
introduction Suna ma 1k+ stron :O

Qertoip

unread,
May 10, 2005, 8:54:48 AM5/10/05
to
Dnia Tue, 10 May 2005 11:51:07 +0200, JZ napisał(a):

> Dnia Tue, 10 May 2005 11:14:12 +0200, Qertoip napisał(a):
>
>> - niemożność wylistowania składowych obiektu (w VS: Ctrl+Space)
>
> Ty chyba żartujesz. Prawie wszystkie edytory do Pythona to potrafią.

Nie żartuję. Ty nie rozumiesz problemu.
def f( a ):
return a

obj = f( "" )
obj.???

Żadne IDE tego nie podpowie, bo typu nie da się ustalić statycznie.
Napisałem przecież, że *jeśli* się da wydedukować typ, to najlepsze IDE
potrafią wylistować składowe. Niestety z reguły się nie da.


> Chyba nie widziałeś Wing IDE w akcji...

Używam Eclipse + pydev do projektów oraz Wing IDE do wprawek.


> Kod Pythona jest nie tylko bowiem spojny ale takze b. krotki i b.
> czytelny.

Prawda... za wyjątkiem kilku upierdliwości, jak np. self.__metoda()


> Nawet Bruce Eckel wyznal ze musi zagladac do manuala aby sobie czasem
> przypomniec skladnie operacji na plikach w javie

To prawda, że obsługa plików w Javie są bardzo skomplikowana, ale to
margines jej zastosowań.

Chcę podkreślić, że nie przychodzę tutaj jako adwokat języków statycznie
typowanych, w szczególności C# - za krótko posługuję się dynamicznym
typowaniem, żeby ocenić sprawę obiektywnie. Chcę tylko poznać opinię
doświadczonych Pythonowców, nauczyć się *naturalnie* pisać w Pythonie i
podzielić się spostrzeżeniami.


--
Pozdr.
Piotrek

Qertoip

unread,
May 10, 2005, 9:00:20 AM5/10/05
to

Dzięki za wyważoną opinię.


--
Pozdr.
Piotrek

Przemek Wiśniewski

unread,
May 10, 2005, 9:29:20 AM5/10/05
to
Qertoip napisał(a):

> Dnia Tue, 10 May 2005 11:51:07 +0200, JZ napisał(a):
>
>
>>Dnia Tue, 10 May 2005 11:14:12 +0200, Qertoip napisał(a):
>>
>>
>>>- niemożność wylistowania składowych obiektu (w VS: Ctrl+Space)
>>
>>Ty chyba żartujesz. Prawie wszystkie edytory do Pythona to potrafią.
>
>
> Nie żartuję. Ty nie rozumiesz problemu.
> def f( a ):
> return a
>
> obj = f( "" )
> obj.???
>
> Żadne IDE tego nie podpowie, bo typu nie da się ustalić statycznie.
> Napisałem przecież, że *jeśli* się da wydedukować typ, to najlepsze IDE
> potrafią wylistować składowe. Niestety z reguły się nie da.

To akurat nie problem, kompilator Ocamla potrafi zgadywac typ funkcji na
podstawie argumentow, dobre ide tez by moglo - jedyne wymaganie to
takie, zeby kiedys ten typ jakos okreslic. Chodzi o to, ze klasa moze
sie zmieniac w czasie dzialania programu.

--
Przemek Wiśniewski

Przemek Wiśniewski

unread,
May 10, 2005, 9:32:00 AM5/10/05
to
JZ napisał(a):

>
>>Na sile mozna w pythonie tworzyc spore rzeczy (np: zope i plone), bardzo
>>latwo spore rzeczy kompletnie spieprzyc (np: zope i plone).
>
>
> Plone nie jest spieprzony. To dobry projekt, ma doskonale zalozenia
> obiektowego podejscia do CMS'a. Problemem jest Zope2 (na ktorym Plone sie
> opiera). Zope2 ktory ma niekonsekwentne API, trudno w tym sie faktycznie
> polapac.

Za nic mnie nie przekonasz, juz umoczylem w tym paluchy i nie chce nigdy
wiecej.

> Widziales jednak Zope3? Jest znacznie lepiej zaprojektowany. Zalozyli duza
> skale zastosowan, stad powprowadzali np. interfejsy, adaptory itp. Polecam
> prawie 500 stronicowa ksiazke dostepna online. http://tinyurl.com/74byh

To i tak za malo, o javie pisza znacznie szerzej.

--
Przemek Wiśniewski

Qertoip

unread,
May 10, 2005, 9:50:49 AM5/10/05
to
Dnia Tue, 10 May 2005 15:29:20 +0200, Przemek Wiśniewski napisał(a):

>>>>- niemożność wylistowania składowych obiektu (w VS: Ctrl+Space)
>>>
>>>Ty chyba żartujesz. Prawie wszystkie edytory do Pythona to potrafią.
>>
>> Nie żartuję. Ty nie rozumiesz problemu.
>> def f( a ):
>> return a
>>
>> obj = f( "" )
>> obj.???
>>
>> Żadne IDE tego nie podpowie, bo typu nie da się ustalić statycznie.
>> Napisałem przecież, że *jeśli* się da wydedukować typ, to najlepsze IDE
>> potrafią wylistować składowe. Niestety z reguły się nie da.
>
> To akurat nie problem, kompilator Ocamla potrafi zgadywac typ funkcji na
> podstawie argumentow, dobre ide tez by moglo - jedyne wymaganie to
> takie, zeby kiedys ten typ jakos okreslic.

Nie problem? Zauważ, że sprowadza się to do "statycznego uruchomienia"
kodu. Może przykład wybrałem za prosty - podam inny, lepiej obrazujący o co
chodzi:

def f( a ):
return a

p = True
if p:
obj = f( 1 )
else:
obj = f( "" )

obj.???


> Chodzi o to, ze klasa moze sie zmieniac w czasie dzialania programu.

Owszem, to jest gwóźdź do trumny :) (w tej kwestii)


--
Pozdr.
Piotrek

Przemek Wiśniewski

unread,
May 10, 2005, 10:27:45 AM5/10/05
to
Qertoip napisał(a):

>>To akurat nie problem, kompilator Ocamla potrafi zgadywac typ funkcji na
>>podstawie argumentow, dobre ide tez by moglo - jedyne wymaganie to
>>takie, zeby kiedys ten typ jakos okreslic.
>
>
> Nie problem? Zauważ, że sprowadza się to do "statycznego uruchomienia"
> kodu. Może przykład wybrałem za prosty - podam inny, lepiej obrazujący o co
> chodzi:
>
> def f( a ):
> return a
>
> p = True
> if p:
> obj = f( 1 )
> else:
> obj = f( "" )
>
> obj.???

No tak, tu masz racje. Nie wzialem tego pod uwage.

--
Przemek Wiśniewski

JZ

unread,
May 10, 2005, 10:29:42 AM5/10/05
to

Nie na temat. Nie chodzi o licytacje ilosci stron dokumentacji, ale o to,
ze Zope3 jest lepiej zaprojektowany od Zope2. A ta ksiazka to ladnie
pokazuje. Nic wiecej.

--
JZ

Darek Suchojad

unread,
May 10, 2005, 11:35:02 AM5/10/05
to
Przemek Wiśniewski wrote:

Cześć,

> Na sile mozna w pythonie tworzyc spore rzeczy (np: zope i plone), bardzo
> latwo spore rzeczy kompletnie spieprzyc (np: zope i plone).

O co z tym Zopem i Plonem chodzi? Często-gęsto podkreślasz
jakie to są słabe narzędzia, okej, Twoja sprawa, mów co chcesz.

Ale czemu ich w ogóle użyłeś, skoro wiedziałeś, że nie będą nadawały
się do Twojego projektu?

darek

Piotr Dembiński

unread,
May 10, 2005, 3:02:53 PM5/10/05
to
Dnia Tue, 10 May 2005 11:14:12 +0200, Qertoip <qe...@o2.pl> napisał:

[C# i Python]

> Jestem głodny Waszych uwag na ten temat.

IMO Python to taki imperatywny, trochę 'wykastrowany' Lisp,
dlatego wiele rzeczy, o których tutaj piszesz jest niemożliwe
do zrobienia.

Z drugiej strony, czy w C# można tworzyć i dokompilowywać kawałki
kodu w trakcie działania programu?

--
http://www.piotr.dembiński.prv.pl

Piotr Dembiński

unread,
May 10, 2005, 3:06:07 PM5/10/05
to
Dnia Tue, 10 May 2005 11:55:29 +0200, Przemek Wiśniewski <s...@fasd.sdf> napisał:

[...]

> Wszystkie narzedzia do pythona wygladaja malo powaznie.

heh, ja sobie podpiąłem pod okienko z Pythonem tę stopę z Monty Pythona,
która pojawia się na koniec animacji :>

--
http://www.piotr.dembiński.prv.pl

Piotr Dembiński

unread,
May 10, 2005, 3:07:08 PM5/10/05
to
Dnia Tue, 10 May 2005 11:58:29 +0200, Grzegorz Staniak <gsta...@wp.pl> napisał:

[...]

> http://bicyclerepair.sourceforge.net/

Ale to prawie nic nie potrafi :)

>> bo kod zawiera za malo informacji
>
> A introspekcja ze wstydu kurczy się i pufff! - znika w obłoku logiki.

Jedyna pewna metoda to testy.

--
http://www.piotr.dembiński.prv.pl

Piotr Dembiński

unread,
May 10, 2005, 3:08:22 PM5/10/05
to
Dnia Tue, 10 May 2005 13:37:51 +0200, RobertSzefler <rszefle...@murator.com.pl> napisał:

[refaktoryzacja]

> Czasami analiza statyczna jest konieczna, w tym sęk...

Analiza statyczna tak, ale nie w językach dynamicznie typowanych.

>
>>> i dodatkowo python pozwala typy tworzyc dynamicznie.
>>> Mozna co najwyzej regexpami podmieniac na chybil trafil nazwy metod i
>>> klas, trudno wylapac bledy powstale w wyniku takiej zabawy. Wszystkie
>>> narzedzia do pythona wygladaja malo powaznie.
>>
>>
>> Uwaga na nisko przelatujące kwantyfikatory.
>
> que?

<wziut>

--
http://www.piotr.dembiński.prv.pl

Piotr Dembiński

unread,
May 10, 2005, 3:11:33 PM5/10/05
to
Dnia Tue, 10 May 2005 14:22:36 +0200, JZ <use...@zabiello.com> napisał:

[...]

> Dla mnie to b. intuicyjny jezyk i prawie w ogole nie musze zagladac
> do manuali

Ta intuicyjność może być zmorą, jak chcesz napisać coś, co operuje
na kodzie Pythonowym bez żadnych założeń co do tego kodu.

--
http://www.piotr.dembiński.prv.pl

Jarek Zgoda

unread,
May 10, 2005, 3:17:22 PM5/10/05
to
Qertoip napisał(a):

> - niemożność wylistowania składowych obiektu (w VS: Ctrl+Space) wraz z
> podręczną dokumentacją dla każdej składowej (metody, atrybuty). Osoby
> piszące w nowoczesnych IDE wiedzą o co mi chodzi.

A my to znamy od drugiej mańki -- dir(obj) wypisuje zawartość obiektu.

> To drugie wynika z faktu, że w Pythonie rzadko kiedy da się statycznie
> ustalić typ obiektu (jeśli się da, najlepsze pythonowe IDE potrafią
> wylistować składowe).

Zawsze się da, type(obj) zwraca klasę typu obiektu.

> Niby pierdółki... ale *naprawdę* ma to zasadniczy wpływ na wydajność.

Eric3 ma wszystko to, czego nie widziałeś. Po prostu masz ograniczoną
percepcję rzeczywistości.

> Jestem głodny Waszych uwag na ten temat.

Moim zdaniem nie wiesz, o czym piszesz. Troll?

(Nie było mnie ze 2 tygodnie i pewnie inni już doszli do tego samego,
ale NMSP)

--
Jarek Zgoda
http://jpa.berlios.de/ | http://www.zgodowie.org/

Tomasz Bieruta

unread,
May 10, 2005, 3:19:16 PM5/10/05
to
Czesc,

> Zauważyłem, że choć Python jest bardziej ekspresywny niż C#, to jednak
> wydajność tworzenia oprogramowania jest istotnie większa w tym drugim...

hmm, a jak dlugo programujesz w C# ?

> Spostrzegłem, że składają się na to dwie prozaiczne rzeczy:
> - bardzo słaba (w porównaniu do MSDN) dokumentacja bibliotek Pythona

> - niemożność wylistowania składowych obiektu (w VS: Ctrl+Space) wraz z
> podręczną dokumentacją dla każdej składowej (metody, atrybuty). Osoby
> piszące w nowoczesnych IDE wiedzą o co mi chodzi.

Wing IDE, Spy, ... cala masa. Osobiscie uwazam, ze dokumentacja pythona jest
lepsza niz MSDN :-)

> To drugie wynika z faktu, że w Pythonie rzadko kiedy da się statycznie
> ustalić typ obiektu (jeśli się da, najlepsze pythonowe IDE potrafią
> wylistować składowe).
>

> Niby pierdółki... ale *naprawdę* ma to zasadniczy wpływ na wydajność.

to akurat zaden argument, to o czym piszesz to tylko toolsy ulatwiajace
lekko prace. Osobiscie praktycznie nieuzywam zadnych tego typu edytorow
(poprostu mi przeszkadza cos takiego). A pracowalem juz z produktami
Borlanda, ktory (sam chyba przyznasz) ma najlepsze narzedzia IDE (a
szczegolnie helpa).

Gdy pobawisz sie troche z pythonem, uzyjesz mix-ins, metaclassy itp. to
zauwazysz roznice i potencjal pythona.

Ostatnio zainteresowalem sie zope3, poczytaj troche o architekturze. Z
poczatku wydaje sie trudna (malo dokumentacji), ale nie jest tak zle.

Pozdrawiam

Tomek

Qertoip

unread,
May 10, 2005, 3:47:37 PM5/10/05
to
Dnia Tue, 10 May 2005 21:02:53 +0200, Piotr Dembiński napisał(a):

> Dnia Tue, 10 May 2005 11:14:12 +0200, Qertoip <qe...@o2.pl> napisał:
>
> [C# i Python]
>
>> Jestem głodny Waszych uwag na ten temat.
>
> IMO Python to taki imperatywny, trochę 'wykastrowany' Lisp,

O nawiasy na pewno ;)


> Z drugiej strony, czy w C# można tworzyć i dokompilowywać kawałki
> kodu w trakcie działania programu?

Tak.


--
Pozdr.
Piotrek

Piotr Dembiński

unread,
May 10, 2005, 3:56:16 PM5/10/05
to
Dnia Tue, 10 May 2005 15:29:20 +0200, Przemek Wiśniewski <s...@fasd.sdf> napisał:

[...]

> To akurat nie problem, kompilator Ocamla potrafi zgadywac typ funkcjina podstawie argumentow, dobre ide tez by moglo - jedyne wymaganieto takie, zeby kiedys ten typ jakos okreslic.

#v+
from posix import environ

class FallbackClass:
pass

class MyClass:
pass

if '__main__' == __name__:
try:
cname = environ['PYCLASS']
except KeyError:
cname = 'FallbackClass'

o = eval('%s()' % cname)
print o, type(o), id(o)
#v-

> Chodzi o to, ze klasa moze
> sie zmieniac w czasie dzialania programu.

Plus każdy obiekt może mieć swoje własne, również dodawane
w trakcie działania programu, metody i pola.

--
http://www.piotr.dembiński.prv.pl

Piotr Dembiński

unread,
May 10, 2005, 3:59:16 PM5/10/05
to
Dnia Tue, 10 May 2005 12:39:38 +0200, Adam Przybyla <ad...@gliwice.pl> napisał:

[...]

> dir(obiekt) - listuje metody i dane

W danym punkcie działania programu -- przy określonym stanie środowiska :)

[...]

> ... nie porownuj "obrazkow", bo IDE jest wiele, jak chcesz
> miec cos z duza iloscia podpowiedzi, to wybierz te najbardziejbajerzaste.

Z mniej bajerzastych, to pod emacsem też jest jakiś object browser
dla Pythona. No i semantic.

--
http://www.piotr.dembiński.prv.pl

Qertoip

unread,
May 10, 2005, 4:10:49 PM5/10/05
to
Dnia Tue, 10 May 2005 21:17:22 +0200, Jarek Zgoda napisał(a):

> Qertoip napisał(a):
>
>> - niemożność wylistowania składowych obiektu (w VS: Ctrl+Space) wraz z
>> podręczną dokumentacją dla każdej składowej (metody, atrybuty). Osoby
>> piszące w nowoczesnych IDE wiedzą o co mi chodzi.
>
> A my to znamy od drugiej mańki -- dir(obj) wypisuje zawartość obiektu.

Nie o to chodzi. Nie zrozumiałeś problemu. Ja chcę edytując kod źródłowy
nacisnąć kropkę (lub Ctrl+Space) i mieć *zawsze* listę składowych w
podręcznym okienku, a w drugim dokumentację do aktualnie podświetlonej
składowej. Jeśli to nie wystarczy, zamieszczę screenshota :)


>> To drugie wynika z faktu, że w Pythonie rzadko kiedy da się statycznie
>> ustalić typ obiektu (jeśli się da, najlepsze pythonowe IDE potrafią
>> wylistować składowe).
>
> Zawsze się da, type(obj) zwraca klasę typu obiektu.

Dajesz odpowiedź na całkiem inny problem.
type( obj ) można użyć w czasie *wykonania* a nie podczas edycji źródła.
Zwróć uwagę na słowo "statycznie" w moim poście. Przykład niemożności
statycznego ustalenia typu podałem w innym poście w tym wątku.


> Po prostu masz ograniczoną percepcję rzeczywistości.

> [...]


> Moim zdaniem nie wiesz, o czym piszesz. Troll?

Licz się ze słowami.


--
Pozdr.
Piotrek

Jarek Zgoda

unread,
May 10, 2005, 4:35:44 PM5/10/05
to
Qertoip napisał(a):

>>>- niemożność wylistowania składowych obiektu (w VS: Ctrl+Space) wraz z
>>>podręczną dokumentacją dla każdej składowej (metody, atrybuty). Osoby
>>>piszące w nowoczesnych IDE wiedzą o co mi chodzi.
>>
>>A my to znamy od drugiej mańki -- dir(obj) wypisuje zawartość obiektu.
>
> Nie o to chodzi. Nie zrozumiałeś problemu. Ja chcę edytując kod źródłowy
> nacisnąć kropkę (lub Ctrl+Space) i mieć *zawsze* listę składowych w
> podręcznym okienku, a w drugim dokumentację do aktualnie podświetlonej
> składowej. Jeśli to nie wystarczy, zamieszczę screenshota :)

Zgłoś ten problem do producenta IDE, nie do samego języka. Język
udostępnia API do uzyskania takich informacji.

>>>To drugie wynika z faktu, że w Pythonie rzadko kiedy da się statycznie
>>>ustalić typ obiektu (jeśli się da, najlepsze pythonowe IDE potrafią
>>>wylistować składowe).
>>
>>Zawsze się da, type(obj) zwraca klasę typu obiektu.
>
> Dajesz odpowiedź na całkiem inny problem.
> type( obj ) można użyć w czasie *wykonania* a nie podczas edycji źródła.
> Zwróć uwagę na słowo "statycznie" w moim poście. Przykład niemożności
> statycznego ustalenia typu podałem w innym poście w tym wątku.

W Pythonie nie ma rozróżnienia czasu wykoniania od czasu
"nie-wykonania", ponieważ jest językiem interpretowanym i nie ma w nim
możliwości przeprowadzenia "częściowej kompilacji" (tego używają różne
IDE do ustalenia RTTI).

Zgłoś ten problem do producenta IDE, nie do samego języka. Język
udostępnia API do uzyskania takich informacji.

>>Po prostu masz ograniczoną percepcję rzeczywistości.
>>[...]
>>Moim zdaniem nie wiesz, o czym piszesz. Troll?
>
> Licz się ze słowami.

Po prostu nie wiesz, o czym piszesz. Na 100%. Chyba jesteś zwykłym trollem.

Qertoip

unread,
May 10, 2005, 4:34:50 PM5/10/05
to
Dnia Tue, 10 May 2005 22:10:49 +0200, Qertoip napisał(a):

Napisałem:

> Nie o to chodzi. Nie zrozumiałeś problemu. Ja chcę edytując kod źródłowy
> nacisnąć kropkę (lub Ctrl+Space) i mieć *zawsze* listę składowych w
> podręcznym okienku, a w drugim dokumentację do aktualnie podświetlonej
> składowej. Jeśli to nie wystarczy, zamieszczę screenshota :)

A teraz dla wszystkich proponujących dir( obj ) zamieszczam screenshota:
http://www.wlodarek.top100.net.pl/ObjectMembersList.png

"Bajer", "pierdółka"?

Owszem.

Ten bajer ma jednak to do siebie, że zaoszczędza mnóstwo czasu, jeśli
człowiek nie ma używanej biblioteki w małym palcu. Czyli prawie zawsze przy
obecnych potężnych bibliotekach (batteries included).

I dlatego podnoszę tę kwestię w kontekście języków dynamicznie typowanych,
gdzie nie da się jej w pełni zrealizować. Niestety :(


--
Pozdr.
Piotrek

Piotr Dembiński

unread,
May 10, 2005, 4:32:29 PM5/10/05
to
Dnia Tue, 10 May 2005 13:24:22 +0200, RobertSzefler <rszefle...@murator.com.pl> napisał:

[ciap]

> Ja mogę z osobistego doświadczenia porównać to schematycznie tak:
>
> Angielski

'do the thing'

> Polski

'wiśta, wio!'

> Python > C ~ C++ > asembler x86 ;) > Java >> Perl >>>>> PHP

klik, klik, tap tap tap tap klik tap klik ...

> od najwydajniejszych dla swojej klasy zastosowań do najmniej wydajnych
> ;) co przekłada się bezpośrednio na jakość "ideologiczną" języka.

Graham określił to, o czym piszesz jako 'moc języka'. To jest chyba
określenie intuicyjne. Generalnie ja to widzę tak, że języki,
które mają introspekcję, dają większą moc programiście w wyrażaniu
tego, co chce stworzyć.

Idąc za tym intuicyjnym określeniem, ja bym umieścił obok siebie
Pythona, lispy i assemblery. Co do perla i PHP to nie znam, może się
zmieszczą. Najniżej byłaby faszystowska Ada :>

--
http://www.piotr.dembiński.prv.pl

JZ

unread,
May 10, 2005, 4:38:05 PM5/10/05
to
Dnia Tue, 10 May 2005 21:11:33 +0200, Piotr Dembiński napisał(a):

> Ta intuicyjność może być zmorą, jak chcesz napisać coś, co operuje
> na kodzie Pythonowym bez żadnych założeń co do tego kodu.

No zawsze musisz wczesniej wiedziec co chcesz napisac. A do wiekszych
aplikacji bez dobrego projektu tego co to ma byc i jak dzialac daleko nie
zajedziesz. Python tylko ulatwia sam proces kodowania. Zmniejsza
czestotliwosc przerywania pracy w celu wertowania nieliczonych stron
dokumentacji do bibliotekl czy API. Dokumentacja do javy, he, he, he.

--
JZ

Jarek Zgoda

unread,
May 10, 2005, 4:39:28 PM5/10/05
to
Piotr Dembiński napisał(a):

> Idąc za tym intuicyjnym określeniem, ja bym umieścił obok siebie
> Pythona, lispy i assemblery. Co do perla i PHP to nie znam, może się
> zmieszczą. Najniżej byłaby faszystowska Ada :>

Jeżeli ADA jest "faszystowska", to jakim przymiotnikiem określisz COBOL?
Moim zdaniem "kurewski" jest najodpowiedniejszy (przy założeniu że ADA
jest "faszystowska").

Jarek Zgoda

unread,
May 10, 2005, 4:42:50 PM5/10/05
to
Qertoip napisał(a):

> A teraz dla wszystkich proponujących dir( obj ) zamieszczam screenshota:
> http://www.wlodarek.top100.net.pl/ObjectMembersList.png
>
> "Bajer", "pierdółka"?

Zgłoś się do producenta Twojego IDE, że tego jeszcze nie ma. I odczep
się od języka. Python nie ma z tym nic wspólnego. Trollu.

Qertoip

unread,
May 10, 2005, 4:55:21 PM5/10/05
to
Dnia Tue, 10 May 2005 22:35:44 +0200, Jarek Zgoda napisał(a):

>> Nie o to chodzi. Nie zrozumiałeś problemu. Ja chcę edytując kod źródłowy
>> nacisnąć kropkę (lub Ctrl+Space) i mieć *zawsze* listę składowych w
>> podręcznym okienku, a w drugim dokumentację do aktualnie podświetlonej
>> składowej. Jeśli to nie wystarczy, zamieszczę screenshota :)
>
> Zgłoś ten problem do producenta IDE, nie do samego języka. Język
> udostępnia API do uzyskania takich informacji.

Ciągle nie dostrzegasz problemu. Producenci IDE mają związane ręce.
Mogą zrealizować (i zrealizowali) mój postulat tylko *częściowo*.

Problem polega na tym, że:
_nie_zawsze_da_się_ustalić_typ_obiektu_bez_interpretacji_programu_

To prosty paradoks: gdyby się dało, Python nie byłby językiem dynamicznie
typowanym.

Patrz też posty Przemka Wiśniewskiego i Piotra Dembińskiego, zwłaszcza ten
z 2005-05-10 21:59:16.

>>>Po prostu masz ograniczoną percepcję rzeczywistości.
>>>[...]
>>>Moim zdaniem nie wiesz, o czym piszesz. Troll?
>>
>> Licz się ze słowami.
>
> Po prostu nie wiesz, o czym piszesz. Na 100%.

Wiem doskonale o czym piszę.


> Chyba jesteś zwykłym trollem.

Powtarzam, licz się ze słowami.


--
Pozdr.
Piotrek

JZ

unread,
May 10, 2005, 5:05:36 PM5/10/05
to
Dnia Tue, 10 May 2005 22:42:50 +0200, Jarek Zgoda napisał(a):
>> A teraz dla wszystkich proponujących dir( obj ) zamieszczam screenshota:
>> http://www.wlodarek.top100.net.pl/ObjectMembersList.png
>>
>> "Bajer", "pierdółka"?
>
> Zgłoś się do producenta Twojego IDE, że tego jeszcze nie ma. I odczep
> się od języka. Python nie ma z tym nic wspólnego. Trollu.

Akuraqt to co pokazal kolega na screenshocie to nic az tak rewelacyjnego.
Wing IDE pokazuje podobne podpowiedzi. Problem lezy glebiej.

Kiedys czytalem fajny artykul o tym ze generalnie programisci dziela sie na
tych zorientowanych na jezyk i tych zorientowanych na edytor, narzedzie do
tworzenia kodu. Im bardziej spuchniety od tych wszystkich definicji, typow
i innych gadow kod, tym lepszego edytora-pomagacza trzeba programiscie aby
sie nie zgubil jak w lesie. W Delphi, C, C# czy Javie bez takiego Eclipse,
Visual Studio czy innego Borlanda to praktycznie nie da sie pisac. Dlatego
uzytkownicy takich narzedzi czuja sie zagubieni jak zobacza Pythona czy
Rubiego, gdzie dynamika i prostota jezyka powoduje ze posiadanie dobrego
IDE (mimo ze pozyteczne) nie jest az tak *kluczowe*. Mozliwosci tych
jezykow oszczedzaja znacznie wiecej czasu niz by sie to z pozoru moglo
wydawac. Zanim taka kobyla IDE sie odpali, skompiluje i wypluje bledy ktore
potem trzeba szukac w 15x wiekszym kodzie, to czesto szybciej w jezyku
dynamicznym sie sprawdzi od reki w interpreterze.

Dzis wysmarowalem w pare minut dwa skrypty pythona przetwarzajace pliki.
Tylko raz zajrzalem do manuala odnosnie biblioteki shutil bo ktora rzadko
uzyw. Nawet wole nie myslec ile musialbym sie meczyc aby to samo zrobic w
Javie czy C#. Czlowiek ktory mi zlecal to zadanie nie mogl sie nadziwic co
mi tak szybko poszlo. :))

--
JZ

Grzegorz Staniak

unread,
May 10, 2005, 5:05:41 PM5/10/05
to
... W dole szumi rzeka, w górze fruwa ptak
A Qertoip sobie idzie i śpiewa sobie tak:

> A teraz dla wszystkich proponujących dir( obj ) zamieszczam screenshota:
> http://www.wlodarek.top100.net.pl/ObjectMembersList.png
>
> "Bajer", "pierdółka"?
>
> Owszem.
>
> Ten bajer ma jednak to do siebie, że zaoszczędza mnóstwo czasu, jeśli
> człowiek nie ma używanej biblioteki w małym palcu. Czyli prawie zawsze przy
> obecnych potężnych bibliotekach (batteries included).

Akurat w przypadku bibliotek prawdopodobieństwo wsytąpienia problemów takich
jak poprzednio opisywane jest dość niewielkie.

--
Grzegorz Staniak <gstaniak _at_ wp [dot] pl>

Piotr Dembiński

unread,
May 10, 2005, 5:08:39 PM5/10/05
to
Dnia Tue, 10 May 2005 21:47:37 +0200, Qertoip <qe...@o2.pl> napisał:

[...]

>> IMO Python to taki imperatywny, trochę 'wykastrowany' Lisp,
>
> O nawiasy na pewno ;)

O nawiasy to Haskell :)

>> Z drugiej strony, czy w C# można tworzyć i dokompilowywać kawałki
>> kodu w trakcie działania programu?
>
> Tak.

o

--
http://www.piotr.dembiński.prv.pl

JZ

unread,
May 10, 2005, 5:10:19 PM5/10/05
to
Dnia Tue, 10 May 2005 22:55:21 +0200, Qertoip napisał(a):

> Ciągle nie dostrzegasz problemu. Producenci IDE mają związane ręce.
> Mogą zrealizować (i zrealizowali) mój postulat tylko *częściowo*.

Twoj postulat w tym wypadku nie ma sensu w srodowisku jezykow dynamicznych.
Masz przyzwyczajenia z jezykow statycznych, ktore powoduja ze widzisz to
jako wade to, ze Python nie jest Java czy C. :) Troche sie pobawisz
Pythonem to zmienisz zdanie. Ja na poczatku to nie moglem przelknac np.
braku klamr dla blokow. Nie wyobrazalem sobie jak kod bez nich moze byc
czytelny. A teraz to sie z tego smieje, bo to co wydawalo mi sie wada
okazalo sie ostatecznie zaleta.

--
JZ

Piotr Dembiński

unread,
May 10, 2005, 5:07:23 PM5/10/05
to
Dnia Tue, 10 May 2005 22:39:28 +0200, Jarek Zgoda <jzg...@gazeta.usun.pl> napisał:

> Piotr Dembiński napisał(a):
>
>> Idąc za tym intuicyjnym określeniem, ja bym umieścił obok siebie
>> Pythona, lispy i assemblery. Co do perla i PHP to nie znam, może się
>> zmieszczą. Najniżej byłaby faszystowska Ada :>
>
> Jeżeli ADA jest "faszystowska", to jakim przymiotnikiem określisz COBOL?
> Moim zdaniem "kurewski" jest najodpowiedniejszy (przy założeniu że ADA
> jest "faszystowska").

COBOL to język dla księgowych, tak słyszałem :>

--
http://www.piotr.dembiński.prv.pl

Piotr Dembiński

unread,
May 10, 2005, 5:09:57 PM5/10/05
to
Dnia Tue, 10 May 2005 22:42:50 +0200, Jarek Zgoda <jzg...@gazeta.usun.pl> napisał:

> Qertoip napisał(a):
>
>> A teraz dla wszystkich proponujących dir( obj ) zamieszczam screenshota:
>> http://www.wlodarek.top100.net.pl/ObjectMembersList.png
>>
>> "Bajer", "pierdółka"?
>
> Zgłoś się do producenta Twojego IDE, że tego jeszcze nie ma. I odczep
> się od języka. Python nie ma z tym nic wspólnego. Trollu.

Trochę ma.

--
http://www.piotr.dembiński.prv.pl

Piotr Dembiński

unread,
May 10, 2005, 5:10:59 PM5/10/05
to
Dnia Tue, 10 May 2005 22:10:49 +0200, Qertoip <qe...@o2.pl> napisał:

> Dnia Tue, 10 May 2005 21:17:22 +0200, Jarek Zgoda napisał(a):
>
>> Qertoip napisał(a):
>>

>>> - niemożność wylistowania składowych obiektu (w VS: Ctrl+Space) wrazz podręczną dokumentacją dla każdej składowej (metody, atrybuty).Osoby piszące w nowoczesnych IDE wiedzą o co mi chodzi.


>>
>> A my to znamy od drugiej mańki -- dir(obj) wypisuje zawartość obiektu.
>
> Nie o to chodzi. Nie zrozumiałeś problemu. Ja chcę edytując kod źródłowy
> nacisnąć kropkę (lub Ctrl+Space) i mieć *zawsze* listę składowych w
> podręcznym okienku, a w drugim dokumentację do aktualnie podświetlonej
> składowej. Jeśli to nie wystarczy, zamieszczę screenshota :)

Już wcześniej napisałem: emacs plus object browser.

--
http://www.piotr.dembiński.prv.pl

Jarek Zgoda

unread,
May 10, 2005, 5:19:01 PM5/10/05