最新国产AV资源网_亚洲熟女AV天堂五月天_中文字幕丶东京热_中文字幕乱码免费高清视频

Hi,您好,歡迎來(lái)到西安盛圖軟件科技有限公司!

知識(shí)分享|沒(méi)有人能真正精通 C++

發(fā)布時(shí)間:2023-09-13 15:31:30

任何說(shuō)自己很懂 C++的人可能都是在夸大其詞。


我想你可能已經(jīng)注意到了,是的,今天的大多數(shù)程序員都在使用 Python、Rust、Go 或是其他新的編程語(yǔ)言。大部分人已經(jīng)不再需要掌握 C、C++等古老的編程語(yǔ)言了,甚至很多程序員已經(jīng)從手動(dòng)編碼開(kāi)始向 AI 編碼轉(zhuǎn)型。


但即便如此,還是有很多人認(rèn)為自己足夠了解并熟練掌握 C++這門古老的編程語(yǔ)言,但他們之中絕大部分人其實(shí)都在夸大其詞。這個(gè)說(shuō)法來(lái)自 Louis Brandy 此前發(fā)布的一篇博客——《永遠(yuǎn)不要相信自稱懂 C++的程序員》。

1、C++的“雙峰”特性


在博客中,Brandy 提到,自己在長(zhǎng)期面試 C++程序員的過(guò)程中開(kāi)始意識(shí)到 C++非常重要的一個(gè)特性,C++是一種“雙峰”語(yǔ)言。也就是說(shuō)剛剛接觸 C++的開(kāi)發(fā)者會(huì)覺(jué)得它很簡(jiǎn)單,但隨著了解深入,他們的自信會(huì)被這種語(yǔ)言龐大的復(fù)雜性慢慢摧毀,直到他們犯下了足夠的錯(cuò)誤,就像下面這張圖所展示的一樣。



程序員,尤其是那些曾經(jīng)學(xué)習(xí)過(guò) C 語(yǔ)言的程序員,通常能夠非常快速地掌握 C++并感覺(jué)對(duì)這門語(yǔ)言非常熟練。這些程序員會(huì)告訴你他們精通 C++,然而其實(shí)這并不是真實(shí)的。


隨著他們繼續(xù)學(xué)習(xí) C++,他們會(huì)經(jīng)歷這個(gè)沮喪的低谷,在這里他們會(huì)完全了解到這門語(yǔ)言的全部復(fù)雜性。但好消息是,程序員很容易意識(shí)到自己處于谷前和谷后的區(qū)別。只要你和他們提起 C++的復(fù)雜性,處于谷后位置的人會(huì)為你描述上百種他們寫 C++的挫敗經(jīng)歷。而處于谷前的人則會(huì)說(shuō),C++不過(guò)是有類的 C 而已。

2、沒(méi)人能真正精通 C++


當(dāng)然,很多程序員把這種說(shuō)法當(dāng)做一個(gè)玩笑,但也有很多人在爭(zhēng)論這種理論的正確性。在 Reddit 上,程序員們分享了對(duì)該說(shuō)法的觀點(diǎn),一位技術(shù)管理者提到,面試時(shí)他會(huì)讓程序員以 1—10 分為標(biāo)準(zhǔn)描述自己的 C++水平,如果答案高于 6,那就需要詳細(xì)談?wù)勱P(guān)于這門語(yǔ)言的細(xì)節(jié)了。


此外,這位面試官還提到,建議程序員在面試時(shí),盡量不要直接說(shuō)自己對(duì)哪門語(yǔ)言的掌握程度很好,而是要與面試官交流你具體擅長(zhǎng)處理哪類業(yè)務(wù)或哪類問(wèn)題,否則當(dāng)你遇到一位技術(shù)狂熱者時(shí),你將很容易在面試過(guò)程中暴露自己的無(wú)知。


