爲什麼後來的c語言標準中取消了信任程式設計師的精神?

金宏雲


C語言設計原則的第一條是:“信任程序員。”對程序設計語言瞭解不多的人,不會覺得這句話怎樣。但對真正的程序員來說,憑這句話就足以對C語言愛一輩子,愛得死去活來。



C語言一夫當道的年代,計算機相當昂貴,但速度比不上現今的手機,內存都是以KB為單位計算。所以,那時候對程序最基本的要求就是效率。C語言完全滿足人們對效率的苛求,精心設計的代碼可以極大地節約計算機資源,又不像彙編語言那樣難用,所以受到程序員的歡迎。後來,硬件越來越便宜,性能越來越高,程序的運行效率已經不是追求的主要目標,安全性、穩定性和是否易於維護等變得重要起來,C語言的弊端便顯現了。


C語言給程序員最大的發揮空間,讓他們自由地在代碼中揮灑激情和創意,從不去質疑這些代碼是否會帶來危害,因為它“信任程序員”,相信程序員的決定一定是正確的,即便有錯誤,也一定能自己修正。無限制的自由,在某些人的手中是創造力的源泉,而在另外一些人手中,卻能成為混亂的根源。隨著軟件系統規模的膨脹,需要的程序員越來越多,綜合水準越來越低,出現錯誤的概率越來越大,而每一個低級的錯誤都可能會引發大災難。很多人把這種亂象產生的原因歸罪於C,開始懷疑它,甚至恨它,卻從不反省自己糟糕的編碼能力。於是有人說,給這匹野馬加上韁繩吧,別讓它再恣意狂奔。但是C拒絕了鎖鏈,於是很多語言穿上C的外衣,自己掛上鎖鏈,站了出來。因為它們看上去很像C,所以大家很容易接受;因為它們掛著鎖鏈,所以它們不再信任程序員,而是指手畫腳地告訴程序員,這件事情該怎麼做,那件事情不能怎麼做。


如果程序員不聽它們的,它們就拒絕工作。這樣亂象解除了,開發速度加快了,多人合作容易了,錯誤減少了,對程序員能力的需求降低了,因而工資也降低了,老闆開心了,業界繁榮了。平心而論,“一件事情可以用X語言做,就一定不要用C語言做”確實是一個很好的策略,儘管程序員會失去一些自由,但在合法的範圍內仍有一定的空間可以發揮創造力,而且這些創造力很少創造出負面效果,綜合起來能讓老闆、程序員、用戶皆大歡喜。但程序員,尤其是受人尊敬的程序員,他們的血液中天生就充滿著不安分,嚮往自由的黑客生活,所以他們會一邊撫摸著身上的傷口,一邊懷念那個魯莽卻無往不利的老將軍,懷念在他手下無拘無束的日子,懷念被他激發出的層層潛能。這個老將軍是程序員心中永遠的戰神。

摘自——搜狐網


繪石君


因為現在程序員入門門檻太低了。以前寫程序的都是什麼人?科學家們,都是受到高等教育的,在編程之前,已經掌握了深厚的數學,電路等學科知識,然後再編程。現在,一個初中或者高中畢業,速成培訓班搞搞,就開始去應聘程序員,不是歧視他們,但是很多人連基本的模擬電路,數字電路都不懂,數據結構和算法更是一塌糊塗,這種人寫出來的程序,你還敢信賴嗎?


薛定諤的呵呵


效率,一切都以成本為出發點,請二個C程序員開發一個高效率的程序,假設需要二個月,那麼請一個C#程序員或者java程序員,只需要一個月,剩下的程序速度問題,可以加二臺機器解決。這裡面的成本問題,樓主可以自己想想。同理,C語言的改革也是一樣。


史路雨絲


事實證明程序員是不可靠的,在開發中難免會出現各種問題,包括在操作系統開發中,如windows,linux,mac os中還是會存在各種漏斗,C語言中最常見的緩存區溢出漏洞。而且C語言的指針很靈活,但是也很容易出現錯誤,如邊界條件檢查,數組越界等。還有是現在程序員本身的編程經驗不足,會導致各種問題和程序漏洞。


分享到:


相關文章: