endianness (On Holy Wars)
folcloreprogramaçãoredes
A divisão de ordenação de bytes cujos nomes Danny Cohen tomou emprestados de uma guerra satírica em As Viagens de Gulliver.
No romance de Swift, Lilliput e Blefuscu entram em guerra por decidir se um ovo cozido deve ser aberto pela ponta maior ou menor; o memorando de Cohen, de 1980, usou Big-Endian e Little-Endian para alfinetar engenheiros que discutiam com igual fervor sobre qual byte vem primeiro. A piada pegou, e os dois termos são hoje o vocabulário padrão para a ordem de bytes da máquina.
O artigo de Danny Cohen, de 1980, On Holy Wars and a Plea for Peace, tomou emprestada sua terminologia das Viagens de Gulliver, em que Lilliput e Blefuscu entraram em guerra sobre por qual ponta quebrar um ovo cozido. A analogia era incisiva: a ordenação de bytes big-endian e little-endian são convenções arbitrárias, e nenhuma é significativamente melhor.
O argumento a favor de cada uma é real e pequeno. O little-endian coloca o byte menos significativo primeiro, o que serve à aritmética em máquinas que processam de forma incremental. O big-endian corresponde ao modo como humanos escrevem números, o que torna dumps hexadecimais legíveis da esquerda para a direita. O apelo real de Cohen não era que uma vencesse, e sim que uma convenção fosse acordada, porque o custo da divergência excede o benefício de qualquer das escolhas.
A divergência persistiu assim mesmo e virou imposto permanente. A ordem de bytes de rede é big-endian, a maioria dos processadores que as pessoas usam é little-endian, e toda implementação de protocolo portanto converte, e é por isso que existem as funções de troca de bytes e por que esquecer uma produz valores errados de um jeito especificamente confuso. Cohen estava certo sobre o custo, e a indústria o pagou por quarenta anos, que é o desfecho usual quando um problema de coordenação é deixado ao mercado.
Também conhecido como: big-endian, little-endian, byte order, On Holy Wars and a Plea for Peace
Fontes
- Cohen, 'On Holy Wars and a Plea for Peace', IEEE Computer (1981)
- Swift, 'Gulliver's Travels' (1726)