Skip to content

Latest commit

 

History

History
53 lines (43 loc) · 2 KB

size.md

File metadata and controls

53 lines (43 loc) · 2 KB

alias ~ Number, length, count.

idea ~ Quantity before quality.

context ~ A data element with some length or another numeric property.

motivation ~ Data elements with known size can be arranged and compared independent from their actual content. Size is relevant also because processing and storing data is always limited by size.

implementations ~ - Use a special element as end-marker such as the null byte for null-terminated strings (prohibition). - Explicitly encode size value and content in an embedding. - Use fixed size elements only.

examples ~ - The size of a byte is 8 bit. - All finite data types have limited size. - Numeric data types represent a size. - UTF-8 is a variable width encoding that expresses the number of bytes of a character with the number of 1 bits in the first byte. - The possible number of occurrences of a data element can be expressed in schema languages, for instance with :n-m (BNF), minOccurs/maxOccurrs (XSD), and maxCardinality/minCardinality (OWL).

difficulties ~ - The prohibited end-marker may be allowed to be escaped. For instance the ending double quote in a string may be encoded as \". Such encoding requires to parse the full content, contradicting the motivation of the size pattern. - The conceptual difference between number (multiple elements) and size (one element) is not clear in all data. - Counting requires to detect boundaries between elements (see sequence and separator patterns).

related patterns ~ - Sizes can be constrained by a schema. - The number of elements in a container is a size. - The size pattern includes the idea of (natural) numbers. Ordinal numbers in contrast are covered by the sequence pattern.

specialized patterns ~ Knowing the exact size of an element allows to skip its internal structure (atomicity).