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