甲骨文OAEC联合办学

@程序员,你的技术过气了吗?

发布日期:2018-06-07

对于开发者来说,如何紧跟技术的潮流、不和时代脱节是一个很头疼的问题。本文即针对10个编程领域的新宠以及快要过气的技术,和各位程序员一一道来,究竟你的技术方向选对了吗?

QQ图片20180607102436.png

本文展示了当前程序员中最热门的技术以及逐渐开始变得冷门的技术。我相信肯定有不少人对这个列表表示质疑。编程总是充满乐趣,引人入胜,各种技术日新月异且不断变化,有时会引来激烈,某些看似“陈旧”的技术也许突然又火起来。

▌预处理器 K.O 完整语言堆栈

编译的目的是将源码转化为机器可识别的可执行程序,在早期,每次编译都需要重新构建所有东西。后来人们意识到可以让编译器自动完成一些工作,从而提升编译效率。于是就有聪明人发明了预处理器,通过丰富的库和API来翻译新的代码。

像 Python 或 JavaScript 这样的脚本语言曾经只能局限于小项目,而如今它们变得越来越重要。有些人不喜欢 JavaScript ,于是创建了 CoffeeScript 这个预处理器,它可以让程序员不依赖繁琐语法的情况下重新编码。此外,它还具有几十种预测语法。

喜欢动态语言的人发明了 Groovy,它是一个 Java 简化版,没有太多复杂的语言。目前能够运行在 JVM 上的语言有几十种,比如 Groovy、Scala、Clojure、Kotlin,等等。同样,能够运行在 .Net 虚拟机上的语言也很多。

▌Serverless K.O Docker

说 Serverless 替代 Docker 其实不完全正确。Docker 容器无处不在。服务器一直在不断启停容器。然而,Docker 容器实际上远远超出了预期。

仔细想想,你会发现微服务的代码可能只有几十行,但是为了让 Node.js 或者其他模块和 Docker 配合运行,你不得不在配置文件中写很多行配置代码。虽然配置文件有模板可循,但是有时依然让人摸不着头脑。

而使用新的 Serverless 架构,我们仅需几行简单的 if-then-else 语句即可完成项目部署。剩下的工作交给 Serverless 服务提供商就可以了。

过去我们时常抱怨异常锁定且缺乏定制,如今 Serverless 的出现的确是所有开发、运维以及配置人员的福音。

▌JavaScript MV*框架 K.O 原始JavaScript文件

过去,开发者使用 JavaScript 几乎都是从零开始编写,比如弹出一个警告框,或者检查表单中的电子邮件地址是否包含了 @ 符号。而如今,HTML AJAX 应用程序已经变得非常复杂,很少有人再完全从头开始编写。开发者往往会采用一个现成的框架,在其基础上修改和添加一些代码从而完成自己的业务。

目前市面上有多种框架来帮助你处理 Web 应用的事件和内容,比较常见的有 Kendo、Sencha、jQuery Mobile、AngularJS、Ember、Backbone、Meteor JS,等等。

这些仅仅针对 Web 应用程序。而对于智能手机或者平板电脑的跨平台开发框架也不少。比如 NativeScript、PhoneGap、Apache Cordova 和 React Native 等技术都可用于 HTML5 开发。

▌CSS框架 K.O 通用CSS

曾几何时,给网页添加一些新功能通常需要打开 CSS 文件然后增加一个诸如 font-style:italic 这样的新命令。然后,你保存文件,结束了一上午的辛勤工作去吃午餐。如今的网页已经变得非常复杂,用这样简单的命令修改 CSS 文件的方式不再可取。哪怕是调整一个颜色参数,都会让页面的整体效果乱作一团。

诸如 SASS 和 Compass 这样的 CSS 框架于是应运而生。它们提供了变量、嵌套、混合插件等编程结构,促使开发者进行更加规范的编码。这在编程领域并不新颖,但对于设计领域来说这确实是质的飞跃。

▌SVG K.O Flash

Flash 已经风靡多时。抗锯齿渲染看起来不错,于是一些才华横溢的艺术家构建了一堆高深的 Flash 代码来提供复杂的转场和动画。得益于休闲游戏广受大众的欢迎,Flash 在网络上占据着主导。

