Descomplicando a Lógica Digital – Os caracteres alfanuméricos e os comandos binários
Descomplicando
a Lógica Digital – Os caracteres alfanuméricos e os comandos binários
Nos dois últimos artigos do descomplicando
a lógica digital, falei sobre álgebra booleana e números binários, entretanto no mundo lógico
binário digital, apenas 2 estados são
possíveis “1” e “0”, uns e zeros, precisamos também representar os caracteres
da linguagem escrita, isto é, as letras e símbolos do alfabeto bem como os
comandos que foram criados para o meio digital, com o objetivo de realizar as
operações nos computadores e nos dispositivos digitais que utilizamos no nosso
dia a dia.
Desde o
aparecimento das máquinas de escrever na metade do século 19, as letras e
símbolos de acentuação eram gravados em dispositivos metálicos, onde um sistema
de alavanca impulsionado por uma tecla com a indicação da letra escolhida, imprimia
com uma tinta adequada numa folha de papel, corretamente posicionada num
cilindro de aço revestido com borracha.
Um padrão de
teclado foi criado, na mesma época da invenção da máquina de escrever, sendo chamado
de teclado QWERTY, o mais utilizado até hoje e pode ser identificado pela
primeira linha superior de letras no teclado, foi idealizado desta forma devido
a problemas de travamento mecânico, quando o uso simultâneo das teclas mais
utilizadas.
Um pouco
de história...
Desde a pré-história
que antecede a invenção escrita, a humanidade buscou registrar seus
conhecimentos através da arte rupestre, que datam do período paleolítico
superior, aproximadamente 40.000 anos AC. Também no período neolítico
manifestações artísticas europeias e pré-colombianas de até 8000 anos AC, indicam
que os seres humanos registraram suas façanhas de suas vidas cotidianas.
Uma escrita
sistematizada surgiu por volta de 3.500 anos AC, quando os sumérios
desenvolveram a escrita cuneiforme na Mesopotâmia para registrar o cotidiano,
registros econômicos e políticos e surge no Egito os hieroglifos, mas estas
escritas eram dominadas apenas por pessoas poderosas da sociedade, escribas e
sacerdotes.
Desde as tábuas
de argila ao papiro, o precursor do papel, que foi desenvolvido por volta de
2500 anos AC e o pergaminho que surgiu por volta do século 2 AC, a humanidade
buscou sempre deixar impresso suas ideias e pensamentos. Gutemberg considerado
o pai da imprensa, inventa no século XV, um sistema mecânico de tipos móveis
que deu início a revolução da imprensa.
Em 1867, o
tipografo americano Christopher Sholes inventa a máquina de escrever e cria a
possibilidade dos indivíduos de registrarem suas ideias de forma individual,
assim como os computadores pessoais na segunda metade do século 20, permitiram
aos seres humanos registrarem suas ideias e pensamentos num meio digital.
Durante mais
de cem anos as máquinas de escrever reinaram no mundo, cada vez mais leves e
portáteis, desenvolvidas com materiais metálicos mais leves e plásticos,
chegaram aos anos 50 do século 20 com motores elétricos, que tornaram suas
operações mais precisas e velozes e durante quatro décadas dominaram os
ambientes comerciais e escritórios privados e estatais.
Com a
chegada do mundo digital, dos computadores e das impressoras matriciais as máquinas
de escrever foram rapidamente aposentadas, mas agora precisávamos representar
as letras, acentuação e símbolos, bem como comandos numa estrutura contendo
apenas zeros e uns da notação binaria.
Surge então A
tabela ASCII
Conhecida
como tabela ASC2 que é uma padronização, que foi criada inicialmente nos anos 60
do século passado, com o nome ASC2, chama-se ASC2 para facilitar o
entendimento, mas o correto de sua abreviatura significa (American Standart
Code for Information Interchange), foi criada para ser
inicialmente um padrão americano para representar letras, algarismos, pontuação
e sinais de controle através de uma estrutura codificada em forma de sinais
binários. Em 1967 a tabela de codificação foi criada com 7 bits e desta forma
com 128 caracteres, que incluíram comandos, pontuação, números e letras
maiúsculas e minúsculas. Como podemos ver na figura a baixo:
Em 1970, a tabela de codificação ASCII foi usada na ARPANET,
o precursor da internet o que fortaleceu a utilização desta tabela, mas em 1981
a IBM desenvolveu o IBM PC que possuía 8 bits na sua concepção, com isso
permitiu o uso de mais um bit, que proporcionou criar mais 128 caracteres, e
com isso foi criado a tabela ASCII Extendida, com 256 caracteres, como vemos na
próxima figura a seguir. Ter mais 128 caracteres permitiu adicionar mais simbolos
como as letras gregas, como alfa, beta, ômega, u tremado, etc etc.
Essas
tabelas foram adaptadas para os idiomas em vários países, uma vez que, alguns
idiomas, como o russo possuem 32 caracteres e o mandarim que possui os
ideogramas, como outros como a árabe, o turco e o coreano. Desta forma logicamente
as máquinas podem se comunicar em todo o mundo uma vez que todos adotam a mesma
codificação, claro que sempre existem algumas variáveis que podem ser
resolvidas com algoritmos previamente dimensionados para este fim.
Surge
então o Unicode
Como a tabela
de codificação ASCII tem suas limitações e desta forma não suporta todos os
caracteres acentuados, bem como caracteres especiais de outras línguas como o
chines, o japonês, o árabe e o coreano, foram acordados uma nova codificação chamada
de, Unicode que é um padrão adotado mundialmente e que suporta todas as
linguagens escritas utilizadas no planeta com uma ampla gama de caracteres
internacionais.
O padrão
Unicode é capaz de representar não somente as letras utilizadas pelas línguas
mais familiares ao ocidente como o Inglês, espanhol, Francês e o Português, mas
também letras e símbolos utilizados em qualquer outra linguagem entre eles o
Russo, Japonês, Chinês, Hebreu etc. E os ainda símbolos de pontuação, símbolos
técnicos, além de outros caracteres utilizados em textos escritos.
O padrão
Unicode fornece um número único para cada caractere, não importando a
plataforma, não importando o programa e não importando a linguagem, e desta
forma cada diferente letra ou símbolo de cada alfabeto no mundo é mapeado para
um diferente “code point”, que pode conter 138 mil caracteres como numeração,
alfabeto das principais línguas escritas da humanidade, bem como emojis,
símbolos, diagramas e até arquivos.
Desenvolvido
por uma organização chamada Unicode Consortium, que trabalha em conjunto
com a ISO que é uma Organização Internacional para Padronização, tem o objetivo
de no futuro substituir todos os padrões existentes no mundo, porque em muitos
países existem padrões que são incompatíveis entre si.
A ideia do
Unicode nasceu em 1987 na Xerox, com a montagem de um banco de dados de
caracteres idênticos do japonês, do chinês tradicional e do chinês
simplificado, a fim de construir uma fonte tipográfica, que é uma coleção de
caracteres com o mesmo desenho ou atributos, nesta mesma época a Apple começa
uma discussão sobre um conjunto universal de caracteres e em conjunto com a
Xerox registram em dezembro de 1987, o primeiro uso documentado do termo
“Unicode”.
A partir de
1988, começam as discussões sobre a largura fixa ou variável de bytes, uma vez
que devido ao elevado número de novos caracteres sendo adicionados a tabela do
ASCII estendido, que possuía 8 bits e, portanto, poderia codificar 256
caracteres e o número sempre crescente de novos caracteres exigia mais bits
para permitir a codificação. Foi decidido utilizar 2 bytes, isto é, 16 bits. e
em 1989 empresas como a Metaphor, uma subsidiaria da Xerox, a Sun, a Adobe e HP
definem o padrão de 16 bits.
As reuniões
destas empresas acabam criando o comitê técnico do Unicode e dois anos depois surge
o Consorcio Unicode e mais tarde outras empresas são agregadas ao consorcio
como IBM, Microsoft e Unix. Em outubro de 1991 é lançada a versão 1.0 do
Unicode, que continha 7.100 caracteres e 24 sistemas de escrita. A cada ano uma
nova versão foi publicada e em 2019 já estava na versão 12.0.0 com 137.000
caracteres e 150 sistemas de escrita, e desta forma já utilizando 32 bits desde
a versão 3.1. Em 2022 já estava na versão 15.0.0 com 458.752 caracteres.
Os sistemas
de codificação do Unicode continuam, e a cada ano novos caracteres são
adicionados, sistemas de escrita como o alfabeto etrusco, fenício entre outros
estão sendo codificados e novas versões são definidas a cada ano. O
armazenamento dos caracteres codificados em Unicode apresenta um desafio na
maioria dos programas de computador escritos no mundo ocidental.
Quando
pensamos em sistemas de escrita asiáticos, o modelo baseado em ASCII com 2
bytes não pode em teoria codificar mais do que 32 768 caracteres e na prática
algumas arquiteturas impõem limites ainda menores, estes limites são
insuficientes mesmo só tendo em conta as necessidades de acadêmicos da língua
chinesa. A lógica interna de muitos programas existentes permite somente 8 bits
para cada caractere, tornando impossível o uso de mais de 256 códigos, como já
vimos na tabela ASCII Extendida.
Programas de
16 bits suportam dezenas de milhares de caracteres, por outro lado o Unicode já
definiu mais de 180 mil caracteres codificados. Desenvolvedores de sistemas já
sugeriram diversos mecanismos para implementar o padrão, mas a escolha de cada
um depende do espaço de armazenamento disponível, isto é, as memorias de
gravação que são usados para reter dados digitais, depende da compatibilidade
do código fonte e ainda da interoperabilidade com outros sistemas.
O Unicode
define dois métodos de mapeamento de códigos, o UTF (Formato de Transformação
Unicode) do inglês, (Unicode Transformation Format) e UCS (Conjunto Universal
de Caracteres) do inglês, (Universal Character Set). Os números acrescentados aos
nomes dos mapeamentos indicam, no caso do UTF, número de bits por código e no
caso do UCS, número de bytes por código. Tendo desta forma as abreviaturas
UTF-8, UTF-16, isto é 8 e 16 bits e UCS-2, UCS-4 isto é, 2 e 4 bytes.
Figura que representa uma tabela Unicode.
O Unicode é um universo de informações, que seria impossível definir todas as suas possibilidades numa única live, desta forma se você chegou até aqui e tem intensão de trabalhar no mundo da lógica digital, da programação ou ainda da automação de dispositivos eletrônicos, busque mais informações na literatura disponível no Unicode Standart na web.
Espero que este artigo tenha sido útil para você entender um pouco mais sobre o mundo digital dos caracteres e comandos digitais e agradeço sua atenção, meu muito obrigado e até um próximo artigo.
Rio 5 de outubro de 2024.
Sua abordagem clara e concisa torna um tema complexo acessível a um público mais amplo, desde estudantes iniciantes até profissionais da área. A forma como o autor descomplica conceitos abstratos da lógica digital é notável. A linguagem simples e as analogias bem escolhidas facilitam a compreensão, mesmo para aqueles que não possuem um background técnico aprofundado.
ResponderExcluirMeu email - cabreira.cn@gmail.com
ResponderExcluir