回覆列表
-
1 # 程式設計師黑洞
-
2 # 齊謙書院孟子厚
不難。現在學習計算機的難點在於這計算機程式設計書的人,他們自己的文學能力語言能力太差。書寫得糊裡糊塗的。
所以我一直強調,你學習科學。文史的功底也要好。否則你寫那些東西別人都看不懂,怎麼弄?
每一條程式都要寫備註的。詳細說明。可是我們翻開很多備註,根本看不懂,文法都不通。不知道他們在說什麼。
-
3 # 喝蜂蜜柚子
1、總有人說“雖然C++功能/正規化多,但是你可以只會、只用其中一部分”。這是不太現實的,因為你開發不可能不用第三方庫,然後你不可能限制人家用C++的那個部分。如果那個部分你不熟悉,編譯器噴出個一百行的模板錯誤你看不懂怎麼辦?
2、C++語言本身的範疇,甚至沒有包含寫出一個能跑的程式。因為語言本身只到編譯單元,後面還有連結什麼的玩意,而理論上來講那些東西都是各個目標平臺自己的,並不是語言的一部分。
3、C++沒有“官方”的編譯控制器、包管理器,逼迫新手去一個個屎坑裡自己踩一遍。特別是當你需要跨平臺開發而不能簡單地全靠VS/XCode的時候。
4、由於C++實際上用來開發有一定複雜性的高效能系統(沒有這些需求,不必用C++),所以通常不可避免地要接觸語言以外的大量東西,比如記憶體對齊、SIMD最佳化、編譯器特異的intrinsics、系統API等等,這在廣度上增加了學習內容。
-
4 # 青島紅樹林科技和教育
難就難在很多人學的太空白,為了學而學習,如果按照專案學習語言會更快一些,好好看個人的數學功底,所以本科生學習c應該沒問題。只要是勤奮了,基本上都能是高手,本科以下的比如說專科,老師是按照課本念出來的,也沒有多少專案經驗,所以教給學生的也就學了個皮毛,現狀是這樣的。
-
5 # 雲遊霧裡櫻兒遠方的詩
端正心態那麼學起來都會容易很多,當然還有個人的理解能力,如果不懂得【變通】,那麼隨時都會進入死衚衕。C語言可以說很難,也可以說很容易,端正心態去重新學習,將會好很多。
對一個C++老程式設計師的我來說,學C++經歷幾個階段:
1,學語法,比葫蘆畫瓢寫程式碼,除錯。打基礎。
2,參與C++專案,熟練掌握各種 EFFECTIVE C++。
3,深入理解C++物件模型。
這一步做好了學到了,你才發現,哦,原來編譯器是這麼編譯程式碼的!從此以後,你的眼光變了,看到C++程式碼,就自己化身C++編譯器,去編譯去理解。再也沒有能擋住你的語言,效率,bug問題了。
這才是僅僅C++語言層面的難度了。 (其實也因為不同C++編譯器,導致編譯出來的中間程式碼並不相同,故,作為C++程式設計師,仍需要熟悉你使用的那個編譯器,GCC or 微軟VS的C++等)
實際生產專案中,C++難度還體現為更多因素,比如,
1、平臺不同,linux,window;
2、使用的各種庫(如boost,C++ Standard Library,Muduo,Libevent),庫不同的版本差異;當然,還有Standard Template Library。
引用一下網路上總結過的框架,大概瞭解一下有多少工作中可能需要使用的資源(這些都需要程式設計師去一個個過坑):
比如, C++通用框架和庫有大名鼎鼎的Boost ,Qt,STLport
人工智慧方面有btsk ,Evolving Objects
非同步事件迴圈方面有libev ,libevent ,libuv
C++最不擅長做介面, 圖形使用者介面方面有
CEGUI ,FLTK ,GTK+可用。
影象處理有Boost.GIL,CImg ,FreeImage
國際化有gettext ,IBM ICU,libiconv
伺服器需要日誌,可用Boost.Log,easyloggingpp,Log4cpp
機器學習可用Caffe
數學計算方面有Armadillo,blaze
等等
當然,實際工作中我們C++程式設計師並不會用到這麼多庫/框架。只是只要公司技術團隊選擇了的就需要熟練掌握。應用層面本身就是一個熟能生巧的積累過程。這個過程有一個團隊共同學習並積累知識庫,對企業和個人都是莫大幫助的。
總之,C++之所以“難”。還是在於,在語言層面,我們是否熟練掌握“C++物件模型”?
在應用層面,我們是否熟練掌握庫或框架的使用技巧?
另,
他翻譯的《深度探索C++物件模型》,讓我真正的步入了C++的門徑
祝學C++的學弟學妹們早點參悟C++物件模型!