這次先不說什麽復雜的應用場景或者語言底層的優化特性。下面就說說大學學完C能做什麽吧。當然,由於C語言和C的密切關系,我們會混淆在壹起講,道理也差不多。
1實驗室的發展
我不敢說C是世界上最好的語言,但C基本上是工科學生中的大語言。計算機專業就更不用說了,很多工科專業,比如電信、電氣、通信等專業,正常學習基本都用C。
據說C既面向過程又面向對象,運行速度優秀,大型項目開發能力好,簡直可以稱霸大學實驗室。當然,我們知道大學實驗室裏另壹種可以和C媲美的語言是Matlab。
比如我讀研究生的時候,左手試Matlab,右手優化C。論文專利等等都要靠這兩種語言。我還記得在實驗室裏,幾乎所有的算法都是用C/C寫的。
開始學C的大多是老理工男。指針再難懂,虛函數表再無情,也澆不熄我們工科生對編程的熱情。
2後端開發
但是說到找工作,就不是這樣的了。據說現在是黃昏因為算法帖,導致大量的人湧向後端開發。
主流後端開發語言只有幾個,以Java和C為首,其次是Python和Go。作為壹個寫了這麽多年的老程序員,怎麽能不去湊熱鬧呢?
所以學完C,首選當然是面試後臺開發的崗位。只是我們總說語言不是最重要的。學過C,想找後端開發的同學,最重要的是什麽?
其實軟件開發工程需要掌握的技能就那麽幾個,各種經驗分享和面授都已經爛了。但那些只是大方向,涉及到很多概念和技術點,這裏沒辦法壹壹列舉。總的來說,如果妳想通過C找到壹份合適的後端開發工作,我建議妳可以從以下幾個方面提升自己:
第壹,紮實的編程基礎。
這個紮實的基礎首先意味著妳熟悉C語言,知道不同版本的語言特性(比如C11和新C20的區別),對常見的語言機制(比如多態、虛函數表、模板等)有自己的理解。).
雖然用什麽語言並不重要,但至少要熟練使用壹門語言。如何做到精通?妳需要對C底層機制,多線程編程,跨平臺編程有所了解。
此外,編程能力的素養還體現在對算法思想和數據結構的理解上。畢竟程序的基礎是算法和數據結構。所以最好掌握壹些基本的數據結構,比如鏈表、數組、二叉樹、隊列等等,以及壹些基本的算法思想,比如貪婪、分而治之、動態規劃等等。第二,系統的理論知識。
這就是普通班和非普通班的明顯差距。很多非專業的學生,其實編程能力很強,但是因為沒有接受過系統的理論學習,所以在理論學習上會比較吃虧。後端開發涉及很多東西,從網絡到性能到架構,都需要系統的計算機理論的支持。
所以,連計算機網絡、操作系統、計算機組成原理、編譯原理這些書都沒看過的同學,需要趕緊買幾本書來壓壓驚。
第三是後端基礎。
想做後端開發,至少要知道後端是什麽。這意味著妳要了解壹些軟件工程、軟件架構、設計模式等基礎知識。同時,有了後端怎麽可能不懂數據庫?那妳不是要學壹些MySQL,Redis等數據庫的基本操作嗎?
當然,在這裏,可能是入門級。當妳真正開始後端開發的時候,微服務、中間件(Kafka/Zookeeper/Hadoop等相關概念和技術的學習。)都得提上日程。
當然,對於學校招生來說,由於缺乏大型線上項目的經驗,對後端基礎的要求不會太高,更多的還是看編程能力和計算機理論基礎。但如果妳是已經工作的學生,想轉行,後端基礎還是會看重的。
在我看來,這三點是目前互聯網公司比較重視的地方,大家可以反思壹下自己是否有這樣的能力。如果沒有,可以抓緊時間好好準備。
3客戶端開發
畢竟C是壹門非常成熟的語言,所以除了後端開發,它還有很多其他的開發崗位可以選擇。自然是客戶端開發。
相信大部分學C的同學都用過C寫桌面軟件。當時估計還在用MFC,在代碼本上敲敲就能寫出比較簡單的界面。所以如果不想做後端,可以找c的客戶端開發工作。
然而,客戶並不容易。做客戶端也需要紮實的編程基礎和計算機理論基礎,可能還需要熟悉Windows/C編譯鏈接機制、QT客戶端開發技術體系、Windows消息機制等技術。
所以,如果妳是學C的,不在乎行業內莫名其妙的工作歧視鏈,找個客戶端開發的工作也是很不錯的。只是和後端開發相比,妳可能需要重新審視客戶端的角色。