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

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

首選 C++,徹底麻了!

發(fā)布時(shí)間:2024-01-03 10:15:28

“作為初學(xué)者,我應(yīng)該選擇什么語(yǔ)言?”

本文將圍繞以下四點(diǎn)展開:

一、這是個(gè)陷阱!

通常來(lái)說,選擇 C++作為你的初始語(yǔ)言并不是一個(gè)好主意。在用 C++工作了很長(zhǎng)一段時(shí)間,并嘗試了許多不同的編程語(yǔ)言之后,我覺得 C++就像是用劣質(zhì)膠帶粘在一起的一團(tuán)亂麻,不知怎么地仍然堅(jiān)持著,甚至可能在最近的變化中朝著相對(duì)較好的方向發(fā)展,但對(duì)于初學(xué)者來(lái)說,真的算不上一個(gè)好選擇。

二、你為什么要這么做?

在大多數(shù)情況下,我總是會(huì)聽到一些具體的論點(diǎn),試圖努力地證明選擇 C++作為入門也不錯(cuò)。比如:

1,它非???!

這是很常見的誤解。語(yǔ)言本身并沒有快慢之分。當(dāng)然,有些語(yǔ)言可以比其他語(yǔ)言更快地解析或解釋,但這并不意味著用語(yǔ)言 A 編寫的程序總是比用語(yǔ)言 B 編寫的程序快,反之亦然。一個(gè)好的做法是問自己“為什么?”和“什么時(shí)候?”為什么用 A 語(yǔ)言編寫的程序可能比用 B 語(yǔ)言編寫的同等程序更快/更慢?它在多大程度上對(duì)性能有意義?但這不是新手應(yīng)該關(guān)心的事情。一般來(lái)說,作為初學(xué)者,你不應(yīng)該關(guān)心“語(yǔ)言性能”,因?yàn)檫@是你在學(xué)習(xí)編程時(shí)最不需要擔(dān)心的事情之一。一開始,真正的性能主要取決于代碼中使用的數(shù)據(jù)結(jié)構(gòu)和算法,而不是語(yǔ)言的選擇。   

2,學(xué)習(xí) C++會(huì)教你一些底層的概念,比如指針和手動(dòng)內(nèi)存管理!

它的確可以,但是問題在于:你大多數(shù)時(shí)候不需要知道這些低級(jí)的概念來(lái)編寫軟件和學(xué)習(xí)編程。每天都有成千上萬(wàn)的程序員在不知道指針是什么,或者如何手動(dòng)管理內(nèi)存的情況下編寫出完美而有效的代碼。這并不是為了編寫工作代碼而必須知道的東西。這對(duì)你來(lái)說可能永遠(yuǎn)都沒有用。固然,知道指針和手動(dòng)內(nèi)存管理在很多情況下是有用的,但對(duì)于初學(xué)者來(lái)說,這不是剛需,因?yàn)榧词乖?C++中,你通常也不想手動(dòng)管理原始指針和內(nèi)存分配。

3,游戲編程是在 C++中完成的——通常伴隨著“性能”參數(shù)。

這個(gè)論點(diǎn)有時(shí)也站不住腳,因?yàn)橛性S多非常流行的游戲引擎提供了一種更適合新手的游戲開發(fā)方法。Godot 是最好的例子之一,因?yàn)樗凶约旱墓ぞ呒?,可以使用自己?GDScript 語(yǔ)言,也可以與其他語(yǔ)言和工具一起使用。我知道有很多人在使用 C++進(jìn)行游戲開發(fā),他們也有自己的觀點(diǎn)——相對(duì)接近硬件。但我仍然堅(jiān)信,如果你想學(xué)習(xí)“編程”和“游戲開發(fā)”,這可能適得其反,因?yàn)樵趯W(xué)習(xí)你真正想學(xué)的東西之前,它帶有“必須學(xué)習(xí) C++”的沉重包袱。

4,我懂一些 C 語(yǔ)言,所以 C++只是一個(gè)擴(kuò)展,所以我會(huì)學(xué)習(xí)它。

事實(shí)并非如此,這樣的想法會(huì)迫使你走上一條很難回頭的道路。注意,不要把 C++看作是 C 的補(bǔ)充,因?yàn)檫@就像把龍看作是他珍貴的金山的補(bǔ)充一樣愚蠢。如果執(zhí)意如此,你將目睹你無(wú)法理解的恐怖。

三、那么,還有什么其他選擇呢? 

除了 C++之外,還有什么選擇?關(guān)于這個(gè)問題,我將根據(jù)個(gè)人觀點(diǎn)來(lái)回答,我也會(huì)努力解釋為什么我是這樣想的。

1.Python

