eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJakie typowanie jest najlepsze i dlaczego statyczne?Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
  • 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?

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: