C’est pas toujours vrai, le deflate gzip est géré par la carte reseau de nos jours, c’est des petits composant dédiés et donc ça ralentis pas ton proc. pour ce qui est du layout en memoire, ton entier 16 bit dans la plupart des proc utilisera 32 ou 64 pour etre multiplié donc ca change rien non plus , et finalement en augmentant la taille des blocs, j’ai de grand doute qu’'un mec tout seul, aussi malin soit-il compresse mieux qu’un algo generique :
si ma pubkey c’est aaaaaaaaaaaaaaaaa
que la tienne c’est bbbbbbbbbbbbbbbbb
Combien de bits ton algo va utiliser pour la stocker ? cherche pas plus loins… ton algo est ptet op, rapide tout ce que tu veux, c’est en additionnant les donnés que tu les compresse et tu peux te faire chier autant que tu veux t’arrivera tout juste au niveau des format générique de compression! tu peux avoir un format “petit” mais tu peux pas garantir qu’il sera toujours “le plus petit” parce que si tu rajoute des champs demain, un format générique compressera aussi bien qu’avant mais pas forcement le tiens et alors soit tu recode tout pour avoir le plus petit format, t’ajoutera des dictionnaires, … et t’aura perdu ton temps, un zip bien choisis fera l’affaire et emmerdera bcp moins les mainteneur du futurs.
Tu peux avoir la meilleur idée du monde en binarisant, c’est géniale de montrer que ça tiens sur arduino, en évoluant ton protocole va te sauter à la gueule. parce qu’il y aura un truc que t’as pas prevus et alors ton format va se mettre à cramer.
Des malins qui penses comme ça yen a eux pleins, résultat Cobol existe encore !!
Un algo générique oui, il le fera sans erreur, il saura le sérialisée, dé sérialisé et sera interprété par autant de langages que le standard accepte. En ce qui me concerne, ton argument de perf ou de volume est nul car tu fera pas mieux tout seul que les décennies de recherche sur le sujet. peut être, dans 30 ans t’aura gagné quelques bit en stockage et si t’arrive a faire mieux que parquet, avros, protobuf, … et que tu le prouve on en reparlera. moi j’y crois pas, tant que j’ai pas vue ton benchmark qui montre véritablement un gain, je me fais pas chier avec. et puis ton arduino ou ton raspberry, tu connais les caractéristiques du proc ? le bus ? le cache ? la mémoire ? tu sais prouver que ce que tu avance est vrai? et sur une VM ton format, ton algo il performe comment ?
Évidemment on peux faire mieux qu’un vieux format texte, mais c’est pas la pierre angulaire d’une crypto et ca ne le sera jamais. L’écrire en YAML par contre ça permet a des milliers de développeur d’hacker le truc et de ne plus dépendre d’une seule implémentation, d’avoir pleins d’outils qui l’intègre.
Du coup je code la grammaire en antlr4 et bon, ça traduis:
Cben@ben:~/ws/juniter/grammar$ antlr4 PG*.g4 ; javac PG*.java; grun PG doc tests/certif.dup
doc:
version: 10
currency: beta_brousouf
certification:
issuer: DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV
idtyIssuer: HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd
idtyUniqueID: lolcat
idtyTimestamp: 32-DB30D958EE5CB75186972286ED3F4686B8A1C2CD
idtySignature: J3G9oM5AKYZNLAB5Wx499w61NuUoS57/VccTShUbG+-MjCqj9yXXqNq7dyZpDWA6BxipsiaMZhujMeBfCznzyci
certTimestamp: 36-1076F10A7397715D2BEE82579861999EA1F274AC
signature: SoKwoa8PFfCDJWZ6dNCv7XstezHcc2BbKiJgVDXv82R5zYR83nis9dShLgWJ5w48noVUHimdngzYQneNYSMV3rk
ben@ben:~/ws/juniter/grammar$ cat tests/certif.dup
Version: 10
Type: Certification
Currency: beta_brousouf
Issuer: DNann1Lh55eZMEDXeYt59bzHbA3NJR46DeQYCS2qQdLV
IdtyIssuer: HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd
IdtyUniqueID: lolcat
IdtyTimestamp: 32-DB30D958EE5CB75186972286ED3F4686B8A1C2CD
IdtySignature: J3G9oM5AKYZNLAB5Wx499w61NuUoS57/VccTShUbG+-MjCqj9yXXqNq7dyZpDWA6BxipsiaMZhujMeBfCznzyci
CertTimestamp: 36-1076F10A7397715D2BEE82579861999EA1F274ASoKwoa8PFfCDJWZ6dNCv7XstezHcc2BbKiJgVDXv82R5zYR83nis9dShLgWJ5w48noVUHimdngzYQneNYSMV3rk
Yaml, json, xml, sont des parser évidement riche en exemple pour antlr, il ne sera pas dur de les integrer.
Le binaire n’est rien d’autre qu’un lexer différent… des lors, plusieurs formats/versions peuvent être parsés au seins d’un même arbre…sémantique. récursivité quand tu nous tiens!!!
En utilisant un tel formalisme il est possible de montrer que deux formats sont compatible par exemple et de faire évoluer le protocol de manière safe à travers le temps… Quelqu’un soumet un format pour lequel il produit un parser universel, puis les gens l’implémente ou non. il pourrait y avoir des milliers de spécifications.
Grâce aux “predicates” d’antlr, je peux (en théorie) implémenter les règles de validation local des documents.
Avec antlr4, on peux générer le parseur / traducteur nativement en Python2&3, Java, Javascript, Cpp, Csharp, Go.
En principe, si je complète ce truc il ne restera “que” la machine à état a implémenter dans 7 langues pour atteindre 95% des informaticiens vivant.
Le titre de ce thread devrait être “technocratie” vs “communication” voila des concepts qui parfois s’opposent dans la recherche du consensus