Código - Code

Em comunicações e processamento de informações , o código é um sistema de regras para converter informações - como uma letra , palavra , som, imagem ou gesto - em outra forma, às vezes abreviada ou secreta , para comunicação por meio de um canal de comunicação ou armazenamento em um armazenamento meio . Um dos primeiros exemplos é a invenção da linguagem , que possibilitou a uma pessoa, por meio da fala , comunicar o que pensava, via, ouvia ou sentia aos outros. Mas a fala limita o alcance da comunicação à distância que uma voz pode transportar e limita a audiência aos presentes quando a fala é pronunciada. A invenção da escrita , que converteu a linguagem falada em símbolos visuais , ampliou a gama de comunicação através do espaço e do tempo .

O processo de codificação converte informações de uma fonte em símbolos para comunicação ou armazenamento. A decodificação é o processo reverso, convertendo símbolos de código de volta em uma forma que o destinatário entenda, como inglês ou / e espanhol.

Uma razão para a codificação é permitir a comunicação em locais onde a linguagem simples , falada ou escrita, é difícil ou impossível. Por exemplo, semáforo , em que a configuração das bandeiras seguradas por um sinalizador ou os braços de uma torre de semáforo codifica partes da mensagem, normalmente letras e números individuais. Outra pessoa que estiver a uma grande distância pode interpretar as bandeiras e reproduzir as palavras enviadas.

Teoria

Na teoria da informação e na ciência da computação , um código é geralmente considerado como um algoritmo que representa exclusivamente símbolos de algum alfabeto de origem , por cadeias de caracteres codificadas , que podem estar em algum outro alfabeto de destino. Uma extensão do código para representar sequências de símbolos sobre o alfabeto de origem é obtida concatenando as sequências codificadas.

Antes de dar uma definição matematicamente precisa, este é um breve exemplo. O mapeamento

é um código, cujo alfabeto de origem é o conjunto e cujo alfabeto de destino é o conjunto . Usando a extensão do código, a sequência codificada 0011001 pode ser agrupada em palavras-código como 0 011 0 01, e estas, por sua vez, podem ser decodificadas para a sequência de símbolos de origem acab .

Usando termos da teoria da linguagem formal , a definição matemática precisa desse conceito é a seguinte: sejam S e T dois conjuntos finitos, chamados de alfabetos fonte e alvo , respectivamente. Um código é uma função total que mapeia cada símbolo de S para uma sequência de símbolos sobre T. A extensão de , é um homomorfismo de em , que mapeia naturalmente cada sequência de símbolos de origem para uma sequência de símbolos de destino.

Códigos de comprimento variável

Nesta seção, consideramos os códigos que codificam cada caractere de origem (texto não criptografado) por uma palavra-código de algum dicionário, e a concatenação dessas palavras-código nos dá uma string codificada. Os códigos de comprimento variável são especialmente úteis quando os caracteres de texto não criptografado têm probabilidades diferentes; veja também codificação de entropia .

Um código de prefixo é um código com a "propriedade de prefixo": não existe uma palavra de código válida no sistema que seja um prefixo (início) de qualquer outra palavra de código válida no conjunto. A codificação de Huffman é o algoritmo mais conhecido para derivar códigos de prefixo. Os códigos de prefixo são amplamente chamados de "códigos de Huffman", mesmo quando o código não foi produzido por um algoritmo de Huffman. Outros exemplos de códigos de prefixo são os códigos de chamada do país, as partes do país e do editor dos ISBNs e os códigos de sincronização secundários usados ​​no padrão sem fio UMTS WCDMA 3G.

A desigualdade de Kraft caracteriza os conjuntos de comprimentos de palavras-código que são possíveis em um código de prefixo. Praticamente qualquer código um-para-muitos decodificável com exclusividade, não necessariamente um prefixo, deve satisfazer a desigualdade de Kraft.

Códigos de correção de erros

Os códigos também podem ser usados ​​para representar os dados de uma forma mais resistente a erros de transmissão ou armazenamento. Este chamado código de correção de erros funciona incluindo redundância cuidadosamente elaborada com os dados armazenados (ou transmitidos). Exemplos incluem códigos de Hamming , Reed-Solomon , Reed-Muller , Walsh-Hadamard , Bose-Chaudhuri-Hochquenghem , turbo , de Golay , de Goppa , de baixa densidade códigos de verificação de paridade , e códigos de espaço-tempo . Os códigos de detecção de erros podem ser otimizados para detectar erros de explosão ou erros aleatórios .

Exemplos

Códigos de comunicação usados ​​para brevidade

Um código de cabo substitui palavras (por exemplo, navio ou fatura ) por palavras mais curtas, permitindo que a mesma informação seja enviada com menos caracteres , mais rapidamente e menos caro.

Os códigos podem ser usados ​​para abreviar. Quando as mensagens telegráficas eram o estado da arte em comunicação rápida de longa distância, sistemas elaborados de códigos comerciais que codificavam frases completas em bocas simples (geralmente grupos de cinco minutos) foram desenvolvidos, para que os telégrafos se familiarizassem com "palavras" como BYOXO ("Você está tentando escapar do nosso acordo?"), LIOUY ("Por que você não responde minha pergunta?"), BMULD ("Você é um gambá!") Ou AYYLU ("Não claramente codificado, repita mais claramente."). Palavras-código foram escolhidas por vários motivos: comprimento , pronunciável , etc. Os significados foram escolhidos para atender às necessidades percebidas: negociações comerciais, termos militares para códigos militares, termos diplomáticos para códigos diplomáticos, qualquer um e todos os anteriores para códigos de espionagem. Codebooks e editores de codebooks proliferaram, incluindo um dirigido como uma fachada para a American Black Chamber dirigida por Herbert Yardley entre a Primeira e a Segunda Guerras Mundiais. O objetivo da maioria desses códigos era economizar nos custos de cabos. O uso de codificação de dados para compressão de dados é anterior à era do computador; um dos primeiros exemplos é o código Morse do telégrafo , em que os caracteres usados ​​com mais frequência têm representações mais curtas. Técnicas como a codificação Huffman agora são usadas por algoritmos baseados em computador para compactar grandes arquivos de dados em uma forma mais compacta para armazenamento ou transmissão.

