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