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

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

语言本身:

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. 工程化

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

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/294462c9437e03b400dc0fd41adab3d6.html