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-06 23:57:44
    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 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: