思想與裸編程
先聲明一個概念,裸編程,我創(chuàng)造的名詞,指的是在裸機上編寫程序,裸機,在單片機領域就是指帶著硬件的單片機控制系統(tǒng),不要想歪咯。
在裸機上編程,就猶如在一片荒地上開墾,任何一鋤頭下去,都會碰到硬生生的石頭,要說做這有什么味?拓荒者追求的是來年的綠洲。而我們這些開墾裸機的所謂的工程師們追求的是什么?我們當然追求的是完成一個任務。
我們一般都自稱是高級知識分子,那么我們在拓荒的過程中應該想些什么?當然不是想著如何把任務完成,而應該首先想著我們在想些什么。繞了是不?繞了就對了,這一繞就繞出了思想。思想是一個簡單的人在一個復雜的環(huán)境里做任何事情的統(tǒng)帥,它影響著一個拓荒者人生的每一個細節(jié),當然也包括裸編程本身。
當一個人拿著鋤頭,一鋤又一鋤,汗滴腳下土的時候,我們能知道他們在想什么嗎?當然這不好說,如果自己去鋤就知道了。但是大抵也差不多,隨便舉幾個吧:這太陽他娘的怎么這么毒?這石頭他娘的咋這么多?這地種什么最好?這還有多少天能搞完?這樣干太慢了,要是有臺機械搞多好。當然這只是一部分,任何人可以想出很多想法來。
那么當我們在裸機上拓荒的時候,我們該想些什么?也許我們一般的想法是:先把一個簡單的功能做了,先把一個重要的功能做了,今天終于把這個功能調試好了明天可以做下一個功能了,這個為什么不是我想象的那樣的結果?真是莫名其妙!也等等一下吧。
如果拿來一個任務,搭好測試平臺就開始做程序,想著一個功能一個功能的湊完,然后就自我陶醉著成功的喜悅,那這樣做程序,基本就叫做沒思想。有思想的做程序,是不能一下去就堆積源碼的,因為那樣只會讓一堆生硬的數(shù)字怯生生的擠在一起,不管他們有沒有多余,有沒有矛盾。所以寫源碼之前,是要想想如何寫的。也許很多人在寫之前都想過類似的問題,比如把任務模塊化后再組織程序。但是這樣的想法只是任務上的事情,而并不是裸編程時的思想,裸編程的思想,應該是在組織任務模塊過程中及編寫裸程序時影響源碼組織的指導思想,它直接決定著源碼的質量。
一個數(shù)據(jù)結構,一個模塊形成,一個單片機的指令,一個硬指令的運行機制,一個口線的驅動方式,一個中斷的順序,一個跳變的延遲,一個代碼的位置,一個邏輯的組織,一個模塊與模塊之間的生(運行時的狀態(tài))死(不運行時的狀態(tài))關系等等,都是裸程序思想的組成部分。
這似乎很瑣碎,但是裸程序原本就如此,它不同于上位機程序,有一個強大完善的操作系統(tǒng)支持。單片機里不可能植入操作系統(tǒng),那樣做就變味了,可不要有人跳出來說,某某某單片機就有操作系統(tǒng)了。裸程序就應該是建立在赤裸裸的硬件基礎上的程序,只有有用的功能才有代碼,裸程序的質量也許經(jīng)常在應用中感覺不出來,也許你做和他做都能實現(xiàn)功能,但是好的裸程序有良好的可擴充性、可維護性,系統(tǒng)具有高穩(wěn)定性和高性能。
而追求這種高品位的技術境界,就必須要有好的思想來指導。是不是看著有些迷糊?別說看得迷糊,我說都說迷糊了,總的來說,就是把一個優(yōu)秀的靈魂,植入你的源碼中,讓你的源碼具有一個優(yōu)良的思想。