初学者是学习 C 语言还是 C++ 好?各有何利弊?
?
非計算機專業學生或者沒有以編程為職業打算的人,不需要學習編程語言,非要學習可以試試Python,面向應用的高級庫多,學了對大部分人都有點用;語法簡潔,容易上手。
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/C++感興趣的話,可以加一下我們的學習交流Q群:637 ?935 ?295,免費領取一套學習資料和視頻課程喲~
從代碼字面看來,算法的思想的確描述得很簡單,但是如果直接給初學者看這段代碼,初學者如何想象它為什么叫“快速排序”?這一條實際上跟第三條略微有點矛盾,不過參考第四條,初學者可以在學習的不同階段自由選擇已經掌握的特性。
綜上所述,C++是計算機專業初學者的第一門編程語言的最佳選擇。
總結
以上是生活随笔為你收集整理的初学者是学习 C 语言还是 C++ 好?各有何利弊?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 之路,200行Python
- 下一篇: 学C语言好,还是学C++好呢?这两个专业