-
1 # 魏智勇
-
2 # 傳智播客
有關C/C++的需求量是不是越來越低,我們看一下層級問題:
硬體層級:這裡也就是實體硬體,包括:CPU、記憶體、顯示卡等等...這些都不屬於軟體的範疇內。
彙編層級:在之前沒有C/C++以及java之前,是彙編的年代。那麼組合語言對於我們來說,可讀性是很查的,不適合開發;現在因為有編譯器的存在,可以把“高階語言”寫好的程式碼直接轉化成”組合語言“,所以市場組合語言的工程師需要量變得很少。
系統層級:我們平時所有應用的app、或者電腦軟體都是泡在作業系統上的,就是windows、linux、Mac OS、Android還有IOS等等,這些作業系統本身的程式碼也都是用C語言實現的,因為C語言是最早的高階語言。也就是效能最優的語言。
應用層級:應用層級的程式,更加偏重的是軟體程式的執行流程和功能,而開發起來的體量很大,這樣就需要具備面向物件的程式設計雨大,因為面向物件是比較合適我們理解和交流的程式設計方式。所以C++基於C的基礎上做了完善,還有Java也是佔據這類語言的主導地位。
指令碼層級:在這一層級的語言,更加看重的是程式設計語義,讓開發者的程式碼看上去是很直觀的。增加了程式碼的可讀性,編譯器把指令碼語言翻譯成組合語言,這樣的情況下,成本較大,延長了翻譯時間,這樣的結果就是程式效能下降。
有關C語言和python還是Java選擇什麼比較好?
問題是你要找準自己以後的定位,其實C語言作為入門的話,優勢是有的。我們在計算機專業的大學生。通常在大一的時候學的語言就是C。原因也很簡單,因為C語言是早的程式語言,C++是透過C最佳化來的,Java也可以算是從C++發展來的,因此Java和C語言比較類似的。所以C語言學好後再去涉及到Java、python會輕鬆很多的。
以上是Java學習比較完成的線路圖,還是要看自己未來要涉及哪一方面。
上圖是python學習的各個階段
這裡是C語言的各個學習階段。
為什麼一定要強調要找好自己未來的定位在去入手學習,用python舉例。之前有一個朋友問我電商學習python的好處,那一定是爬蟲啊。 爬其他電商的資料銷售量等等是對電商有一定幫助的。所以他入門就是爬蟲為主,學了寫語法直接學的是爬蟲開發。有目的的學習是知道自己要做什麼,然後再去學習就會系統。如果你只想做人工智慧,那麼你學完了python的基礎知識就可以學習資料探勘和人工智慧了,其他步驟就可省去。建議每一個程式設計入門的小夥伴,都要準確的知道自己的發展在哪。就算不知道也沒有關係,哪怕知道自己學習這個語言先要做什麼專案,再去找到各個知識點。你就會發現這個知識點是幹什麼的。
-
3 # 中國頂級科技評論人
看需求,前面幾個回覆我稍微瞄了一眼。傳智播客說的還算比較中肯,千萬別相信什麼一口咬定學哪個語言好。
講道理,這些各有千秋,比如C語言,搞硬體必備,其他語言都不合適,搞C++,做圖形介面得天獨厚。JAVA就更不用說了,移動端必備。
那你要說你牛逼全部都學,那你大可一試。
有人說從C語言學起來可以更好的理解計算機的邏輯,當然這沒錯。但是或許你根本不需要了解太深入呢?比如Python並沒說過指標,但是python全部都是指標。
你只要明白你的需求,再去找這些語言作為工具,你就會發現你的需求決定你需要學習的語言,雖然很多時候各種語言都能完成這一件事。但是比較起來還是各有千秋的。
C語言是屬於面相過程的,Python是面相物件的,當然也可以做面相過程使用。C語言你需要明確理解各個變數的含義,在Python上比較模糊,但是高手還是要理解它的特定意義,Python為了表現的更加優雅,其實對於學習者來說並不是像傳說中那麼簡單啥的。
以後不要以為程式設計就是學習語言。語言只是個小工具,要理解的是裡面的道道兒。說的高大上一點叫做程式設計思想。比如爬蟲,資料庫設計,作業系統設計。這都是思想!
送你一匹馬到成功!
-
4 # 大學生程式設計指南
軟體行業經過幾十年的發展,程式語言的種類已經越來越多了,而且很多新的程式語言已經在這個領域從開始的默默無聞到如今風風火火,整個程式語言朝著整合化方向發展,這樣會導致很多的初學者選擇上不像以前那麼單一了,而且隨著整個軟體行業應用方面開發剛需增加,高階程式語言市場進一步得到擴張,現在很多大學開設課程已經不是預設C語言作為第一程式設計入門語言了。大約十幾年前的大學教材還是清一色的C語言作為第一程式語言,C語言作為基礎語言的口號就是這麼來的,當然C語言之所以稱之為基礎程式語言,主要是現在很多程式設計底層實現大部分是基於C語言,而且作業系統以及底層驅動基礎語言也是C語言。
筆者倒是覺得在當前軟體發展趨勢下,緊跟時代的步伐,學習當下最火熱的程式語言是正確的選擇,目前市場對於三類比較認可,java,python,前端,這三種是目前市場上相對緊缺的程式語言,從市場招聘的比例看C語言的佔比相對比較低,但由於基數重大絕對數量還是在增加,但相對別的語言還是差的很遠,學習程式設計的主要目的是為了儘快找到工作養活自己,倉廩實而知禮節,都不怎麼好找工作就沒必要那麼固執一定要靠C語言作為第一門程式語言,即使它是非常基礎的程式語言,從另一個角度考慮,程式語言只是一種工具而已,真正核心屬於程式設計思想,只要學了一種程式語言,再切入別的程式語言相對來講還是比較容易。
c/c++主要應用在什麼領域?
1.嵌入式以及作業系統開發語言還是以底層語言為主,畢竟效率還是第一要素(涉及到硬體開發首選語言)
2.通訊領域主要開發語言還是C語言為主要導向
3.遊戲領域,由於涉及到效能問題,c/c++都有成熟的庫支撐。
4.圖形系統,提供圖形系統底層實現,保證快速高效。
無論選擇什麼樣子的程式語言,儘量緊著一門學習利索,不要學到一半就開始想著換程式語言,換來換去對程式語言的理解不夠深刻,很難最後真正的入門。
-
5 # 冰封飛飛
c可以學,幫助理解計算機原理,連結,呼叫棧(bp sp ip作用,緩衝區溢位攻擊為什麼能讓程式執行shellcode等等)。linux的系統呼叫原生都是c介面,如何想學作業系統的內容,也可以比較方便學習。
c++可以不用學了,你是從c++98 03 11 14 17哪個版本學呢,你學了現代的c++11之後的版本,公司由於遺留程式碼原因,很可能也用不上,雖然c++11之後很好用,但是新專案用c++的少了,老專案還不支援新標準,升級阻力大的很,所以還是洗洗睡吧。
-
6 # 繁星落石
沒有必要。
從什麼語言學起,是要看在什麼地方應用。比如AI方向,肯定會以Python為主;網路方向會以Java為主;硬體方向,就以C/C++為主了。這是由環境決定的。每個語言有自己獨特的優勢和劣勢,確實在學習曲線上也有差異,不過對於新手而言,最重要的是決定以後要用的方向,而不是語言本身。
硬體方面的應用,C/C++具有非常強的優勢,執行速度更是其他高階語言無法追及的。而且C/C++開發的程式本身具有可封裝性,封裝之後的尺寸也不會很大,很適合嵌入式系統的應用。
而做資料處理和AI開發的話,完全沒有必要使用如此底層而複雜的語言——除非有包裝成產品的需求。在實現效率上來說,Python具有多個框架的支援,擁有豐富的API以供使用,而且對於AI模型來講,很少有特別關注於語言的執行效率,更多的是關注模型本身的效能,和訓練速度。
所以想要做開發也好,拿來做工具也好,一門語言的真正價值體現在它如何被使用上,即便一個再方便再快速的語言,如果並不適合當前的使用目的,也是一無是處的。
-
7 # 動以徐生
還是看你深入做哪方面的業務。不同得語言使用場景和擅長點不一樣。C+擅長底層模組,java開發web後臺比較方便。
回覆列表
學python,有幾個理由。
1.C語言的優點是和底層結合的緊密,在嵌入式系統中應用廣泛,程式效率也較高。但目前隨著程式設計師分工越來越細,而硬體系統功能也越來越強大,軟體程式設計師更注重程式設計的銷量而大多數情況下程式執行效率可以放在其次考慮。而python在程式設計方面比C的優勢高的不是一星半點。
2.python是面向物件的先進的語言,而C是面向過程的傳統的語言。就像basic一樣註定要成為歷史,而C在軟體領域的很多應用有個主要原因是歷史遺留問題,新的程式設計師還是從python學習效率更高,也更能領會“面向物件”這一軟體工程的理念,這一理念是計算機科學多年來最有價值的理念之一。
3.python在計算機科學的主要方面比如機器學習 人工智慧與大資料等方面均有非常廣泛的應用和支援庫,這是c語言所不具備的。
4. 與其他語言相比,Java也和C一樣在走向冗餘笨重的道路,雖然應用非常廣泛但敗相已露。c++太難上手,對新手來說尤為不易。c#和微軟繫結太深,侷限性大。go頭角嶄露但還沒能形成大氣候。
綜上所述,學python優於c或者cpp