這個世界上有太多的坑,如果我們不具備查閱資料的能力和對現實世界的思考能力,入坑是大概率的事情。
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元,地址如下:
https://edu.csdn.net/course/play/29402
八、版權宣告
C語言技術網原創文章,轉載請說明文章的來源、作者和原文的連結。
來源:C語言技術網(www.freecplus.net)
作者:碼農有道