🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Interpretowany czy kompilowany?

#28053
From: jacek2v
Date: Thu, 19 May 2011 19:04
94 lines
6439 bytes
On 17 Maj, 21:03, "Stachu 'Dozzie' K."
<doz...@go.eat.some.screws.spammer.invalid> wrote:
> On 2011-05-17, jacek2v <jace...@gmail.com> wrote:
>
> >> Chodzi o coś zupełnie innego. Typowy błąd początkujących programistów:
> >> branie implikacji za równoważność.
> >> "Jeśli program jest dobry, to typy się zgadzają."
> >> Odwracając implikację:
> >> "Jeśli typy się nie zgadzają, to program nie jest dobry."
> > Bardziej poprawnie powinno być: jeśli typy się zgadzają to jest  duża
> > szansa, że kompilator skompiluje :)
>
> Bardziej poprawnie od którego? Bo jakoś nie widać do czego pijesz.
Właściwie do obu - a jak chcesz wybrać jednego to do drugiego :)
"Poprawne" ponieważ oba stwierdzenia nic nie mówią o sile "typowania".

> > A co to za różnica, że uruchomię zamiast skompiluję? Jeden "ruch"
> > mniej :)
>
> 1. Uruchomienie może być bardziej kłopotliwe niż sam proces budowania
>    (dla webaplikacji to może być skopiowanie na serwer testowy,
>    przeładowanie serwera, otwarcie przeglądarki i dokopanie się do
>    ekranu którego kod chcesz sprawdzić).
Nigdy i tak musisz uruchomić, taki jest cel programowania, czym
szybciej masz możliwość weryfikacji poprzez uruchomienie tym lepiej.
Mi. do tego dążą metodyki agile. Przeładowywanie serwera nie jest
konieczne - automat. Skopiowanie na serwer - automat. Otwarcie
przeglądarki - automat po kliknięciu na link.
Mhh, pojawiło mi się pytanie, czy kiedykolwiek robiłeś webaplikację w
oparciu o języki pokroju Python?

> 2. Kompilacja, jako operacja wykonywana na kodzie źródłowym przez
>    automat, jest dokładniejsza od kontrolnego uruchomienia aplikacji.
>    Sprawdzisz za jednym zamachem wszystkie możliwe ścieżki wykonania
>    w blokach kontrolnych?
I tak to trzeba robić - może nie wszystkie ścieżki, ale testy/skrypty
testowe trzeba zrobić i puszczać po każdej integracji - unit testy i
testy symulacji użytkownika. A potem i tak najlepiej "napuścić"
testera :)

> Ekstrapolując twoje proponowane podejście "jeden ruch mniej", może
> darujmy sobie testowanie aplikacji? Kolejny ruch mniej.
Dziwna ekstrapolacja - poza zbiór dopuszczalnych wyników :)

> > Jak użyjesz stringów zamiast napisania/użycia klas to żadne typowanie
> > nie obroni :)
>
> Eeeee... że co?
Prosty przykład: kod pocztowy. Można napisać klasę, a można trzymać w
stringu.

> >> 30kloc, przy zmieniającym się frameworku o który projekt był oparty.
> >> Wyszukiwanie miejsc gdzie trzeba poprawiać kod żeby był zgodny
> >> z frameworkiem było bardzo uciążliwe, bo trzeba było po prawie każdej
> >> poprawce uruchamiać aplikację ponownie.
> > No tu problem leży gdzieś indziej - parafrazując klasyka: Puchatka :).
> > Framework jak trochę nazwa sugeruje powinien być w miarę niezmienny bo
> > wtedy i Święty Typ Najwyższy nie pomoże :)
>
> Ano nie pomoże. Ale statyczna kontrola typów by sporo ułatwiła.
Wydaje mi się, że przy zmiana framework raczej przeszkadza. Kiedyś
spotkałem się z podobnym przypadkiem w Pascalu. Typowanie wymagało
dużo "bezrozumnego" poprawiania kodu.


> > A tak poza tym wątkiem to często się zapomina, że Python to nie tylko
> > skryptowy język, ale język obdarzony niesamowicie zwięzłą, a
> > jednocześnie czytelną składnią.
>
> A co to ma do rzeczy? Mówimy o statycznym systemie typów, a nie o tym
> czy składnia jest zwięzła. Zresztą zwięzłość składni nie ma specjalnego
> wpływu na długość kodu w większych projektach.
Napisałem "A tak poza wątkiem" - wybiórcze czytanie? :)
Nie będę polemizował czy zwięzłość kodu ma coś do rzeczy z jego
ilością :) - bo dla mnie to oczywista oczywistość :)
BTW: tematem wątku jest "interpretowany czy kompilowany", a drugie
pytanie autora to "jak z prędkością?" :)

