編碼(Encoding, coding, ...)
將信息由一種形式轉(zhuǎn)變成另一種形式的過程在刺。
寫了這么久的程序,一直以來都是關(guān)注某個具體的技術(shù)椿浓、算法等充择,從來沒有認(rèn)真考慮過編碼這個活動本身。
記得最早接觸編碼展哭,是小時候看二戰(zhàn)的片子湃窍,里面經(jīng)常提及一個詞“莫爾斯碼”。那時也不懂這些摄杂,只是覺得這玩意應(yīng)該很難坝咐,不是一般人能hold住的。
接下來就是玩學(xué)習(xí)機(jī)的時候析恢,機(jī)器包裝上赫然寫著“支持XX碼” ...
之后墨坚,在上大學(xué)之前,就再沒有遇到過“編碼”相關(guān)的信息了(其實(shí)考試用的答題卡也算是編碼活動的一部分)映挂。
編碼的誕生
我沒有去考證最早的編碼活動起源于何時泽篮,因?yàn)槿祟惖暮芏嗷顒?比如,在草繩上面打結(jié)用以計(jì)數(shù))都能算作編碼柑船。
古時候帽撑,人們交流是不需要作什么處理的。
近距離的時候鞍时,可以直接對話亏拉;(語音的方式)
稍遠(yuǎn)的時候可能托人帶個口信;(語音的方式)
再者逆巍,可以寫封密函八百里加急及塘。(文字的方式)
這些都可以將信息從一方傳遞給另一方。
但是后來锐极,人們遇到了一些特殊情況笙僚,比如戰(zhàn)爭。這時候采用以前的做法灵再,直接寫信或者帶口信的作法會由很大的風(fēng)險肋层。于是亿笤,“暗號”,“口令”之類的加密技術(shù)也應(yīng)運(yùn)而生栋猖。
除了發(fā)電報之外净薛,大部分人能夠接受的例子就是旗語。
旗艦上通過揮舞旗幟來傳遞指令給別的艦船掂铐,不同的動作代表不同的含義罕拂。這期間,人們將指令轉(zhuǎn)換成揮舞旗幟的動作序列全陨,這是個很典型的編碼活動爆班。之所以要使用旗語,是因?yàn)槟莻€時候辱姨,船只之間的交流不可能隨時使用語言對話的方式柿菩。而且,同一個艦隊(duì)可以使用旗語傳遞敵人所不解的信息雨涛,因?yàn)閿橙瞬恢涝撆炾?duì)的旗語規(guī)范("編碼方式")枢舶。
所以,旗語這種適合船只溝通的「編碼」方式替久,在很長一段時間內(nèi)被廣泛采用凉泄。
還有一個例子,就是我們碼農(nóng)寫代碼這個活動蚯根。
通俗一點(diǎn)地講后众,碼農(nóng)們需要根據(jù)編碼規(guī)范,編寫正確的代碼颅拦,然后經(jīng)由「翻譯員」---編譯器(以及它的一些黃金搭檔蒂誉、好基友)將代碼翻譯成機(jī)器能夠「理解」的內(nèi)容,機(jī)器在收到這些處理過的信息之后便可以按照既定設(shè)計(jì)去完成信息里所描述的操作距帅。
寫代碼這個活動右锨,可以看成碼農(nóng)和機(jī)器的交流!
因?yàn)樾畔鬟f方和接收方對于信息的傳遞形式和接收形式都是有所約束的碌秸。機(jī)器只能識別一系列的電信號绍移,而人類更愿意使用“書面”等易于人類理解和表達(dá)的形式傳遞信息。所以讥电,計(jì)算機(jī)科學(xué)家們便發(fā)明了代碼登夫、機(jī)器碼以及編譯器、鏈接器等一系列的編碼規(guī)范和工具來促進(jìn)人和機(jī)器的“交流”允趟。
從前面的例子里我們應(yīng)該可以得出一個初步的結(jié)論,編碼的出現(xiàn)鸦致,是因?yàn)槿藗兂鲇诜N種原因潮剪,需要對信息進(jìn)行形式轉(zhuǎn)換來傳遞所進(jìn)行的發(fā)明涣楷。
我覺得《信息論》作者香農(nóng)對于通信的定義是比較準(zhǔn)確和值得借鑒的。他說抗碰,通信就是信息的再現(xiàn)狮斗。這里,我們可以延伸一下弧蝇。再現(xiàn)的形式不一定是信息最初始的形式碳褒,而是目標(biāo)能夠理解的形式。這個理解同樣適用于編碼看疗,這個與通信關(guān)聯(lián)緊密的活動沙峻。
(以上,待續(xù) ...)
「推薦閱讀」
參見本專題的推薦閱讀專欄文章