首選 C++,徹底麻了!
發(fā)布時(shí)間:2024-01-03 10:15:28
這是個(gè)陷阱! 你為什么要這么做? 那么,還有什么其他選擇呢?
一、這是個(gè)陷阱!
通常來(lái)說(shuō),選擇 C++作為你的初始語(yǔ)言并不是一個(gè)好主意。在用 C++工作了很長(zhǎng)一段時(shí)間,并嘗試了許多不同的編程語(yǔ)言之后,我覺(jué)得 C++就像是用劣質(zhì)膠帶粘在一起的一團(tuán)亂麻,不知怎么地仍然堅(jiān)持著,甚至可能在最近的變化中朝著相對(duì)較好的方向發(fā)展,但對(duì)于初學(xué)者來(lái)說(shuō),真的算不上一個(gè)好選擇。
二、你為什么要這么做?
1,它非???!
這是很常見(jiàn)的誤解。語(yǔ)言本身并沒(méi)有快慢之分。當(dāng)然,有些語(yǔ)言可以比其他語(yǔ)言更快地解析或解釋?zhuān)@并不意味著用語(yǔ)言 A 編寫(xiě)的程序總是比用語(yǔ)言 B 編寫(xiě)的程序快,反之亦然。一個(gè)好的做法是問(wèn)自己“為什么?”和“什么時(shí)候?”為什么用 A 語(yǔ)言編寫(xiě)的程序可能比用 B 語(yǔ)言編寫(xiě)的同等程序更快/更慢?它在多大程度上對(duì)性能有意義?但這不是新手應(yīng)該關(guān)心的事情。一般來(lái)說(shuō),作為初學(xué)者,你不應(yīng)該關(guān)心“語(yǔ)言性能”,因?yàn)檫@是你在學(xué)習(xí)編程時(shí)最不需要擔(dān)心的事情之一。一開(kāi)始,真正的性能主要取決于代碼中使用的數(shù)據(jù)結(jié)構(gòu)和算法,而不是語(yǔ)言的選擇。
2,學(xué)習(xí) C++會(huì)教你一些底層的概念,比如指針和手動(dòng)內(nèi)存管理!
3,游戲編程是在 C++中完成的——通常伴隨著“性能”參數(shù)。
4,我懂一些 C 語(yǔ)言,所以 C++只是一個(gè)擴(kuò)展,所以我會(huì)學(xué)習(xí)它。
事實(shí)并非如此,這樣的想法會(huì)迫使你走上一條很難回頭的道路。注意,不要把 C++看作是 C 的補(bǔ)充,因?yàn)檫@就像把龍看作是他珍貴的金山的補(bǔ)充一樣愚蠢。如果執(zhí)意如此,你將目睹你無(wú)法理解的恐怖。
三、那么,還有什么其他選擇呢?
除了 C++之外,還有什么選擇?關(guān)于這個(gè)問(wèn)題,我將根據(jù)個(gè)人觀點(diǎn)來(lái)回答,我也會(huì)努力解釋為什么我是這樣想的。
1.Python
有些人會(huì)告訴你 Python 很爛。然而,我要告訴你,我喜歡 Python,因?yàn)樗苌僮屛沂.?dāng)我需要寫(xiě)一個(gè)簡(jiǎn)單的工具來(lái)自動(dòng)做一些事情,我希望它在任何地方都能工作時(shí),Python 就是我的夢(mèng)中情“語(yǔ)”。
它的長(zhǎng)期支持、龐大的社區(qū)、包管理器和現(xiàn)有的工具使我很難不向初學(xué)者推薦這門(mén)語(yǔ)言。它的語(yǔ)法確實(shí)非常具體,有些人甚至?xí)f(shuō)它很奇特,但是在使用它一段時(shí)間后,只有當(dāng)我不得不將代碼塊移動(dòng)到不同的位置并手動(dòng)修復(fù)每個(gè)縮進(jìn)時(shí),它才會(huì)讓我感到惱火。它甚至有類(lèi)型提示和易于使用的工具,以確保你遵守鍵入規(guī)則,有些人可能會(huì)覺(jué)得非常有用。
不過(guò),對(duì)于初學(xué)者來(lái)說(shuō),你很可能希望將重點(diǎn)放在龐大的 PyPI 存儲(chǔ)庫(kù)上,以便為自己編寫(xiě)一些有用的東西。它的文檔也相對(duì)不錯(cuò),甚至有一個(gè)教程讓你入門(mén),但如果你完全是 IT 新手,建議尋找一個(gè)更適合你的知識(shí)水平的入門(mén)教程,因?yàn)椤肮俜健钡慕坛滩皇呛苊嫦蛐率帧?/span>
2.JavaScript
3.Kotlin
如果你想學(xué)習(xí) Java,不管你有什么緊迫的理由,盡量放棄 Java,學(xué)習(xí) Kotlin 吧!如果你想制作 Android 應(yīng)用程序,并且你更愿意使用官方工具而不是一些 web 開(kāi)發(fā)工具,Kotlin 就是你的理想之選。它的 Java 遺產(chǎn)使它成為一種相當(dāng)不錯(cuò)的入門(mén)語(yǔ)言,因?yàn)槟慵扔幸婚T(mén)漂亮的現(xiàn)代語(yǔ)言,也有很好的現(xiàn)代語(yǔ)法和有用的功能,使用起來(lái)非常愉快,還有一個(gè)龐大的庫(kù)存儲(chǔ)庫(kù),其中一些庫(kù)在 Kotlin 出現(xiàn)之前很久就編寫(xiě)了。我很少使用這門(mén)語(yǔ)言,但我?guī)缀跸硎苁褂盟拿恳豢獭?/span>
4.C
你想和你的硬件保持密切的關(guān)系嗎?如果是,這就是一門(mén)合心意的語(yǔ)言。平心而論,C 確實(shí)缺乏真正的泛型,但這并不妨礙人們現(xiàn)在使用它。
這份清單絕不是全面的。有很多被認(rèn)為“適合初學(xué)者”的語(yǔ)言沒(méi)有出現(xiàn)在這個(gè)列表中,只是因?yàn)槲覐膩?lái)沒(méi)有使用過(guò)它們,或者工作了太久,以至于我的知識(shí)儲(chǔ)備已經(jīng)不適應(yīng)其當(dāng)前的發(fā)展?fàn)顟B(tài)(比如 C#,我想說(shuō)點(diǎn)什么,但我真的不能)。
請(qǐng)注意,我在這里的重點(diǎn)是推薦一種相對(duì)容易學(xué)習(xí)和使用的語(yǔ)言,基本標(biāo)準(zhǔn)是它有一個(gè)大的社區(qū)和大量的學(xué)習(xí)資源。C++在這些方面都缺乏,這使得以“正確”的方式學(xué)習(xí)現(xiàn)代 C++變得異常困難。而且,公平地說(shuō),這使得在 C++中做任何事情都變得不合理地復(fù)雜和痛苦。
曾經(jīng)嘗試過(guò)從頭開(kāi)始設(shè)置具有自動(dòng)單元和集成測(cè)試的 C++項(xiàng)目嗎?我做了,但都以失敗告終。不是因?yàn)檫@是不可能的,而是因?yàn)槲覍幵高x擇一種支持開(kāi)箱即用的語(yǔ)言(至少是單元測(cè)試)。
以上為本次所有分享內(nèi)容