程序员们喜欢嘲笑时装界的潮流总是变化得像一阵风一样。编程的趋势是由更高的效率,改良的用户化和使用方便来驱动的。这些可以带来更多便利的新技术让前一代技术黯然失色。这是一种知识界的精华,而不是异想天开。那么在编程界,在即将到来的2017年和未来的几年内,会有哪些新技术出现,成为新的潮流,又有哪些技术的热潮会渐渐消退呢?
1. 大热: JAVASCRIPT MV 框架
遇冷:JAVASCRIPT文件
很久以前,每个人都学会了写JavaScript代码,用来弹出一个消息窗口或检查表格中含有@符号的电子邮件地址。不过现在有了HTML Ajax应用程序,它们非常精细,因此很少人从零开始写代码了。使用一个有详细说明的框架和写一点胶水代码来执行你的商业逻辑是比较简单的方法。
现在有很多框架,如Kendo, Sencha,jQuery Mobile,AngularJS,Ember, Backbone, Meteor JS等等,所有这些框架都是为了处理Web应用程序以及页面事件和内容而准备的。另外,还有一些为智能手机和平板电脑提供的跨平台框架,其中包括native script,Phone Gap和Sencha Touch等,它们可以用来创建源自[HTML5]
2. 大热: SVG + JAVASCRIPT ON CANVAS
遇冷: FLASH
Flash已经令人们疯狂了很多年,但编程大师们一直看重的是结果。反锯齿渲染看起来很棒,以及很多有才华的编程大师已经建立了一个Flash代码堆垛来处理复杂的过渡和动画。
现在JavaScript层具有很多相同的能力。浏览器的制造商和开发者都在为Flash的结束而欢呼。JavaScript可以与DOM层更好地整合在一起,DOM层来自一些新的格式,例如SVG(可缩放矢量图形)。SVG和HTML包含了一大堆标签,Web开发者使用起来往往更方便,现在还有了大的APIs,让你可以在画布对象上详细地绘画图形,通常还会提供视频卡来帮助你使用。把它们结合起来使用,你还有什么理由要用Flash呢?
3. 大热: 游戏框架
遇冷: 原生游戏开发
很久以前,游戏开发意味着要请大量开发人员,他们从零开始用C语言写所有代码。当然这得投入巨资,但它看起来很棒。现在,没有人能负担得起奢侈的自定义代码了。大多数游戏开发者放下了他们多年前的骄傲资本,现在他们使用库,如Unity, Corona, 或LibGDX来建立系统。他们不会再写像库说明那么多的C代码了。这现象是否会令人惭愧呢?我们的游戏不再是用手工写代码完成,而是由相同的引擎来制作而成的。不过,大多数开发者都对此感到很欣慰,因为他们不需要被迫去处理细节,这样他们可以专注于游戏玩法,情节,人物和艺术。
4. 大热: 单一网页的WEB APPS
遇冷: 网站
如何把所有信息放在一个由数个独立网页组成的网站中,网站设计人员要花几个小时来制作网站地图,以令网站导航变得简单。
新的Web应用程序是从前端到有大量内容的大数据库。当Web应用程序需要信息时,它就从数据库中提取信息并将信息注入到本地的模具中。现在没有必要使用Web附加设备所需要的所有东西来标记数据,以便创建一个网页了。数据层是完全独立于演示和格式层。移动计算的兴起是另一个因素:单页的,响应式设计的网页,它工作起来就像一个app——所有这些都更好,以避免混乱的App商店。
5. 大热: 移动WEB APPS
遇冷: 原生移动 APPS
对于移动内容,你可能会有很多很好的想法。你可以写不同版本的app来应用于不同的系统:Android,iOS,Windows 8,甚至BlackBerry OS或是其它任何一个系统。每一个版本的app需要由一个独立的,懂得不同编程语言的团队来开发。然后,每一个平台上的app商店在把app交到用户手中之前,可能会各自提出种种合理不合情的要求。
或者你可以创建一个HTML app,把它放在一个网站上,在所有平台上运行。如果出现了什么变化,你不需要返回app商店去请求获得一个迅速的错误检查和修复。现在,HTML层越来越快,而且它在速度较快的芯片上运行,这种方法可以使移动Web app更好地与原生app竞争,甚至是与更复杂的交互式app竞争。
6. 大热: ANDROID
遇冷: IOS
几年前,苹果专卖店门前排起的“人龙”还记得吧?时代在改变,虽然iPhone和iPad仍然拥有忠实粉丝,他们喜欢丰富、复杂的用户界面,但原始销售数据依然对Android有利。一些报道甚至说,超过80%的手机是Android的。
原因可能很简单,因为成本。当iOS的设备成本仍然很高的时候,Android正在以大量竞争汹涌而来,那就是用五分之一的价格来生产平板电脑。省钱永远是一种诱惑。不过,另一个因素可能是开源的效果。任何人都可以在市场上竞争。现在市场上有大的安卓平板电脑,也有小的;有安卓摄像头,甚至还有安卓冰箱。
7. 大热: WEB界面
遇冷: 集成开发环境(IDES)
很久以前,人们用的是命令行编译器,然后有人把编辑器和其它工具整合在一起,创造了IDE。现在又轮到IDE的热潮消退了,因为有了基于浏览器的工具出现。它们通常是一个工作系统,可以让你编辑代码。如果你不喜欢WordPress的功能,它配备了一个内置的编辑器,让你可以即时更改代码。微软的Azure允许你在它的入口写JavaScript胶水代码。虽然这些系统不能提供最好的调试环境,并且在编辑生产代码时可能会有一些危险,但这个创意是不错的。
你可以尝试Cloud9,Aptana,和Mozilla WebIDE,但要坚持探索。Web界面正在变得越来越强大。有可能会出现这样的情况,在微软的Azure网站上建立一个完整的大数据分析项目。
8. 大热: NODE.JS
遇冷: JAVAEE, RUBY ON RAILS
服务器的世界一直在线程模型上长盛不衰,它让程序员在使用操作系统时可以有种种行为,如固执,低效或是放任。无论是由程序员编码而造成的愚蠢的循环或是浪费的计算,操作系统都可以在线程之间切换来平衡性能。
Node连同JavaScript一起回调编程模型,它的代码的确运行得很快,比任何人预期的还快。它曾经可能是一种无实用价值的语言,只是被用于警告消息框。但意外地,由于创建新线程的开销变得明显,Node.js腾飞了。当程序员表现得不好时,问题就会出现了,但责任在很大程度上是对他们有好处的。显然,限制资源往往可以令程序员更快地写代码。
Node.js还有利于浏览器和服务器之间的和谐。运行在浏览器和服务器上的相同代码可以让开发人员更方便地移动和复制功能。因此,Node.js层已经成为互联网上最热门的栈。
9. 大热: PHP 7.0
遇冷:旧版PHP
在过去,PHP是一种简单的方法来淘汰一些动态网页。如果你需要一点点的变化,你可以在HTML标签之间嵌入简单的代码。Web开发者有了它就基本足够了,但它的缓慢足以令程序员中的中坚分子看不起它。
这是一则旧闻了,因为一些喜爱PHP的程序员在Wordpress和Facebook等地方都在争相利用即时编译器,这种曾创造出Java如此高性能解决方案的技术来执行比以前更快的PHP代码。现在的工具如HipHop,虚拟机和PHP7.0提供的速度可能是旧版本的2倍。这会给Node.js和java带来挑战。
10. 大热: 与时并进的教育
遇冷: 四年传统教育
以计算机为介导的课程不再是新玩意了,每个人正在享受着观看视频讲座的好处。我们可以随意调整视频的播放进度,加快或放缓,还可以重复观看自己想看的部分。在线论坛同样比以前的讨论室有了改善,以前每一次讨论,只能由一个人来主宰。
但这不仅是教育的一种本质,网上课程技术的背后是它颠覆了教育产业技术的复杂性;它还可以让你灵活地支配自己的学习时间和地点。这正在改变我们的生活动态,因为我们不再需要投资四年的时间以及负担高额的学费去学习一系列课程了。 当你需要获得新信息的时候,你的需要可以得到满足,而且不要让迅速腐烂的想法困扰你的头脑。
就编程来说,我们可以在网上找到很多学习网站、社区、博客,这些都是很好的学习资源。例如Livecoding.tv, 这是一个将直播,教育,社交和工作结合在一起的综合平台。这个平台以直播编程的方式,将世界各地的程序员开发产品或项目的过程直观地呈现给观众用户。你可以学到很多在书本上不一定能学到的编程知识和技巧,因为每一个直播,都是一个真实的案例。除了直播,你还可以观看每一个直播者的视频。因此,你可以在这个网站上学习某种编程语言的基础知识,也可以学习某个产品,工具甚至是整个项目的开发,看看优秀的开发者是如何写代码,除错,创建框架等等。当直播与在线学习结合在一起时,这也是互联网的一个趋势。
11. 大热:Spark
遇冷:Hadoop
这不是Hadoop正在冷却,更重要的是,Spark是炙热的,使Hadoop模型看起来有点老。 Spark借鉴了Hadoop从大量数据中提取意义的一些最好的想法,并通过一些使代码运行得更快的固体改进来更新它们。最大的可能是Spark将数据保存在快速内存中,而不是要求将所有内容写入分布式文件系统。
当然,许多人通过使用Spark对存储在Hadoop分布式文件系统中的数据的处理速度来合并这两者,相比竞争更多的是互补。
12. 大热:人工智能/机器学习
遇冷:大数据
没有人知道“人工智能”是什么意思,这有助于营销人员,特别是从“大数据”这个术语的过程中。他们正在从人工智能中获取条件,并升级大型,数字处理算法的复杂性,这些算法会遍历我们的日志文件和点击流。通过从50多年的AI研究中借鉴更复杂的算法,我们比以往更有机会在噪声中找到该信号。工具运行的范围从机器学习框架到认知计算,一直到IBM的Watson,你现在可以ping通来解决你的问题。每个都提供自己的机器智能水平,并与此,承诺为我们接管更多的数据分析和取证。
大热:GPU
遇冷:CPU
当软件很简单,并且指令排列在一个漂亮的线,CPU是计算机的王,因为它做了所有的重提。现在视频游戏充满了可以并行运行的大量图形程序,视频卡运行显示。很容易花费$ 500,$ 600或更多的花式视频卡,一些严重的游戏玩家使用多个。这是许多基本桌面的价格的两倍多。玩家不是唯一吹嘘他们的GPU卡的人。计算机科学家现在正在转换许多并行应用程序在GPU上运行数百倍。
13.大热:GitHub
遇冷:简历
当然,你可以通过阅读一个蓬勃发展的成就名单,其中包括初级高级象棋俱乐部的副总裁,了解候选人。但阅读某人的实际代码是如此丰富,更有指导。他们写好的评论吗?他们浪费了太多时间把项目打破成小的类,没有什么?有没有真正的架构与扩展的空间?所有这些问题可以通过他们的代码一瞥。
这就是为什么参与开源项目对于找到工作变得越来越重要。从专有项目共享代码很困难,但开源代码可以到处走。
14.大热:租赁
遇冷:购买
当亚马逊在黑色星期五推出其计算机和其他电子产品的销售时,公司忘记为其云计算纳入可观的交易。给它时间。不久前,公司开设了自己的数据中心,雇佣了自己的员工来运行他们直接购买的电脑。现在他们每小时都租用电脑,数据中心,工作人员,甚至软件。没有人想要拥有任何东西的麻烦。这是一个好主意,至少直到网站变得流行,你意识到你付出的一切点击。现在如果只有亚马逊找到一种用无人机交付云的方法,那么趋势将趋于一致。
15.大热:几乎是大数据(没有Hadoop的分析)
遇冷:大数据(用Hadoop)
每个人都喜欢像大人在校园里,如果他们不是,他们正在寻找一个适当的大小的校园,他们可以脱颖而出。因此,当“大数据”一词开始流经行政套件时,西装开始寻求最大,最强大的大数据系统,就像他们购买一艘游艇或一座摩天大楼一样。
有趣的是,许多问题都不够大,无法使用最好的大数据解决方案。当然,像Google或Yahoo这样的公司会跟踪我们的所有网络浏览;它们具有以兆字节或兆字节衡量的数据文件。但是大多数公司都有可以轻松适应基本PC RAM的数据集。我在一台有16GB RAM的电脑上写这个文件 - 足够用十几个字节的十亿事件。在大多数算法中,数据不需要被读入内存,因为从SSD流式传输是很好的。
将有一些实例需要在并行运行的Hadoop云中的几十台机器的快速响应时间,但是许多实例将在单个机器上进行精细插入,而没有协调或通信的麻烦。
16.大热:Docker
遇冷:管理程序
这不是真的。管理程序有它们的位置,许多Docker容器在运行在管理程序之上的操作系统中运行。然而,Docker容器比虚拟机映像小得多,这使得它们更容易使用和部署。
当开发人员可以时,他们更喜欢只运送Docker容器,这要归功于它们在部署期间可以轻松地交换。聪明的公司,如Joyent正在弄清楚如何挤出更多的脂肪,以便容器可以运行,就像他们喜欢说的“裸金属”。
17.大热:JavaScript MV *框架
遇冷:JavaScript文件
很久以前,大家都学会了编写JavaScript来弹出一个警告框,或者检查表单中的电子邮件地址是否包含@符号。现在HTML Ajax应用程序非常复杂,很少有人从头开始。采用一个复杂的框架和编写一些粘合代码来实现你的业务逻辑更简单。
现在有几十个框架像Kendo,Sencha,jQuery Mobile,AngularJS,Ember,Backbone,Meteor JS等等,都准备好为你的Web应用程序和页面处理事件和内容。
这些只是Web应用程序。还有一些调优为智能手机/平板电脑世界提供跨平台开发。像NativeScript,PhoneGap和Sencha Touch等技术是使用HTML5技术创建应用程序的几个选项
18.大热:CSS框架
遇冷:通用级联样式表
以前,在网页上添加一点pizzazz意味着打开CSS文件,并包括一个新的命令,如font-style:italic。然后你保存的文件,去了午饭后,一个辛苦的上午的工作。现在网页是如此复杂,以致无法使用这样简单的命令填充文件。一个调整到一种颜色,一切都出去了。就像他们说的阴谋和生态:一切都是相互关联的。
这就是CSS框架如SASS和它的表兄弟指南针已经找到坚实的基础。它们通过提供编程结构(如实变量,嵌套块和混合)来鼓励识字,稳定编码。它可能听起来不像编程层中的新鲜,但它是设计层的一个巨大的飞跃。
19.大热:云的复杂性
遇冷:云简单
早期的云计算让供应商强调点击按钮和获得正在运行的机器是多么容易。简单是王。
现在选择正确的机器,找出正确的折扣程序可能比编写代码需要更多的时间。有几十个机器配置文件可用,并且大多数云提供商支持一些旧的模型。所有这些都提供独特的性能水平,因此您最好准备好对其进行基准测试,以确定哪种是最具成本效益的。是否值得节省12美分每小时用更少的RAM?这肯定是可能的,如果你旋转100机器几个月一次。
为了使事情更复杂,云公司提供了几个选项,通过提前支付或批量购买获得折扣。你必须把它们放在电子表格中。它足以投资在云成本工程的在线课程。
20.热门:IaaS
遇冷:PaaS
谁不想被骗?谁不想要额外的帮助?是的,开发人员通常喜欢使用完整的PaaS获得所有额外的支持。有很多额外的功能,其中一些实际上是有用的。
但有一个大恐惧:平台意味着锁定。有时候,权衡是值得的,但有时它是一场噩梦。 IaaS选项更容易改变。如果你不喜欢你的Ubuntu服务器在IaaS机架中运行,你可以在你的办公室安装自己的Ubuntu服务器,独自一人。它不是那么容易与PaaS。
21.大热:PHP 7.0
遇冷:老PHP
在过去,PHP是一个简单的方法敲出几个动态网页。如果你需要一点点多样化,你可以在HTML标签之间嵌入简单的代码。对于Web开发人员来说,它是基本的,但它足够慢,足以从硬核程序员那里汲取嘲笑。
这是一个老消息,因为一些PHP爱好者在像WordPress和Facebook的地方已经竞争,通过并入即时编译技术,使Java成为一个高性能的解决方案,比以前更快地执行PHP代码。现在像HipHop虚拟机和PHP 7.0这样的工具提供的速度可能是旧版本的两倍
相关网站:多数是英文网站
9 predictions for the future of programming
9 bad programming habits we secretly love
The 13 developer skills you need to master now
Download: The professional programmer's business survival guide
Download: 29 tips for succeeding as an independent developer
Program the world: 12 technologies you need to know now
Attack of the one-letter programming languages
9 cutting-edge languages worth learning now
7 timeless lessons of programming 'graybeards'
9 research projects that could transform the enterprise
Review: The big four Java IDEs compared
Download: Hands-on with 17 JavaScript editors and IDEs
11 cutting-edge databases worth exploring now
33 worst lines ever said by tech recruiters
10 battles raging for the hearts and minds of developers
15 technologies changing how developers work
Dev-olution: Saluting 19 generations of computer programmers