Kod - Code

W komunikacji i przetwarzania informacji , kod jest system zasad przekonwertować informacyjnego -such jak litery , słowa , dźwięku, obrazu, czy gest -into innej formie, czasami skróconej lub tajemnicy , do komunikacji poprzez kanał komunikacji lub przechowywania w pamięci średni . Wczesnym przykładem jest wynalezienie języka , który umożliwił osobie poprzez mowę komunikowanie innym tego, co myślała, widziała, słyszała lub czuła. Ale mowa ogranicza zasięg komunikacji do odległości, jaką głos może przenosić, i ogranicza słuchaczy do tych obecnych, gdy mowa jest wypowiadana. Wynalezienie pisma , które przekształciło język mówiony w symbole wizualne , rozszerzyło zakres komunikacji w czasie i przestrzeni .

Proces kodowania przekształca informacje ze źródła na symbole do komunikacji lub przechowywania. Dekodowanie to proces odwrotny, polegający na konwersji symboli kodu z powrotem do postaci zrozumiałej dla odbiorcy, takiej jak angielski lub/i hiszpański.

Jednym z powodów kodowania jest umożliwienie komunikacji w miejscach, w których zwykły prosty język , mówiony lub pisany, jest trudny lub niemożliwy. Na przykład semafor , gdzie konfiguracja flag trzymanych przez sygnalistę lub ramiona wieży semaforowej koduje części wiadomości, zazwyczaj pojedyncze litery i cyfry. Inna osoba stojąca w dużej odległości może zinterpretować flagi i odtworzyć wysłane słowa.

Teoria

W teorii informacji i informatyce kod jest zwykle uważany za algorytm, który jednoznacznie reprezentuje symbole z jakiegoś alfabetu źródłowego za pomocą zakodowanych ciągów znaków, które mogą znajdować się w innym alfabecie docelowym. Rozszerzenie kodu do reprezentowania sekwencji symboli w alfabecie źródłowym uzyskuje się przez łączenie zakodowanych ciągów.

Oto krótki przykład, zanim podamy matematycznie dokładną definicję. Mapowanie

jest kodem, którego alfabetem źródłowym jest zestaw, a alfabetem docelowym jest zestaw . Używając rozszerzenia kodu, zakodowany ciąg znaków 0011001 może być pogrupowany w słowa kodowe jako 0 011 0 01, a te z kolei mogą być dekodowane do sekwencji symboli źródłowych acab .

Używając terminów z teorii języka formalnego , dokładna matematyczna definicja tego pojęcia jest następująca: niech S i T będą dwoma skończonymi zbiorami, zwanymi odpowiednio alfabetem źródłowym i docelowym . Kod jest całkowita funkcja mapowania każdego symbolu z S do sekwencji symboli przez T. przedłużenie o , to homomorfizm od się , co oczywiście odwzorowuje każdy ciąg symboli źródłowych sekwencji symboli docelowych.

Kody o zmiennej długości

W tej sekcji rozważymy kody, które kodują każdy znak źródłowy (czysty tekst) za pomocą słowa kodowego z jakiegoś słownika, a konkatenacja takich słów kodowych daje nam zakodowany ciąg. Kody o zmiennej długości są szczególnie przydatne, gdy znaki zwykłego tekstu mają różne prawdopodobieństwa; zobacz także kodowanie entropii .

Kod prefiks jest kod z przedrostkiem „własności”: nie ma ważnego słowa kodu w systemie, który jest prefiks (start) z innego ważnego słowa kodu w zestawie. Kodowanie Huffmana jest najbardziej znanym algorytmem wyprowadzania kodów prefiksowych. Kody przedrostkowe są powszechnie nazywane „kodami Huffmana”, nawet jeśli kod nie został wyprodukowany przez algorytm Huffmana. Inne przykłady kodów prefiksów to kody krajów , numery ISBN dotyczące kraju i wydawcy oraz drugorzędne kody synchronizacji używane w standardzie bezprzewodowym UMTS WCDMA 3G.

Nierówność Krafta charakteryzuje zbiory długości słowa kodowego, które są możliwe w kodzie przedrostkowym. Praktycznie każdy jednoznacznie dekodowany kod jeden-do-wielu, niekoniecznie z przedrostkiem, musi spełniać nierówność Krafta.

