Código Natural/Requisitos e motivações: mudanças entre as edições

revisando..
(Criou página com 'Todo código natural pode ser representado por uma cadeia de bits, mas nem por isso é uma cadeia de bits. O conjunto dos números naturais é munido de diversas operações e tipos alternativos de representação. A escolha das "operações essenciais" e tipos de representação relevantes é que estabelece o conceito de ''código natural''. A seguir os problemas motivadores e requisitos utilizados originalmente para se obter a definição das operações ess...')
 
(revisando..)
Linha 1: Linha 1:
Todo [[código natural]] pode ser representado por uma [[cadeia de bits]], mas nem por isso é uma cadeia de bits. O conjunto dos números naturais é munido de diversas operações e tipos alternativos de representação. A escolha das "operações essenciais" e tipos de representação relevantes é que estabelece o conceito de ''código natural''.
Todo [[código natural]] pode ser representado por uma [[cadeia de bits]], mas nem por isso é uma cadeia de bits. O conjunto dos códigos naturais é munido de diversas operações e tipos alternativos de representação. A '''escolha das operações essenciais e tipos de representação relevantes''' é que estabelece o conceito de ''código natural''.


A seguir os problemas motivadores e requisitos utilizados originalmente para se obter a definição das operações essenciais.
A seguir os '''problemas motivadores''' e '''requisitos''' utilizados originalmente para se obter a definição das operações essenciais.  Os requisitos são, indiretamente, soluções dos problemas.


== Requisitos na representação textual  ==
== Requisitos na representação textual  ==
Números binários são representações válidas da [[wikipedia:positional notation|notação posicional]] base2, e podem ser representados de forma mais compacta (mais amigável para o ser humano) através de bases maiores, tais como base8 (sistema octal) ou base10 (sistema decimal). Códigos, todavia, '''não possuem um sistema posicional adequado''', não existe um padrão para se representar todos os códigos naturais, nem sequer na base4.
:: <small>Ver definições adicionais em [[Código natural/Notação posicional]]</small>.
Números binários são representações válidas da [[wikipedia:positional notation|notação posicional numérica]] base2, e podem ser representados de forma mais compacta (mais amigável para o ser humano) através de bases maiores, tais como base8 (sistema octal) ou base10 (sistema decimal). Códigos, todavia, '''não possuem um sistema posicional adequado''', não existe um padrão para se representar todos os códigos naturais, nem sequer na base4.


Outro problema é a '''ordem''': listagens de códigos representados em outras bases,  precisam seguir a mesma ordem que as listagens binárias, ou seja, lexicograficamente (vide [[cadeia de bits|ordem natural das cadeias de bits]]. Isso porque códigos naturais, independentemente da representação, precisam '''exibir a ordem hierárquica''', de modo que "ramos da hierarquia" fiquem listados dentro de um intervalo único. Em <math>X_{2}</math> por exemplo iniciamos pelo 0, depois 00, depois 01, depois 1, etc. O ramo dos "filhos de 0" ficam ordenados no intervalo [0,00,01] da listagem lexicográfica.
Essa "representação compacta e amigável para humanos" é necessária, e portanto é o primeiro requisito. A escolha das bases mais adequadas, todavia, também requer justificativas: descritas em [[Código natural/Notação posicional]], e resultam nas bases&nbsp;''N'' com <math>N \in \{4,8,16,32\}</math>, com ênfase na base&nbsp;16.
 
Outro problema é a '''ordem''': listagens de códigos representados em outras bases,  precisam seguir a mesma ordem que as listagens binárias, ou seja, a [[cadeia de bits#Ordenação_de_cadeias_de_bits|ordem lexicográfica natural dos bits]]. Isso porque códigos naturais, independentemente da representação, precisam '''exibir a ordem hierárquica''', de modo que "ramos da hierarquia" fiquem listados dentro de um intervalo único. Em <math>X_{2}</math> por exemplo iniciamos pelo 0, depois 00, depois 01, depois 1, etc. O ramo dos "filhos de 0" ficam ordenados no intervalo [0,00,01] da listagem lexicográfica. Os "filhos de 1" no intervalo [1,10,11].
 
== Requisitos na representação interna  ==
Códigos em um banco de dados podem ser identificadores ou simples atributos (ex. hashes de integridade). A aplicação mais importante é a identificação única, que, tradicionalmente, nos bancos de dados é implementada través de números naturais, ditos "seriais", tipicamente em 32 ou 64 bits.
 
: Requisito '''R1''': ser um tipo de dado de 32 ou 64 bits, com fácil conversão para números inteiros de comprimento equivalente.
: Requisito '''R2''': função "'''sucessor(x)'''", que retorna o próximo ''x'' numa listagem ordenada, da maneira análoga que um contador numérico de "+1".
: Requisito '''R3''': permitir as ordenações lexicográfica (prioritária) e por nível (secundária). 


== Problemas na representação textual baseN ==
== Problemas na representação textual baseN ==
Linha 279: Linha 289:
Conclusão: nas bases de aplicação mais frequente (as bases 8 e 16), entre 67% e 75% dos códigos naturais deixam de ser representados. É uma perda muito grande, vale a penas investir numa solução.
Conclusão: nas bases de aplicação mais frequente (as bases 8 e 16), entre 67% e 75% dos códigos naturais deixam de ser representados. É uma perda muito grande, vale a penas investir numa solução.


=== Padronização da eventual solução===
Conforme visto na definição dos códigos naturais, existe uma proposta de solução (propostas [[base 4h]], [[base 8h]] e [[base 16h]]), mas ela permanece como proposta '''enquanto não foi aceita como [[wikipedia:De facto standard|padrão de fato]]''' para a "representação humana compacta" dos códigos naturais.
A padronização portanto é mais um problema da representação textual, o último obstáculo a ser vencido.


== Problemas na representação interna e processamento ==
== Problemas na representação interna e processamento ==
...
...


== Problemas na ordenação  ==
=== Problema da ordenação na representação interna ===


...
...
2 402

edições