由招聘要求看趨勢 - VC++程序員路在何方
作者: 闕榮文
日期: 2016.5.31
以桌面應用程序為主的時代已經過去,所以 Windows 平臺和 MFC 不再是熱點,微軟自己也不再推廣 MFC.
客戶端應用以基于瀏覽器為主,正在向移動平臺遷移,所以 js/jQuery, HTML5, iOS swift, Android java 成為主打的客戶端開發技術.
服務器端 HTTP 相關技術的重要性大大提升: SSL, nginx, php, java server script, C# server script(依然有相當一部分服務器選擇 .net,而且從理論上來說 .net 并不一定需要綁定 Windows 平臺).
Linux 平臺用作服務器優勢是很明顯的,所以要求熟悉 Linux 平臺的使用和 shell 腳本.
同時 Linux C/C++ 成為開發服務器后臺復雜業務的不二之選,比如游戲服務器.
C++ 沒有死,反而在自己擅長的領域內大放光彩.但是老派的 Windows VC++ 程序員只能在一些陰暗的角落里如視音頻,圖形圖像,某些行業定制軟件等茍延殘喘.
這不是誰的錯,時代在發展.
不過不要灰心,我們也有優勢:基礎好,起點高.
編程,從本質上來說都是想通的,所謂"平臺相關"的一些東西其實都是很表層的內容.
調試程序的經驗,設計模式的運用,模塊劃分的感覺,程序結構的構造這些經驗和知識是寶貴的,不會因為切換平臺,甚至不會因為切換編程語言而失去作用,相反,對于程序設計,它們總是最重要,最難以掌握的東西.
從 Windows 到 Linux,作為程序員我覺得最不適應之處是編程工具用不順手.多年使用 Visual C++ 的經歷,我已經被微軟慣壞了,一離開 Visual Studio / MSDN 就感覺不會寫代碼(尤其是 MSDN,相信很多人有同感:-)
只要突破這層障礙很快就能找回往日的感覺.
至于 Linux 平臺編程純技術上的知識其實很容易掌握,花不了多少時間:
一是我再次說編程都是相通的,有 Windows 平臺下的線程,進程,IPC,文件描述符等基礎,掌握 Linux 相關的知識簡直太容易了.因為 Linux 環境下這些概念更清晰,系統調用接口更簡潔.
二是無處不在的 man page.
三是一冊<<UNIX環境高級編程>>在手,天下我有.
奮起直追跟上時代,轉到 Linux 平臺:
1. 日常使用 Linux 系統,在日常使用中熟悉它.
2. 了解 Linux shell 編程的基本語法.
3. 熟悉開發環境需要用到的: vim, gcc/g++, makefile, gdb.
4. 安裝,配置常用的 HTTP 服務器: Apache/Nginx
5. 再看一遍 <<UNIX編程藝術>>
6. 做一個工程練練手,稍微大一點的,至少包含10個以上源文件,比如自己寫一個 HTTP 或者 FTP 服務器.
還有一個感受就是在 Linux 平臺下做開發有更強的動力(被需求逼的)去學習和了解第三方庫,這是在 Windows 平臺下開發時比不了的.通過學習這些高質量的庫源碼我們可以真真切切的看看高手們是如何設計的,他們的編程風格是什么樣,當他們面臨和我們同樣的問題時解決思路是什么樣...熟讀唐詩三百首,不會作詩也會吟.多讀高手的代碼,學習他,揣摩他,慢慢的我們也會成為高手.