2016年即将进入尾声,在即将到来的2017年和未来的几年内,在编程界,会有哪些新技术出现,成为新的潮流,又有哪些技术的热潮会渐渐消退呢?最近,infoworld.com的一位编辑Peter Wayner在他撰写的文章21 hot programming trends -- and 21 going cold 中,提到了21种会流行的技术,以及相应地,21种可能会遇冷的技术。本文旨在与大家一起讨论这个话题。下面所列出的10种技术,摘自Peter的文章。大家也可以阅读他的全文,了解他对其它技术的预测。
1. 大热:JavaScript MV框架; 遇冷:JavaScript文件
很久以前,每个人都学会了写JavaScript代码,用来弹出一个消息窗口或检查表格中含有@符号的电子邮件地址。不过现在有了HTML Ajax应用程序,它们非常精细,因此很少人从零开始写代码了。使用一个有详细说明的框架和写一点胶水代码来执行你的商业逻辑是比较简单的方法。
现在有很多框架,如Kendo, Sencha,jQuery Mobile,AngularJS,Ember, Backbone, Meteor JS等等,所有这些框架都是为了处理Web应用程序以及页面事件和内容而准备的。另外,还有一些为智能手机和平板电脑提供的跨平台框架,其中包括nativescript,PhoneGap和Sencha Touch等,它们可以用来创建源自HTML5技术的app。
HTML5 Mobile App Development with PhoneGap - Livecoding.tv
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,这是一个将直播,教育,社交和工作结合在一起的综合平台。这个平台以直播编程的方式,将世界各地的程序员开发产品或项目的过程直观地呈现给观众用户。你可以学到很多在书本上不一定能学到的编程知识和技巧,因为每一个直播,都是一个真实的案例。除了直播,你还可以观看每一个直播者的视频。因此,你可以在这个网站上学习某种编程语言的基础知识,也可以学习某个产品,工具甚至是整个项目的开发,看看优秀的开发者是如何写代码,除错,创建框架等等。当直播与在线学习结合在一起时,这也是互联网的一个趋势。
以上分享的内容,可能不一定是你认同的,这没有关系。因为无论是哪一种潮流的兴起或衰退,都令编程成为一种有着无穷吸引力的行业:它总是在快速变化,又总是有着充满激情的争论。这也正是编程世界精彩的地方。