-
Data: 2013-02-11 00:58:41
Temat: Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
Od: Andrzej Jarzabek <a...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie 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 <=