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 10:49:54
    Temat: Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
    Od: Maciej Sobczak <s...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu poniedziałek, 11 lutego 2013 00:58:41 UTC+1 użytkownik Andrzej Jarzabek
    napisał:

    > > Co z tego, że pokazuje, skoro przez swoją dynamiczność nie dałbym mu
    > > szansy się wykazać.
    >
    > 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".

    Tak, to jest dokładnie taki argument. Poza tym, że obiektowość powstała z myślą o
    dużych systemach i sama w sobie nie ma cech, który by były z nimi sprzeczne.

    > >>> 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,

    Droższy? Bardziej efektywny? Czy jedynie "też pozwala"?

    Jeśli coś ma być inaczej, to ma być po coś i ma się opłacać.

    > > Jak do tej pory jedyny code reuse między różnymi typami widywałem w
    > > kontenerach
    >
    > To niewiele widziałeś.

    Możliwe, ale nie czuję się tym pokrzywdzony a skoro tak, to najwyraźniej nic nie
    straciłem, że nie widziałem.
    Poproszę o lepszy argument, niż "niewiele widziałeś".

    > Ż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.

    Statyczne typowanie ma swój koszt. Pytanie, jaki jest końcowy bilans.

    > > 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.

    Dlaczego? Po co? Żeby móc powiedzieć, że jakiś jeden język jest OK?
    Jednym z celów rozpraszania jest wykorzystanie zalet różnych technologii, bo różne
    technologie mają swoje mocne punkty w różnych częściach całości.

    Czyli znowu mamy podobny argument: co z tego, że język dynamiczny daje fajną
    serializację w homogenicznym systemie rozproszonym, skoro nie robię homogenicznych
    systemów rozproszonych. Ten argument może być niewygodny, ale jest realny i oznacza,
    że w realu wartość dodana dynamicznego systemu typów jest mniejsza, niż się
    reklamuje.

    > Poza tym jest też taki dyanmiczny język specjalnie zaprojektowany do
    > pisania homogenicznych systemów rozproszonych jakim jest Erlang.

    I jego też nie użyję z powodu tego samego argumentu?

    Tak, wiem, że ktoś takie systemy pisze. Ale *ja* nie piszę, więc Erlang rozwiązuje
    problem, którego nie mam a tych, które mam, nie rozwiązuje.

    > >> loose coupling
    >
    > > Daję radę bez dynamicznego systemu typów.
    >
    > Nie chodzi o to, czy daje radę, tylko czy jest wygodne, łatwe i proste.

    Całe programowanie obiektowe powstało po to, żeby mieć loose coupling, więc nie widzę
    tu problemu. Realizacja OO w mainstreamowych językach sprawia, że jest to zarówno
    wygodne, łatwie i proste.

    > 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.

    Zakładając pokrycie 100%. Bo tylko wtedy faktycznie zawoła.
    Testy z pokryciem 100% są bardzo kosztowne.

    > > 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?

    A czy ja gdzieś w tej dyskusji napisałem, że Java jest dla mnie statycznym językiem?

    (Wyprzedzam następne pytanie: w C++ i w Adzie też wyjątki widuję.)

    --
    Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com

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: