為什麼我們需要學習C++,實在是古老又難的?我們是自己沒事找事

首先,讓我說一個圍繞編碼界的錯誤觀念,即“ C ++比Python低”,或者您可以將“ Python”替換為許多其他動態程式語言。

嗯。。。。。不

首先讓我們定義什麼是低階,定義“低階”將幫助我們理解為什麼C ++在遊戲中如此受歡迎。

低階只是機器程式碼的另一個計算術語。因此,存在的唯一低階語言是彙編。

低階語言通常與具有低階功能的高階語言混合在一起。

為什麼我們需要學習C++,實在是古老又難的?我們是自己沒事找事

有什麼不同 ?

區別在於,對於低階語言,它必須將語法明智的一對一對映或非常接近於機器程式碼。

看一下彙編程式碼和C程式碼,差異很大,因此C或C ++都不是低階語言,它們都是高階語言

但是它們仍然具有低階功能,例如,它們可以操縱記憶體或從暫存器中讀取和寫入資料,並且通常可以像Assembly一樣訪問硬體。

但是,它們是透過使用庫來實現的,而透過以語法實現這些功能的實現則要少得多。

事實是C和C ++並不是低級別的,因為它們永遠都不需要,這兩種語言都可以內聯彙編程式碼並可以連結從Assembly原始碼檔案生成的目標檔案,從而為您提供了兩種與Assembly混合的方式。

然而,由於硬體變得越來越複雜的原因,彙編的使用越來越少,而彙編(低階語言的另一個特性)的使用也越來越少,因此這些功能已轉換為C / C ++庫。

將1對1對映到機器程式碼對於效能而言是非常重要的。它可以幫助您減少機器程式碼,並允許使用某些硬體加速功能。兩者都對效能至關重要。

C / C ++在生成儘可能少的機器程式碼方面表現出色,而在不這樣做的情況下,因為較長的程式碼會利用某種形式的硬體加速。

因為C是真正優先考慮效能的第一語言,所以它已成為OS開發的語言。C ++是C語言傳統的延續,重點是OOP。當您必須處理複雜資料以及與資料的複雜程式碼互動時,OOP是理想的選擇。

像許多其他庫一樣,圖形庫也是由作業系統提供的,並且由於作業系統通常是用C或C ++編寫的,所以這些庫是用C或C ++或二者兼有的。

因此,自從黎明以來遊戲就一直使用C ++就不足為奇了。

為什麼我們需要學習C++,實在是古老又難的?我們是自己沒事找事

但是,無論其他人在這裡回答什麼,C ++都不是遊戲開發中最受歡迎的語言。事實上,至少對於遊戲開發而言,C ++是一種垂死的語言。

這可能會令人驚訝,因為在遊戲開發中一再提到C ++。

如今,絕大多數遊戲都是使用遊戲引擎編寫的。

發生這種情況的原因是,正如我們早先所說的那樣,硬體已經變得如此複雜,不僅很難在Assembly中編寫程式碼,甚至在C ++中也是如此。

有兩個主要的遊戲引擎Unity和Unreal。到目前為止,Unity最受歡迎,因為它首先出現在市場上,因為從第一天開始,它就支援移動開發,這是一個發展迅速的領域,而且它的重量很輕。

因此,大多數遊戲不是用C ++編寫的,而是用C#編寫的。

第二個候選物件是Unreal,它確實允許使用C ++編寫遊戲,但這是嗎?

虛幻C ++是一個很奇怪的C ++,儘管它是C ++,但它確實具有C ++框架中通常不具備的2個功能:GC和Reflection。很明顯,Epic試圖使它更接近Unity的C#。但是,即使虛幻遊戲仍然使用C ++,它也向前邁了一步。

虛幻技術引入了一種新的語言,即一種稱為“藍圖”的可視編碼語言,這種語言在藝術家和其他非編碼人員中非常流行,但自從成為Epic的真正方便且非常積極地支援後,甚至對於遊戲編碼人員來說,這也是一種規範。

但是,也許您會說,好吧,C ++未用於Unity遊戲,虛幻並不是我們喜歡討厭的C ++,加上幾乎一半的《藍圖》程式碼,但是不使用遊戲引擎的遊戲呢?

有些遊戲沒有使用遊戲引擎,也沒有實現自己的遊戲引擎,例如,虛幻遊戲一直是虛幻遊戲的引擎,虛幻遊戲是Epic的旗艦遊戲。但是,這裡仍然存在很大的問題。

即使在Windows C ++上仍然很流行,在Linux上也很流行,但在移動世界上卻不是。iOS具有由Swift語言逐漸取代的Objective C,而Android具有Java。

切記,目前的遊戲市場大約是PC的30%,移動(智慧手機)的30%,遊戲機的30%,而桌面遊戲則佔10%以上,而網頁遊戲則佔很小的比例。

在控制檯中,我不太確定,我認為XBone也應該使用C#。

無論如何,這都是有爭議的,因為90%的遊戲使用Unity或Unreal。

即使您堅持要求將Unreal C ++仍稱為Unreal,但我不確定在社群中Unreal C ++會持續多久,即使開發人員喜歡藍圖,但仍在推動C#的發展。這不是因為我們喜歡C#,而是使從Unity到Unity的程式碼移植更加容易。Epic一直在支援C#。

因此,到目前為止,非常流行的是C#,它只會變得越來越流行。

還有動態語言滲透這兩個大龐然大物的趨勢。虛幻引擎部分支援python和lua。

我還將自己移植到Pharo程式語言,這是一種有史以來最有影響力的語言,即Smalltalk,是一種未知的實用語言。Pharo是一種實時編碼語言,這意味著它允許我在執行程式碼時更改程式碼,這對於RAD(快速應用程式開發)以及通常用於快速嘗試新想法非常方便。

當然,這裡的反論點可能是Unity和Unreal仍然是用C ++編寫的,如果您想深入瞭解它們,則必須具備C ++的知識。

但是,瞭解C ++是一回事,而要在其中編寫程式碼是另一回事。

編碼和遊戲開發的一般經驗法則

“一種語言的動態性越差,就越應該避免使用它”

為什麼我們需要學習C++,實在是古老又難的?我們是自己沒事找事

當然,以上都是個人以及別人一起總結出來的觀點。存在與你們可能不同的想法,還請包容。