一個月學會VC++2010 2.看起來風險不大
任何時候,我都希望做絕對有把握能夠完成的事情。換句話說,是缺乏冒險精神。因此,對楊先生叫苦,很大程度上是一種討價還價的手段。在同意做這個項目的前一天,我就做了完整的評估。風險主要體現在兩個方面:1、語言不熟悉;2、算法具有一定復雜性;3、因為是海量的計算,而客戶要求每位分析師都能在筆記本上使用,性能方面的問題會大幅增加工作量,甚至存在可行性問題。
編程語言是初哥們很重視的問題,不過從內心來說,我從來沒有將這個當作問題。很多事情,都有一些人類考慮不到的死角,熟視無睹,則眼光永遠無法漂移到那邊。 就比如編程語言,你該怎么理解? 簡單的說,編程語言是我們命令計算機完成一系列工作的工具。假設你面對的計算機是一臺高度智能的機器,具備聽覺和視覺,你告訴他----臥倒,主機箱便在桌面上打個滾,然后那個顯示器就會可憐巴巴的望著你,等待你的下一條命令。
直接用機器指令給電腦下令,是最為簡單的----一串零和一的組合之后,電腦能夠為你做一次計算工作。但這種工作枯燥無比、容易出錯、而且工作量大得驚人。所以人類在不停的想辦法,讓事情輕松一點。
最初,是匯編語言。我聽到許多高人談論“你要懂得一定的底層知識”,嗯,在他們腦子里,匯編幾乎是最底層的東西了----其實不是的,最底層的是機器碼。最早期的程序員,是真的使用機器碼編寫程序的,匯編語言已經是一個很大的進步了。此時,你面對的不再是一串串指令,而是寄存器、內存、變量等等。你通過類似Mov之類的命令,要求計算機完成某個步驟。 那么,怎么辦呢?必定有一個翻譯機制,將我們的匯編語言轉換成機器碼,這就是編程語言的由來。這個翻譯機制,實際上也是一套軟件,它負責將你用匯編編寫的程序,然后變成機器碼。 所謂編譯型語言和解釋型語言的差別,很大程度上,是指:將你寫的程序,一次性轉換成機器碼,還是運行這個程序的時候,動態的轉換成機器碼。
而C語言,則是匯編進一步的簡化。是啊,我們下命令的過程,其實僅僅是表達我們的訴求,沒必要要求你控制每一個設備啊----你讓計算機做一些組合工作就行了,所謂高級語言由此而來,主要的原因是:希望我們下命令的過程,變成面向問題的,而不是面向電腦內部的各種元器件、面向動作的。就象你對一個孩子說:抬手、解下腰帶、蹲下,嗯,很麻煩。C語言則變成了一句話:“上廁所”。換一個角度來說:此時C語言已經包裝了很多東西,你面對機器變成了面對C語言提供的功能。于是定義變量、表達式、計算、編譯、分支、循環等等語言概念,逐漸穩定下來。
C++之類,是面向對象編程語言,這實際上是簡化思考的努力。而java、C#等,主要的差異是屏蔽平臺差異、實現垃圾回收機制,進一步為程序員減負。
計算機要完成一個復雜的業務過程,顯然不可能要求程序員時時刻刻下命令,而是普通人使用你的程序----這個比較重要,意味著某種通用性。那么你的程序對一些重要的流程,仍然會安排一些操作方式,“最終用戶”由此產生:他們運行你的程序,按照你約定的操作方式,命令計算機完成他要求的工作。所以到高級語言層面,我并不太在意語言的差異。
至于其他兩個問題,多少也有腹案。
然后,接下來,開始簡單的規劃過程,列出所有的功能清單、確定要做的第一項 功能并細分任務。
我的第一個迭代,只包括一項功能,就是“導入日線行情”。
那么這個系列一直到最后,我也只描述這項功能實現的過程,基于一項項任務,逐步描述我要做什么、怎樣著手去做、怎么思考、遇到問題怎么解決。大體上,由于源碼服務器完整的保留了每一次代碼的變更,這個過程也很容易復述。
僅僅希望這一個月的學習過程,對初學者有幫助。這里的方法,事實上是學習編程語言比較通用的方法:若去學習java或者object c的開發,辦法其實也差不多。甚至我覺得僅僅使用這種導入日線的例子來做,就能夠覆蓋常見的編程任務了。至于高手們,大可以一笑而過-----我一向非常鄙視中國的編程高手,因為這些家伙雖然牛哄哄的,但作為一個整體,他們倒真的沒有做成什么象樣的事情,感覺和中國足球隊大有一拼,整個一群浪費糧食的群體。相對來說,我比較喜歡象我一樣分布廣泛的低手,雖然很差,但絕對不會亂現眼,能做什么就做什么絕不挑挑揀揀,從來不敢告訴外人自己是是踢足球,噢,是寫程序的。
下一篇的題目大體是“確定界面開發模式”,特此預告。

浙公網安備 33010602011771號