Pro serializaci doporucuji Google protocol buffers (https://developers.google.com/protocol-buffers/docs/overview), interne pouzivane v Googlu, multiplatformni, bindingy do ruznych jazyku.
Pripadne jako datovy format (napr. pro maticova data) jsme na skole kdysi davno pouzivali NetCDF (https://en.wikipedia.org/wiki/NetCDF) pripadne muzete zkusit HDF5 (https://en.wikipedia.org/wiki/Hierarchical_Data_Format).
Tak textový formát nemusí být marný, pokud těch dat nejsou megabajty, navíc máš jistotu, že i po letech to +- někdo přeluští, i když například dnešní platformy budou v muzeu :-) Měl by sis jen pohlídat konverze, aby se neztrácela přesnost při printf/scanf (nebo ekvivalentech v jiných jazycích). Někdy dokonce textový formát zabere míň než binární serializace doublů, ale hodně záleží na tom, o jaké hodnoty se jedná.
Pamatuješ na ten nedávný problém s šachovým programem, kde se na serveru ukládaly partie jako číslo, appka je brala jako číslo, přenos jako text a stejně to nefungovalo? Na jedné straně to byl INT32, na druhé INT64 a těch partií už bylo moc... Text spolehlivě zabil typovou kontrolu.
bylo by to horsi, protoze upravou binarniho protokolu by se muselo sahnout na vsechny appky, ktere to API mohly vyuzivat a zmenit vsechno NARAZ. Takto se opravi jen ta jedna, ktera tam mela int32, navic mozna ani neni nutny prepisovat dokumentaci, protoze 'textovy int' se muze natahovat na jakykoli pocet cifer, kdezto u binarniho protokolu je to mega problem.
Jo, ale z pohledu uzivatele by vysledek byl tentyz - proste by to nefungovalo pripadne delalo psi kusy. Jinak samozrejme kazdej blbec vi ze soucasti kazdyho api nebo protokolu ma byt verze a proto prakticky nikdy neni. Presne z toho duvodu, kdyz potrebujes neco nekde zmenit, tak proste umoznis nejakou dobu soubeh verzi(nebo minimalne appce reknes, ze tu jeji verzi uz nepodporujes).