!c語(yǔ)言 為什么有些算法崗位,需要用C 而不是python?
為什么有些算法崗位,需要用C 而不是python?C/C是一種相對(duì)低級(jí)的語(yǔ)言,它可以很好地控制CPU/內(nèi)存和其他計(jì)算機(jī)資源,尤其是硬件。在算法運(yùn)算最精細(xì)的時(shí)候使用它們是很自然的。但它們的優(yōu)點(diǎn)也是缺點(diǎn)
為什么有些算法崗位,需要用C 而不是python?
C/C是一種相對(duì)低級(jí)的語(yǔ)言,它可以很好地控制CPU/內(nèi)存和其他計(jì)算機(jī)資源,尤其是硬件。在算法運(yùn)算最精細(xì)的時(shí)候使用它們是很自然的。
但它們的優(yōu)點(diǎn)也是缺點(diǎn)。精細(xì)的操作自然需要精細(xì)的編程,精細(xì)的編程自然需要復(fù)雜的語(yǔ)言設(shè)置,比如什么是指針,什么是指針函數(shù),什么是函數(shù)指針當(dāng)你理解了這些概念,你可能就沒有編寫代碼的沖動(dòng)了。更重要的是,如果你想編寫高性能的代碼,你必須精通這些概念
Python的一個(gè)非常重要的特性就是所謂的“粘合語(yǔ)言”,也就是說(shuō)它可以將用不同語(yǔ)言編寫的代碼模塊組合起來(lái),然后通過(guò)Python調(diào)用它們。實(shí)際上,大多數(shù)算法庫(kù)都是用C/C語(yǔ)言編寫的,然后提供Python接口供用戶使用。畢竟,大多數(shù)人只需要知道如何調(diào)用封裝的算法。但是如果你想實(shí)現(xiàn)你自己的算法,你必須知道C/C
例如,Python就像一個(gè)電視遙控器,C/C就像遙控器中的電路板。通常,如果你想換臺(tái),只需按一下按鈕。但有一天你只需要一個(gè)將屏幕旋轉(zhuǎn)90度的功能,遙控器沒有這個(gè)功能,但可以通過(guò)卸下遙控板,插入幾個(gè)組件來(lái)實(shí)現(xiàn)。你是做什么的?
只精通一門C語(yǔ)言的人,算不算程序員?
只有精通C語(yǔ)言的程序員是遠(yuǎn)遠(yuǎn)不夠的,更不用說(shuō)C語(yǔ)言了,即使你只精通Java,精通C,都不是程序員,為什么?請(qǐng)繼續(xù)閱讀:
了解C語(yǔ)言意味著你可以根據(jù)C語(yǔ)言的語(yǔ)法編寫一段代碼,但它只是一段簡(jiǎn)單的代碼。想讓代碼有靈魂,那就是能夠在實(shí)踐中解決問(wèn)題或滿足客戶的實(shí)際需求。試想一下,客戶讓你做一個(gè)網(wǎng)絡(luò)視頻傳輸模塊,你需要了解視頻從客戶端服務(wù)器到終端的交互過(guò)程,才能編寫這個(gè)系統(tǒng),而你只能用scanf函數(shù)從鍵盤上讀取一個(gè)數(shù)據(jù),然后用printf函數(shù)輸出數(shù)據(jù),這只能說(shuō)明你的C語(yǔ)言語(yǔ)法不錯(cuò),但有什么用呢?您幫助客戶解決了哪些問(wèn)題?
算法是程序的靈魂,程序員在編寫每一個(gè)C語(yǔ)言代碼時(shí)都會(huì)不知不覺地使用一些算法。其中最常見的是人體識(shí)別算法。
也許你可以用C語(yǔ)言的指針很流暢,用C語(yǔ)言的鏈表很方便,用C語(yǔ)言的二維數(shù)組就不用說(shuō)了,但只要寫這些就可以認(rèn)出一張臉了?顯然不是。
算法就像一張印有規(guī)則的紙。你看看紙上的規(guī)則,然后用你學(xué)過(guò)的C語(yǔ)言語(yǔ)法,按照規(guī)則寫代碼。算法的靈魂在于代碼。
要為客戶做生意,僅僅理解一種編程語(yǔ)言是不夠的。例如,如果你懂Java,Android的開發(fā)是非常順利的。但是如果你想在Android手機(jī)上實(shí)現(xiàn)視頻采集,目前只懂java是不夠的。這種與視頻處理相關(guān)的底層功能需要借助原生方法,而原生方法通常是用C語(yǔ)言實(shí)現(xiàn)的。
大多數(shù)情況下,許多編程語(yǔ)言相互補(bǔ)充以實(shí)現(xiàn)一個(gè)目標(biāo)。
以上只是程序員學(xué)習(xí)的一小部分,程序員要學(xué)的東西太多了,技術(shù)日新月異,要保持一顆學(xué)習(xí)的心!