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.


Comentários

  1. 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.

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

5G - Uma mudança de paradigma nas comunicações - Parte 1

A Tecnologia das Ferrovias – Parte 3 – As Locomotivas a Diesel

Descomplicando a Logica Digital - A álgebra booleana