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: Wed, 06 Feb 2013 22:57:44 +0000
    Organization: news.chmurka.net
    Lines: 55
    Message-ID: <keun5d$lsh$1@somewhere.invalid>
    References: <f...@g...com>
    <ke9552$6f6$1@somewhere.invalid>
    <b...@g...com>
    <kebqfs$2e8$1@somewhere.invalid>
    <7...@g...com>
    <kehdr8$piv$1@somewhere.invalid>
    <8...@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>
    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 1360191469 22417 90.197.60.254 (6 Feb 2013 22:57:49 GMT)
    X-Complaints-To: abuse-news.(at).chmurka.net
    NNTP-Posting-Date: Wed, 6 Feb 2013 22:57:49 +0000 (UTC)
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130107
    Thunderbird/17.0.2
    In-Reply-To: <4...@g...com>
    X-Authenticated-User: ajarzabek
    Xref: news-archive.icm.edu.pl pl.comp.programming:201921
    [ ukryj nagłówki ]

    On 06/02/2013 15:50, M.M. wrote:
    > W dniu środa, 6 lutego 2013 15:46:17 UTC+1 użytkownik Sebastian Kaliszewski
    napisał:
    >>
    >> Dynamiczny system typów. W językach dynamicznych (Lisp, Python, Ruby,
    >> Perl, Scheme, Lua, Smalltalk, Dylan, Erlang, itd...) typy są określane w
    >> czasie wykonania (dynamicznie) a nie w czasie
    >> kompliacji/parsowania/linkowania.
    > Dobra, ale w C i w C++ też jest to możliwe. W C jest wskaźnik, może on
    > wskazywać na strukturę której pierwszy int mówi nam o tym co jest w dalszej
    > części struktury.

    Ale język nie potrafi ci tego obsłużyć. Nie możesz na takim wkaźniku
    napisać (p->foo), co by znaczyło "popatrz na tego inta i w zależności od
    tego, co nam mówi o tym, co jest w dalszej części struktury albo daj mi
    składową o nazwie foo, albo zgłoś błąd".

    > W C++ pod offsetem od danych na które wskazuje wskaźnik
    > może być adres metody wirtualnej, która wie co zrobić z danym typem.

    Ale musisz statycznie zzdefiniować typ bazowy i zbiór wszystkich
    operacji dostępnych przez ten typ. No i wtedy nie możesz przypisać
    żadnych innych typów do zmiennej/referencji twojego typu. W językach z
    dynamicznym systemem typów typ zmiennej może się zmieniać w trakcie
    wykonania programu.

    > W QT, w
    > VCL i zapewne w wielu innych jest klasa Variant...

    I można sensownie przypisać wartość dowolnego typu do zmiennej klasy
    Variant?

    >> Refleksja to jest czytanie szczegółów już istniejących typów. System
    >> typów to nadawanie typów.
    > Rzadko używam javy, a refleksji to już w ogóle rzadko, ale z tego co
    > pamiętam można do klasy dodać dowolne pole o dowolnym typie, a nawet
    > metodę można dodać. Jeśli się mylę, to poprawcie mnie.

    Źle pamiętasz.

    > Jedyna różnica
    > jest taka, że do zmiennej typu int nie mogę bez bólu przypisać zmiennej
    > typu tablicowego, czy referencji na obiekt. Czy to jest aż tak
    > potrzebne, wygodne, czy nie wiem co? Przecież mogę sobie zadeklarować
    > drugą zmienną i mam nawet czytelniej, a jak zmienne tymczasowe się
    > pałętają to mogę je objąć klamrami albo napisać osobną funkcję...

    Wygodne bywa to, że zmienne w ogóle nie mają żadnego typu, a mogą
    trzymać wartości typu dowolnego. To samo z funkcjami - nie mają
    zadeklarowanego typu, a mogą zwrócić wartość dowolnego typu.

    Dodatkowo języki dynamiczne często mają możliwość konstruowania typów w
    locie, można sobie np. wczytać XML i skonstruować obiekt odpowiadający
    węzłowi z właściwościami odpowiadającymi podelementom czy atrybutom. W
    Javie żeby to zrobić musisz dostarczyć schema, z której jest generowany
    kod, który sobie kompilujesz.

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: