🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Interpretowany czy kompilowany?

#28062
From: jacek2v
Date: Wed, 25 May 2011 08:01
65 lines
5537 bytes
On 24 Maj, 14:56, zbro...@tlen.pl wrote:
> Mam wrażenie, że ten "nakład pracy" jest demonizowany. Programuję
> równolegle w Javie i w Pythonie i akurat konieczność deklarowania typów
> mnie nie boli.

Nie chcę się spierać, jednego boli, a drugiego nie :) - to też zależy
od preferencji osobistych. Mnie to strasznie wkur..., że muszę
deklarować typy, uważam to za stratę czasu. A to, że nie ma typowania
dopinguje mnie do pisania unit testów, oraz uważniejszego pisania
kodu :) - człowiek potrzebuje czasami trochę motywacji :)
Co do demonizowania to nie wiem czy patrzyłeś na shootout (http://
shootout.alioth.debian.org/u64q/python3.php kolumna code), co prawda
ilości kodu nie wynika tylko z posiadania, czy też braku typowania,
ale jest jedną ze składowych. Liczby też nie oddają dokładnie skali,
dobrze jest popatrzeć na kod. Jako, że wspominasz, że piszesz obecnie
i w Java i Pythonie to będziesz miał w miarę obiektywne spojrzenie.

> Bonusem jest za to, że kod z deklaracjami typów jest bardziej
> "samodokumentujący" się. Porównaj:
>
> def find_user(users, properties):
>
> z tym:
>
> public User findUser(List<User> users, Map<String, String> properties)

Niby nie wiele, ale ... :) razy 2 kodu.
To prawda typowanie w nagłówkach ma dodatkowy bonus bo się w części
"samodokumentuje". Oczywiście można zrobić tak:
def find_user(lst_users, dict_properties): lub tak: def
find_user(users=[], properties={}):
Widziałem też taką konwencję (ta pierwsza) w językach typowanych np.
Pascalu (bodajże Borland to promował) i w Javie.

BTW: Nie lubię "_" w nazwach :) i nie wiem czy przekonam się do nich w
Python :). Dlatego wolę tak:
def findUser(lstUsers, dictProperties):

> Unit test pomoże albo nie. Problem z unit testami jest taki, że podobnie
> jak programy, mogą nie być do końca poprawne, w końcu pisane są przez
> ludzi. Zwłaszcza przy refaktoringu rodzi się niebezpieczeństwo, że nie
> zmodyfikujemy odpowiednio właściwych testów. I co teraz? Napisać
> metatesty sprawdzające poprawność testów?

Myślę, że demonizujesz, ale i masz sporo racji :). Ani typowanie, ani
super/mega testy nie uchronią od błędów w oprogramowaniu. Jedynie mogą
minimalizować prawdopodobieństwo ich wystąpienia. Mi chodzi o to, że
zysk z używania typowania jest nieproporcjonalnie mały w stosunku do
nakładów pracy na jego używanie.
W moim przekonaniu najlepszym sposobem zmniejszenia ilości błędów jest
wielkość kodu źródłowego oraz jego "modularyzacja". Temu służyło
przejście od assemblera do języków wyższych poziomów (mniej kodu
źródłowego), potem moduły/pakiety i programowanie obiektowe
("modularyzacja"). Następnym elementem, który znacząco zmniejsza
(oczywiście moim zdaniem :)) ilość błędów to "łatwość" przejścia od
pisania kodu do jego wykonania. Czym mniej kroków, czym mniej czasu
czekamy na uruchomienie, tym częściej programiście chce się to
robić :). Często dzielimy kod, ekstrahując obecnie robioną
funkcjonalność po to tylko by nie kompilować/uruchamiać całości
aplikacji, z powodu długiego uruchomienia, lub dużej ilości formularzy
do przeklikania - wielokrotnie sam doświadczyłem i widziałem u innych.
De facto robimy w ten sposób unit testy - ale to już inna historia.

Pzdr.
Jacek
Technical Details
Message-ID: <3ede9f91-b3da-4845-94e3-697e9301d530@d1g2000yqm.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.nask.pl!news.nask.org.pl!news.uni-stuttgart.de!news.belwue.de!news-zh.switch.ch!switch.ch!feeder.news-service.com!feeder1.cambriumusenet.nl!feed.tweaknews.nl!postnews.google.com!d1g2000yqm.googlegroups.com!not-for-mail
References: <iqmlha$r29$1@news.onet.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> <64a9b1f5-e71a-4b1e-b54b-029a032d6a17@x1g2000yqb.googlegroups.com> <ir58gg$me$1@speranza.aioe.org> <2f93f4ca-ccb1-42a5-b199-2d9902ee8629@l18g2000yql.googlegroups.com> <ir90vs$nd8$1@speranza.aioe.org> <b807128c-8325-4ef6-93a9-c41ba1609583@h7g2000yqa.googlegroups.com> <irbh66$4fa$1@news.onet.pl> <c4a63f8f-afbc-4dab-ab9e-4c241433ab38@28g2000yqu.googlegroups.com> <irg9ua$pb6$1@news.onet.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.nask.pl!news.nask.org.pl!news.uni-stuttgart.de!news.belwue.de!news-zh.switch.ch!switch.ch!feeder.news-service.com!feeder1.cambriumusenet.nl!feed.tweaknews.nl!postnews.google.com!d1g2000yqm.googlegroups.com!not-for-mail
From: jacek2v <jacek2v@gmail.com>
Newsgroups: pl.comp.lang.python
Subject: Re: Interpretowany czy kompilowany?
Date: Wed, 25 May 2011 01:01:55 -0700 (PDT)
Organization: http://groups.google.com
Lines: 81
Message-ID: <3ede9f91-b3da-4845-94e3-697e9301d530@d1g2000yqm.googlegroups.com>
References: <iqmlha$r29$1@news.onet.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> <64a9b1f5-e71a-4b1e-b54b-029a032d6a17@x1g2000yqb.googlegroups.com> <ir58gg$me$1@speranza.aioe.org> <2f93f4ca-ccb1-42a5-b199-2d9902ee8629@l18g2000yql.googlegroups.com> <ir90vs$nd8$1@speranza.aioe.org> <b807128c-8325-4ef6-93a9-c41ba1609583@h7g2000yqa.googlegroups.com> <irbh66$4fa$1@news.onet.pl> <c4a63f8f-afbc-4dab-ab9e-4c241433ab38@28g2000yqu.googlegroups.com> <irg9ua$pb6$1@news.onet.pl>
NNTP-Posting-Host: 87.205.244.228
Mime-Version: 1.0
X-Trace: posting.google.com 1306310515 27069 127.0.0.1 (25 May 2011 08:01:55 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Wed, 25 May 2011 08:01:55 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: d1g2000yqm.googlegroups.com; posting-host=87.205.244.228; posting-account=eZNabgoAAAATP5GyCUr-uXZ_s7vjxVeX
User-Agent: G2/1.0
X-Google-Web-Client: true
X-Google-Header-Order: HNKRUAELSC
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