大學(xué)將C和C++視為最難的語言,為什么還在Java之前教C呢?
大學(xué)計(jì)算機(jī)專業(yè)從大一到大四一般會(huì)學(xué)到當(dāng)今互聯(lián)網(wǎng)用得最廣泛的幾種編程語言,例如C/C++、Java、Python、JS、.net等。但是對(duì)于大學(xué)生學(xué)習(xí),我們一開始就會(huì)學(xué)習(xí)C語言,大多數(shù)學(xué)校,也會(huì)進(jìn)一步選擇開設(shè)C++課程,當(dāng)然都是入門基礎(chǔ)。

在學(xué)完C語言C++之后,就會(huì)開始在大二的時(shí)候開始學(xué)習(xí)其他的編程語言,想Java、JS等。但是不是C++最難嗎?為什么學(xué)校方面會(huì)先難后易,這是不是打擊大家學(xué)習(xí)編程的積極性呢?
雖然事實(shí)可能如此,但您是否認(rèn)為此Java代碼:
公共類HelloWorld?{
公共靜態(tài)void?main(String?[]?args){
System.out.println(“?Hello?world”);
}
}
比執(zhí)行相同功能的C代碼更容易向初學(xué)者解釋?:
#include?
int?main(int?argc,char?*?argv?[])
{
puts(“?Hello?world”);
返回0;
}
Java代碼包含許多初學(xué)者不需要的概念,只需要了解事物的工作原理即可。類,類訪問級(jí)別,靜態(tài)方法,字符串?dāng)?shù)組,方法訪問級(jí)別,靜態(tài)屬性等是復(fù)雜的概念。同一程序的C版本非常簡(jiǎn)單。

無論如何,由于以下幾個(gè)因素,我認(rèn)為C和C?++是開始學(xué)習(xí)編碼的更好選擇:
(1)他們教計(jì)算機(jī)如何在內(nèi)部工作。堆棧,堆,內(nèi)存管理,懸空指針以及所有這些東西都隱藏在高級(jí)語言中。
(2)它們提供了良好的抽象水平。
(3)在學(xué)習(xí)用C?++進(jìn)行編碼時(shí),學(xué)生們學(xué)習(xí)到比面向?qū)ο蟮木幊谈嗟姆独?。泛型編程和過程編程是完全好的編碼方法。Java教會(huì)您認(rèn)為只有OOP實(shí)現(xiàn)事物的方法才是正確的方法(繼承,多態(tài)和封裝)。我見過很多有濃厚Java背景的C?++學(xué)生,他們?cè)噲D在任何地方都使用繼承和多態(tài)性,包括使用更簡(jiǎn)單的解決方案會(huì)更好的方案。
(4)使用C和C?++的學(xué)生將學(xué)會(huì)對(duì)自己的行為負(fù)責(zé):懸空的指針訪問,除以零或越界訪問是程序員的錯(cuò)誤,這些錯(cuò)誤不會(huì)被任何中間人(某些VM)捕獲。他們學(xué)習(xí)了如何使代碼更可靠的艱難方法。
(5)C?++教導(dǎo)說性能永遠(yuǎn)是最重要的。

關(guān)于C和C?++死亡的想法只是幼稚的。大佬們認(rèn)為,用最尖端的技術(shù)編寫用于手機(jī)或優(yōu)質(zhì)微服務(wù)的應(yīng)用程序是世界所需的一切。也許這是我們大多數(shù)人所需要的一切,但是如果發(fā)生這種情況,那是因?yàn)樵谀切O其容易捕捉的框架和高級(jí)語言的背后,存在著一個(gè)復(fù)雜而優(yōu)美的基礎(chǔ)架構(gòu)(通常用C和C?++編寫),抽象化了所有使他們以為無需擔(dān)心讓應(yīng)用程序正常運(yùn)行。
那么,站在一個(gè)程序員的角度講,你覺得先學(xué)C/C++會(huì)不會(huì)更好呢?
另外如果你想更好的提升你的編程能力,學(xué)好C語言C++編程,以便更好地考研或者工作的話!
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!

學(xué)習(xí)C/C++編程知識(shí),提升C/C++編程能力,歡迎關(guān)注UP一起來成長(zhǎng)!
另外,UP在主頁上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對(duì)你有幫助的~

編程學(xué)習(xí)視頻