有些人會(huì)告訴你 Python 很爛。然而,我要告訴你,我喜歡 Python,因?yàn)樗苌僮屛沂?。?dāng)我需要寫一個(gè)簡(jiǎn)單的工具來(lái)自動(dòng)做一些事情,我希望它在任何地方都能工作時(shí),Python 就是我的夢(mèng)中情“語(yǔ)”。

它的長(zhǎng)期支持、龐大的社區(qū)、包管理器和現(xiàn)有的工具使我很難不向初學(xué)者推薦這門語(yǔ)言。它的語(yǔ)法確實(shí)非常具體,有些人甚至?xí)f它很奇特,但是在使用它一段時(shí)間后,只有當(dāng)我不得不將代碼塊移動(dòng)到不同的位置并手動(dòng)修復(fù)每個(gè)縮進(jìn)時(shí),它才會(huì)讓我感到惱火。它甚至有類型提示和易于使用的工具,以確保你遵守鍵入規(guī)則,有些人可能會(huì)覺得非常有用。

不過,對(duì)于初學(xué)者來(lái)說,你很可能希望將重點(diǎn)放在龐大的 PyPI 存儲(chǔ)庫(kù)上,以便為自己編寫一些有用的東西。它的文檔也相對(duì)不錯(cuò),甚至有一個(gè)教程讓你入門,但如果你完全是 IT 新手,建議尋找一個(gè)更適合你的知識(shí)水平的入門教程,因?yàn)椤肮俜健钡慕坛滩皇呛苊嫦蛐率帧?/span>

2.JavaScript

它是通往廣闊 Web 應(yīng)用程序世界的非常簡(jiǎn)單的門戶,但不僅如此,因?yàn)楝F(xiàn)在你幾乎可以在任何地方插入 JavaScript......我個(gè)人不是這種語(yǔ)言的粉絲,但從我所看到的,我發(fā)現(xiàn)從 JavaScript 開始的人有一定的“自由”,可以在他們想要的任何地方使用這種語(yǔ)言。我更支持 JavaScript 作為初學(xué)者,而不是 C++,但是要注意這種語(yǔ)言自帶的許多陷阱。這基本上適用于任何語(yǔ)言,但大開發(fā)不會(huì)告訴你這一點(diǎn)!

3.Kotlin

如果你想學(xué)習(xí) Java,不管你有什么緊迫的理由,盡量放棄 Java,學(xué)習(xí) Kotlin 吧!如果你想制作 Android 應(yīng)用程序,并且你更愿意使用官方工具而不是一些 web 開發(fā)工具,Kotlin 就是你的理想之選。它的 Java 遺產(chǎn)使它成為一種相當(dāng)不錯(cuò)的入門語(yǔ)言,因?yàn)槟慵扔幸婚T漂亮的現(xiàn)代語(yǔ)言,也有很好的現(xiàn)代語(yǔ)法和有用的功能,使用起來(lái)非常愉快,還有一個(gè)龐大的庫(kù)存儲(chǔ)庫(kù),其中一些庫(kù)在 Kotlin 出現(xiàn)之前很久就編寫了。我很少使用這門語(yǔ)言,但我?guī)缀跸硎苁褂盟拿恳豢獭?/span>

4.C

你想和你的硬件保持密切的關(guān)系嗎?如果是,這就是一門合心意的語(yǔ)言。平心而論,C 確實(shí)缺乏真正的泛型,但這并不妨礙人們現(xiàn)在使用它。

這份清單絕不是全面的。有很多被認(rèn)為“適合初學(xué)者”的語(yǔ)言沒有出現(xiàn)在這個(gè)列表中,只是因?yàn)槲覐膩?lái)沒有使用過它們,或者工作了太久,以至于我的知識(shí)儲(chǔ)備已經(jīng)不適應(yīng)其當(dāng)前的發(fā)展?fàn)顟B(tài)(比如 C#,我想說點(diǎn)什么,但我真的不能)。

請(qǐng)注意,我在這里的重點(diǎn)是推薦一種相對(duì)容易學(xué)習(xí)和使用的語(yǔ)言,基本標(biāo)準(zhǔn)是它有一個(gè)大的社區(qū)和大量的學(xué)習(xí)資源。C++在這些方面都缺乏,這使得以“正確”的方式學(xué)習(xí)現(xiàn)代 C++變得異常困難。而且,公平地說,這使得在 C++中做任何事情都變得不合理地復(fù)雜和痛苦。

曾經(jīng)嘗試過從頭開始設(shè)置具有自動(dòng)單元和集成測(cè)試的 C++項(xiàng)目嗎?我做了,但都以失敗告終。不是因?yàn)檫@是不可能的,而是因?yàn)槲覍幵高x擇一種支持開箱即用的語(yǔ)言(至少是單元測(cè)試)。


以上為本次所有分享內(nèi)容

640.png

上一篇:深入解析 Linux 進(jìn)程管理機(jī)制
下一篇:Linux 中 tar 命令的用法

歡迎登錄盛圖科技

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

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