在當(dāng)前以 AI 為主導(dǎo)的世界中,C++這門古老的語(yǔ)言好像更多變成了幫助人們建立知識(shí)體系和賣書的工具,而不是實(shí)際被用于生產(chǎn)的語(yǔ)言。一些 Reddit 用戶分享了他們將精通 C++寫在簡(jiǎn)歷上,但當(dāng)被問(wèn)到智能指針和右值引用等問(wèn)題時(shí)卻回答不出來(lái)的窘迫經(jīng)歷。



事實(shí)上,很多開(kāi)發(fā)者在使用 C++進(jìn)行工作時(shí),其實(shí)并不了解它的細(xì)節(jié),使用 C++幾十年的人大多也不敢說(shuō)非常熟悉這種語(yǔ)言。甚至連 C++之父 Bjarne Stroustrup 也曾表示自己并非 100%精通 C++,他提到:“C++存在一些錯(cuò)綜復(fù)雜的陷阱,大多數(shù)人甚至沒(méi)法寫出一個(gè)簡(jiǎn)單的沒(méi)有漏洞或錯(cuò)誤的類?!?/p>

2、世界仍然需要 C++


當(dāng)前編程世界中的真相是,你可以選擇任何適合你得編程語(yǔ)言。如果有人反駁這個(gè)觀點(diǎn),那便會(huì)被貼上“語(yǔ)言霸凌”的標(biāo)簽,編程語(yǔ)言只是一個(gè)程序員需要學(xué)習(xí)和使用的工具。如果 Python 能夠幫助你很好的完成工作,為什么還要使用 C++呢?


目前很多開(kāi)發(fā)者已經(jīng)認(rèn)為 C++是一種瀕臨死亡的語(yǔ)言,但事實(shí)上并不是這樣。如果開(kāi)發(fā)人員需要從頭開(kāi)始構(gòu)建一些東西,例如操作系統(tǒng)、游戲或其他基礎(chǔ)軟件,C++目前仍被認(rèn)為是實(shí)現(xiàn)這些目標(biāo)的首選語(yǔ)言,當(dāng)然在面對(duì)很多現(xiàn)代應(yīng)用開(kāi)發(fā)時(shí)使用復(fù)雜性過(guò)高的 C++會(huì)變得很痛苦。



C++為了不限制程序員的想法,包含了太多的范式,包括面向?qū)ο螅`活應(yīng)用 virtual 繼承+shared_ptr)、模塊化(type rich programming 和 meta programming)、函數(shù)式編程(lambda,配合文件),以及面向過(guò)程編程。然而當(dāng)前世界上的大多數(shù)需求,只需要用到面向?qū)ο蠡蚝瘮?shù)式編程。


顯然,無(wú)論是對(duì)于 C++還是其他語(yǔ)言,幾乎沒(méi)有人能夠做到對(duì)它們百分百了解,尤其是當(dāng)語(yǔ)言復(fù)雜性和特性隨著版本更新而不斷變化的情況下。C++只是在這種情況下會(huì)變得更甚,并且由于這種經(jīng)典語(yǔ)言的名氣效應(yīng),人們會(huì)給 C++程序員設(shè)定更高的標(biāo)準(zhǔn)。


大多數(shù) C++程序員都存在著這樣一種心態(tài)——“如果我能遵守這些規(guī)則,避免炫技、避免犯錯(cuò),我就可以避免把槍口對(duì)準(zhǔn)自己的腳?!币粋€(gè)很明顯的道理是,當(dāng)你被問(wèn)及是否了解 C++時(shí),最好的答案是:我對(duì) C++的了解足夠多,所以我認(rèn)為我并不足夠了解這種語(yǔ)言。



上一篇:用 Rust 拯救 60 歲老程序員:用 Ada 寫了幾十年的飛機(jī)程序,現(xiàn)在終于可以改用 Rust 了
下一篇: 干貨分享淺談自動(dòng)化測(cè)試方法

歡迎登錄盛圖科技

歡迎注冊(cè)盛圖科技

已有賬號(hào),立即登錄