Codificações de caracteres

As codificações de caracteres são representações de dados textuais. Uma determinada codificação de caracteres pode ser associada a um conjunto de caracteres específico (a coleção de caracteres que ele pode representar), embora alguns conjuntos de caracteres tenham várias codificações de caracteres e vice-versa. As codificações de caracteres podem ser amplamente agrupadas de acordo com o número de bytes necessários para representar um único caractere: existem codificações de byte único, codificações multibyte (também chamadas de largura) e codificações de largura variável (também chamadas de comprimento variável). As primeiras codificações de caracteres eram de byte único, o exemplo mais conhecido é ASCII . ASCII continua em uso hoje, por exemplo, em cabeçalhos HTTP . No entanto, as codificações de byte único não podem modelar conjuntos de caracteres com mais de 256 caracteres. Scripts que requerem grandes conjuntos de caracteres, como chinês, japonês e coreano, devem ser representados com codificações multibyte. As primeiras codificações multibyte eram de comprimento fixo, o que significa que, embora cada caractere fosse representado por mais de um byte, todos os caracteres usavam o mesmo número de bytes ("comprimento de palavra"), tornando-os adequados para decodificação com uma tabela de pesquisa. O grupo final, codificações de largura variável, é um subconjunto de codificações multibyte. Eles usam codificação mais complexa e lógica de decodificação para representar com eficiência grandes conjuntos de caracteres, mantendo as representações de caracteres mais comumente usados ​​mais curtas ou mantendo as propriedades de compatibilidade com versões anteriores. Este grupo inclui UTF-8 , uma codificação do conjunto de caracteres Unicode ; UTF-8 é a codificação mais comum de mídia de texto na Internet.

Código genético

Os organismos biológicos contêm material genético que é usado para controlar sua função e desenvolvimento. Este é o DNA , que contém unidades denominadas genes dos quais o RNA mensageiro é derivado. Isso, por sua vez, produz proteínas por meio de um código genético no qual uma série de tripletos ( códons ) de quatro nucleotídeos possíveis podem ser traduzidos em um dos vinte aminoácidos possíveis . Uma sequência de códons resulta em uma sequência correspondente de aminoácidos que formam uma molécula de proteína; um tipo de códon denominado códon de parada sinaliza o fim da sequência.

Código Gödel

Em matemática , um código de Gödel foi a base para a prova do teorema da incompletude de Gödel . Aqui, a ideia era mapear a notação matemática para um número natural (usando uma numeração de Gödel ).

De outros

Existem códigos por cores, como os semáforos , o código de cores utilizado para marcar o valor nominal das resistências elétricas ou das lixeiras destinadas a tipos específicos de lixo (papel, vidro, orgânico, etc.).

Em marketing , os códigos de cupom podem ser usados ​​para um desconto financeiro ou abatimento ao comprar um produto de um varejista (comum na Internet).

Em ambientes militares, sons específicos com a corneta são usados ​​para diferentes usos: para marcar alguns momentos do dia, para comandar a infantaria no campo de batalha, etc.

Os sistemas de comunicação para deficiências sensoriais, como a linguagem de sinais para surdos e o braille para cegos, são baseados em movimentos ou códigos táteis.

Partituras musicais são a forma mais comum de codificar música .

Jogos específicos têm seus próprios sistemas de código para registrar as partidas, por exemplo, notação de xadrez .

Criptografia

Na história da criptografia , os códigos já foram comuns para garantir a confidencialidade das comunicações, embora agora sejam usadas cifras .

Códigos secretos com a intenção de obscurecer as mensagens reais, variando de sérios (principalmente espionagem militar, diplomacia, negócios, etc.) a triviais (romance, jogos) podem ser qualquer tipo de codificação imaginativa: flores , cartas de jogo, roupas, fãs, chapéus , melodias, pássaros, etc., em que o único requisito é o pré-acordo sobre o significado tanto do remetente quanto do destinatário.

Outros exemplos

Outros exemplos de codificação incluem:

Outros exemplos de decodificação incluem:

Códigos e siglas

Acrônimos e abreviações podem ser considerados códigos e, de certa forma, todas as linguagens e sistemas de escrita são códigos para o pensamento humano.

Os códigos de aeroporto da International Air Transport Association são códigos de três letras usados ​​para designar aeroportos e para etiquetas de bagagem . Os códigos de estação são usados ​​de forma semelhante em ferrovias, mas geralmente são nacionais, portanto, o mesmo código pode ser usado para estações diferentes se elas estiverem em países diferentes.

Ocasionalmente, uma palavra de código atinge uma existência independente (e significado) enquanto a frase equivalente original é esquecida ou pelo menos não tem mais o significado preciso atribuído à palavra de código. Por exemplo, '30' foi amplamente usado no jornalismo para significar "fim da história" e em outros contextos para significar "o fim".

Veja também

Referências