语言自己:
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容易,改动影响小
- 写单元测试容易
现在你们更加愿意写小模块,而不是重复造轮子了。javascript
4. 框架使用
更愿意先选一个合适的框架,再开始编程,而不是全部功能本身从头开始写了.
- javascript的框架多了,vue,react, backbone,angularjs等;
- css有bootstrap,fundation等;
- PHP有laravel,cakephp等
- C#有MVC
- Java有spring+hibernate+struts
框架要先选好,模块的话,等须要慢慢加就好了。php
5. 测试代码
2006年,单元测试在开发过程当中,重要性不是很大,无关紧要,程序完成,功能能用就行。
现在的代码,没有单元测试部分,这个工程就不能算完结。甚至是,测试驱动开发已经成为主流,先写测试代码,而后开发。
测试代码的发展有不仅仅是单元测试部分。单元测试,集成测试,功能测试,性能测试,压力测试等等,都在开发过程当中占了极大的位置。之前测试都是由专门的测试员进行人工测试,或者他们负责测试;现在单元测试和集成测试都是要开发者本身写。
6.跨设备,跨平台
Java提出的跨平台,一次编译处处运行的梦想,其实至今未很好的实现。可是现在这个跨设备,跨平台编程趋势却愈来愈明显了。
跨设备,主要是指桌面和手机,尤为是针对显示器的最佳实践是层出不穷,现在是响应式成为了主流。
跨平台,出自于Java的一个概念,现在已经算普及了,尤为是JavaScript,桌面,手机,服务器,浏览器,嵌入式都能看到javascript的身影,这大大归功于JavaScript标准化的推广。跨平台过去是说一次编译处处运行;现在是只要这个平台支持这个语言或标准,就能用。现在的跨平台编程,更讲究特性检查这个功能,若是你这个平台没有这个特性,那么就关闭这个有这个特性的功能,但其余功能还能够继续使用。
从此,各类设备层出不穷,VR头盔,AR眼镜,巨型屏幕,物联网等等,跨平台会有进一步的发展。
工程方面的:
1.工具化
我以为工具化很是突出了,凡是能工具完成的事情,绝对不手工完成。如下几个方面都是能够找到相应工具,帮助开发者管理代码质量
- 代码风格检查
- 工业标准检查
- 代码整理
- 代码复杂度检查
- 单元测试覆盖率检查
- 依赖管理
- 压缩代码
- 重复代码检查
- 无用代码检查
等等,css
2. 工程化
工程化也是近年来最最突出的一个发展趋势,过去只是选择性的,如今是必须的。
工程化是以工具化为基础的,没有工具,那么工程化也无从谈起。
工程的核心就是流程自动化,又称之为构建,这些包括了:代码质量检测,代码压缩,代码合并,代码优化,代码编译,单元测试等等部分。构建就是把这些以工做流程的方式组合起来,而后用一个命令行运行这整个流程。它有点像批处理,可是是程序开发中使用的特殊批处理
在网页编程的过程当中,如今又流行“实时编程”,就是当你在保存代码的时候,以上的构建流程就开始工做完成后自动刷新浏览器,保证新代码效果马上反应在浏览器上。
如今,你去github的项目库中找软件,首先翻看,是否有工程文件,看看它的构建流程是什么,就知道这个项目的专业程度和项目的质量了
而本身,没有一个配置一个工程化的流程系统,都很差意思说本身在作软件工程。
3. 自动化
自动化是以工程化为基础的,工程化自己就是一种流程自动化。而自动化有在工程化的过程当中更进一步的自动化。
持续集成就是全自动化的一个终极体现。他的主要流程是:版本控制库->构建->测试->报告.
持续集成有点像windows的定时任务,可是它是程序开发专用的定时任务。
持续集成的特色就是全自动,一个项目一次配置好了后,要求不变的话,就不用管了;而后开发者不断把代码加入到版本控制库里就好了,每当库有新代码时候,持续集成就会下载代码进行构建;当它完成构建和测试后,若是测试没有经过,就会报告给你,而后你根据报告结果进行修改代码。因此你每次往版本库加的新代码时候,持续集成就会全自动的帮你构建和测试代码,尽快的通知你代码的问题。这样程序员就能够更加集中精力编写功能代码和测试代码,而不用担忧新代码是否会影响到过去的代码了。
持续集成在多人一块儿开发的时候,更是有用,谁上传的代码没经过测试,能立刻知道。这样保证多人项目在代码顺利合并,体现“持续集成”的功效。
另外还有个持续部署,其实就是持续集成在测试成功后部署上产品服务器上的流程。现在有些网站一天就要部署几十次,有了持续部署后,部署多少次都毫无压力。
工具化,工程化,自动化的关系挺有意思,前者是后者的基础,然后者却极大推进了前者的发展。它们是相互积极做用,相互推进了对方的发展,造成了一个很好的良性循环
其余方面:
1. 版本控制,git,github
版本控制在编程界中的地位是愈来愈重要了。在编程界中有个说法:没有版本控制的项目,就等于没有这个项目。
版本控制的工具不少过去有svn,现在git的强大,用的人也是愈来愈多,而它和github的相同做用下,对编程界的积极影响和积极推进,是使人没法忽视的。好比几乎全部的依赖管理工具的库下载源,都是和github绑定的, 就这一点来讲,github的重要性在IT就不可估量。
而github上和git的方便管理,上传,查看,统计,bug报告等功能更是极大地推进了程序员之间的合做;github上的开源更是改变了开源软件对世界的影响力。
github不是git的所有,git也不是版本控制的所有,本质上来讲,github只是一个网站而已;而后github确实又是这个编程世界不可缺乏的一个重要的模块,已经成为了一个不可或缺的组成部分了。甚至github已经跳出了编程界,成为了一个世界级的不可或缺的服务平台了。然而github是2008年创建的,真正开始流行是在2012年的。在2015年google宣布关闭本身的google code。可见github的影响力,以及在业界的重要程度了。
2.生态圈意识 生态圈意识在业界是愈来愈强了,它应该和编程工具化和工程化有极大的关系。一个语言,框架或者库的出现,人们用它们,不可是由于它们自己的强大,更是由于它们背后的生态圈。 好比说人们选一个javascript的框架,选react仍是选ember.js,更可能是看支持他们的生态圈如何,react是有facebook支持的,更有不少程序员为它开发相关工具和库以及有不少文档教程。这样react的生态圈就很大,会让更多人愿意选择react做为第一开发框架。而ember.js相对来讲生态圈小,选择它的人可能就不会不少。 选语言也同样,选javascript编写爬虫仍是选php编写爬虫仍是用python?更多的是看他们的生态系统了,python的爬虫库强大且丰富,因此更多人选用python编写爬虫。 一个新的语言出现,成熟与否,看的就是它的生态圈了,好比是否有测试框架,是否有mvc框架,成熟的时间库,数据库sdk等等,这些都是其必要的生态圈组成部分。