(1)编程语言
如果说什么语言是最基础性的,那么C语言可以说是当之无愧的。从语法结构上说,C语言基本上涵盖了最基本的语法集。之后出现的C++、java,包括在web端盛行的python、go、ruby等等,无一不是以此为基础进行设计的。所以,对于计算机系或者大一点说,对于工科的同学来说,掌握C语言应该是大家必须掌握的一门基础功课。即使将来不是从事编程工作,学习它简约的设计思想对自己也是大有裨益的。
(2)第三方库
不管什么编程语言,一般系统都会额外提供一个基本的函数库。这其中包括字符串处理、文件读写、多线程访问、gui、数据库连接等等。当然上面这些函数库,还是远远不够的,很多时候我们还需要引入大量的第三方函数库。比如加密库aes、校验代码库crc、网络库libevent、xml库、zlib压缩库、正则表达式库、ffmpeg编解码库、webkit引擎库、openssl库。很多的库函数不仅被业界广泛使用,而且质量也有保证。当然,出现问题有时候也比较普遍,openssl就是一个范例。
(3)框架
有了编程语言,基本上你就可以开始甩开膀子干了。但是,很多时候我们做的其实是无用功。为什么呢?细心发现,我们就会看见原来市场上出现了很多针对具体业务的软件框架了。比如说游戏界的cocos2d-x,web服务器里面的webpy,java服务器端的spring,windows开发应用下的mfc框架,大名鼎鼎的ruby on rails,各种各样的rtos等等。很多时候,我们要做的不是重新造船。因为这样不仅费时费力,软件质量也没有保障。与其把时间浪费在这个上面,还不如专心做好自己的业务呢。
(4)软件
有了上面的三个部分,规划一个几万行到几十万行代码量的软件应该是可以保证的。但是如何管理项目、分析消费者需求、快速满足业务需要,这才是大多数开发者需要啃下的硬骨头。不管是客户端还是服务器端,不管是运维还是售后支持,不管是性能拓展还是稳定性保证,这中间都有大量的工作要做。所以,有时想想,软件其实真不是写代码这么简单的一件事情。