Graficzny instalator
Jakub Piotr Cłapa
loc w toya.net.pl
Pią, 29 Kwi 2005, 13:11:49 CEST
Cezary Krzyzanowski wrote:
> Jakub Piotr Cłapa wrote:
>
>>Chodzi o to, że różnica w wydajności jest pomijalna.
>
> 20% bez wgłebiania się?
To jest pomijalnie mało, jeśli chodzi o program, za którego większość
roboty wykonuje GTK+2, xft, freetype i serwer Xów. (zrób profile i
sprawdź ile czasu program siedzieć będzie w kodzie Pythona, a ile w
bibliotekach).
>>Po pierwsze
>>dlatego, że programy okienkowe zazwyczaj nie wymagają dużo mocy
>>obliczeniowej (nie na poziomie logiki programu --- jedynie na poziomie
>>renderingu, który przecież i tak jest w C).
>
> Właśnie piszę implementację trójwymiarowego automatu komórkowego z
> wizualizacją w OpenGLu. PyGL pewno by sie zakrztusił. Zresztą, nawet
> Word ze swoimi automatami sprawdzania gramatyki/ortografii/składni już
> teraz jest poważnym zżeraczem zasobów. O aplikacjach
> naukowych/obliczeniowych/dyskowych już nie wspomnę.
Aplikacje naukowe w strasznie dużej ilości są pisane w językach
interpretowanych (python, lisp, java) z wykorzystaniem bibliotek, które
optymalnie wykonują najtrudniejszą część pracy (napisanych w C lub np. w
Pyrexie). Użycie C/C++ do całego programu to typowe premature optimization.
Co do Twojego automatu komórkowego --- nie wiem jak by on chodził w
Pythonie, ale prawdopodobnie używając mieszanki Pythona i Pyrexa
napisałbyś go 2 razy szybciej (i miałbyś z miejsca 40% mniej błędów
alokacji pamięci i takich tam).
Oczywiste jest, że nie każdy język jest optymalny do każdego zadania,
ale gdyby czysta wydajność była jedynym czynnikiem, który bierzemy pod
uwagę, to wszyscy pisalibyśmy w assemblerze. (który nota bene potrafi
stworzyć pliki wykonywalne jeszcze 5 razy mniejsze niż C i wymagające 10
razy mniej bibliotek ;).
> Zresztą, rozmawiamy tutaj o instalatorze, od którego zapewne wymaga się
> właśnie szybkości i platformy z jak najmniejszą ilością
> maszyn/bibliotek.
Nie o taka szybkość nam chodzi. GUI instalatora musi chodzić jedynie
znośnie szybko, a to spokojnie da się osiągnąć w Pythonie.
> C i C++ jest nieoddzownym elementem każdego linuxa i
> na pewno 80% bibliotek potrzebnych ew. instalaorowi i tak będzie na
> płytce, żeby obsłużyć wszystkie programy, z których korzystać będzie
> rzeczony instalator, a python w tym momencie to novum i trzeba go osobno
> obsłużyć.
Nie takie straszne novum, a w intalatorze to akurat wszystko jedno, bo i
tak dostarczasz całą płytkę z własnym softem. Większy problem jest
akurat w programach standalone, które mają się wpasować w istniejący
system (ale tu też nie byłbym taki pewien... większosć binarek w C jest
statycznych, autoconf i automake mają wiele swoich problemów... C/C++
jest mniej uniwersalny i neutralny platformowo)
>>Druga rzecz --- w swoim
>>programie w C++ też będziesz potrzebował często zaawansowanych bajerów i
>>wtedy będziesz musiał pół maszyny wirtualnej Pythona napisać od nowa
>>tylko dla swojego programu i nie sądze, żebyś dostał coś lepszego niż
>>oryginał.
>
> Co to znaczy 'zaawansowanych bajerów'?? Zdecydowanie prace z
> listami/stringami są na pewno notacyjnie łatwiejsze niż w C++, ale z
> odpowiednimi bibliotekami też narzekać nie będę. Wszystko kwestia
> bibliotek szczerze mówiąc i niczego wiecej.
Oczywiście, ale Mozilla jest napisana w C++ z dużą ilością fajnych
bibliotek. Działa nadal tak diabelnie szybko?
>>Nie ma zbytnio kompilowanych wersji programów w Pythonie.
>
> Pyexe i na linuxa pewno też jest jakiś odpowiednik.
To nie jest kompilator. :) To jedynie program, który pakuje pliki
Pythona, dllkę interpretera i jeszcze trochę śmieci, do jednego pliku.
Był kiedyś Python_C, który udowodnił, że zamiana kodu Pythona na
kompilowane C nie ma sensu --- większość czasu tracone jest na dynamice
języka (np. to, że każda klasa może być zmodyfikowana runtime).
>>Aplikacje GUI to programy zdecydowanie I/O bound a nie CPU bound, więc
>>wydajność ma w nich drugorzędne znaczenie.
>
> Słuchaj - prosta klikana przeglądarka do zdjęc dziewczyny z wakacji i
> brachola z psem pewno tak, ale w instalatorze na pewno wydajność się przyda.
Wydajność czego? Masz w instalatorze 20 ekraników, a całą trudną robotę
robi za Ciebie poldek, rpm i bzip2. Prędkość języka w jakim zostanie
napisane te 20 ekraników ma się nijak do prędkości instalatora. Ma się
za to niesamowicie bardzo do tego, jak szybko ten instalator można
napisać/poprawić.
> Na wydajność systemu składają się wszystkie jego elementy. Strata
> wydajności na jednej prostej klikance w pythonie jest niewielka, ale
> jakby napisali KDE czy Gnome'a w pythonie, to już by zabolało.
>
> Zresztą, EOT, bo ja z kolei zaczynam wypisywać tutaj jakieś teorie n/t
> programowania. Chcesz tak bardzo pythona - z tego co słyszałem, piszą
> jakiś system unix-like w pythonie, więc nie ma problemu. My tu gadu gadu
> o pierdołach, a chłopaki instalator piszą - POWODZENIA!! EOT.
Piszą, ale mało to UNIX-like a i moim zdaniem Python się do tego mało
nadaje (za wiele ma wbudowane w siebie).
--
z wyrazami szacunku,
Jakub Piotr Cłapa
Więcej informacji o liście dyskusyjnej pld-devel-pl