回覆列表
  • 1 # 北大青鳥海南大立校區

    C++則應當成為計算機相關專業初學者的第一門程式語言、至少也應該是其中之一,C排在C++之後,理由:

    1:C++的記憶體管理相對於C,對於初學者來說有非常重要的改進。C++相對於現代不少有所謂垃圾回收特性的語言,的確比較簡陋,但是其自帶的類的構造和析構只需要學一點點就可以給初學者級別的程式提供足夠的記憶體管理支援。

    2:程式設計泛型多,學一C++個就相當於獲得了:C風格的命令過程語言 + 基於類的面嚮物件語言 + C++11標準後的簡陋的函式式語言,一舉三得。值得一提的是,每一個新風格的疊加都是在現有系統的基礎上實現(比如設計C的時候根本不會想到還會擴充套件為C++,而C++必須高度相容C),這是一個非常有挑戰的工作,C++之父Bjarne Stroustrup的《The Design and Evolution of C++》就描述了部分C++語言設計的過程,非常有價值。

    3:基礎庫遮蔽了大量初學者容易出錯的細節,以STL的string為例,這個庫雖然簡單,但是居然在C之上搭建的C++中實現了和許多現代的很高階的語言使用字串一樣的體驗。換做是C,很多初學者就不太容易搞明白strcat, strcmp, strcpy等等那套幾乎針對記憶體操作的字串處理機制是怎麼回事,再結合例如緩衝區溢位預防,正確分配和釋放記憶體等等問題,學習曲線會很陡。

    4:程式語言特性多不代表你必須學完全部特性才能開始應用。C++那麼多特性怕是不少C++的實現者都不能說自己完全“精通”,對於初學者來說,學會對初學者最友善的,最簡單的那部分(STL,基本的類)已經能幫助解決很多問題甚至開始寫一些小型軟體了。

    5:不過分脫離底層,計算機專業得用更加接近所謂“底層”的語言,“底層”值的是瞭解我們這個世界最流行的機器架構中,資料是怎麼在記憶體中流動的,高階語言寫出的一些語句實際在機器中執行大概要經歷什麼過程,以維基百科裡快速排序詞條裡的某所謂高階語言寫出的快速排序為例:

    sort [] = [] sort (pivot:rest) = sort [y | y <- rest, y < pivot] ++ [pivot] ++ sort [y | y <- rest, y >=pivot]

    從程式碼字面看來,演算法的思想的確描述得很簡單,但是如果直接給初學者看這段程式碼,初學者如何想象它為什麼叫“快速排序”?這一條實際上跟第三條略微有點矛盾,不過參考第四條,初學者可以在學習的不同階段自由選擇已經掌握的特性。

    綜上所述,C++是計算機專業初學者的第一門程式語言的最佳選擇。

  • 2 # 每日學點法

    初學者肯定是學c語言,c++是c語言更深度的學習,可以這麼理解,c語言是初級階段c++是高階版的c語言。而且c++有個特點,知識面很多,又雜又廣。一個資深的程式設計師,他敢說他精通別的語言,但沒幾個人敢說精通c++,因為如果真的是精通c++的人,他已經不是一般的大神了,年薪百萬是肯定的了

  • 3 # 半人馬座a星歡哥

    C++是C語言的升級版。C語言是面向過程程式語言,C++是面向物件程式語言,是在C語言的基礎上增加了面向物件程式設計模組。

    早期的語言都是面向過程的。C就是代表。隨著硬體的升級,所需軟體的規模也同時擴大。面向過程的語言的缺點就暴露無遺。因此面向物件的語言就出現了。C++語言就是在C語言的基礎上增加了面向物件的模組。

    所以,初學者肯定是先學習C語言,再學習C++語言。就算直接學習C++,肯定也是寫學習面向過程的部分,再學習面向物件的部分。

  • 4 # 伴學建築課堂

    不要亂說,C++是C語言過來的他裡面有很多C的知識,如果你不從C過渡的話會很難學懂C++,誰說c 沒用了啊,比如主機板驅動,顯示卡驅動等不都是用C開發的麼,2D,3D遊戲沒有用C開發的麼,所以說C是必需的。

  • 中秋節和大豐收的關聯?
  • 人生為何,何為人生?