回首頁
修改
Mail
FTP

中




2007年11月4日 星期日

[Program] 關於C and C++ 一番見解!

在有一天晚上,看到一篇文章 覺的寫的很有意思 
不知您認為呢? 

一些學術研究者或程式語言狂熱者的眼光來看C語言, 他們認為C語言
不若新興的語言優美, 像是Eiffel, Java這些新的語言.
就像語言學家或法國人一樣, 他們認為法語才是世上
最優美的人類語言, 而英語並不優美, 英文字母與音標還是分開的,
一點也不好用且可笑.
同樣地, C語言如同人類的英語一般, 不是一個優美的程式語言,
但世上被使用最廣的程式語言卻是C語言, 我們使用的作業系統
(MS Windows/ Unix/ Linux)多半還是C的code,
我們的GSM手機上面的code(GSM Layer1/Layer2/Layer3 and GUI Framework)
也是用C寫的, 手機上的KVM(Java VM)也是用C寫的,
我們用的電信設施, 像是交換機及相關的電信協定也是用C寫的居多.
C++程式語言是C程式語言的super set, 當初Bjarne Stroustrup
設計C++的用意之一就是與C相容, 且提供OOP的特性.
與C相容是一件相當重要的事, 對工程與社會演進有點sense的人都知道
劇烈的革命是會造成更大的傷害, UML三巨頭之一的James Rambaugh,
在他的書中(他的技術叫OMT)在後面也附了一章如何將傳統的
E-R diagram或structure analysis/design轉成OMT,
或是如何應用OO於傳統的程式語言(i.e C, Ada, Fortran, Relational DBMS…),
這些都是為了減低革命帶來的衝擊, 並且讓 programmer 能漸進的溶入新的理論.
許多人常把革命看得太容易, 我有時會問一個問題看看是否有無概念:
英美國家用的是英制單位的度量衡, 而其它地方多是用公制度量衡,
為何他們不全面改成公制?

事實上這個問題已經被討論過, 最後英美國家採用的是漸進式更新設備來解決,
道理是很簡單, 要全面更換度量衡代價相當高, 從航空太空工業,
汽車工業, 到一般家庭的房屋建築與電表或水表及家電用品,
全部要更換設備為公制單位, 何不問問台積電或聯電把幾條生產線的設備換掉
的成本是多少? 更何況是美國一些大型企業.
就我第一次瞭解這個度量衡的問題到現在, 已經超過十二年了,
英美國家還是無法全面將度量衡換成公制.
對一家擁有多年產品開發經驗的公司而言, 他們手上握有的source code
絕大部份可說是資產, 這個資產的價值取決於有多少客戶還繼續使用他們的產品,
幸運地, 對C programmer而言, 這些資產多半是用C寫的.
但我不認為一個programmer只學一種語言就可以了,
在行有餘力之時多學一兩種程式語言可以增加自己的競爭力,
學過材料的人都知道, 單一金屬的材料特性很糟,
不是硬度差就是延性與展性也差, 無法兩全其美,
兩種金屬混合冶金之後的材料特性通常比只有一種材料好.
學習程式語言工具也是如此.
C/C++ programmer的文化是鬆散且多樣化的, 不像Java或C#這種商業公司的語言,
導致許多初學者質疑C/C++是否有生存之必要, 學習C/C++只是取得一支key,
利用這支key與其它的C/C++ programmer溝通, 並且取得已經存在
世上豐富及大量的資源. 就如同前幾天我正在找G.711, G.726, G.729與
H.323 protocol的source code, 我能找到的都是C的版本,
稍加修改可以放在不同平台上使用, 有些source code甚至是8, 9年前
以GNU C發展的, 對一個C/C++ programmer來說, reuse別人的source code
是一件相當平常的事, 雖然不完美(許多code還是有平台相依性,
必需要修改平台相關的地方才能reuse), 但至少不需要從無到有去 programming,
只要從眾多的source code中擇一修改

參考文章:不可考 不過這是一篇好文章 

0 回應: