程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 幾分鐘幫您解決C++復雜性問題

幾分鐘幫您解決C++復雜性問題

編輯:C++入門知識

有些錯誤還是只有運行的時候才能發現,這就需要我們加入一些測試代碼來保證程序的正確性。結對編程就是讓一個人寫一些C++復雜性代碼,另一個人考慮全局,一旦編碼無法進行下去,就可以交換過來,再不行還可以讓大家一起討論。

為什麼獨獨這篇能夠激起這麼多的回應,想必是國內的C++社群被C++壓抑太久,或者,嚴格來說,是被C++的教育方式壓抑太久。實際上,不管是在各大國內論壇上,還是在comp.lang.c++.moderated這樣的國際C++論壇上,乃至於在douban上的小組內,有心者都會發現,對C++語言的細節的關注一直都沒有停止過。

同樣,對C++語言的細節的抱怨也從來都沒有停止過。一個例子就是comp.lang.c++.moderated上的一個技術牛人James Kanze說的,他說接觸C++十年了,到現在還需要不時去翻C++標准。這就難怪Eric Raymond老大在《The Art of Unix Programming》中說“C++是反緊湊”的了。C++中的細節太多,就算都看過了,也不可能都記住。更關鍵的是,就算都記住了,也不能讓你成為一個真正的好程序員。

絕大多數人都把細節太多或者用貶義詞來說就是“陰暗角落太多”)歸結為C++復雜性本質問題,認為一切邪惡由此而生。也正因此,大約9月份的時候,Linus在郵件列表上說“C++是一門有思想包袱的語言;僅僅是為了讓程序員遠離C++,我也要用C”。

  • 在C中引用C++語言中的函數和變量
  • 高級技術學者對C++代碼進行編制
  • 詳細說明C++編譯的編寫及其代碼問題
  • 闡述C++語言的各種編程技巧有關說明
  • 使用C++ Builder時注意問題學習探討

這句短短的話在國內引起了很大的反應,最初是劉江轉了Linus的話,然後雲風和孟巖都發表了自己的看法;我也寫了一篇“Why C++”後來發給Bjarne,Bjarne對這篇文章做了一個友情評注)。

然而,這一通渾水攪過之後,我相信引起的變化未必很大。大多數原先的反對者能從中找出反對的理由,於是更加反對;大多數原先的贊同者也能從中找到贊同的理由,於是更加贊同;而剩下來的原先沒有明確意見的,看雙方各有各的道理,可能還是沒有頭緒。

現在,幾乎每個學習C++的都知道C++的核心問題是其復雜性;甚至本身不在C++社群的,也知道這是事實。群眾的眼睛是雪亮的,何況這還是個太顯而易見的事實。 但看了無數篇闡述C++復雜性的文章,和爭論C++復雜性的吐沫星子包括我前段時間寫的兩篇關於C++的總結)。

我始終都有一個感覺——沒分析透,就跟盲人摸象一樣。正如“Why C++”的一位讀者批評的,我在文章裡面沒有寫明到底哪些是C++的“非本質復雜性”。當然,我自己憑感覺就能知道,而接觸C++一段時間的人大致也能知道,但新手乃至非新手則對我所謂的“非本質復雜性”根本沒有一個具體的認識,這就使得那篇“Why C++”脫離了原本的意圖——面向所有C++使用者和學習者。

同樣的原因,在寫了“你應當如何學習C++”一文之後,當孟巖先生邀請我給《程序員》寫一個系列的文章,介紹一下我在接觸C++的過程中的態度和認識轉變時,我雖然非常高興的答應了,但直到現在3個月過去了還是顆粒無收。

為什麼?因為我覺得真正本質的問題沒有被清晰的觸摸到;所以直到現在我都沒有動筆,免得廢話說了一大堆,除了能被當成小說讀讀之外,對真正考慮是否要學習乃至使用C++的人未必有什麼實際用處。

然而,這麼個念頭一直都放在潛意識裡面。前一陣子和Bjarne通信,談到了關於C++復雜性的一些想法,在郵件裡面總結了一下C++的復雜性來源,感覺思路清晰了許多。而這篇文章要達到的目的,正是傳達對C++復雜性的一個具體而明確的認識,有了這個認識作為支持,我們便可以推導出學習C++的最佳實踐者)的方法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved