請(qǐng)記住本站域名:
黃金屋
超腦黑客 第六十章 就這么簡(jiǎn)單
大概是在LUS十一歲的時(shí)候,他的外公終于抱回來(lái)第一臺(tái)計(jì)算機(jī),名稱為VIC-20。這臺(tái)計(jì)算機(jī)就是LUS接觸的第一臺(tái)真正意義上的計(jì)算機(jī),他之后就完全沉迷在這個(gè)神奇的世界中。
VIC-20是最早的家用計(jì)算機(jī)之一,只有一個(gè)小盒子作為主機(jī),需要連接上電視機(jī)作為顯示器。LUS的外公只是將其作為一個(gè)升級(jí)版的計(jì)算器,而事實(shí)上這臺(tái)計(jì)算機(jī)的功能也并不是很強(qiáng)大,但是這臺(tái)計(jì)算機(jī)對(duì)于LUS來(lái)說(shuō),卻有著非常重要的意義。
VIC-20雖然很簡(jiǎn)單,但是卻可以使用BASIC語(yǔ)言編寫程序,而這成為了LUS之后最大的樂(lè)趣。
BASIC語(yǔ)言是一種相對(duì)來(lái)說(shuō)比較簡(jiǎn)單的高級(jí)編程語(yǔ)言,最適合初學(xué)者學(xué)習(xí)使用。
LUS至今還對(duì)他的第一個(gè)電腦程序印象非常深刻,那是不斷循環(huán)在顯示器上打印“HELLO(你好)”的小程序,是他按照編程手冊(cè)上的范例而輸入到BASIC編程器里面的,很簡(jiǎn)單,只有兩行代碼。第一行代碼就是告訴計(jì)算機(jī)“打印HELLO”,第二行代碼則讓它跳轉(zhuǎn)到第一行。
通常情況下,計(jì)算機(jī)執(zhí)行程序的時(shí)候,是從前到后按順序執(zhí)行的,但是如果人為地指定了跳轉(zhuǎn)的話,他就會(huì)乖乖地調(diào)到你指定的地方重新開(kāi)始執(zhí)行。
所以,LUS編寫的第一個(gè)程序就是不斷的在顯示器上打印“HELLO”,后來(lái)他妹妹看到之后,就讓他將這個(gè)程序進(jìn)行了修改,將第一行打印的內(nèi)容改成了“薩拉是世界上最棒的!”。
LUS很快就將BASIC語(yǔ)言用得很熟練了,他可以使用這種編程語(yǔ)言來(lái)幫助外公來(lái)解決一些比較復(fù)雜的計(jì)算問(wèn)題,他成為了外公的得力助手。這個(gè)時(shí)候,他才深切的體會(huì)到,計(jì)算機(jī)編程對(duì)自己生活的改變。
從那以后,他用BASIC語(yǔ)言編寫了好多程序,大多數(shù)都是一次性的,寫完之后刪掉又重來(lái)。他將自己各種各樣的奇思妙想都用編程實(shí)現(xiàn)出來(lái),他享受到了無(wú)線電之外的樂(lè)趣。并且他開(kāi)始嘗試著將計(jì)算機(jī)和他的無(wú)線電臺(tái)聯(lián)系起來(lái)。畢竟都是電子產(chǎn)品,兩者之間還是有著一些聯(lián)系的,他將自己的零花錢省下來(lái),購(gòu)買了一些數(shù)據(jù)線和轉(zhuǎn)換接口,將計(jì)算機(jī)和自己的電臺(tái)連接起來(lái)。并且開(kāi)始嘗試使用BASIC語(yǔ)言編寫一個(gè)程序,想用這個(gè)程序完成英文字符和摩斯電碼之間的相互轉(zhuǎn)換。
也就是說(shuō)只要將需要發(fā)送的文字內(nèi)容輸入進(jìn)去,這個(gè)程序就會(huì)自動(dòng)將這些字符轉(zhuǎn)化為摩“嘀嗒”模式的摩斯電碼,然后通過(guò)連接在計(jì)算機(jī)上的電纜線傳遞給發(fā)報(bào)機(jī),從而將信號(hào)發(fā)送出去。
這是一個(gè)非常實(shí)用的程序,有了這個(gè),大大簡(jiǎn)化了他和別人進(jìn)行通聯(lián)的效率,將自己電鍵按鈕中解放出來(lái)。
花了大概一個(gè)月的時(shí)間,他的程序的確是編寫好了,英文字符可以順利轉(zhuǎn)換為“嘀嗒”信號(hào),但是他遇到了一個(gè)比較頭疼的難題,他不知道如何將這些信號(hào)通過(guò)數(shù)據(jù)線傳遞給發(fā)報(bào)機(jī)。
這需要搞清楚數(shù)據(jù)傳輸?shù)牡讓釉恚荁ASIC語(yǔ)言在這一塊卻根本沒(méi)有這方面的內(nèi)容。
他花了大量的時(shí)間來(lái)研究這個(gè)問(wèn)題,但是卻一直沒(méi)有頭緒。直到有一天,他從一位業(yè)余無(wú)線電朋友那里得到了這樣一個(gè)程序。
這個(gè)程序的功能和LUS之前構(gòu)想的功能是一樣的,而且可以正常工作,順利將CW等幅報(bào)發(fā)送出去。對(duì)LUS來(lái)說(shuō),最重要的并不是這個(gè)程序的功能,而是編寫這個(gè)程序的語(yǔ)言。
在此之前,他一直以為計(jì)算機(jī)編程就是BASIC編程,以為計(jì)算機(jī)里面有且只有BASIC一種編程語(yǔ)言。對(duì)于計(jì)算機(jī)底層到底如何工作,他并沒(méi)有一個(gè)非常清晰的理解。
而這小程序向他打開(kāi)了計(jì)算機(jī)底層原理的大門。
那個(gè)火腿朋友不但將編譯好的程序給了他,與之附帶的還有這個(gè)小程序的源代碼。
LUS驚訝地發(fā)現(xiàn),這個(gè)程序并不是由BASIC語(yǔ)言編寫的,而是一些奇怪的數(shù)字,剛開(kāi)始的時(shí)候他一點(diǎn)兒也看不懂,但這并沒(méi)有影響他對(duì)其進(jìn)行深入研究的興趣。后來(lái)他才知道,原來(lái)這些數(shù)字是一種十六進(jìn)制的被稱為“機(jī)器碼”的語(yǔ)言。這些數(shù)字,按照固定的換算關(guān)系,可以很容易地將其轉(zhuǎn)換為僅僅由“0”和“1”組成的數(shù)字串。
而“0”和“1”才是計(jì)算機(jī)中最本質(zhì)的原理所在。
BASIC語(yǔ)言只是建立在“機(jī)器碼”之上的一種高級(jí)語(yǔ)言,之所以發(fā)明出來(lái),是為了讓程序員能夠更好的記憶,降低編程的難度。
這個(gè)道理,就如同那些成語(yǔ)典故一樣,雖然只有短短的幾個(gè)字,卻可能包含著一大段的內(nèi)容。程序員之前早就學(xué)過(guò)這些“典故”,所以他們編寫程序的時(shí)候,就如同在寫文章,隨心所欲地使用著這些成語(yǔ)典故。但是計(jì)算機(jī)卻比較“笨”,他無(wú)法直接理解這些典故,必須通過(guò)“編譯器”這種工具翻譯一下,將成語(yǔ)典故解釋為一大段比較淺顯易懂的文字,這樣它才能理解。
程序員甚至不用關(guān)心這些典故的詳細(xì)內(nèi)容,如典故發(fā)生的時(shí)間地點(diǎn)和涉及到的具體人物,他們只需要大概知道這個(gè)典故可以在什么時(shí)候使用就行了。反正還有“編譯器”這個(gè)翻譯人員在,他最終會(huì)將具體的細(xì)節(jié)和計(jì)算機(jī)說(shuō)清楚的。
這樣的好處是顯而易見(jiàn)的,程序員可以節(jié)省大量的時(shí)間和精力,通過(guò)使用“典故”,可以很迅速地就可以編寫出字所需要的程序。
不過(guò),這也有很大的弊端。因?yàn)槿绻绦騿T不了解這些“典故”的來(lái)龍去脈的話,就無(wú)法做一些比較細(xì)致的東西。就如同LUS之前那樣,他只學(xué)過(guò)BASIC,而并不知道BASIC最終到底會(huì)被翻譯成什么樣的機(jī)器碼,不了解其中數(shù)據(jù)傳輸?shù)募?xì)節(jié),所以也就無(wú)法編寫出這個(gè)程序。
這實(shí)際上是BASIC的限制所導(dǎo)致的,它本身的設(shè)計(jì)缺陷導(dǎo)致了它無(wú)法操作這些底層的東西。
而通過(guò)這個(gè)小程序,LUS知道了原來(lái)在BASIC語(yǔ)言下面,還存在一種被稱之為“機(jī)器碼”的東西,而在機(jī)器碼的下面,更是有一種叫做“二進(jìn)制碼”的東西。
到了這個(gè)層面,這就完全是硬件方面的東西了。“0”表示一個(gè)開(kāi)關(guān)的斷開(kāi),而“1”則是表示開(kāi)關(guān)的閉合。作為一個(gè)資深火腿,對(duì)這種簡(jiǎn)單的電路他最是熟悉不過(guò)。
他這個(gè)時(shí)候才發(fā)現(xiàn),原來(lái)計(jì)算機(jī)就這么簡(jiǎn)單。
====
小強(qiáng)建了一個(gè)騰迅微.群,詳細(xì)請(qǐng)?jiān)L問(wèn)rockxie點(diǎn)com查看,歡迎大家加入
快捷鍵: 上一章("←"或者"P") 下一章("→"或者"N") 回車鍵:返回書頁(yè)