而如今,JavaScript 也能够做同样的事,于是浏览器厂商和开发人员欣喜若狂。他们发现像 SVG 这种新的格式能够与 DOM 层更好地结合。并且 SVG 和 HTML 还包含了丰富的标签,这对与网页开发人员来说非常容易使用。此外,它们的 API 在 Canvas 对象上提供了精细的绘图功能,同时还可以充分利用视频卡。面对如此强大的功能,简直没有理由再使用 Flash。

▌不使用Hadoop进行大数据分析 K.O 使用Hadoop进行大数据分析

每个人都想要成为学校里的大个子,如果他们不是,变会寻找一个适合他们的学校。当“大数据”开始流经管理套件时,这些套件开始寻求最强大的大数据系统,就好像他们购买游艇或者摩天大楼一样,这并不奇怪。

不过比较讽刺的在于,很多业务体量都不够大,不足以应用大数据解决方案。当然,像谷歌或者雅虎这样的公司能够跟踪我们所有的网页浏览记录,他们有大到 PB 甚至 YTB 的数据文件。但是大多数公司拥有的数据量很小,甚至可以很容易地装入普通 PC 的 RAM 中。我在一台配有16GB RAM 的 PC 上编写一个程序,变足以处理十亿数量的事件。在大多数算法中,数据并不需要读入内存,从 SSD 流式传输即可。

有些业务需要并行运行 Hadoop 云中的几十台机器以加快响应速度,但实际上可以在单台机器上进行,并且还不会出现协调或者通信的麻烦。

▌数据库配置 K.O 软件编程

很久以前,程序员经常开玩笑说他们不知道下个世纪编程会是什么样子,但他们知道它将被称为 Fortran。这个笑话非常有趣,他们会从恐龙上掉下来,摔坏自己的木制内衣。然后回到配置数据库的时代。

如今我们仍然在建立数据库,但是现在我们认为的“数据库”更加复杂和强大。现成的数据库将进行远距离同步,同时在一致性和速度之间进行灵活的折衷。一些像 Firebase这样的云服务会将新数据全部推送到运行在移动客户端上的 Web 应用程序。

大部分 serverless 革命都基于这样的认识,许多云存储现在非常强大,我们只需编写一些 if-then-else 这样的简单子句就可以构建一个非常酷的 Web 应用程序。

▌游戏框架 K.O 原生游戏开发

以前开发游戏就意味着需要雇佣大量的 C 语言程序员,然后从零开始编写程序。当然,它耗资高达数十亿美元,但是它看起来非常棒,运行速度像风一样快。如今,定制代码变得无比奢侈。大多数游戏开发者都放弃了多年前的原始开发方式,开始使用Unity、Corona 或 LibGDX 这样的库来构建系统。他们不会像编写库一样使用 C 来编写应用程序。

开发游戏游戏不再从零开始编写代码,而是使用游戏引擎。对此开发人员会因为抛弃情怀而羞愧吗?答案是否定的。事实上,大部分开发人员都松了一口气。因为他们不必再处理细节,能够更加专注于游戏人物和故事。

▌静态网站生成器 K.O 单页Web应用

还记得通过 URL 指向充满静态文本和图片的网页吗?之后,动态的单页 Web 应用程序出现了,这是一个可以获取相关数据的 Web 应用程序。世事轮回,如今又回到了过去,现在开发者开始使用静态网站生成器。目前的生成器多达几十个。就像 hybrid 一样,它将所有数据积成一堆,然后编写一些代码将数据粘贴到某些模板中,以便每个静态 URL 都有一个 HTML 文件,并且这些文件都来自数据表中。

开发者认为这些静态网站速度很快,事实上也的确如此。它与 WordPress 和 Drupal 这样的动态系统的工作方式大致相同,只需保证最新数据生成的静态页面的缓存充足即可。

▌移动Web应用 K.O 原生移动APP

假设你有一个 APP 的好点子。你可能会急于为 iOS、Android、Windows 10 Mobile 甚至黑莓 OS 编写单独的 APP 版本。每个平台的 APP 都需要一个单独的团队,使用不同的编程语言,然后再发布每个平台的应用程序商店。这种原生的 APP 开发方式耗时耗力。

除了原生的开发方式之外,你可以构建一个 HTML 应用程序并将其放置在网站上,所有平台都可以访问。如果需求有变,你只需在线修改即可,无需乞求应用商店进行错误修复。随着芯片的速度越来越快,HTML 的运行速度也越来越快,Web 应用与原生 APP 的速度差异越来越小,即使是复杂的交互式应用,HTML 应用也几乎可以和原生 APP 媲美。