Kód (informatika)
Ehhez a szócikkhez további forrásmegjelölések, lábjegyzetek szükségesek az ellenőrizhetőség érdekében. Emiatt nem tudjuk közvetlenül ellenőrizni, hogy a szócikkben szereplő állítások helytállóak-e. Segíts a szócikk fejlesztésében további megbízható források hozzáadásával. |
A kommunikációban kód alatt egy transzformációt értünk, ami információk bizonyos egységét (például egy betű, szó, vagy kifejezés) átalakít más formába vagy megjelenésbe, nem szükségszerűen azonos típusúba. A kommunikációban és az információ feldolgozásban a kódolás egy eljárás amit egy forrás objektumon végrehajtva az információt adattá alakítja, amelyet aztán elküld a vevőnek, vagy egy adatfeldolgozó rendszernek. Dekódolás a kódolt adat visszaállítási eljárása, a forrás által elküldött adatot a vevő számára értelmezhető információvá alakítja. (lásd: dekódolási módszerek) Egy codec egy bizonyos transzformáció (vagy algoritmus) tényleges megvalósítása, kódolásra és dekódolásra, például MP3, amelyet hardveres vagy szoftver úton is megvalósíthatnak, és ami tartalmazhat adattömörítést is.
A kommunikációban a kódolás egyik oka, hogy megengedi azt, amit a helyesen és szabályszerűen leírt és/vagy beszélt nyelv nem: hogy bizonyos szavakat (például hajó vagy számla) rövidebb szavakkal helyettesít, így ugyanazt a szöveget kevesebb karakterrel, gyorsabban, és ami a legfontosabb, olcsóbban továbbítható. Másik példa a zászlójelek, ahol a zászló és annak állása kódolja az üzenetet, amit a messze álló személy képes értelmezni.
A rejtjelezésben a különböző kódok biztosították (relatív olcsó megoldással) a kommunikáció titkosságát és sérthetetlenségét.
Példák
- A számítógépen használt kódolások, például az ASCII, a Latin-1, a Latin-2, vagy az UTF-8
- Gépi kód, ami bináris alakban tárolja az utasításokat és az adatokat. A különféle programnyelvek utasításai ezt a gépi kódot kódolják tovább. A gépi kóddal az adott nyelv fordítói teremtik meg a kapcsolatot
- Leírónyelvek, mint a HTML vagy a LaTex
- Nyelvi kód, a beszélt, jelelt és írott nyelvek szintén kódok. A nyelvi kódot egyes esetekben továbbkódolják a szlengben és a szociolektusokban
- Genetikai kód, ami az élőlények felépítéséhez szükséges információkat kódolja
- Neurális kód, az idegsejtek által kódolt információ kódja
- Memóriakód, a memóriában tárolt adatok kódja
- A repülésben használt IATA és ICAO kódok
- Geek-kód, amiben a betűk egy részét hozzájuk hasonló számjegyekre cserélik
- Titkos kódok, amik elrejtik az információt
- A szabványos ISBN (könyvek), ISSN (újságok és folyóiratok), EAN és a személyi szám hibajelző kódok
- Egyezményes kódok, mint a zászlójelek, a morzekód, a Braille-írás, a daktil vagy a fonomimikai jelek
- A kódelméletben használt forráskód és csatornakód
- A televíziózásban használt NTSC, PAL és SECAM kódok
- Hangjegyek
- Sakk játékleírás
- Mozgásformákat leíró notációk, például balett-táncot.
- Közlekedési jelzőfények, elektromos ellenállások színkódjai, szelektív szemétgyűjtők jelölése
Redundancia
A kódok tartalmazhatnak olyan részeket is, amelyek az információt többszörösen kódolják. Az ilyen kódokat redundánsnak nevezzük. Redundáns kódok a nyelvek és a hibajelző, hibajavító kódok. A redundáns kód segíti a hibák felismerését, és hogy az információ egy része hiba esetén is visszanyerhető legyen.
A redundáns kódok veszteségmentesen tömöríthetők, így kevesebb helyet igényelnek. A nyelvi kódokban ilyen tömörítésnek tekinthetők a betűszavak és rövidítések. Gyakorlatilag minden nyelvben és írásrendszerben használatosak is. Néha a kódszó annyira beépül egy nyelvbe és megtartja jelentését, hogy az eredeti hosszú kifejezést vagy teljesen elfelejtik, vagy a kódszó jelentése sokkal pontosabb (gondoljunk a mozi szavunkra, amely eredetileg a mozgókép-színház rövidítésére szolgált).
Matematikailag kidolgozott kódok
A kódok többféle célt szolgálnak. Vannak kódok, melyek tömörítenek, vannak, amik a hibák felderítését és javítását segítik, és vannak rejtjelező kódok.
Tömörséget biztosító kódok
Amikor a távíró összeköttetés jelentette az egyetlen, gyors, nagytávolságú kommunikációt, kereskedelmi célokra kidolgozott kódok tették lehetővé, hogy akár mondatokat is néhány karakteres üzenetté kódoljanak (többnyire öt betűs kódszavak használatával). Kidolgoztak "kereskedelmi rövidítéseket", amelyekkel az üzenetek hossza és költsége nagymértékben lecsökkent, cserébe viszont megértésükhöz pontosan ismerni kellett a speciális kódszavakat. A különféle kódszavak kiválasztásánál a rövidség, a kiejthetőség illetve egyéb szempontok döntöttek. A jelentésük pedig az alkalmazott területtől függtek: kereskedelmi tárgyalások, katonai kifejezések, diplomáciai fázisok, és nem utolsósorban kémüzenetek. Sok ilyen kódkönyv nyilvános volt, így inkább a tömörítést szolgálta.
Ma már többféle matematikai módszerrel gyártanak tömörítést szolgáló kódokat. Ilyenek a kódfával készülő Shannon-Fano kódok, a szakaszfelezéssel alkotott Gilbert-Moore kódok és az optimális, maximális tömörséget nyújtó Huffman-kód, bár a másik két módszerrel készülők sem sokkal maradnak el tőle. Közös tulajdonságuk, hogy prefixmentesek, vagyis a kódszavak nem kezdőszeletei más kódszavaknak. A modern számítógépes tömörítési eljárások ilyen kódokat használnak.
Hibajelző és/vagy hibajavító kódok
A különféle kódok felhasználhatók arra, hogy adatok védelmét növeljék átvitel vagy tárolás közben előálló sérülés ellen.
Ezeket a "kódokat" nevezik hibafelismerő és javító kódoknak, és általában valamilyen redundáns információ hozzáadásával működnek.
Ilyen kódok a Hamming kódok, a Reed–Solomon, a Reed–Müller, Bose–Chaudhuri–Hochquenghem kódok, a Turbo, Golay, Goppa, Gallager féle alacsony-sűrűségű paritás ellenőrző kódok, és a tér–idő kódok.
A hibaellenőrző kódokat gyakran a véletlen hibák, vagy a csomósodó hibák felismerésére (és javítására) optimalizálják. A csomósodó hibák azt jelentik, hogy például egy kódszón vagy kódolt blokkon belül több bit sérül, azaz vagy nem lehet megmondani, hogy 0 vagy 1 értékű., vagy 0 1-re és fordítva változik.
Titkosítást szolgáló kódok
A titkosírások egyidősek az írott történelemmel, mivel mindig is volt, amit el kellett rejteni az avatatlanok szeme elől. Sok különféle kódot alkottak a múltban, így eltolásos, vagy általában affin kódokat, betűkeverést vagy betűcserét használó kódokat. Voltak kódok, melyekben számok helyettesítették a betűket, és voltak, amikben több betű helyettesített egyet. Készítettek olyan kódokat is, melyekben az egyes betűket periodikusan változó módon kódolták. Egyes kódokban bizonyos szavakat más kifejezésekkel helyettesítettek, így szőtték be őket a beszédbe vagy az írott szövegekbe. A betűgyakoriság kiegyensúlyozására a betűknél bővebb jelábécét használtak, amiben a gyakoribb betűknek több különböző jel felelt meg. A még ma is használt háromszoros DES és DEA is keverésen és a betűjelek egymásba való átalakítását használja.
A 19. századtól különféle kódkönyvek születtek – nyilvánosak is – és a módszert a két világháború között a katonaság és hírszerzés alkalmazta is, természetesen nem nyilvános kódkönyvekkel…
Ezeket a kódokat több okból is alkalmazták: helytakarékosság, titkosítás (megelőzve azzel a mai számítógépes adattömörítési eljárásokat). A betűkeverésen és betűcserén alapuló kódokat a második világháborúban is használták. A németek Enigma gépe is ezt a célt szolgálta.
Ma ismertek nyilvános kulcsú titkosírások is. Az üzeneteket bárki rejtjelezheti a kulcs nyilvános részével, de elolvasni csak a titkos kulcs birtokában lehet. Hasonló módszert használnak az elektronikus aláíráshoz is. Ilyen módszerek például az RSA és az elliptikus kódok, de vannak rácsokon alapuló kódok is.
Gödel-kód
A matematikában, egy Gödel-kód volt az alapja a Gödel-féle nemteljességi tétel bizonyításának. Az volt az kiindulási alap, hogy egy matematikai jelölést le lehet képezni egy természetes számra (ez a Gödel-szám).
Az ASCII kód
A kommunikáció területén valószínűleg a legelterjedtebb kommunikációs kód ma az ASCII kód. Ezt, vagy egy kompatibilis változatát használja a legtöbb PC, számítógép, terminál és nyomtató és kommunikációs eszköz. Az eredeti változat 128 karakter hét bites bináris számként való megjelenítésére szolgált. ASCII-ben az "a" mindig 1100001, és az "A" mindig 1000001, és így tovább. Az ASCII következő változata már 8-biten ábrázolta a karaktereket (az európai nyelvek betűi és néhány kártyaszín ), továbbfejlesztései már kiterjedtek a világ írásrendszereiben használt különféle glifákra is (lásd: Unicode).
Források
- Wilfried Dankmeier: Grundkurs Codierung. Verschlüsselung, Kompression, Fehlerbeseitigung. 3. überarbeitete und erweiterte Auflage. Vieweg, Wiesbaden 2006, ISBN 3-528-25399-1.
- Ralph-Hardo Schulz: Codierungstheorie. Eine Einführung. 2. aktualisierte und erweiterte Auflage. Vieweg Verlag, Wiesbaden 2003, ISBN 3-528-16419-0.