為什么大家都怕學(xué)c++

? ? ? ?我的工作經(jīng)歷當(dāng)中也有一段時間是做c++的,從入門到做東西大概1個月時間,淺淺的分享下我個人的學(xué)習(xí)經(jīng)驗(yàn);
c++ 確實(shí)比較難,難在它的語法四不像,還有很多陌生的概念,比如友元函數(shù)、智能指針、const 關(guān)鍵詞(使用點(diǎn)確實(shí)很多,用在不同的地方作用也不一樣),但是這并不妨礙我做東西;
從業(yè)者跟學(xué)生面對學(xué)習(xí)c++這個問題的切入點(diǎn)也不一樣,傳統(tǒng)學(xué)習(xí)方法是先語法、后模仿,但是工作的時候并不會留很多時間讓我們深究語法,這個時候就需要擯棄將所有語法全部吃透的思想,而是縮小學(xué)習(xí)成本、帶著目標(biāo)去學(xué)習(xí);
所以我的學(xué)習(xí)方法可能并不適合所有人,至少我是這樣認(rèn)為的;
0、調(diào)整畏難心態(tài)
大家都看過《倚天屠龍記》吧,趙敏武當(dāng)山上圍攻明教,張三豐教張無忌太極的時候說過一句臺詞:"無忌,你忘記了嗎",這句話其實(shí)是在打消我們的抵觸心態(tài)(因?yàn)槲叶颊莆掌渌寄芰?,為什么還要學(xué)這個),為學(xué)習(xí)新技能放下心理包袱,擯棄抵觸心理;
1、降低學(xué)習(xí)成本
我接觸c++的契機(jī)是因?yàn)轫?xiàng)目需要做高性能推理,這個項(xiàng)目是基于 Nvidia tritonserver 的二次開發(fā)項(xiàng)目,所以我是直接git clone 項(xiàng)目源碼,然后通過我自己提出來的最小范圍學(xué)習(xí)法用最快的時間吃透語法,實(shí)時上我學(xué)習(xí)語法只看了兩個文件,metrics.h 和 metrics.cc ,并切通過ChatGPT幫助我理解不懂的語法,理解后的語法我會一行一行注釋到源文件當(dāng)中,因?yàn)槿四X接觸并消化知識的速度并不快,而且艾賓浩斯遺忘曲線告訴我們大腦并不可靠;
為什么我可以快速降低學(xué)習(xí)成本:
1、Nvidia是一個非常牛的科技公司,這個開源項(xiàng)目配備的團(tuán)隊(duì)、人員都是頂尖高手,所以他們開源的項(xiàng)目編碼規(guī)范肯定是統(tǒng)一的;
2、看的開源項(xiàng)目多了,你就明白github上大公司的垃圾項(xiàng)目很少;
2、加一行l(wèi)og打印試試
這個步驟其實(shí)是尋求正向反饋的時機(jī),不要小看這一行l(wèi)og哦,這是進(jìn)行二次開發(fā)的第一步,等項(xiàng)目開始運(yùn)行起來,并且你新增的代碼生效的時候,你已經(jīng)邁向成功一大步了;
3、擅用GDB
通過開源項(xiàng)目學(xué)習(xí)一門新語言是最快的,而開源項(xiàng)目最讓我們頭疼的是代碼量極大、邏輯及其復(fù)雜、老外寫代碼的組織方式完全看不懂;
這個時候如果單純通過靜態(tài)代碼走讀的方式去學(xué)習(xí),很容易就疲憊了,再加上如果結(jié)構(gòu)體繁多、邏輯計(jì)算復(fù)雜,很容易就迷失在代碼泥潭當(dāng)中;
最好的方式是讓程序運(yùn)行起來,了解程序當(dāng)中的對象狀態(tài)變化、數(shù)據(jù)流變化、程序邏輯,這可比打日志、重復(fù)編譯來的快多了,因?yàn)榇蛉罩灸阋驳孟茸咦x代碼后再改對不?
GDB 是快速熟悉 C、C++項(xiàng)目的利器,完全無腦運(yùn)行,僅僅通過 start、next、step 等命令就可以清晰的了解到程序的執(zhí)行邏輯;
這里我推薦大家可以去看下我先前錄制的 GDB + Tritonserver 二次開發(fā)的B站視頻,里面都是干貨,并且一個視頻大概在10min左右,非常方便大家在閑暇時間觀看;



當(dāng)然還有Golang相關(guān)的專題大家也可以看看:



感謝各位的關(guān)注:
錄制視頻還是挺辛苦的,還好這是我的愛好,所以即便身體、大腦很累,但是心里卻很開心;
希望我的視頻可以給大家?guī)硪稽c(diǎn)收獲、一點(diǎn)靈感;
當(dāng)然如果您可以關(guān)注我,那是最好的了,這是對我的極大幫助,大家的點(diǎn)贊關(guān)注是對我的極大
鼓勵,我會持續(xù)輸出有用的內(nèi)容給大家!