5G技術時代即將來臨,學習通訊程式語言刻不容緩

5G技術時代即將來臨,學習通訊程式語言刻不容緩

如何學C/C++見評論區

關於通訊程式語言學習最重要的就是C/C++

如果連C語言都學不好那基本上與通訊的研發無緣了。教材毋庸置疑是K&R的C語言聖經《The C Programming Language》,這是基礎中的基礎,務必打牢。進階教材:《C和指標》、《C陷阱與缺陷》、《C專家程式設計》、《C標準庫》。這前三本與K&R合稱C語言四大聖經,《C標準庫》也很經典,介紹了所有標準庫函式的實現原理,可以研究下。C++教程可以選《C++ Primer》,很厚的磚頭書,不過啃透之後C++也可以算得上熟悉了。進階教材:《Effective C++》、《STL原始碼剖析》、《C++ Coding Standards》。為什麼要學C++?因為這是個面向物件的世界,老外喜歡用C++,如果想進外企C++務必要好。

通訊行業都有哪幾個職位用得上C/C++?

1、

嵌入式軟體工程師。

這算是最大的一個種類了,常見的就是基於SoC系統來實現某些具體功能,常見的晶片有51、ARM9、基於Cortex-M、基於MIPS的SoC系列等等,基本上都是基於硬體工程師設計的板子上進行系統開發工作,這裡面的種類太多了,只要是負責編碼的都屬於這一塊。一般用C語言,有些可能還會用到C++,所以想從事這方面工作的同學C語言功底一定要紮實。

2、

驅動工程師

。這是一個需要付出大量努力進行學習的工種,但是學好了一定吃得香。驅動,顧名思義就是要透過軟體來讓板子上的硬體跑起來,簡單的驅動就是基於裸奔的微控制器透過各種外設讓相關硬體工作,更復雜的就是透過作業系統來驅動。簡單的基於微控制器的驅動比較好學習,只要把相關微控制器的功能暫存器弄明白,按照相關硬體功能需求,編碼實現就可以了。但是隻要上了作業系統,那就是另一個世界了,要深入核心進行學習,所以建議想從事驅動的同學一定要學好C語言、作業系統和數電方面的知識。

3、

應用層軟體工程師

。這裡說的應用層是指基於作業系統的應用層,現在通訊行業主流的作業系統有uCos、Linux和VxWorks。這方面主要是對OS的各種系統呼叫API要熟悉,同時要有很好的程式設計功底,要懂得程序、執行緒、IPC、死鎖等等作業系統方面的知識,程式設計來實現各種功能。這裡面還要懂網路程式設計,要熟悉五層模型、主流的二層三層協議(ARP、PPP、ICMP、FTP、TCP、UDP等等等,參考TCP/IP詳解卷一),知道Linux系統的網路呼叫相關函式,懂得基本的網路程式設計模型(阻塞、多程序、多執行緒、select和epoll的IO複用),最好還去研究一下linux的核心,看看裡面究竟是怎樣實現網路的各種功能的。這程式設計能力就毋庸置疑了,C++也要熟悉,資料結構演算法也挺重要。

4、

協議軟體工程師

。簡單的說,就是編碼實現各種通訊協議。說道協議,那可就多了TCP/IP協議棧裡就有一大堆的協議,通訊裝置上的協議也不少,一些主流路由協議像RIP、OSPF、ISIS等幾百頁的RFC文件就會讓你頭疼,好在大部分通訊公司都是買成熟程式碼,編碼苦手們的福音。這一方面主要是對交換機路由器的功能要熟悉,什麼MAC地址、VLAN轉發表、IP路由相關的概念要懂,再就是要對具體的協議很熟悉,這裡的協議主要指比較大型的協議,比如OSPF、ISIS、BGP、MPLS、LDP、RSVP、L2 VPN、L3 VPN等等,這些個協議有些公司一個協議就要十幾號人負責,每個協議的狀態機、協議報文、實現演算法都要熟悉。從事這個行業C語言要好,網路程式設計要熟悉,同時英語也很重要,不然幾百頁的RFC文件會讓你吐血。但是短處我也提到過,就是方向性太窄,不適合什麼都懂的技術宅。

對此你還有什麼見解歡迎評論區留言。

TAG: C++C語言協議程式設計作業系統