為什么很多高校將c語(yǔ)言作為編程入門(mén)語(yǔ)言
世界上大約有幾百種編程語(yǔ)言。但是,平時(shí)被更多開(kāi)發(fā)人員使用的大約只有 20多種。在這20多種編程語(yǔ)言中,有些人可能需要學(xué)會(huì)不止一種編程語(yǔ)言,那么對(duì)于一個(gè)初學(xué)者該如何選擇自己的第一個(gè)入門(mén)編程語(yǔ)言呢?
如果你在大學(xué)學(xué)習(xí)計(jì)算機(jī)科學(xué),課程大綱通常首先是 C 編程語(yǔ)言。
C讓你成為一個(gè)好的算法工程師
刷過(guò)算法的同學(xué)都知道,算法試題可以使用多種語(yǔ)言來(lái)解決,但是對(duì)于培養(yǎng)算法思維,最好的語(yǔ)言就是c語(yǔ)言,因?yàn)樗暮?jiǎn)陋,因?yàn)樗撵`活,很多其它語(yǔ)言提供的庫(kù)函數(shù)或者常用功能,你都需要自己去實(shí)現(xiàn),而在實(shí)現(xiàn)的過(guò)程中,你往往能夠加深對(duì)算法的理解,加深對(duì)數(shù)據(jù)結(jié)構(gòu)的理解,而編程本質(zhì)上就是算法加上數(shù)據(jù)結(jié)構(gòu)。
C讓你離操作系統(tǒng)硬件更近
你可能聽(tīng)說(shuō)過(guò)java,python,C#等編程語(yǔ)言屬于高級(jí)語(yǔ)言,而c語(yǔ)言被稱(chēng)為“中級(jí)語(yǔ)言”,因?yàn)閏語(yǔ)言不僅具有高級(jí)語(yǔ)言的特性,同時(shí)它也具備一定低級(jí)語(yǔ)言的特性。
在我們使用高級(jí)語(yǔ)言的時(shí)候,我們是無(wú)法直接訪(fǎng)問(wèn)硬件資源的,而使用c語(yǔ)言,我們就可以直接和硬件打交道,我們可以直接操作內(nèi)存,自己管理內(nèi)存的分配和釋放。
對(duì)于很多硬件我們都需要一些驅(qū)動(dòng)進(jìn)行管理,而這些驅(qū)動(dòng)都是使用c語(yǔ)言來(lái)編寫(xiě)的。
總之,高級(jí)語(yǔ)言更像是在一個(gè)二手房里面裝修,雖然它提供了非常方便的水電接口調(diào)用,但是還是不如我們自己直接在毛坯房里面改造更阿吉靈活。
C讓你能力越大,責(zé)任越大
c語(yǔ)言給了你巨大的能力,你可以使用它做很多事情,你甚至可以使用它創(chuàng)造出一門(mén)新語(yǔ)言,很多高級(jí)語(yǔ)言底層就是用c語(yǔ)言來(lái)編寫(xiě)的。
c語(yǔ)言可以靈活地訪(fǎng)問(wèn)內(nèi)存,你可以非常方便的優(yōu)化你的程序,你可以隨時(shí)對(duì)內(nèi)存進(jìn)行管理,但是就像那句話(huà)說(shuō)的,能力越大,責(zé)任越大。雖然你可以方便的管理內(nèi)存,但是如果你忘記了資源的回收,那么很可能你的程序就會(huì)導(dǎo)致系統(tǒng)的崩潰。
C 讓你的代碼執(zhí)行效率更高
因?yàn)閏語(yǔ)言更接近底層,因此使用c語(yǔ)言編寫(xiě)的程序執(zhí)行效率更高,當(dāng)然一切的前提都是你是在合理地使用它。
和高級(jí)語(yǔ)言不同,c語(yǔ)言更多地是面向過(guò)程編程,它更需要我們自己對(duì)程序有抽象能力。
c語(yǔ)言給我們提供了訪(fǎng)問(wèn)底層的能力,因此我們可以更加方便地寫(xiě)出高效的程序出來(lái)。
C 讓你的代碼更加整潔。
與python的簡(jiǎn)潔不同,實(shí)現(xiàn)同樣的共功能,你可能需要比python多些可能十倍的代碼。隨著功能復(fù)雜度的提升,這個(gè)差距可能會(huì)被越來(lái)越大。
那么如何讓這個(gè)差距縮小,這就考驗(yàn)我們的代碼重構(gòu)能力,考驗(yàn)我們的代碼整潔程度。
當(dāng)你綁著沙袋練習(xí)的時(shí)候,你可能會(huì)很累,但是當(dāng)你把沙袋拿掉的時(shí)候,你會(huì)體驗(yàn)到身輕如燕,同理,當(dāng)你使用c語(yǔ)言能夠編寫(xiě)出整潔代碼的時(shí)候,你再使用其它語(yǔ)言一定會(huì)寫(xiě)的更加出色
結(jié)論
現(xiàn)代的編程語(yǔ)言越來(lái)越復(fù)雜,比如java語(yǔ)言,它提供了各種語(yǔ)法糖,提供了各種包,提供了各種類(lèi)庫(kù),雖然它在一定程度上解放了開(kāi)發(fā)人員,但是它也在一定程度上限制了開(kāi)發(fā)人員。
任何東西都是有利有弊的,當(dāng)你擁有的夠多的時(shí)候,你必然會(huì)失去更多。
c語(yǔ)言雖然不如高級(jí)語(yǔ)言有著豐富的輪子,但是有些時(shí)候自己造輪子的樂(lè)趣和實(shí)踐能力對(duì)一個(gè)人的發(fā)展更加有幫助。