以下为译文:
众所周知,时尚圈的风潮总是变来变去。一会盛行短裙,一会又盛行长裙;一会讲究朴素,一会又讲究花哨;一会盛行厚领带,一会又盛行薄领带。程序员对此总是嗤之以鼻,在他们眼里,这样的变来变去切实其实莫名其妙且不可理喻。科技领域则没有时尚圈这样的飘忽不定,取而代之的是严谨、科学、数学和精确打算,统统都是那么理性。
但是,这并意味着编程领域缺少新的技能趋势。事实上,编程趋势同样变革迅速,差异仅仅在于这些新的趋势来源更加理性,常日是为了提升效率、可定制性和易用性。新的技能每每能够让现有的技能变得黯然失落色,它们是理性与科技的结晶,而非大略的奇思妙想。

本文展示了当出路序员中最热门的技能以及逐渐开始变得冷门的技能。我相信肯定有不少人对这个列表表示质疑。编程总是充满乐趣,引人入胜,各种技能日月牙异且不断变革,有时会引来激烈,某些看似“迂腐”的技能大概溘然又火起来。
▌预处理器 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 云中的几十台机器以加快相应速率,但实际上可以在单台机器上进行,并且还不会涌现折衷或者通信的麻烦。
▌Spark K.O Hadoop
这并不是说 Hadoop 完备被淘汰了。紧张是 Apache Spark 当前太过火爆,使得 Hadoop模型看上去有些古老。Spark 借鉴了 Hadoop 的一些思想,比如从大量数据中探求规律并通过一些加快代码运行速率的改进方法来对其更新。最大的差异可能在于,Spark 将数据保存在快速内存中,而不是从分布式文件系统进行文件读写。
当然,很多人将这两者结合利用,在 Hadoop 分布式文件系统中利用 Spark 的数据处理速率上风。Hadoop 和 Spark 常日是互助伙伴的关系而非竞争对手。
▌数据库配置 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 这样的动态系统的事情办法大致相同,只需担保最新数据天生的静态页面的缓存充足即可。
▌GraphQL K.O REST
这并不虞味着 REST 已去世。我们只是想在 API 上做更多的事情,而 GraphQL 适可而止。GraphQL 和 REST 一样都因此 JSON 的形式返回数据。与许多 REST 调用一样,GraphQL 也是通过 HTTP POST 触发。只需少量的代码即可通过 GraphQL 语法进行非常繁芜的查询。这使得程序员可以更大略地讯问他们想要的内容,当有人须要轻微不同的 API 时,这样也可减少做事器真个事情量。
▌云端IDE K.O 本地IDE
最早的时候,编译器是命令行的形式。之后有人将编辑器和其他工具进行集成,从而创建了 IDE。而如今,基于浏览器的在线工具供应代码编辑功能,乃至是运行中的系统代码也可编辑,这足以淘汰传统的 IDE。如果你不喜好 WordPress 的功能,它带有一个内置的编辑器,可以让你随时变动代码。微软的 Azure 许可你在其门户中编写JavaScript 代码。只管这些系统不供应太好的调试环境,编辑生产代码也存在一些危险,但是这个想法是有代价的。
比较常见的有 AWS Cloud9、Codenvy 以及 Mozilla 的 WebIDE。这些基于 Web 的在线工具变得越来越强大。比如,你可以在微软的 Azure 网站上构建一个完全的大数据剖析项目。如果你正在探索 serverless,你可以将所有代码写入网页的表单元素中,这个表格并不比你用 Facebook 更新朋友的表格大太多。
▌GPU K.O CPU
当程序很大略并且指令安排得当时,CPU 处理这些大略的程序非常得心应手,它便是电脑的核心。而如今的大型3D游戏须要并走运行大量的图形程序,此时 CPU 就显得力不从心,视频卡开始大放异彩。玩家常常在视频卡上花费五六百美元乃至更多的钱,一些资深玩家会购买多个视频卡,价格相对昂贵。
其余,推崇 GPU 的人并不仅限于游戏玩家。打算机科学家正在将许多并行运用程序转到 GPU 上,这样一来其运行速率可以提升数百倍。此外,数据科学家也在做事器上更多利用 GPU 从而加速其机器学习模型的开拓。
▌GitHub K.O 简历
当然,你可以通过查看应聘者的成绩单来理解此人。但是通过阅读实际代码来判断候选人的能力更加直接。他们代码注释写得如何?代码功能是否丰富?架构是否具有高度扩展性?只要看一看他们的代码,这些问题都迎刃而解。
参与开源项目对付找事情来说变得越来越主要。想要把实际事情中的代码共享出来是很难的,但是开源代码却无处不在。
▌租赁 K.O 购买
亚马逊在玄色星期五发卖打算机和其他电子产品,但是忘却了为其云打算做事供应超值优惠。以前,公司都是自己开设数据中央,购买打算机,并雇用员工。而如今,很多公司都不再购买,而是选择租赁的办法。他们按小时租用电脑、数据中央、员工乃至软件。没有人在乎东西的所有权,管理做事器只会给自己凭添麻烦。租而不是买,这是一个好主张,在你的网站爆发式增长之前,你只需根据点击量付费。
▌繁芜云端 K.O 大略云端
过去云打算供应商向客户宣扬时一贯强调其做事的大略,只需点击一个按钮即可开启云做事。
而现在,找到得当价格的机器可能比编写代码花费的韶光更多。机器的配置文件浩瀚,并且大多数云做事供应商支持的机型跨度比较大。各种做事级别代表不同的性能,你须要对其测试,找到性价比最高的方案。只要能够知足程序运行需求,肯定选择尽可能低的配置,由于这样更省钱。
云做事商还供应了多种优惠方案,比如提前付款或者批量采购。这样一来选择云做事器的过程就变得更加繁芜了,如果开设一个课程来教大家如何选择云做事估计很脱销。
▌移动Web运用 K.O 原生移动APP
假设你有一个 APP 的好点子。你可能会急于为 iOS、Android、Windows 10 Mobile 乃至黑莓 OS 编写单独的 APP 版本。每个平台的 APP 都须要一个单独的团队,利用不同的编程措辞,然后再发布每个平台的运用程序商店。这种原生的 APP 开拓办法耗时耗力。
除了原生的开拓办法之外,你可以构建一个 HTML 运用程序并将其放置在网站上,所有平台都可以访问。如果需求有变,你只需在线修正即可,无需乞求运用商店进行缺点修复。随着芯片的速率越来越快,HTML 的运行速率也越来越快,Web 运用与原生 APP 的速率差异越来越小,纵然是繁芜的交互式运用,HTML 运用也险些可以和原生 APP 媲美。
▌Android K.O iOS
过去几年苹果产品风头正劲,而如今时期已变。虽然 iPhone 和 iPad 仍旧拥有大量的粉丝,但是其销量已远远不及 Android。根据宣布,Android 手机占比已经超过了80%。
核心成分在于价格。只管目前 iOS 设备的价格与过去比较已经非常便宜,但是由于 Android 领域的充分竞争,其设备的价格仅为苹果的五分之一。在功能差不多的情形下,很多人选择 Android,没有人跟钱过不去。
另一个成分在于开源的影响力。iOS 系统闭源,Android 系统则完备开源,任何人、任何产品都可以利用。市情上的 Android 设备丰富多彩,五花八门。有 Android 相机,乃至有 Android 冰箱。如果有人想基于 Android 开拓产品,他们不须要搜聚谷歌赞许。想做就做,因此 Android 在越来越多的电子设备上大放异彩。
▌Node.js K.O Java EE, Ruby on Rails
做事器一贯在不断优化线程模型,让操作系统填补程序员的低效或者不合理的行为。无论是屈曲的循环还是摧残浪费蹂躏的打算,操作系统都通过线程切换来平衡性能。
Node.js 的出身充分运用了 JavaScript 的回调编程模型,代码的运行效率得到大幅提升。创建新线程的开销变得明显,Node.js 开始大放异彩。当程序员的代码写得很糟糕时,系统随意马虎涌现问题。正是由于资源限定,才迫使程序员写出效率更高的代码。
Node.js 通杀浏览器和做事器端,两者都运行相同的代码,因此开拓职员可以更轻松地沿用和重复功能。Node.js 的火爆天经地义。
▌PHP7.2 K.O 旧版PHP
过去,PHP 的涌现淘汰了一些动态网页。如果你想要更加丰富的功能,可以在 HTML标签之间嵌入大略的代码。这对付 Web 开拓职员来说确实可行,但是核心程序员会对此嗤之以鼻,由于这种做法太慢了。
如今,即时编译器的加入让 PHP 变得更快,JAVA 也曾采取了同样的方法。借助 HipHop 虚拟机,PHP 7.2 的速率是旧版 PHP 的两倍。
▌在线教诲 K.O 传统教诲
在线教诲盛行已久,通过在线教诲,每个人都可以调度课程播放速率,重复某些关键的知识点。在过去旧的研讨会中,一次只能一人发言,而在线论坛对其进行了改进,每个人随时都可以各抒己见,大大提升了互换效率。
在线教诲不仅让教诲变得大略,还带来了巨大的灵巧性,学员随时随地都可学习。这也大大改变了人们的学习办法,不再须要投入四年的韶光和昂贵的学费,并且所学的课程可能与生活绝不干系。
为什么要参加编译器的课程?由于你创造事情中须要理解编译器事理。如果老板想从关系数据库切换到 NoSQL 引擎,那么你可以花些韶光学习当代数据存储的课程。当你须要的时候,去学习最新的课程即可,而没必要让那些占时毫无用途的知识白白占用自己的大脑。
原文:https://www.infoworld.com/article/3188464/application-development/21-hot-programming-trends-and-21-going-cold.html
作者:Peter Wayner
译者:安翔,责编:言则