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

比如说人们选一个 JavaScript 的框架,选 React 还是选 Ember.js,更多是看支持他们的生态圈如何,React 是有 Facebook 支持的,更有很多程序员为它开发相关工具和库以及有很多文档教程。这样 React 的生态圈就很大,会让更多人愿意选择 React 作为第一开发框架。而 Ember.js 相对来说生态圈小,选择它的人可能就不会很多。

选语言也一样,选 JavaScript 编写爬虫还是选 PHP 编写爬虫还是用 Python?更多的是看他们的生态系统了,Python 的爬虫库强大且丰富,所以更多人选用 Python 编写爬虫。

一个新的语言出现,成熟与否,看的就是它的生态圈了,比如是否有测试框架,是否有 MVC 框架,成熟的时间库,数据库 SDK 等等,这些都是其必要的生态圈组成部分。

总结:

以上的这些现象和趋势,其实都是相辅相成的,最终成了一种良性循环。这些现象和趋势都会继续发展下去,并成为以后新趋势的基础。所以这些特点都是非常重要的,而且应该成为每个程序员都应该知道的知识。

一些建议:

我在读编程专业的时候,这些东西大学都没有教过,甚至在工作中,公司都没有这些要求。大学主要教的是代码编写,能编译通过,能出正确结果就可以了。在工作中,代码能用,没有明显 bug 就行。

然而,在我个人工作实践中,逐渐的体会到这些趋势的重要性了,可维护性的高质量代码可以大大减少自己在维护中的难度和压力。作为准备成为一个合格的开发人员,应该熟练掌握这些知识和技能。如果大学没有教过,一定想办法自己学习和提高。

又想到几个发展,这里更新一下

1. WEB 技术的桌面化和 JavaScript 的全栈化

JavaScript 近些年发展火热,逐渐印证了一个 Atwood 法则:凡是可以用 JavaScript 实现的,最终都会用 JavaScript 实现

Nodejs 的出现,奠定了 JavaScript 走出浏览器,走向了服务器端

NW 的出现和 electron 正式版发布,JavaScript 走向了桌面

MongoDB 的出现,JavaScript 走向了数据库

Tessel 的出现,走向了硬件和物联网

如今一个全栈系统,从前端到数据库,可以完全使用 JavaScript 一种语言。还有很多人正在致力于把 JavaScript 推向更多的领域中。

而 Web 技术(html+css+JavaScript)由于 NW 和 Electron 的出现,已经可以编写桌面程序了。正是由于 JS 的优秀模块很多,以及 HTML+CSS 的界面容易编写和掌控,纠错工具丰富,很多人愿意用 WEB 技术进行开发。现在比较火的桌面工具有 VS-Code 编辑器和 Atom 编辑器。

总结一下:由于 WEB 技术的便利性,WEB 技术涉及的领域也就越来越多,再也不是浏览器的专利了。

2. Web API 的全面发展

Web API 虽然历史悠久,但是真正使其推广流行的应该是 Twitter,而后移动设备的普及使其得到更大发展和普及。移动设备如果没有 Web API 基本就不能工作了。Web API 的普及,也使得网络服务之间相互连通,形成一个更大的服务网络。总之,如今的 Web API 已经是不可或缺的存在了。

Web API 更多的是一种服务,或是一种数据交换模式。只要语言带有 HTTP 的网络访问功能,就都能使用。提供 Web API 的公司,发布 Web API 后,一般也会同时发布一些常用语言的 SDK,方便相应语言开发人员快速上手;但是如果语言比较小众,没有提供相应的 SDK 也没有关系,编写一段 HTTP 的请求,也是可以交换数据。

从编程的角度来归纳一下 Web API 特点就是:

容易编写,就是个函数,无需界面

语言无关性,无论 Web API 是个语言编写,几乎任何语言都能调用

访问性好,无论在哪,只要网络能访问,Web API 就可以用。

3. 语言之间的相互借鉴

语言之间的相互借鉴也越来越明显了,比如:

PHP5.0 后支持了类,5.4 后支持了 Trait,5.5 后支持了生成器(Generator)

JavaScript ES6 支持了箭头匿名函数,生成器(Generator),类(不是 Prototype 的类)

C# 和 Java 相互借鉴

Coffee Script 借鉴 Python 和 Ruby

与其说是相互借鉴,不如说随着语言的发展,一些语言概念逐渐成为了标配,如果没有,就算是一个不完整的语言了。比如说类,匿名函数,常用数据结构等都成为了标配。

4. 语言解析器的工具化

语言解析器(Parser)在过去自是作为编译器的一部分存在的。如今,它已经独立出来作为一个模块或者工具来使用了,这个对于一个语言的生态有着很大的意义,促进了语言生态圈的良好发展。

独立出来的解析器,可以用来编写以下和语言有关的工具,这些工具都是用来优化代码质量的,提高编码体验的。

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

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