C/C++語言的學習方向

這個世界上有太多的坑,如果我們不具備查閱資料的能力和對現實世界的思考能力,入坑是大概率的事情。

C/C++語言能做什麼?C/C++程式設計師在做什麼?企業需要什麼樣的C/C++程式設計師?對初學者來說,要搞清楚這些問題並不容易。

一個農民種菜之前,會考慮菜的行情(包括銷量和價錢),如果您打算學習C/C++語言,也應該先了解C/C++程式設計師的行情。

了解菜的行情要去菜市場,了解C/C++程式設計師的行情去人才市場,中國最大的IT人才市是前程無憂。

我們先來查一些資料。

一、中國程式語言的排名情況

登錄前程無憂的官網,分別輸入java、C++、python、javascript、.net、C#、PHP、SQL、IOS關鍵字,城市選擇北京、上海、廣州和深圳,查詢到的招聘職位分別是31032、22842、19274、14091、6956、8018、5284、21302、6014個。(這是2020年6月查到的數據,不同時期的查詢結果略有不同)
在這裡插入圖片描述
在這裡插入圖片描述
數據顯示企業的JAVA和C++職位比例約6:4,培訓機構的主流課程是JAVA和Python等,進一步導致了C/C++程式設計師的缺乏。

培訓機構不願意開設C/C++課程,C/C++語言的教學對老師的能力要求非常高,普通講師難以信任。

程式語言的選擇是人生大事,必須慎重,誰都不希望在工作幾年後被迫從一種程式語言轉向另一種程式語言。

JAVA和C/C++是程式設計師可選的兩個方向(其它程式語言根本不在考慮範圍),無所謂哪一種更好,我個人偏向C/C++,因為JAVA程式設計師的工作太累了。

更多的人選擇學習JAVA,在較短的時間內就可以上手,從簡單的WEB頁面做起,所見即所得,容易有成就感,但是C/C++不一樣,學生在學完基礎知識後還是不知道它能做什麼,離企業需求仍然差得很遠,堅持下去的人很少,「從入門到放棄」是多數人的無奈的選擇。

二、企業對C/C++程式設計師的技能要求

從前程無憂的招聘數據看,中國企業對C/C++的技能要求主要有網路通訊、硬體驅動(嵌入式)、資料庫、影片音頻、網路遊戲、桌面圖形、機器學習、大數據、物聯網,如下圖。

在這裡插入圖片描述

以上數據可以從前程無憂的官網查詢,分別輸入「C++ 網路」、「C++ 嵌入式」、「C++ 資料庫」、「C++ 遊戲」等關鍵字,範圍選北京、上海、廣州和深圳。

值得注意的是,近年來被媒體反覆炒作的人工智慧、大數據、物聯網、區塊鏈等高大上的概念,企業需求其實很少,現在股票也不抄這個概念了。

輸入「 C++ Linux」關鍵字搜索,結果有9767條記錄,輸入「C++ Windows」關鍵字搜索,只有2500條記錄。這說明windows作為伺服器的作業系統,正在被淘汰中。

目前,大部分的學校和培訓機構讓學生windows平台下學習C/C++語言,而企業要求的卻是linux。

我們應該學習主流技術,不能成為非主流,否則有被淘汰的風險。

三、數據比石油更珍貴

在我們的生活中,數據無處不在,但是,常人對它不敏感。

人口戶藉數據在公安局。

駕照數據和車輛數據也在公安局的交警支隊。

醫院保存了每個病人的基本資料和就診數據。每個產婦在醫院生了小孩子,計劃生育部門也會知道,它們與公安局和醫院有聯網交換數據。

銀行有開戶數據,轉帳記錄。

證券公司有行情數據、股東基本數據、持股數據和交易日誌。

電信公司有開戶數據、通話清單、帳單。

電力局有居民的基本數據和用電帳單。

火車票、機票都是數據。

騰訊公司有QQ帳戶數據、微信帳戶數據、聊天日誌、轉帳日誌等。

阿里公司有淘寶帳戶數據,商戶數據,商品數據、交易日誌等。

煤氣公司、自來水公司……

一個人的身高、體重、學歷、年齡是數據。

圖片、影片、音頻、文章也是數據。

……

四、C/C++程式設計師在做什麼

用C/C++做桌面程式的比例約11%,其它的C/C++程式都運行在後台Linux伺服器上,普通用戶看不見。

