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-08 17:45:23
    Temat: Re: Jakie typowanie jest najlepsze i dlaczego statyczne?
    Od: darekm <d...@e...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 2013-02-07 23:51, Andrzej Jarzabek pisze:
    >
    >
    >> 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.
    >

    To że zawsze możesz użyć wszystko ma swoją drugą stronę: niczego nie
    możesz zabronić. Przy statycznym typowaniu każda funkcja ma
    zdefiniowane dla jakich typów i w jakim kontekście jest poprawna i w
    innych jej nie użyjesz. A wraz ze wzrostem programu liczba kontekstów
    niepoprawnych rośnie szybciej niż tych poprawnych.

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


    Co zajmuje czas: wklepanie kodu? Przecież to jest czas pomijalny.
    Refaktoryzacja: kompilator powie Ci gdzie NIE możesz użyć nowej
    funkcji/struktury
    >
    >> 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?

    Tylko wtedy gdy to ma sens, mogę zawsze przekazywać nie obiekty a pole.
    Po drugie to kompilator zabroni mi wywołać
    foo(foo(c))

    kwestia czy lepiej mieć większe ograniczenia i mniejsze zagrożenie
    nieuprawnionego użycia, czy mniej ograniczeń , mniej kodu i większe
    zagrożenie nieuprawnionego użycia?

    Piszesz konwersję kopiującą wszystkie składowe do hashmapy?
    > I tak dla każdego typu? I nie widzisz w tym nic niewygodnego?

    W życiu też możesz używać wygodnego samochodu rodzinnego do którego
    zapakujesz na dowolnym parkingu kilka osób, psa i śniadanie i dojedziesz
    nad (prawie) dowolne jezioro. Z drugiej strony masz tiry, które
    zapakujesz wyłącznie na rampie wyłącznie paletami wyłącznie mechanicznie
    i można jeździć wyłącznie uprawnionymi drogami. Dlaczego tak skoro tak
    niewygodnie i restrykcyjnie?



    --
    Darek



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: