編程語言和編程思想

這麼多年來,我學過和使用過的開發語言也不少了,可真正用得好一點的就只有C。有一段話很流行,直到現在類似的想法還影響了很多人。“做程序員,學習程序語言最重要的是學習編程思想,而不是學習那種語言”。我曾經把這段話奉爲經典。在做程序員的初期,頻繁更換編程語言,這是一個重要原因,另一個重要原因是,如果不會新的語言,就顯得落後了。因此流行的語言基本都涉及過,買書的錢都以千計。隨着代碼數量的增加,經驗的增長以及對於業務瞭解程度的深入,自然產生了一些想法、思路和設計。

我舉的一個例子,開發過數據庫的人大概都有所體會。數據庫應用中常常需要構造SQL語句,但在程序中寫SQL語言以及對返回結果集的處理,這往往是個體力活,特別是在嵌入式SQL的編程中。重複地拷貝一段頗長代碼,再修改一點點,整個程序大量的篇幅都耗在這上面了,維護起來也比較困難。我想很多人都針對此想過了很多的方法來簡化這些甚是無趣的操作。我也想過好些方法,其中一個方法比較有趣。在C語言中有一個很常用的函數是int sscanf(const char *str, const char *format, ...),用起來頗爲簡便。我想仿照這個函數的來處理SQL語言的select,因此就定義了一個獲得一條記錄的函數:ifx_select(const char* sql,…); 使用起來非常簡便:

int id;

char name[16];

if(ifx_select(“select id,name from users where id=10”,&id,name)==0)

這是一個很好的點子,也是很好的編程思想。但開工後,我發現我實現不了。雖然這段代碼看上去很簡單,但它包含的東西卻不少:變參數的處理,指針及其內容的賦值,錯誤處理,數據類型判斷與分析等等。這些東東都學過,但在實際工作中卻不能靈活運用,想法和思路自然實現不了。類似的現象不僅僅大量出現在程序設計中,在現實生活中也比比皆是。

由此,下決心好好補了補課。把教科書又翻了幾遍、閱讀了很多開放源碼的程序、在平時的編程中投入一部分精力到C本身的研究中,經常感嘆,原來C語言還可以這樣用。隨着對語言本身(語法、技巧、組合等等)的越來越熟悉,自己的很多思路和想法也得以順利實現。到目前語言和思想已經密不可分了,以上的代碼自然搞定了。當然這是一個長期的過程,不可一蹴而就。時間一般以年計算。

講了這麼多,我的觀點也很明確,編程的語言和編程的思想同樣重要,紮實的編程語言功底是編程思想得以順利的實現的基礎,二者缺一不可,相互制約也相互促進。就象人的靈魂和肉體。對於一個人來說,若只管靈魂而不管肉體,那是“鬼”;如只管肉體而不管靈魂,則會被稱爲“行屍走肉”。基本工具都用得不好,用得不熟,很難期待會出現一個好產品;有一個好的編程想法,卻因爲編程語言的能力不夠而不能實現,那麼這個好的想法就只是“空想”,開發者容易被劃歸到“眼高手低”、“不切實際”、“不踏實”的一類中去。

另外在選擇和學習編程語言上,最好根據需要選擇一門主流的、應用廣泛又有強大生命力的編程語言,例如BASICFORTRANC/C++JAVA等。語法學習相對容易,關鍵在於熟練應用。理想境界是達到賣油翁的程度:“無它,唯手熟而”。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章