在很多培訓機構的教程中,把貪吃蛇、俄羅斯方塊、打地鼠、球球大作戰等程式當成項目實戰,太過兒戲,這些程式的源程式碼網上到處都是,真正的程式設計師不玩這個。

真正的C/C++程式設計師在工作,掌握的是謀生的技能,不是在玩過家家。

我們每天都在用微信軟體聊天、付款、轉帳等,對普通用戶來說,只看到微信軟體的操作介面,不清楚有後台系統的存在,以轉帳功能為例。
在這裡插入圖片描述

1)付款人在手機微信中輸入轉帳金額和支付密碼;

2)手機微信軟體把轉帳金額和密碼發送給騰訊公司的微信伺服器;

3)微信伺服器核對用戶的密碼和轉帳金額,向中國銀聯發起轉帳請求,中國銀聯把轉帳請求轉發給付款方的開戶行銀行,開戶銀行從付款人的帳戶中扣除金額。

4)微信伺服器把扣款成功資訊返回給手機微信軟體,顯示轉帳成功。

5)微信伺服器向收款人的手機微信軟體發送收錢提醒,收款人點擊收款後,微信伺服器把金額存入收款人的微信帳戶中。

在上述轉帳流程中,蘋果手機的微信軟體採用Objective-C語言開發,其它品牌手機的微信軟體採用JAVA開發;微信伺服器、中國銀聯和開戶銀行都是非常龐大的系統,系統之間進行了多次數據傳輸,對資料庫進行了查詢、修改和插入操作,都是採用C/C++語言開發,系統運行在UNIX系統上,效率極高、穩定性極強,工程量巨大,是精英程式設計師們的心血之作。

對騰訊的開發團隊來說,手機上安裝的微信APP軟體,開發的工作量不會超過整個微信項目的5%。

五、總結一下

1)網路通訊和數據處理以C/C++語言為主,數據輸入、數據展示以java為主。

2)作為伺服器的作業系統,必選Linux,Windows已被淘汰,以VC、QT等作為C程式的開發環境極不明智。

3)網路通訊是C/C++程式設計師的必備技能。

4)數據處理是C/C++程式設計師的必備技能。

5)嵌入式開發的職位比較多,技術上偏硬體(通訊、電子等專業),軟體為輔,無硬體基礎者要慎重考慮。

6)放棄幻想,不要追逐那些高大上的潮流(區塊鏈、大數據、人工智慧等),也不要聽那些從入門到精通的鬼話,踏實一點,先成為一個普通程式設計師,這個世界上從來就沒有捷徑。

7)要學會自己查資料,www.51job.com上的資訊量非常大,不要視而不見,不能被別人隨便忽悠。

六、關於影片教程

2019年五月,我計劃錄製C/C++語言基礎知識的影片課程,打算採用知名的書藉作為教材,在翻閱多本書藉之後,我非常的失望。作為一個骨灰程式設計師,二十年來,我非常清楚如何成為一個合格的C/C++程式設計師,包括學習方向、企業的需求和必備技能等。書店裡能買到的C/C++
書藉,絕大部分是教授和講師編寫出來的,普遍存在三個方面的問題:

1)只介紹知識點,不結合應用的場景,示例程式碼和課後作業與實際項目開發嚴重脫節;

2)重點內容不突出,C/C++的知識點非常多,很多內容已經過時,在工作中極少使用,這些內容增加了學習的負擔;

3)紙上談編程,不注重培養程式設計師的感覺。

從職業程式設計師的角度出發,我把C/C++語言的基礎知識內容寫成文章,在C語言技術網發布,本教程有以下特點:

1)以Linux平台為學習和開發環境,Linux是C/C++程式設計師的主流工作平台;

2)斷章取義,重點突出實際開發中常用的內容,略過不常用的知識;

3)設計了大量的課後作業,這些作業與實際開發內容息息相關,把培養程式設計師的感覺放在首位;

4)本教程的目標是為職業C/C++程式設計師打基礎,不合適在校大學生的畢業考試和電腦等級考試。

七、獲取影片教程

百萬年薪程式設計師錄製,《C/C++高性能服務開發基礎》影片教程已在CSDN學院發布,優惠價12元,地址如下:
//edu.csdn.net/course/play/29402

八、版權聲明

C語言技術網原創文章,轉載請說明文章的來源、作者和原文的鏈接。

來源:C語言技術網(www.freecplus.net)

作者:碼農有道