>
> > Polecam porównaniehttp://shootout.alioth.debian.org/.
> > Krótszy i przez to łatwiejszy do ogarnięcia kod oznacza mniej
> > czytania, mniej miejsc do popełnienia błędów itd.
> > Szczerze mówiąc lubiłem Javę, ale nie podobało mi się w niej łatwe
> > przekraczanie 80 znaków w linii :)
>
> To nie wina języka, że programiści się nie mieszczą w 80 kolumnach,
> tylko powszechnie przyjętych konwencji, prawie wymuszanych przez
> bibliotekę standardową (bo weź używaj kontenerów bez tych konwencji).
> A najbardziej programistów, bo w ogóle nie myślą o tym jak kod zmieścić
> na 80 znakach (bo przecież od dawna mamy monitory panoramiczne).
Możliwe, ale Visual Studio generuje spagetti po pierwszym
kliknięciu :)

Jacek
Technical Details
Message-ID: <64a9b1f5-e71a-4b1e-b54b-029a032d6a17@x1g2000yqb.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.prz.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!newsfeed.eweka.nl!eweka.nl!feeder3.eweka.nl!195.114.241.41.MISMATCH!feeder.news-service.com!feeder1.cambriumusenet.nl!feed.tweaknews.nl!postnews.google.com!x1g2000yqb.googlegroups.com!not-for-mail
References: <iqmlha$r29$1@news.onet.pl> <4dcee603$1$2437$65785112@news.neostrada.pl> <iqo0j1$g9u$1@news.onet.pl> <87boz3anea.fsf@smsnet.pl> <iqqk2o$oh7$1@news.onet.pl> <0601cb5b-befa-46ba-9d1c-f105c81369fe@r35g2000prj.googlegroups.com> <iqrlte$rfe$1@news.onet.pl> <87k4dqe6vw.fsf@smsnet.pl> <iqt8gb$lo1$1@solani.org> <e423ccad-b001-4931-8e98-68982533d79f@d15g2000yqn.googlegroups.com> <iqtsq9$j2e$4@solani.org> <4d8313d9-cc85-4065-b94d-c7433e6d51de@p6g2000vbn.googlegroups.com> <iqugpk$vbu$3@solani.org>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.prz.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!newsfeed.eweka.nl!eweka.nl!feeder3.eweka.nl!195.114.241.41.MISMATCH!feeder.news-service.com!feeder1.cambriumusenet.nl!feed.tweaknews.nl!postnews.google.com!x1g2000yqb.googlegroups.com!not-for-mail
From: jacek2v <jacek2v@gmail.com>
Newsgroups: pl.comp.lang.python
Subject: Re: Interpretowany czy kompilowany?
Date: Thu, 19 May 2011 12:04:52 -0700 (PDT)
Organization: http://groups.google.com
Lines: 117
Message-ID: <64a9b1f5-e71a-4b1e-b54b-029a032d6a17@x1g2000yqb.googlegroups.com>
References: <iqmlha$r29$1@news.onet.pl> <4dcee603$1$2437$65785112@news.neostrada.pl> <iqo0j1$g9u$1@news.onet.pl> <87boz3anea.fsf@smsnet.pl> <iqqk2o$oh7$1@news.onet.pl> <0601cb5b-befa-46ba-9d1c-f105c81369fe@r35g2000prj.googlegroups.com> <iqrlte$rfe$1@news.onet.pl> <87k4dqe6vw.fsf@smsnet.pl> <iqt8gb$lo1$1@solani.org> <e423ccad-b001-4931-8e98-68982533d79f@d15g2000yqn.googlegroups.com> <iqtsq9$j2e$4@solani.org> <4d8313d9-cc85-4065-b94d-c7433e6d51de@p6g2000vbn.googlegroups.com> <iqugpk$vbu$3@solani.org>
NNTP-Posting-Host: 87.205.203.88
Mime-Version: 1.0
X-Trace: posting.google.com 1305831892 29711 127.0.0.1 (19 May 2011 19:04:52 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Thu, 19 May 2011 19:04:52 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: x1g2000yqb.googlegroups.com; posting-host=87.205.203.88; posting-account=eZNabgoAAAATP5GyCUr-uXZ_s7vjxVeX
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24,gzip(gfe)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit