-
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
Następne wpisy z tego wątku
- 02.02.11 14:36 Jędrzej Dudkiewicz
- 02.02.11 14:41 b...@n...pl
- 02.02.11 15:02 Jędrzej Dudkiewicz
- 02.02.11 16:26 Maciej Sobczak
- 02.02.11 16:31 Jędrzej Dudkiewicz
- 02.02.11 17:22 Andrzej Jarzabek
- 02.02.11 22:07 Maciej Sobczak
- 02.02.11 22:07 Wojciech Jaczewski
- 02.02.11 23:10 A.L.
- 03.02.11 00:11 Wojciech Jaczewski
- 03.02.11 00:54 Andrzej Jarzabek
- 03.02.11 01:10 Andrzej Jarzabek
- 05.02.11 23:51 Michal
- 06.02.11 12:40 Michoo
Najnowsze wątki z tej grupy
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
Najnowsze wątki
- 2025-07-23 Gdańsk => Programista Delphi <=
- 2025-07-23 Gdańsk => Programista Mainframe (z/OS, Assembler) <=
- 2025-07-23 Warszawa => Starszy inżynier DevOps (AWS) <=
- 2025-07-23 Gdańsk => Mainframe (z/OS, Assembler) Developer <=
- 2025-07-23 Kraków => Senior Fullstack Engineer (Low-Code Platform) <=
- 2025-07-23 Wrocław => Senior Key Account Manager IT <=
- 2025-07-23 Trójmiasto => Head of Social Media <=
- 2025-07-23 Rzeszów => Spedytor Międzynarodowy <=
- 2025-07-23 Lublin => ERP Implementation Consultant (AP Module) <=
- 2025-07-23 Środa Wielkopolska => SAP FI/CO Internal Consultant <=
- 2025-07-23 Warszawa => Inżynier oprogramowania .Net <=
- 2025-07-23 Kraków => Kotlin Developer <=
- 2025-07-23 Żerniki => Dyspozytor Międzynarodowy <=
- 2025-07-23 Warszawa => Java Developer <=
- 2025-07-23 Wrocław => Konsultant wdrożeniowy (systemy controlingowe) <=