专栏名称: 程序猿
本微信公众号:imkuqin,为程序员提供最新最全的编程学习资料的查询。目前已经开通PHP、C/C++函数库、.NET Framework类库、J2SE API查询功能。
目录
相关文章推荐
码农翻身  ·  干货!服务器运维极简指南 ·  2 天前  
OSC开源社区  ·  TypeScript之父宣布:编译器和工具链 ... ·  3 天前  
51好读  ›  专栏  ›  程序猿

十年来,编程领域有什么重要进展?

程序猿  · 公众号  · 程序员  · 2016-09-14 18:15

正文

来自:知乎

作者:caoglish

链接:https://www.zhihu.com/question/36615008/answer/115414003 (点击尾部阅读原文前往)



编程语言层出不穷,然而内核是万变不离其宗。我个人看法觉得是以下几个方面的变化比较明显。

✦ ✦ ✦ ✦ ✦ ✦ ✦ ✦


语言本身

1 工业标准

页标准有w3c控制,尤其是浏览器的开发,所有主流的浏览器都会自觉符合这个组织的标准,当然这些开发商本身就是这个组织的成员。所以新的HTML5,CSS3,ES6 javascript的新特性的得到顺利推动,让大部分主流浏览器都支持它,w3c功不可没。

PHP有PHPFIG组织,虽然不是强制性的,但是很多新的框架和库都自觉遵守这个组织的编程标准

Java, C语言都有各自的工业标准准则,来维护各自工业标准。

这个标准其实不是强制性的,虽然很多程序员在自己工作上,不遵守这些工业标准,但是要推出新的模块的话,不遵守这些工业标准的模块,是没有人会去使用的。如今是不是面向标准编程,是体现一个程序员是否专业,一个模块是不是专业模块的一个重要指标。

2 第三方模块走红

种语言的框架和库,可能比自己的语言还出名,比如css的Bootstrap,javascript的jQuery;一个好的框架和库甚至可以推动这个这个语言的发展,比如说PHP的Laravel框架,Javascript的jQuery。

模块化的发展,大大加快了开发的速度。很多人也愿意开发各种框架和模块,不但可以锻炼自己的开发技能,也是一种展示自己的能力。

过去,程序员要成名,要开发出有用的软件,比如说求伯君开发出了wps,牛;张晓龙开发出了foxmail,牛。

现在,程序员要成名,开发出一个大家都会用的框架和模块也行。比如Evan You开发的vue.js,玉伯开发的seajs。

3 模块化编程和依赖管理

2010前,依赖管理工具只是个很时髦的概念,大家习惯手动到库的官方网站上下载后手动导入到项目中。升级也是个麻烦事。所以一般大家也就下载一两个必要的库,其他都自己手写完成。

如今,依赖管理工具已经是必备的了,大家不再手动导入库了;而且是能找到第三方模块的功能,就不再自己编写了,统统用工具导入项目;自己编写的程序代码,能模块化的代码统统模块化,甚至是独立出来,网上开源,然后使用依赖管理工具进行管理导入到自己的项目中。

这样好处也明显:

  • 代码量减少

  • 加快开发速度

  • 高度解耦

  • 定位bug容易,改动影响小

  • 写单元测试容易


如今大家更加愿意写小模块,而不是重复造轮子了。

4 框架使用

愿意先选一个合适的框架,再开始编程,而不是所有功能自己从头开始写了。

  • javascript的框架多了,vue,react, backbone,angularjs等;

  • css有bootstrap,fundation等;

  • PHP有laravel,cakephp等

  • C#有MVC

  • Java有spring+hibernate+struts


框架要先选好,模块的话,等需要慢慢加就行了。

5 测试代码


2006年,单元测试在开发过程中,重要性不是很大,可有可无,程序完成,功能能用就行。

如今的代码,没有单元测试部分,这个工程就不能算完结。甚至是,测试驱动开发已经成为主流,先写测试代码,然后开发。

测试代码的发展有不单单是单元测试部分。单元测试,集成测试,功能测试,性能测试,压力测试等等,都在开发过程中占了极大的位置。以前测试都是由专门的测试员进行人工测试,或者他们负责测试;如今单元测试和集成测试都是要开发者自己写。

6 跨设备,跨平台


Java提出的跨平台,一次编译到处运行的梦想,其实至今未很好的实现。但是如今这个跨设备,跨平台编程趋势却越来越明显了。

跨设备,主要是指桌面和手机,尤其是针对显示器的最佳实践是层出不穷,如今是响应式成为了主流。

跨平台,出自于Java的一个概念,如今已经算普及了,尤其是JavaScript,桌面,手机,服务器,浏览器,嵌入式都能看到javascript的身影,这大大归功于JavaScript标准化的推广。跨平台过去是说一次编译到处运行;如今是只要这个平台支持这个语言或标准,就能用。如今的跨平台编程,更讲究特性检查这个功能,如果你这个平台没有这个特性,那么就关闭这个有这个特性的功能,但其他功能还可以继续使用。

今后,各种设备层出不穷,VR头盔,AR眼镜,巨型屏幕,物联网等等,跨平台会有进一步的发展。

✦ ✦ ✦ ✦ ✦ ✦ ✦ ✦


工程方面


1 工具化

觉得工具化非常突出了,凡是能工具完成的事情,绝对不手工完成。以下几个方面都是可以找到相应工具,帮助开发者管理代码质量

  • 代码风格检查

  • 工业标准检查

  • 代码整理

  • 代码复杂度检查

  • 单元测试覆盖率检查

  • 依赖管理

  • 压缩代码

  • 重复代码检查

  • 无用代码检查

等等,

2 工程化

程化也是近年来最最突出的一个发展趋势,过去只是选择性的,现在是必须的。

工程化是以工具化为基础的,没有工具,那么工程化也无从谈起。

工程的核心就是流程自动化,又称之为构建,这些包括了:代码质量检测,代码压缩,代码合并,代码优化,代码编译,单元测试等等部分。构建就是把这些以工作流程的方式组合起来,然后用一个命令行运行这整个流程。它有点像批处理,但是是程序开发中使用的特殊批处理

在网页编程的过程中,现在又流行“实时编程”,就是当你在保存代码的时候,以上的构建流程就开始工作完成后自动刷新浏览器,保证新代码效果立刻反应在浏览器上。

现在,你去github的项目库中找软件,首先翻看,是否有工程文件,看看它的构建流程是什么,就知道这个项目的专业程度和项目的质量了

而自己,没有一个配置一个工程化的流程系统,都不好意思说自己在做软件工程。







请到「今天看啥」查看全文