Parsing can become accidentally quadratic because of sscanf
Another example of so many things wrong with the status quo.<p>(1) Naive people find liberation in text-based protocols that don't require tools to understand.<p>(2) With experience one finds that variable-length data structures are much more treacherous than fixed-length data structures:  you find simplicity instead in binary data formats that are dead easy to parse.<p>(3) Floating point numbers are astonishingly expensive to parse and unparse to ASCII compared to how many FLOPs you could do in that time.  All that,  for a function that isn't quite correct...  That is,  the number 1/5,  which you write as "0.2" doesn't actually exist in IEEE floats.  You don't notice at first because that number unparses as "0.2" -- but then note that "0.1 + 0.2 == 0.3" is false in most computer languages.<p>(4) Null-terminated strings are the definition of insanity, rivaled only by "pointers are integers, integers are pointers"<p>One pet project of mine lately is a "Data Assembler" that takes a graph of data structures (say test data for a family of logic chips,  graphics data for a laser light show,  or "maps" to upload to the engine control unit in your car) in Python and converts it to a byte array that is incorporated into an Arduino program.<p>The total size of the structure could be up to 32kbytes on a small device, or up to 250kbytes or so on a big device,  but the program memory is huge compared to the RAM which might be as little as 2kb so the unpacking code is going to stream the data with a small working area.<p>The minimum it has to do is put together blocks of data that have references to one another that are only resolved once all of the blocks are otherwise complete.<p>I deliberated a lot about how to handle variable length data structures and decided to embed a two-byte length before the block for all blocks.  I could have saved some bytes when the length of the structure was known,  but then I'd have to figure out how to code lengths then (e.g. for an array of 2-byte ints do I count the ints or bytes) and figured I'd make up my mind once.