-
41. Data: 2015-12-07 20:34:50
Temat: Re: Pakowanie struktur
Od: Sebastian Biały <h...@p...onet.pl>
On 2015-12-07 20:06, M.M. wrote:
> Ja mogę odpowiedzieć, że proponujesz strzelanie z armaty do komarów.
Nie. Jesli chcesz prawidłowo zapisywać obiekty z uwzględnieniem wielu
czynników od sprzetowych do programowych to nie masz wyjścia - musisz
serializować. Robi to każdy poważny projekto programistyczny mający do
czynienia z persistent storage. Niektore z internalnych serializatorów
stały się samodzielnymi bytami, tu masz podsumowanie:
https://en.wikipedia.org/wiki/Comparison_of_data_ser
ialization_formats
> Do czego taka rozmowa doprowadzi? Do niczego?
Pozwala ona innym czytelnikom na zrozumienie że zapisywanie struktur raw
bylo dobre w czasach CP/M na ZX Spectrum. Faktem jest że niektóre języki
jak C/C++ są pod tym względem niewybaczalne i tym bardziej należy mieć
świadomość co się robi.
-
42. Data: 2015-12-07 21:30:13
Temat: Re: Pakowanie struktur
Od: "M.M." <m...@g...com>
On Monday, December 7, 2015 at 8:35:21 PM UTC+1, Sebastian Biały wrote:
> On 2015-12-07 20:06, M.M. wrote:
> > Ja mogę odpowiedzieć, że proponujesz strzelanie z armaty do komarów.
>
> Nie. Jesli chcesz prawidłowo zapisywać obiekty z uwzględnieniem wielu
> czynników od sprzetowych do programowych to nie masz wyjścia - musisz
> serializować. Robi to każdy poważny projekto programistyczny mający do
> czynienia z persistent storage. Niektore z internalnych serializatorów
> stały się samodzielnymi bytami, tu masz podsumowanie:
>
> https://en.wikipedia.org/wiki/Comparison_of_data_ser
ialization_formats
>
> > Do czego taka rozmowa doprowadzi? Do niczego?
>
> Pozwala ona innym czytelnikom na zrozumienie że zapisywanie struktur raw
> bylo dobre w czasach CP/M na ZX Spectrum. Faktem jest że niektóre języki
> jak C/C++ są pod tym względem niewybaczalne i tym bardziej należy mieć
> świadomość co się robi.
Ale jeśli tak kategorycznie napiszesz, to dużo czytelników używających
prostszych mechanizmów pomyśli: ojeju, wszystkie moje programy działają
przez przypadek i zaraz padną. A tymczasem aż tak źle nie jest. Zapisu
struktur raw często można używać z powodzeniem. A co do świadomości,
to myślę, że biblioteka do której linka podałeś, wymaga więcej świadomości
chociażby ze względu na to, że dużo dzieje się w destruktorach, a
klamerki nie są opcjonalne. Programista zawsze powinien być świadomy
tego co robi. Uważam że masz rację, należy używać porządnego, bezpiecznego i
przenośnego kodu. Ale nie przesadzałbym z całkowitym zakazem operowania na
binarnych formatach.
Kolejna sprawa. Jeśli mamy program ciut bardziej zaawansowany, to w nim
protokoły sieciowe lub formaty plików też zazwyczaj są ciut bardziej
zaawansowane niż format dający się upakować do binarnej struktury. I tak
i tak trzeba użyć jakiegoś formatu ogólnego, np. xmla. A w prostych i
małych programach, może właśnie używanie ad-hoc formatu binarnego jest
najbardziej adekwatne.
Sorry, ale przyznając częściowo rację, nadal upieram się, ze foramty
binarne nadal mają się dobrze.
Pozdrawiam
-
43. Data: 2015-12-07 22:36:24
Temat: Re: Pakowanie struktur
Od: szemrany <s...@o...off>
On Mon, 7 Dec 2015 12:30:13 -0800 (PST), M.M. wrote:
> Sorry, ale przyznając częściowo rację, nadal upieram się, ze foramty
> binarne nadal mają się dobrze.
Imho to ślepa uliczka... zderzyłem się już z _własnymi_ starymi
rozwiązaniami tego typu, które się rozsypały po kolejnej aktualizacji
narzędzi/bibliotek/środowisk... jeśli programuje się na serio to prędzej
czy później dostanie się kopniaka od takich patentów. Uciekać jak najdalej.
--
howgh
szemrany
"Trzeba z żywymi naprzód iść, po życie sięgać nowe,
a nie w uwiędłych laurów liść z uporem stroić głowę"
-
44. Data: 2015-12-07 22:40:54
Temat: Re: Pakowanie struktur
Od: witek <w...@g...pl.invalid>
M.M. wrote:
>
> Ale jeśli tak kategorycznie napiszesz, to dużo czytelników używających
> prostszych mechanizmów pomyśli: ojeju, wszystkie moje programy działają
> przez przypadek i zaraz padną.
Właśnie tak.
Działają na sprzecie na którym zostały skompilowane i jest mała szansa,
że zadziałają lub dadzą się skompilować na czymkolwiek innym lub
czymkolwiek innym.
-
45. Data: 2015-12-08 11:00:37
Temat: Re: Pakowanie struktur
Od: "M.M." <m...@g...com>
On Monday, December 7, 2015 at 10:40:55 PM UTC+1, witek wrote:
> M.M. wrote:
> >
> > Ale jeśli tak kategorycznie napiszesz, to dużo czytelników używających
> > prostszych mechanizmów pomyśli: ojeju, wszystkie moje programy działają
> > przez przypadek i zaraz padną.
>
> Właśnie tak.
> Działają na sprzecie na którym zostały skompilowane i jest mała szansa,
> że zadziałają lub dadzą się skompilować na czymkolwiek innym lub
> czymkolwiek innym.
Moje działają. W mniejszych aplikacjach jedyne zabezpieczenie jakie
stosowałem, to przedefiniowanie typów podstawowych. Tak rzadko dziś
występuje bigendian?
W większych aplikacjach, w których przewidywałem wersje plików lub protokołów,
najczęściej stosowałem formaty tekstowe, ponieważ, jak już pisałem, w
żadną 'strukturę liniową' nie da się upakować skomplikowanego formatu
danych.
Pozdrawiam
-
46. Data: 2015-12-08 12:09:00
Temat: Re: Pakowanie struktur
Od: RW <b...@g...pl>
On Mon, 07 Dec 2015 15:40:54 -0600, witek wrote:
> M.M. wrote:
>>
>> Ale jeśli tak kategorycznie napiszesz, to dużo czytelników używających
>> prostszych mechanizmów pomyśli: ojeju, wszystkie moje programy działają
>> przez przypadek i zaraz padną.
>
> Właśnie tak.
> Działają na sprzecie na którym zostały skompilowane i jest mała szansa,
> że zadziałają lub dadzą się skompilować na czymkolwiek innym lub
> czymkolwiek innym.
W wielu wypadkach to w zupelnosci wystarcza. Jak zmienia sprzet, to
przekompiluja program i albo testy przejda (bo maja testy, prawda?) i jest
OK, albo testy padna i wtedy zobacza, ze jest problem.
RW
-
47. Data: 2015-12-08 12:10:26
Temat: Re: Pakowanie struktur
Od: RW <b...@g...pl>
On Mon, 07 Dec 2015 19:03:00 +0100, Sebastian Biały wrote:
> On 2015-12-07 15:40, M.M. wrote:
>>> serialize(&struct, file);
>>> Nawet krócej. I wiem, że nie jestem zależny od pierdyliona rzeczy, nad
>>> którymi mogę nie mieć kontroli (endiany, opcje kompilatora, itd.).
>> Jeśli taki kod generuje jakiś automat
>
> http://www.boost.org/doc/libs/1_59_0/libs/serializat
ion/doc/index.html
Slyszalem rozne horror stories na temat czasow kompilacji bibliotek
stosujacych serializacje z Boosta, ale to dawno temu bylo. Nadal jest tak
zle?
RW
-
48. Data: 2015-12-08 13:20:36
Temat: Re: Pakowanie struktur
Od: Maciej Sobczak <s...@g...com>
> Sorry, ale przyznając częściowo rację, nadal upieram się, ze foramty
> binarne nadal mają się dobrze.
Ale nikt tu nie krytykuje formatów binarnych. Chodzi o to, żeby nie polegać na
przypadku i na zachowaniach niezdefiniowanych w pisaniu takich programów.
Nawet w przypadku formatu binarnego (nawet najprostszego) właściwym rozwiązaniem jest
serializacja, być może do pośredniego bufora, na którym odbywa się I/O. Wtedy mamy
pełną kontrolę nad tym co się dzieje i przy okazji nie łamiemy większości standardów
kodowania. A to, że taki (nawet najprostszy) serializator zaraz nam się przyda gdzieś
indziej, to jest naturalna wartość dodana ze zrobienia czegoś rzetelnie.
--
Maciej Sobczak * http://www.inspirel.com
-
49. Data: 2015-12-08 14:16:44
Temat: Re: Pakowanie struktur
Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>
On 2015-12-07, M.M. <m...@g...com> wrote:
> On Monday, December 7, 2015 at 8:35:21 PM UTC+1, Sebastian Biały wrote:
>> On 2015-12-07 20:06, M.M. wrote:
>> > Ja mogę odpowiedzieć, że proponujesz strzelanie z armaty do komarów.
>>
>> Nie. Jesli chcesz prawidłowo zapisywać obiekty z uwzględnieniem wielu
>> czynników od sprzetowych do programowych to nie masz wyjścia - musisz
>> serializować. Robi to każdy poważny projekto programistyczny mający do
>> czynienia z persistent storage. Niektore z internalnych serializatorów
>> stały się samodzielnymi bytami, tu masz podsumowanie:
>>
>> https://en.wikipedia.org/wiki/Comparison_of_data_ser
ialization_formats
[...]
> Sorry, ale przyznając częściowo rację, nadal upieram się, ze foramty
> binarne nadal mają się dobrze.
Jakbyś trochę się orientował w temacie, to byś wiedział o istnieniu
formatów ASN.1, BSON, MessagePack, Thrift, Protocol Buffers i innych.
To są formaty binarne, a wszystkie służą do serializacji danych.
--
Secunia non olet.
Stanislaw Klekot
-
50. Data: 2015-12-08 14:50:16
Temat: Re: Pakowanie struktur
Od: "M.M." <m...@g...com>
On Tuesday, December 8, 2015 at 2:16:46 PM UTC+1, Stachu 'Dozzie' K. wrote:
> On 2015-12-07, M.M. wrote:
> > On Monday, December 7, 2015 at 8:35:21 PM UTC+1, Sebastian Biały wrote:
> >> On 2015-12-07 20:06, M.M. wrote:
> >> > Ja mogę odpowiedzieć, że proponujesz strzelanie z armaty do komarów.
> >>
> >> Nie. Jesli chcesz prawidłowo zapisywać obiekty z uwzględnieniem wielu
> >> czynników od sprzetowych do programowych to nie masz wyjścia - musisz
> >> serializować. Robi to każdy poważny projekto programistyczny mający do
> >> czynienia z persistent storage. Niektore z internalnych serializatorów
> >> stały się samodzielnymi bytami, tu masz podsumowanie:
> >>
> >> https://en.wikipedia.org/wiki/Comparison_of_data_ser
ialization_formats
> [...]
> > Sorry, ale przyznając częściowo rację, nadal upieram się, ze foramty
> > binarne nadal mają się dobrze.
>
> Jakbyś trochę się orientował w temacie, to byś wiedział o istnieniu
> formatów ASN.1, BSON, MessagePack, Thrift, Protocol Buffers i innych.
> To są formaty binarne, a wszystkie służą do serializacji danych.
Jakbyś przeczytał wątek i sekundę się zastanowił, to byś zrozumiał o
czym pisałem, albo nie.