1985年我是如何寫代碼的

>>>  技術話題—商業文明的嶄新時代  >>> 簡體     傳統

  英文原文:JGC,編譯:DEEPFISH@奇風余谷

  回到 1985 年,我還在給一個設計成給瓶子貼標簽的機器計算機化。制造這個機器的公司用機電控制,將標簽從卷軸上撕下帖到傳送帶傳來的產品(例如洗發液瓶子)上。整個過程需要工作在毫米級精度上,因為消費者不喜歡沒有完全對齊的標簽。

  不幸的是,機電控制不像電腦控制那樣靈活,因此該公司與當地一所工學院(我正在該校學習電子學)簽訂了合同,用 KIM-1來設計電腦控制原型。另一個學生整合機器,他把傳送帶,標簽發放機制,步進電機控制,還有探測標簽和產品的紅外感應器進行組裝。

  我的工作是用 6502 匯編語言寫軟件。不幸的是,沒有編譯器,而且 KIM-1 只有一個十六進制的小鍵盤和一個小的顯示屏。因此這意味著要手工寫代碼,手動編譯和打字。代碼是這樣子的:

 

  很快電腦控制需要變得更加靈活。程序首先自動校驗:測量卷軸上的標簽自身的長度,測量標簽之間的距離,并且它啟用了一個運算器快速設立”懸掛”距離(標簽要伸出去多少才能讓產品抓到)。

 

  在運行中,它要能自動檢測傳送帶移動的速度,還有當供應卷軸上的標簽缺失時(當一個卷軸意外掉落時就會發生)進行補償和標記。

  當然像這樣寫代碼是一種痛苦。你首先必須寫完代碼(藍色),然后轉化成機器碼(紅色),并計算每個指令的內存地址和相對跳轉地址。那時候我沒有能夠計算十六進制的計算器,所以我自己完成大部分所需的計算(如在大腦里計算相對跳轉地址)。

  然而它教會了我兩件事:在第一時間寫對代碼 和 學會在大腦中運行代碼。后者至今仍然重要。我調試時還是會先在大腦里跑一遍。通常情況下我會先于 gdb 或類似的工具,使用我的大腦調試器。KIM-1 里只有最基本的調試功能,我在程序里也寫了點,但是大部分調試都是盯著輸出(十六進制顯示屏上),(步進器的)行為看,還有在腦子里運行代碼。

  如果你好奇,這里是整個程序

  PS:一些讀者指出在 1985 年 KIM-1 離先進水平還很遠,而且我們有很多好東西例如編譯器等等。是的。事實上比這還早的時候我用 BASIC 和 ZASM(Z80 編譯器)在 CP/M下編程,但是你是用你已有的條件來干活的,工學院有空閑的 KIM-1,它有不錯的I/O,因此它是制作嵌入式控制器的很好的原型系統。http://news.cnblogs.com/n/176778/

引用那時候人們能用幾十Kb內存的計算機發射航天灰機衛星上天,現在我們拿著動輒1G內存的手機,發射小鳥去撞豬。
 

當年用FoxBase寫程序時,也是經常先寫好,再錄入到電腦里的,不過比樓主這個已經“先進”多了。那時候覺著能在電腦上直接編碼的都很牛。
 
那個時候寫程序是藝術,是電子科學技術的一遍遍探索和挖掘.每一行都代表了科技的進步和嘗試.現在寫程序只是沒背景,沒關系,進不了公務員考不了研,懷揣夢想卻為無房無車無妞淚流滿面天天只為掙些蛋餅錢和上網費而寫代碼.你說都混到這樣了寫代碼如果還那么復雜,那怨氣更得沖天了.實世造英雄.
 
然而它教會了我兩件事:在第一時間寫對代碼 和 學會在大腦中運行代碼。

對于現在的程序員來說,這兩件事都很牛逼。

 


網載 2013-05-07 09:18:38

[新一篇] 代碼質量隨想錄(一):可讀是王道

[舊一篇] 業余數學牛人的數學自學心得
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表