eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJakie typowanie jest najlepsze i dlaczego statyczne?Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
  • X-Received: by 10.49.75.9 with SMTP id y9mr928104qev.9.1360576194520; Mon, 11 Feb
    2013 01:49:54 -0800 (PST)
    X-Received: by 10.49.75.9 with SMTP id y9mr928104qev.9.1360576194520; Mon, 11 Feb
    2013 01:49:54 -0800 (PST)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!
    f6no9454547pbd.0!news-out.google.com!oq8ni3787pbb.0!nntp.google.com!c4no9443583
    pbz.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Mon, 11 Feb 2013 01:49:54 -0800 (PST)
    In-Reply-To: <kf9c7i$61o$1@somewhere.invalid>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=195.182.34.201;
    posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S
    NNTP-Posting-Host: 195.182.34.201
    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>
    <kf9c7i$61o$1@somewhere.invalid>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <8...@g...com>
    Subject: Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
    From: Maciej Sobczak <s...@g...com>
    Injection-Date: Mon, 11 Feb 2013 09:49:54 +0000
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:202008
    [ ukryj 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: