15个热门编程趋势---15个正在变冷的

本文是翻译,版权归原作者所有


程序员喜欢嘲笑流行趋势像微风吹过的时尚界,裙子长度长了短了、彩色来了走了、领带胖了又瘦了。但是,在技术界,严谨、科学、数学和精确牢牢占统治地位。

这并不是说,编程是一个缺乏流行趋势的行业。不同点在于其趋势被更高效率、增加的定制化和易用性驱动着。实现了三者中至少一种的新技术使得旧技术黯然失色。它是知识界的精华,而非奇思妙想。

【译者注:这段多引用了网站的其他文章,且与主旨关联不大,故略去不译】

下面列出了在今天的程序员当中热门的和不热门的技术,不是每个人都认可被列出的A、D、还有被落下的。但是,这正是编程永无止境的迷人之处:快节奏、激烈的争论、突然复出。

很久以前发明新编程语言的人不得不build所有东西,才能将代码转换到进入芯片的位(bit)。然后有人在作业到来之前用搭载来解决。现在人们用更聪明的办法,仅仅写一个预处理程序,借助丰富的类库和API就可以把新代码翻译成以前的。

喜欢动态类型【注1】的人发明了Groovy,一种语法简洁的Java版本。想修复JavaScript的人发明了CoffeeScript,一种让人们写简洁代码的预处理器。有很多像Scala或Clojure的语言运行在JVM上,可是只有一个JVM。为什么重复发现轮子呢?

Hot: JavaScript MV* frameworks

Not: JavaScript files

很早以前,每个学习JavaScript的人是为了弹出一个对话框或者检查表单里的email地址是否包含了@符号。如今HTML Ajax 应用程序太复杂了,以致于人们很少再从头写起。借助一个优秀的框架,写些胶水代码【注2】就可以轻松实现业务逻辑。现在有了大量的框架,像Kendo, Sencha, jQuery Mobile, AngularJS, Ember, Backbone, Meteor JS,还有很多——都可用来处理web 应用程序和网页上的事件和内容。

Hot: CSS frameworks

Not: Generic Cascading Style Sheets

过去,给网页做少许改动意味着要打开css文件,增加一行像font-style:italic之类的命令,然后保存文件,经过这样一个早上的辛苦工作,才能去吃午饭。现在网页太复杂了,用这种简单的命令去填充一个文件是不太可能的。改变一个颜色,所有都受影响,正如大家所说的阴谋论和生态学:事物都是有联系的。

像SASS和同胞Compass等CSS框架已经建立了强大的基础。它们支持真实变量、嵌套区块和mix-in等编程结构,以鼓励优雅、稳定的编程风格。从编程角度看,这没有多少新奇之处,但是在设计层面这是一个很大的跳跃。

Hot: SVG + JavaScript on Canvas

Not: Flash

Flash这些年使很多人疯狂起来,但是艺术家总是看中结果。抗锯齿渲染效果看起来很棒,很多天才艺术家建立了一套Flash代码来实现复杂交易和动画。

现在JavaScript有能力做很多相同工作了,浏览器厂商和开发者正在赶超Flash。它们能够和来自SVG(Scalable Vector Graphics,可缩放矢量图形)新格式的DOM层集成,SVG和HTML由一大堆标签组成,对于开发人员是非常容易使用的。有大量的API,对Canvas对象有详实的、和显卡有关的图形文档。有了这些,就没有理由再用Flash了。

Hot: Almost big data (analysis without Hadoop)

Not: Big data (with Hadoop)

每个人都想成为校园里的Big Man【注3】,如果不是,他们会寻找另一所能够使自己脱颖而出的学校。因此当“big data”这个词语开始在高管中流行的时候,这些高管开始要求最大的、最强的大数据系统,就好像他们正要购买一个游艇或摩天大楼。

有趣的是,很多问题还没有大到使用有想象力的大数据解决方案的地步。的确,像Google或Yahoo等公司追踪我们所有的网上冲浪;他们有以P字节或Y字节计的数据文件。但大部分公司的数据比较适合于RAM或初级PC。我就是在16GB的RAM的PC上写这篇文章的——对于只有少量字节的数十亿事件已经足够了。大多数运算中,数据不必读到内存,因为从SSD获取也不错。

有很多例子要求Hadoop云并行运算的大量机器的快速响应时间,但多数情况只是用一台孤立的机器就运行得很好,而省去了协调、沟通的争论。

Hot: Game frameworks

Not: Native game development

以前,游戏开发意味着雇佣大量的用C实现所有功能的开发人员。现在,没有人能承受得起定制代码的花费了。大多数游戏开发者放弃了他们数年前的自尊,转而使用Unity、Corona或LibGDX这样的类库来构建系统。他们不再用C去写和类库指令一样多的代码了。游戏不再是自豪的、而是被使用相同引擎浇灭的手工艺品,这有些难堪吗?大部分开发者是释然的——因为他们不必处理太多细节,他们可以把精力放在游戏玩法、情节、任务和艺术上。

Hot: Single-page Web apps

Not: Websites

还记得指向填满了静态文本和图片的网页的URL吗?把所有信息放到由分开网页组成的、称之为网站的网络里是多么地愚蠢和奇怪?新的web应用程序是前端到装载内容的数据库。当web应用程序想要信息时,它从数据库拉取数据然后注入本地的模板里。没有必要用需要建立网页的附加部分来标记数据,数据层完全和表现层、格式化层隔离。这里,移动计算的崛起是另一个因素:像应用程序工作的、单一的、响应式设计的网页——都是为了更好地避开应用程序商店的混乱。

Hot: Mobile Web apps

Not: Native mobile apps

假定你在移动内容上有个好想法,你会匆忙为iOS、Android、Windows 8、甚至黑莓操作系统等制作独立的版本。每个版本需要用不同编程语言的独立团队。然后在app能够到达用户之前,每个平台的app商店会榨取一些。你也可以仅仅建立一个HTML app,把它放在能够运行于各个平台的网站上。如果有修改,你不必返回app商店,祈求bug修复的快速审核。既然HTML层变得更快,也能运行在更快的芯片上,这种方法就比内置app好很多,甚至更复杂的交互性app。

Hot: Android

Not: iOS

Was it only a few years ago that lines snaked out of Apple’s store?(译者注:不了解“snaked”,无法准确理解,跳过)时代变了。由于iPhone和iPad仍然专注于喜欢丰富高端UI的忠实用户,销售额越来越对Android有力,一些报道甚至说,售出的手机70%是Android系统。

原因或许单单和价格有关。当iOS设备保持高价位时,Android世界正面临着激烈的竞争,平板价格只有五分之一。省钱总是有诱惑力的。

但是另一个因素可能是开源的影响。任何人可以在市场上竞争——他们也可以。Android平板有大的,有小的。有Android相机,甚至有Android冰箱。没人不得不说“妈妈,我可以?”让google创新。如果他们有想法,他们就开干。

Hot: GPU

Not: CPU

当软件变得简单、操作指令被线性设计好了,CPU就成了电脑最重要的部分,因为它要处理所有繁重的工作。由于电脑游戏有大量的并行计算的可扩展图像工作,显卡登上了舞台。花500、600美元或更多就可以搞一个还算可以的显卡,有些重度游戏玩家会花更多钱,它们甚至是普通桌面电脑的两倍价格。不是只有游戏玩家才夸耀他们的GPU卡。电脑科学家现在正转换很多并行应用程序,以在GPU上获得数百倍的速度提升。

Hot: GitHub

Not: Résumés

当然,通过看吹嘘的、包括初级国际象棋俱乐部副总裁在内的成就清单是可以了解一些情况的,但是读实际代码更全面、更有指导意义。注释写的好吗?是不是浪费了大量时间用于拆分成没有多大用处的、小的类?有一个方便扩展的真正架构吗?所有这些问题都可以通过看一眼代码得到答案。

这就是为什么加入开源项目对于找工作正变得越来越重要的原因。从一个私有项目上分享代码比较难,但是开源代码可以分享到任何地方。

Hot: Renting

Not: Buying

当Amazon在黑色星期五推出电脑和其他电子设备时,这个公司忘记了包括最有价值的云。需要点儿时间。不久以前,它打开了自己的数据中心,雇佣了自己的员工来运营完全自己采购的电脑。现在他们租电脑,租数据中心、租员工,甚至按小时租软件。没有人想去争论得拥有什么。这是个好想法,至少直到网站向病毒一样传播起来,你才意识到通过点击就可以支付一切。如果Amazon找到了一条实现云服务器方法,未来就会趋于一致。

Hot: Web interfaces

Not: IDEs

很久以前,人们使用命令行编译器,然后有人将其和一个编辑器、及其他工具集成在一起做成了IDE。现在是时候结束IDE的时代了,基于浏览器的工具(用于工作的系统)就能编辑代码。如果你不喜欢WordPress是如何工作的,它有一个内置的编辑器,允许你直接修改代码。微软的Azure支持在它的网站直接写JavaScript胶水代码。这些系统没有提供最好的调试环境,因此编辑生产环境中的代码是有风险的,不过想法已经实现了。

Hot: Node.js

Not: JavaEE, Ruby on Rails, PHP

服务器行业一直很火,得益于线程模型允许操作系统放任程序员的任性的、低效的、杂乱的行为。无论多么愚蠢的循环或是程序员编写的多么不经济的计算,操作系统都会通过在线程间跳转以达到平衡。

Node.js带着JavaScript回调模型出现了,代码运行得非常快——比任何人期待得还要快,尽管过去它只是一个用来弹出对话框的玩具语言。突然产生新线程的开销开始显现,Node.js搞定了。当程序员处理不好的时候,问题还会出现,但是责任对他们是有好处的。了解资源参数的程序员通常能产出更快的代码。

Node.js也得益于浏览器与服务器之间的关系。同样代码能够在浏览器和服务器端运行,开发人员就可以很容易地迁移功能或复制功能。结果,Node.js在互联网上火起来了。

(译者注:下面一个话题,略去不译。)

原文地址:http://www.infoworld.com/print/233343 注1:dynamic typing:http://c2.com/cgi/wiki?DynamicTyping 注2:胶水代码(glue code):http://en.wikipedia.org/wiki/Glue_code 注3:Big Man:http://en.wikipedia.org/wiki/Big_man

译文:15个热门编程趋势---15个正在变冷的 》| 腊八粥