eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJakie typowanie jest najlepsze i dlaczego statyczne? › Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
  • 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: Thu, 07 Feb 2013 22:51:34 +0000
    Organization: news.chmurka.net
    Lines: 80
    Message-ID: <kf1b5r$cvj$1@somewhere.invalid>
    References: <f...@g...com>
    <kem1vl$8n2$1@somewhere.invalid>
    <7...@g...com>
    <8...@g...com>
    <6...@g...com>
    <5...@g...com>
    <s...@j...net>
    <b...@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>
    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 1360277499 13299 90.197.60.254 (7 Feb 2013 22:51:39 GMT)
    X-Complaints-To: abuse-news.(at).chmurka.net
    NNTP-Posting-Date: Thu, 7 Feb 2013 22:51:39 +0000 (UTC)
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130107
    Thunderbird/17.0.2
    In-Reply-To: <7...@g...com>
    X-Authenticated-User: ajarzabek
    Xref: news-archive.icm.edu.pl pl.comp.programming:201946
    [ ukryj nagłówki ]

    On 07/02/2013 12:24, M.M. wrote:
    >
    > firr kenobi wrote:
    >> Okupione jest (i to jest przynajmniej dla mnie najwazniejsze ;-)
    >> znacznie nizszą wydajnoscią - udostępnia z kolei pewną (przynajmniej
    >> ewentualną) prostotę
    >
    > Z pewnością tak jest. Nie da sie stworzyć języka, który jest zarówno
    > ekstremalnie elegancki i jednocześnie wydajny. Przykładem tego jest

    Podobno Ada jest takim językiem.

    Poza tym "język wydajny" to poewne nieporozumienie - z cech języka mogą
    wynikać pewne narzuty ograniczające czy zwiększające wydajność, ale
    rzeczywista praktyczna wydajność zależy od optymalizacji kompilatora, a
    te z kolei są mocno skorelowane z popularnością. Jest dużo eleganckich
    języów, które teoretcznie mogłyby być równie wydajne co C++, ale w
    praktyce używa ich 5 osób, więc nie jest taki szybki.

    >> W Pythonie masz pelnoprawna klase/obiekt ktora zachowuje sie
    >> _dokladnie_ tak samo jakby byla zadeklarowana/zdefiniowana statycznie.
    > Wiem, ale nie wiem co z tego :)

    Np. że możesz napisać jeden kod, który obsłuży obydwa przypadki.

    > Andrzej Jarzabek wrote:
    >> A więc nie moższ.
    > Nie mogę tak jak wielu innych rzeczy. Dlaczego ma mi być
    > smutno jeśli np. nie mogę utworzyć funkcji w C++ o nazwie
    > składającej się z 10tys znaków? Cecha musi być potrzebna w
    > statystycznym projekcie żeby cierpieć z jej braku.

    Nie mam pojęcia do czego ci te Varianty, rozmawialiśmy o tym, że w
    językach dynamicznych możesz mieć zmienne przyjmujące wartości dowolnego
    typu lub funkcje zwracające wartości dowolnego typu. Pisałeś, że w C++
    masz to samo dzięki typowi Variant. No więc nie masz. Co do tego, do
    czego potrzebne jest przyjmowanie lub zwracanie wartości typu first
    class function - nie widzę sensu tłumaczenia. Przeczytaj sobie SICP, to
    będziesz wiedział.

    > W językach wymagających jawnego podawania typu nie ma na to siły i
    > trzeba typ podawać.

    A w językach z dynamicznym systemem typów nie trzeba. I na tym polega
    różnica - w C++ tego po prostu nie zrobisz i tyle, żaden QVariant czy
    hashmap ci nie pomoże.

    > Ułatwiają życie szablony, makra,

    O makrach i szablonach w C++ można wiele powiedzieć, ale na pewno nie
    to, że są wygodne i proste w użyciu.

    >> Wystarczy, żeby powodować niewygodę. Bo tak czy inaczej musisz w tym
    >> momencie zdefiniować odpowiednie typy.
    > Nie dociera do mnie dlaczego to jest problemem. Albo problem
    > jest nieistotny, albo coś ze mną nie tak :D

    Bo zajmuje czas, bo wprowadza szum do kodu, bo utrudnia refaktoryzację.
    Może nie zawsze, ale przynajmniej niekiedy.

    > Andrzej Jarzabek wrote:
    >> fun foo(p)
    >> {
    >> return (p.pole)/2
    >> }
    >
    > Idealne na hashmapę lub funkcję wirtualną.
    >
    > foo( hash_map ) {
    > return hash_map["pole"] / 2;
    > }
    >
    > foo( *object ) {
    > return object->value() / 2;
    > }

    Wprowadzasz duplikację. No i pojawiają się dalsze problemy, co na
    przykład, jeśli chcesz skopiować structa i owej kopii dołożyć kilka
    nowych pól? Piszesz konwersję kopiującą wszystkie składowe do hashmapy?
    I tak dla każdego typu? I nie widzisz w tym nic niewygodnego?

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: