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-07 23:51:34
    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 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: