I have to warning everyone: Windows terminal with true color , possibly with tmux, is very slow. There is a half second delay from key press to response. I am in a vdi. Your miles varies.
This doesn't correspond to my experience. The terminal is not faster than light, but good enough for my requirements, and I use it both locally and through VNC. May it be a problem with your VDI setup?
But why do you need serialization?
Because the data structure on disk is not the same as in memory.
Arthur Whitney's k/q/kdb+ solved this problem by making them the same.
An array has the same format in memory and on disk, so there is no serialization,
and even better, you can mmap files into memory, so you don't need cache!
He also removed the capability to define a structure, and force you to use dictionary(structure) of array, instead of array of structure.
Forget on-disk. Different CPUs represent basic data types with different in-memory representations (endianness). Furthermore different CPUs have different capabilities with respect to how data must be aligned in memory in order to read or write it (aligned/unaligned access). At least historically unaligned access could fault your process. Then there's the problem, that you allude to, that different programming languages use different data layouts (or often a non-standardised layout). If you want communication within a system comprising heterogeneous CPUs and/or languages, you need to translate or standardise your a wire format and/or provide a translation layer aka serialisation.
And to follow it up, read the actual book by Eric Evans. He tells you when, and just as importantly, when NOT to use the things in the book. I have to point that part out whenever I see people replacing CRUD with DDD.
Group is actually like inverse a mapping. Given an array A which map index to value, group A map value to index.
A common idiom is: desc count each group A , which list most frequent element first