eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingktóre języki 'historyczne' są ważneRe: które języki 'historyczne' sš ważne
  • Data: 2011-02-02 14:19:02
    Temat: Re: które języki 'historyczne' sš ważne
    Od: Jędrzej Dudkiewicz <j...@n...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 02/02/2011 02:52 PM, Andrzej Jarzabek wrote:
    > On Feb 2, 11:06 am, Jędrzej Dudkiewicz<jedrzej.dudkiew...@nospam-
    > gmail.com> wrote:
    >> On 02/02/2011 08:46 AM, Andrzej Jarzabek wrote:
    >>
    >>>> __attribute__((packed)), pola struktury nie mogą być przekładane.
    >>
    >>> To nie jest zdaje się część standardowego języka C, tylko rozszerzenie,
    >>> które twórca implementacji dodał dlatego właśnie, że C się do tego
    >>> kiepsko nadaje.
    >>
    >> Możliwe, chociaż wydaje mi się, że akurat o paddingu standard C też nic
    >> nie mówi.
    >
    > Mówi, że może być i ogólniej, że konkretny binarny layout struktury
    > jest zależny od implementacji.

    W C++ to samo.

    >> Więc tak czy inaczej jesteś w krainie konkretnego kompilatora.
    >
    > A w C++ możesz właśnie nie być.

    Jak robisz ręczny, dokładny dostęp pole po polu, to pewnie, że może być.
    W C też tak możesz napisać. Ba, w C++ możesz napisać tak, jak jest w C,
    i też będzie pięknie.

    >> Co to za argument o wołaniu funkcji? W C++ nie
    >> musisz wołać?
    >
    > Nie musisz, znaczy możesz napisać tak, żeby się sama wołała.

    Ta funkcja jest wołana w jednym miejscu. Wołanie funkcji w jednym
    miejscu uważam za non-issue. To zupełnie inna skala problemu niż ręczne
    wołanie odpowiednika destruktora.

    >>> Nieprawda. Jeśli np. czytasz wartość tego pola tylko w co 20 pakiecie,
    >>> to mniejszy narzut ma konwertowanie przy dostępie.
    >>
    >> Jeśli czytam przy co 20 pakiecie, to prawdopodobnie znaczy to, że wyszło
    >> mi z pierwszego rzutowania, że w danym pakiecie mam dodatkowe dane w
    >> innym formacie,
    >
    > Wyszło powiedzmy tyle, że w danym pakiecie masz jakieś inne pola,
    > niekoniecznie w innym formacie.

    Jak to jakieś inne pole w niekoniecznie innym formacie? Znaczy mam tę
    samą strukturę, tylko z innym polem? To znaczy mam tę samą strukturę,
    czy jednak nie?

    >> czyli robię kolejne rzutowanie i dopiero wtedy wołam
    >> funkcję.
    >
    > Jakie to proste i wygodne!

    A w C++ co zrobisz? To samo. Skoro masz nagle dane, które masz inaczej
    interpretować (bo nie wierzę, że jednak masz tę samą strukturę z innymi
    polami - w głowie mi się taka mutacja nie mieści), to musisz ustalić,
    jako co masz interpretować. Bierzesz bajt/zmienną identyfikującą dane w
    binarnym buforze, wybierasz odpowiednią klasę i karmisz ją buforem.

    >> Możemy się tak licytować do śmierci, bo nie działamy na
    >> konkretnym przykładzie.
    >
    > Przykład jest wystarczająco konkretny. W C++ w każdej takiej sytuacji
    > możesz stworzyć klase opakowującą bez żadnych narzutów, a decyzje o
    > tym, kiedy konwetować, czy za każdym dostępie, czy na miejscu, czy
    > trzymać wynik zcache'owany osobno zostawić implementacji.

    No i to jest dokładnie to, co napisałem wcześniej. W C++ masz wszystko
    ładnie zapakowane, ale zwykle w opakowaniu siedzi jakiś syf.

    Może tak: ja uważam, że grzebanie się w bajtach i w bitach to jest
    grzebanie w gnoju i niezależnie od tego, czy robisz to w kombinezonie
    czy w kąpielówkach, pozostanie to grzebaniem w gnoju. Sprawę należy
    załatwić szybko, powstały kod hermetycznie zamknąć w jakiejś klasie i o
    całości zapomnieć. Dlatego uważam, że rzutowanie wskaźnika na bufor na
    wskaźnik na strukturę jest równie dobrym rozwiązaniem jak każde inne. O
    ile nie jest to powszechna technika.

    JD

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: