大概是在LUS十一歲的時候,他的外公終於抱回來第一台計算機,名稱為VIC-20。這台計算機就是LUS接觸的第一台真正意義上的計算機,他之後就完全沉迷在這個神奇的世界中。
VIC-20是最早的家用計算機之一,只有一個小盒子作為主機,需要連接上電視機作為顯示器。LUS的外公只是將其作為一個升級版的計算器,而事實上這台計算機的功能也並不是很強大,但是這台計算機對於LUS來說,卻有著非常重要的意義。
VIC-20雖然很簡單,但是卻可以使用BASIC語言編寫程序,而這成為了LUS之後最大的樂趣。
BASIC語言是一種相對來說比較簡單的高級編程語言,最適合初學者學習使用。
LUS至今還對他的第一個電腦程序印象非常深刻,那是不斷循環在顯示器上打印「HELLO(你好)」的小程序,是他按照編程手冊上的範例而輸入到BASIC編程器裡面的,很簡單,只有兩行代碼。第一行代碼就是告訴計算機「打印HELLO」,第二行代碼則讓它跳轉到第一行。
通常情況下,計算機執行程序的時候,是從前到後按順序執行的,但是如果人為地指定了跳轉的話,他就會乖乖地調到你指定的地方重新開始執行。
所以,LUS編寫的第一個程序就是不斷的在顯示器上打印「HELLO」,後來他妹妹看到之後,就讓他將這個程序進行了修改,將第一行打印的內容改成了「薩拉是世界上最棒的!」。
LUS很快就將BASIC語言用得很熟練了,他可以使用這種編程語言來幫助外公來解決一些比較複雜的計算問題,他成為了外公的得力助手。這個時候,他才深切的體會到,計算機編程對自己生活的改變。
從那以後,他用BASIC語言編寫了好多程序,大多數都是一次性的,寫完之後刪掉又重來。他將自己各種各樣的奇思妙想都用編程實現出來,他享受到了無線電之外的樂趣。並且他開始嘗試著將計算機和他的無線電台聯繫起來。畢竟都是電子產品,兩者之間還是有著一些聯繫的,他將自己的零花錢省下來,購買了一些數據線和轉換接口,將計算機和自己的電台連接起來。並且開始嘗試使用BASIC語言編寫一個程序,想用這個程序完成英文字符和摩斯電碼之間的相互轉換。
也就是說只要將需要發送的文字內容輸入進去,這個程序就會自動將這些字符轉化為摩「嘀嗒」模式的摩斯電碼,然後通過連接在計算機上的電纜線傳遞給發報機,從而將信號發送出去。
這是一個非常實用的程序,有了這個,大大簡化了他和別人進行通聯的效率,將自己電鍵按鈕中解放出來。
花了大概一個月的時間,他的程序的確是編寫好了,英文字符可以順利轉換為「嘀嗒」信號,但是他遇到了一個比較頭疼的難題,他不知道如何將這些信號通過數據線傳遞給發報機。
這需要搞清楚數據傳輸的底層原理,但是BASIC語言在這一塊卻根本沒有這方面的內容。
他花了大量的時間來研究這個問題,但是卻一直沒有頭緒。直到有一天,他從一位業餘無線電朋友那裡得到了這樣一個程序。
這個程序的功能和LUS之前構想的功能是一樣的,而且可以正常工作,順利將CW等幅報發送出去。對LUS來說,最重要的並不是這個程序的功能,而是編寫這個程序的語言。
在此之前,他一直以為計算機編程就是BASIC編程,以為計算機裡面有且只有BASIC一種編程語言。對於計算機底層到底如何工作,他並沒有一個非常清晰的理解。
而這小程序向他打開了計算機底層原理的大門。
那個火腿朋友不但將編譯好的程序給了他,與之附帶的還有這個小程序的源代碼。
LUS驚訝地發現,這個程序並不是由BASIC語言編寫的,而是一些奇怪的數字,剛開始的時候他一點兒也看不懂,但這並沒有影響他對其進行深入研究的興趣。後來他才知道,原來這些數字是一種十六進制的被稱為「機器碼」的語言。這些數字,按照固定的換算關係,可以很容易地將其轉換為僅僅由「0」和「1」組成的數字串。
而「0」和「1」才是計算機中最本質的原理所在。
BASIC語言只是建立在「機器碼」之上的一種高級語言,之所以發明出來,是為了讓程序員能夠更好的記憶,降低編程的難度。
這個道理,就如同那些成語典故一樣,雖然只有短短的幾個字,卻可能包含著一大段的內容。程序員之前早就學過這些「典故」,所以他們編寫程序的時候,就如同在寫文章,隨心所欲地使用著這些成語典故。但是計算機卻比較「笨」,他無法直接理解這些典故,必須通過「編譯器」這種工具翻譯一下,將成語典故解釋為一大段比較淺顯易懂的文字,這樣它才能理解。
程序員甚至不用關心這些典故的詳細內容,如典故發生的時間地點和涉及到的具體人物,他們只需要大概知道這個典故可以在什麼時候使用就行了。反正還有「編譯器」這個翻譯人員在,他最終會將具體的細節和計算機說清楚的。
這樣的好處是顯而易見的,程序員可以節省大量的時間和精力,通過使用「典故」,可以很迅速地就可以編寫出字所需要的程序。
不過,這也有很大的弊端。因為如果程序員不瞭解這些「典故」的來龍去脈的話,就無法做一些比較細緻的東西。就如同LUS之前那樣,他只學過BASIC,而並不知道BASIC最終到底會被翻譯成什麼樣的機器碼,不瞭解其中數據傳輸的細節,所以也就無法編寫出這個程序。
這實際上是BASIC的限制所導致的,它本身的設計缺陷導致了它無法操作這些底層的東西。
而通過這個小程序,LUS知道了原來在BASIC語言下面,還存在一種被稱之為「機器碼」的東西,而在機器碼的下面,更是有一種叫做「二進制碼」的東西。
到了這個層面,這就完全是硬件方面的東西了。「0」表示一個開關的斷開,而「1」則是表示開關的閉合。作為一個資深火腿,對這種簡單的電路他最是熟悉不過。
他這個時候才發現,原來計算機就這麼簡單。
====
小強建了一個騰迅微.群,詳細請訪問【rockxie點com】查看,歡迎大家加入