Código
Em comunicações e processamento de informações, 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 através de um canal de comunicação ou armazenamento em um meio de armazenamento. Um dos primeiros exemplos é a invenção da linguagem, que permitiu que uma pessoa, por meio da fala, comunicasse 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 é proferida. A invenção da escrita, que converteu a linguagem falada em símbolos visuais, ampliou o alcance da 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. Decodificação é o processo inverso, convertendo símbolos de código de volta em um formato 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 comum, falada ou escrita, é difícil ou impossível. Por exemplo, semáforo, onde a configuração das bandeiras mantidas por um sinalizador ou os braços de uma torre de semáforo codifica partes da mensagem, normalmente letras individuais e números. Outra pessoa que esteja 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 strings 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 fonte é obtida concatenando as strings codificadas.
Antes de dar uma definição matematicamente precisa, este é um breve exemplo. o mapeamento
- C= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =(um↦ ↦ 0,b)↦ ↦ 01:01,c↦ ↦ 011?{displaystyle C={,amapsto 0,bmapsto 01,cmapsto 011,}}
é um código, cujo alfabeto fonte é o conjunto (um,b),c?{displaystyle {a,b,c}} e cujo alfabeto alvo é o conjunto (0,1?{displaystyle {0,1}}. Usando a extensão do código, a cadeia codificada 0011001 pode ser agrupada em codewords como 0 011 0 01, e estes por sua vez podem ser decodificados para a sequência de símbolos de origem acab.
Usando termos da teoria da linguagem formal, a definição matemática precisa deste conceito é a seguinte: deixe S e T ser dois conjuntos finitos, chamados de alfabetos fonte e alvo, respectivamente. A código de código C:S→ → T∗ ∗ {displaystyle C:,Sto T^{*}} é uma função total mapeando cada símbolo de S para uma sequência de símbolos sobre T. O extensão C?Não. Sim. de CNão. C., é um homomorfismo de S∗ ∗ Não. S^{*}} para dentro T∗ ∗ Não. T^{*}}, que naturalmente mapeia 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 de código de algum dicionário, e a concatenação dessas palavras de código nos fornece 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; consulte também codificação de entropia.
Um código de prefixo é um código com a "propriedade de prefixo": não há nenhuma 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 referidos como "códigos 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ária usados no padrão sem fio UMTS WCDMA 3G.
A desigualdade de Kraft caracteriza os conjuntos de comprimentos de palavras de código que são possíveis em um código de prefixo. Praticamente qualquer código um-para-muitos decodificável exclusivamente, 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 dados de forma mais resistente a erros na transmissão ou armazenamento. Esse chamado código de correção de erros funciona incluindo redundância cuidadosamente elaborada com os dados armazenados (ou transmitidos). Os exemplos incluem códigos de Hamming, Reed-Solomon, Reed-Muller, Walsh-Hadamard, Bose-Chaudhuri-Hochquenghem, Turbo, Golay, Goppa, códigos de verificação de paridade de baixa densidade 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, envio ou fatura) por palavras mais curtas, permitindo que as mesmas informações sejam enviadas com menos caracteres, de forma mais rápida e econômica.
Os códigos podem ser usados para brevidade. Quando as mensagens telegráficas eram o estado da arte em comunicação rápida de longa distância, foram desenvolvidos sistemas elaborados de códigos comerciais que codificavam frases completas em bocas únicas (geralmente grupos de cinco minutos), de modo que os telégrafos se familiarizaram com essas "palavras". #34; 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."). As palavras de código foram escolhidas por vários motivos: comprimento, pronunciabilidade, 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, todo e qualquer um dos anteriores para códigos de espionagem. Codebooks e editores de codebooks proliferaram, incluindo um executado como uma fachada para a American Black Chamber dirigida por Herbert Yardley entre a Primeira e a Segunda Guerra Mundial. O objetivo da maioria desses códigos era economizar nos custos de cabo. O uso de codificação de dados para compactação de dados é anterior à era do computador; um exemplo inicial é o código Morse do telégrafo, no qual os caracteres usados com mais frequência têm representações mais curtas. Técnicas como a codificação de 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
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 ela 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 amplas) e codificações de largura variável (também chamadas de comprimento variável). As primeiras codificações de caracteres eram de byte único, cujo exemplo mais conhecido é o ASCII. ASCII permanece 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. Os 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 tinham 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 da 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 lógica de codificação e decodificação mais complexa para representar com eficiência grandes conjuntos de caracteres, mantendo as representações dos caracteres mais 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. Este, 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 pode ser traduzida 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 chamado stop códon sinaliza o fim da sequência.
Código Gödel
Na 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).
Outro
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.).
No marketing, os códigos de cupom podem ser usados para um desconto ou abatimento financeiro na compra de um produto de um varejista (usual da Internet).
Em ambientes militares, sons específicos com a corneta são utilizados 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 ex. notação de xadrez.
Criptografia
Na história da criptografia, os códigos já foram comuns para garantir a confidencialidade das comunicações, embora cifras sejam usadas agora.
Códigos secretos destinados a obscurecer as mensagens reais, variando de sério (principalmente espionagem militar, diplomacia, negócios, etc.) leques, chapéus, melodias, pássaros, etc., em que o único requisito é o pré-acordo de significado por parte do remetente e do destinatário.
Outros exemplos
Outros exemplos de codificação incluem:
- Codificando (em cognição) - um processo perceptual básico de interpretação de estímulos entrantes; tecnicamente falando, é um processo complexo, multi-estágio de conversão de entrada sensorial relativamente objetiva (por exemplo, luz, som) em uma experiência subjetivamente significativa.
- Um formato de conteúdo - um formato de codificação específico para converter um tipo específico de dados para informações.
- A codificação de texto usa uma linguagem de marcação para marcar a estrutura e outras características de um texto para facilitar o processamento por computadores. (Ver também iniciativa de codificação de texto.)
- Codificação semântica de linguagem formal Uma linguagem informal B é um método de representar todos os termos (por exemplo, programas ou descrições) da linguagem A usando a linguagem B.
- A compressão de dados transforma um sinal em um código otimizado para transmissão ou armazenamento, geralmente feito com um codec.
- Codificação neural - a forma como a informação é representada nos neurônios.
- Codificação de memória - o processo de conversão de sensações em memórias.
- Codificação de televisão: NTSC, PAL e SECAM
Outros exemplos de decodificação incluem:
- Decodificação (ciência de computador)
- Métodos de decodificação, métodos na teoria da comunicação para decodificar palavras-chave enviadas sobre um canal ruidoso
- Processamento de sinal digital, o estudo de sinais em uma representação digital e os métodos de processamento desses sinais
- Conversor digital para analógico, o uso de circuito analógico para operações decodificação
- Decodificação de palavras, o uso de fonética para decifrar padrões de impressão e traduzi-los nos sons da linguagem
Códigos e siglas
Acrônimos e abreviações podem ser considerados códigos e, de certo modo, todas as línguas 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 usados para etiquetas de bagagem. Os códigos de estação são usados de forma semelhante nas ferrovias, mas geralmente são nacionais, portanto, o mesmo código pode ser usado para diferentes estações se estiverem em países diferentes.
Ocasionalmente, uma palavra-código adquire 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-código. Por exemplo, '30' foi amplamente utilizado no jornalismo para significar "fim da história", e tem sido usado em outros contextos para significar "o fim".
Contenido relacionado
Foobar
Computador Atanasoff-Berry
Detecção e correção de erros
Código Baudot
Arquivo de computador