首页 存档 技术 查看内容

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

2018-3-30 13:00 |来自: 互联网 388 0

摘要: 开发语言每年都在更新发展,做为开发者亦要跟紧技术趋势,方会与时俱乐,不会落伍。虽然编程语言层出不穷,然而内核是万变不离其宗。本篇作者的看法觉得是以下几个方面的变化比较明显,欢迎留言点评。语言本身1. 工 ...


开发语言每年都在更新发展,做为开发者亦要跟紧技术趋势,方会与时俱乐,不会落伍。虽然编程语言层出不穷,然而内核是万变不离其宗。本篇作者的看法觉得是以下几个方面的变化比较明显,欢迎留言点评。


语言本身


1. 工业标准


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


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


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 ,YII等框架;C#有 MVC;Java 有 Spring Hibernate struts。


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


5. 测试代码


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


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


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


6.跨设备,跨平台


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


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


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


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


工程方面


1.工具化


我觉得工具化非常突出了,凡是能工具完成的事情,绝对不手工完成。以下几个方面都是可以找到相应工具,帮助开发者管理代码质量:代码风格检查;工业标准检查;代码整理;代码复杂度检查;单元测试覆盖率检查;依赖管理;压缩代码;重复代码检查;无用代码检查等等。


2. 工程化


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


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


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


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


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


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


3. 自动化


自动化是以工程化为基础的,工程化本身就是一种流程自动化。而自动化有在工程化的过程中更进一步的自动化。


持续集成就是全自动化的一个终极体现。他的主要流程是:版本控制库 -

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部