所謂語言即是用來建立溝通的橋梁,想像這樣一種情形,你臨危受命去接待來自日本的同學(xué),但直到見到人后你才想起來一個重要的問題虫埂,你不會日語而對方不懂中文。萬幸的是你發(fā)現(xiàn)這位同學(xué)可以說一點(diǎn)英語圃验,所以為了交流方便你只好硬著頭皮用自己不太流利的英語去和對方溝通掉伏,反正對于初學(xué)者來說即使對方說錯了也會先懷疑自己。澳窑。斧散。
無論是c或者python這類編程語言做的無非是這樣一件事,在機(jī)器和人類之間充當(dāng)中介語言摊聋,來方便使用者對機(jī)器下達(dá)命令(當(dāng)然具體說起來lisp和匯編語言相比誰更難理解也是不太好說的鸡捐。。麻裁。不過在我看來匯編語言也只不過是一種中介語言闯参,要比就拿機(jī)器語言和lisp比)。
機(jī)器所使用的官方語言是機(jī)器語言悲立,它是一串純粹由0和1構(gòu)成的字符串,每一位都代表著電路上的高電壓或者低電壓新博,控制著元件的啟動或者是關(guān)閉薪夕。細(xì)說起來很有趣,但這里就不在贅言了赫悄。
這樣的語言對于人類來說想要讀懂還是有一些難度的原献,無論斷句還是識字都十分的困難馏慨。何況對于不同的芯片來說,由于組成電路的不同姑隅,即使同樣的add操作写隶,也對應(yīng)著完全不同的機(jī)器指令。你能想象你學(xué)完了一門語言(雖然我覺得這根本不可能讲仰。慕趴。。)后面對不同的人還得學(xué)習(xí)不同的方言么鄙陡?
為了方便理解冕房,我們選擇出來一些(幾乎所有)操作并給他們加以命名,就好象這樣:
看起來似乎還是有些難以理解趁矾,但是已經(jīng)比滿屏的0耙册,1好多了吧?而當(dāng)電腦想要執(zhí)行這些命令的時候毫捣,只需要把它們翻譯成機(jī)器語言就好了详拙。當(dāng)然這個翻譯的過程對于人類而言還是比較痛苦的,但是當(dāng)有了一臺擁有了“翻譯功能”的電腦時蔓同,這些工作也就變得簡單起來饶辙。
但是匯編語言還是有些困難,這里面存在著大量對具體寄存器和內(nèi)存的調(diào)用牌柄,為了方便人類表述自己的想法畸悬,不讓有天份(而且懶惰)的人們苦惱于具體某一部分硬件的使用,一些人決定把這些具體分配什么樣的硬件這樣的工作交給“翻譯”來分辨珊佣,而我們就只需要使用“翻譯”給我們的標(biāo)準(zhǔn)指令來規(guī)劃我們的想法蹋宦,而這些標(biāo)準(zhǔn)指令就是我們所面對的編程語言了。處于更高層次的人使用下層傳遞上來的接口完成自己想要的操作咒锻,而不需要知道下層是如何執(zhí)行的冷冗,這或許就是計(jì)算機(jī)發(fā)展如此迅速的原因么?
那么從下次開始惑艇,我將嘗試簡述一下如何去編程蒿辙。
PS:基于視角和經(jīng)驗(yàn)所限,筆者所言可能有很多錯誤滨巴,還望多多包涵思灌,歡迎指證。