-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!news.chmurka.net!.POSTED!not-for-mail
From: Andrzej Jarzabek <a...@g...com>
Newsgroups: pl.comp.programming
Subject: Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
Date: Sun, 10 Feb 2013 23:58:41 +0000
Organization: news.chmurka.net
Lines: 106
Message-ID: <kf9c7i$61o$1@somewhere.invalid>
References: <f...@g...com>
<s...@j...net>
<1...@g...com>
<3...@b...softax.pl>
<b...@g...com>
<k...@b...softax.pl>
<4...@g...com>
<keun5d$lsh$1@somewhere.invalid>
<f...@g...com>
<keuri4$nje$1@somewhere.invalid>
<1...@g...com>
<keuusd$ovj$1@somewhere.invalid>
<7...@g...com>
<kf1b5r$cvj$1@somewhere.invalid>
<51152b96$0$1306$65785112@news.neostrada.pl>
<3...@x...googlegroups.com>
<4...@g...com>
<kf61vl$fh0$1@somewhere.invalid>
<c...@g...com>
<kf8mrj$piq$1@somewhere.invalid>
<3...@g...com>
NNTP-Posting-Host: 5ac53cfe.bb.sky.com
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: somewhere.invalid 1360540723 6200 90.197.60.254 (10 Feb 2013 23:58:43 GMT)
X-Complaints-To: abuse-news.(at).chmurka.net
NNTP-Posting-Date: Sun, 10 Feb 2013 23:58:43 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130107
Thunderbird/17.0.2
In-Reply-To: <3...@g...com>
X-Authenticated-User: ajarzabek
Xref: news-archive.icm.edu.pl pl.comp.programming:202002
[ ukryj nagłówki ]On 10/02/2013 21:36, Maciej Sobczak wrote:
> W dniu niedziela, 10 lutego 2013 18:53:53 UTC+1 użytkownik Andrzej
> Jarzabek napisał:
>
>> Być może jest to prawda, ale to nie znaczy, że dynamiczny system
>> typów nie pokazuje innych zalet, które są w takich sytuacjach
>> przydatne.
>
> Co z tego, że pokazuje, skoro przez swoją dynamiczność nie dałbym mu
> szansy się wykazać. Coś w stylu: być może Fiat 126p przejawia jakieś
> ciekawe własności podczas przekraczania bariery dźwieku, ale nie
> przekonam się o nich, bo w obawie o swoje bezpieczeństwo w całym
> zakresie poniżej tego, po prostu do niego nie wsiądę. (Nie znaczy to,
> że w ogóle nie wsiądę - może i wsiądę, ale w innym celu.)
To jest argument nazasadzie: "może i ta cała obiektowość ma jakieś
zalety przy pisaniu dużych systemów, ale co z tego, skoro nidgy bym nie
zdecydował się użyć jej do pisania czegoś takiego".
>>> Statyczny system typów pozwala wyrazić związki między różnymi
>>> bytami w programie, dzięki czemu szybciej widać jaki jest zakres
>>> wprowadzanych zmian.
>>
>> Pozwala, ale są inne sposoby, które też pozwalają.
>
> Droższe?
Nie wiem nawet, jak to porównać. Chodzi o zupełnie inny paradygmat
pisania programów, różnica powiedzmy jak między programowaniem
obiektowym a funkcyjnym.
>> Daje różne rzeczy, między innymi ułatwia code reuse między różnymi
>> typami danych,
>
> Jak do tej pory jedyny code reuse między różnymi typami widywałem w
> kontenerach
To niewiele widziałeś. W sumie ja też niewiele widziałem, ale reuse poza
kontenerami widziałem.
Żeby nie było: w C++ da się osiągnąć niezły code reuse, ale czasem
sensowne zrobienie tego wymaga ostrego lawirowania między dziedziczeniem
klas a szablonami.
> dynamiczne. Innym przykładem może być np. serializacja, ale ponieważ
> temat serializacji pojawia się w systemach rozproszonych, które
> zwykle są heterogeniczne, to i tutaj mało mnie interesuje, co mi ma
> do zaoferowania jakiś jeden język, bo zwykle co by nie miał, to i tak
> nie rozwiązuje to problemu heterogeniczności.
Można tak zrobić system rozproszony, żeby nie był heterogeniczny.
Serializacja jest tutaj właściwie przyczynkiem do punktu "loose
coupling" - można mieć system rozproszony, którego poszczególne węzły
przekazują sobie zserializowane obiekty i masz różne korzyści typu
łatwiejsze rozbijanie czy scalanie węzłów, ale też to, że możesz
wymienić niektóre części systemu bez wymieniania innych - np. komponent
może zdeserializować obiekt z właściwościami, które nie były częścią
typu w momencie pisania tego komponentu, cośtam zrobić w zależności od
komponentów, które już zna, po czym zserializować go i przesłać dalej
razem ze wszystkimi nieznanymi sobie właściwościami.
Poza tym jest też taki dyanmiczny język specjalnie zaprojektowany do
pisania homogenicznych systemów rozproszonych jakim jest Erlang.
>> programowanie deklaratywne,
>
> Nie widzę związku z dynamicznością.
http://groovy.codehaus.org/Creating+XML+using+Groovy
%27s+MarkupBuilder
http://code.google.com/p/spock/
Całe code-as-data/data-as-code w dialektach Lispa i techniki korzystania
z tego.
>> loose coupling
>
> Daję radę bez dynamicznego systemu typów.
Nie chodzi o to, czy daje radę, tylko czy jest wygodne, łatwe i proste.
>> Z mojego doświadczenia wynika, że w prawie każdym przypadku koszt
>> unit testów jest tańszy od kosztu braku (dobrych) unit testów.
>> Również w językach ze statycznym typowaniem.
>
> W języku statycznym nie potrzebuję unit testu, żeby upewnić się, że
> foo może zawołać bar z podaną listą parametrów. Unit test, który to
> sprawdza, nie jest dobry.
W jęyku dynamicznie typowanym też nie potrzebujesz takiego unit testu,
bo skoro masz test, który testuje, to, co robi foo, kiedy wywołuje bar z
tą liczbą parametrów, to on automatycznie sprawdza też, że może zawołać
z taką listą, z jaką woła.
>> Całkiem spore i mocno zmieniające się w czasie serwisy webowe pisze
>> się np. w Pythonie czy Ruby.
>
> https://www.google.pl/search?q=django+exception
>
> Google na to: "Około 3,760,000 wyników (0,15 s)"
>
> Nabijam się, ale na poważnie: nie raz dostałem po gałach różnymi
> komunikatami, które ładnie zdradzały w czym dany serwis został
> ulepiony, więc potwierdzam: faktycznie, masz rację, pisze się.
I co, wyjątków z Javy nie widujesz?
Następne wpisy z tego wątku
- 11.02.13 01:31 Roman W
- 11.02.13 06:04 M.M.
- 11.02.13 09:07 Andrzej Jarzabek
- 11.02.13 10:49 Maciej Sobczak
- 11.02.13 17:24 M.M.
- 11.02.13 18:41 firr kenobi
- 11.02.13 18:55 M.M.
- 11.02.13 19:18 firr kenobi
- 12.02.13 00:19 Andrzej Jarzabek
- 12.02.13 00:23 Andrzej Jarzabek
- 12.02.13 00:36 Andrzej Jarzabek
- 12.02.13 01:15 M.M.
- 12.02.13 02:09 Andrzej Jarzabek
- 12.02.13 08:41 Adam Wysocki
- 12.02.13 10:10 AK
Najnowsze wątki z tej grupy
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
Najnowsze wątki
- 2024-11-08 Warszawa => Head of International Freight Forwarding Department <=
- 2024-11-08 Warszawa => Key Account Manager <=
- 2024-11-08 Szczecin => Key Account Manager (ERP) <=
- 2024-11-08 Białystok => Full Stack web developer (obszar .Net Core, Angular6+) <
- 2024-11-08 Wrocław => Senior PHP Symfony Developer <=
- 2024-11-08 Warszawa => QA Engineer <=
- 2024-11-08 Warszawa => QA Inżynier <=
- 2024-11-08 Warszawa => Key Account Manager <=
- 2024-11-08 Gdańsk => Software .Net Developer <=
- 2024-11-08 Akumulator Hyundai
- 2024-11-08 Warszawa => Manager/Specialist e-commerce (B2C) <=
- 2024-11-08 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-08 Gdańsk => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-11-08 znaj podstawe
- 2024-11-08 Chrzanów => Specjalista ds. public relations <=