由招聘要求看趋势 - 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 平台下开发时比不了的.通过学习这些高质量的库源码我们可以真真切切的看看高手们是如何设计的,他们的编程风格是什么样,当他们面临和我们同样的问题时解决思路是什么样...熟读唐诗三百首,不会作诗也会吟.多读高手的代码,学习他,揣摩他,慢慢的我们也会成为高手.