Kody korekcji błędów

Kody mogą być również wykorzystywane do reprezentowania danych w sposób bardziej odporny na błędy w transmisji lub przechowywaniu. Ten tak zwany kod korygujący błędy działa poprzez uwzględnienie starannie spreparowanej redundancji w przechowywanych (lub przesyłanych) danych. Przykłady obejmują kody Hamminga , Reeda-Solomona , Reeda-Mullera , Walsha-Hadamarda , Bose-Chaudhuri-Hochquenghem , Turbo , Golaya , Goppa , niskiej gęstości kody parzystości wyboru i kody czasoprzestrzenne . Kody wykrywania błędów można zoptymalizować w celu wykrywania błędów seryjnych lub błędów losowych .

Przykłady

Kody w komunikacji używane do zwięzłości

Kod kabla zastępuje słowa (np. wysyłka lub faktura ) krótszymi słowami, dzięki czemu te same informacje mogą być przesyłane mniejszą liczbą znaków , szybciej i taniej.

Kody mogą służyć do zwięzłości. Kiedy wiadomości telegraficzne były najnowocześniejsze w szybkiej komunikacji na duże odległości, opracowano skomplikowane systemy kodów handlowych, które kodowały całe frazy w pojedyncze usta (zwykle pięciominutowe grupy), tak aby telegrafowie zaznajomili się z takimi „słowami”, jak BYOXO („Próbujesz wykręcić się z naszej umowy?”), LIOUY („Dlaczego nie odpowiadasz na moje pytanie?”), BMULD („Jesteś skunksem !”) lub AYYLU („Nie jest wyraźnie zakodowane, powtórz jaśniej."). Słowa kodowe zostały wybrane z różnych powodów: długość , wymawialność itp. Znaczenia zostały dobrane tak, aby odpowiadały postrzeganym potrzebom: negocjacje handlowe, warunki wojskowe dla kodeksów wojskowych, warunki dyplomatyczne dla kodeksów dyplomatycznych, wszystkie powyższe dla kodeksów szpiegowskich. Mnożyły się książki kodowe i ich wydawcy, w tym jeden prowadzony jako przykrywka dla Amerykańskiej Czarnej Izby prowadzonej przez Herberta Yardleya między pierwszą a drugą wojną światową. Celem większości tych kodów było zaoszczędzenie na kosztach kabli. Stosowanie kodowania danych do kompresji danych poprzedza erę komputerów; wczesnym przykładem jest telegraficzny kod Morse'a, w którym częściej używane znaki mają krótszą reprezentację. Techniki, takie jak kodowanie Huffmana, są obecnie wykorzystywane przez algorytmy komputerowe do kompresji dużych plików danych w bardziej zwartą formę do przechowywania lub przesyłania.

Kodowanie znaków

Kodowania znaków to reprezentacje danych tekstowych. Dane kodowanie znaków może być powiązane z określonym zestawem znaków (zbiorem znaków, który może reprezentować), chociaż niektóre zestawy znaków mają wiele kodowań znaków i na odwrót. Kodowania znaków mogą być szeroko pogrupowane według liczby bajtów wymaganych do reprezentowania pojedynczego znaku: istnieją kodowania jednobajtowe, wielobajtowe (zwane również szerokimi) i kodowania o zmiennej szerokości (zwane również kodowaniami o zmiennej długości). Najwcześniejsze kodowania znaków były jednobajtowe, czego najbardziej znanym przykładem jest ASCII . ASCII pozostaje w użyciu do dziś, na przykład w nagłówkach HTTP . Jednak kodowania jednobajtowe nie mogą modelować zestawów znaków zawierających więcej niż 256 znaków. Skrypty wymagające dużych zestawów znaków, takich jak chiński, japoński i koreański, muszą być reprezentowane za pomocą kodowania wielobajtowego. Wczesne kodowania wielobajtowe miały stałą długość, co oznacza, że ​​chociaż każdy znak był reprezentowany przez więcej niż jeden bajt, wszystkie znaki używały tej samej liczby bajtów („długość słowa”), dzięki czemu nadają się do dekodowania za pomocą tabeli wyszukiwania. Ostatnia grupa, kodowania o zmiennej szerokości, jest podzbiorem kodowań wielobajtowych. Używają one bardziej złożonej logiki kodowania i dekodowania, aby wydajnie reprezentować duże zestawy znaków, zachowując jednocześnie krótsze reprezentacje częściej używanych znaków lub zachowując właściwości zgodności wstecznej. Ta grupa obejmuje UTF-8 , kodowanie zestawu znaków Unicode ; UTF-8 to najpowszechniejsze kodowanie mediów tekstowych w Internecie.

Kod genetyczny

Organizmy biologiczne zawierają materiał genetyczny, który służy do kontrolowania ich funkcji i rozwoju. Jest to DNA , który zawiera jednostki nazwane genami, z których pochodzi informacyjne RNA . To z kolei wytwarza białka poprzez kod genetyczny, w którym serie trypletów ( kodonów ) czterech możliwych nukleotydów mogą zostać przetłumaczone na jeden z dwudziestu możliwych aminokwasów . Sekwencja kodonów daje odpowiednią sekwencję aminokwasów, które tworzą cząsteczkę białka; rodzaj kodonu zwany kodonem stop sygnalizuje koniec sekwencji.

Kod Gödla

W matematyce , wykorzystując kod Gödel był podstawą dowód Gödla jest niezupełności twierdzenia . Tutaj pomysł polegał na odwzorowaniu notacji matematycznej na liczbę naturalną (przy użyciu numeracji Gödla ).

Inne

Istnieją kody wykorzystujące kolory, takie jak sygnalizacja świetlna , kod koloru używany do oznaczenia nominalnej wartości rezystorów elektrycznych lub koszy na śmieci przeznaczonych do określonych rodzajów śmieci (papierowych, szklanych, organicznych itp.).

W marketingu , kupon kody mogą być wykorzystywane do dyskonta finansowego lub ulgi przy zakupie produktu z Internetu (zwykle) sprzedawcy.

W środowiskach wojskowych specyficzne dźwięki z kornetem są używane do różnych zastosowań: do zaznaczania niektórych momentów dnia, do dowodzenia piechotą na polu bitwy itp.

Systemy komunikacji dla upośledzeń sensorycznych, takie jak język migowy dla osób niesłyszących i Braille dla osób niewidomych, opierają się na kodach ruchowych lub dotykowych.

Partytury muzyczne to najczęstszy sposób kodowania muzyki .

Poszczególne partie mają własne systemy kodowania do zapisywania meczów, np . notacja szachowa .

Kryptografia

W historii kryptografii , kody były kiedyś wspólne dla zapewnienia poufności komunikacji, choć szyfry są obecnie używane zamiast.

Tajne kody mające na celu ukrycie prawdziwych wiadomości, od poważnych (głównie szpiegostwo w wojsku, dyplomacji, biznesie itp.) po trywialne (romansy, gry) mogą być wszelkiego rodzaju wymyślnym kodowaniem: kwiaty , karty do gry, ubrania, wachlarze, czapki , melodie, ptaki itp., w których jedynym wymogiem jest wstępne uzgodnienie znaczenia zarówno przez nadawcę, jak i odbiorcę.

Inne przykłady

Inne przykłady kodowania obejmują:

Inne przykłady dekodowania obejmują:

Kody i akronimy

Akronimy i skróty można uznać za kody, aw pewnym sensie wszystkie języki i systemy pisma są kodami ludzkiej myśli.

Kody lotnisk Międzynarodowego Zrzeszenia Przewoźników Powietrznych to trzyliterowe kody używane do oznaczania lotnisk i używane do etykiet bagażowych . Kody stacji są podobnie używane na kolei, ale zwykle są krajowe, więc ten sam kod może być używany dla różnych stacji, jeśli znajdują się one w różnych krajach.

Czasami słowo kodowe osiąga niezależne istnienie (i znaczenie), podczas gdy pierwotna równoważna fraza zostaje zapomniana lub przynajmniej nie ma już dokładnego znaczenia przypisanego słowu kodowemu. Na przykład „30” było powszechnie używane w dziennikarstwie jako „koniec historii” i było używane w innych kontekstach jako „koniec”.

Zobacz też

Bibliografia