软件开发进展缓慢原因

就像我在2007年 , 2008年 , 2009年和2010年所做的那样,我总结了我认为最重要的2011年软件开发活动。 所有常规警告仍然适用:此列表肯定是由个人经验,兴趣和偏见所决定的。

10.功能语言的流行

我回想不到2011年的一天,在浏览软件开发标题时,我并没有大肆宣扬功能编程的优点 ,尤其是功能编程语言的优点 。 享受JVM中的函数式编程优势的能力一直是Scala吹捧的优势之一(有关Scala辉煌的一年,请参阅本帖子的荣誉部分)。 诸如Haskell (或JVM上的Jaskell )和LISP (由第9项提到的John McCarthy发明)之类的编程语言显然以其功能特性而闻名,但在2011年,我们看到了有关使用其他语言的功能方面的文章。 。 其中包括JavaScript中的函数编程 (2011年12月25日),IBM developerWorks系列文章《 函数式思维:Groovy中的函数功能》 (从2011年11月22日开始)和Java中的函数编程 (2011年12月15日)。

JVM领域最近发生了许多与函数式编程有关的活动。 除了Jaskell,Scala和Clojure之类的语言外,还有Java的面向功能编程的Java框架,例如Guava , fun4j , lambdaj , op4j和Commons Functor 。

关于用函数式编程语言编写代码, 布鲁斯·埃克尔(Bruce Eckel)写道 :“对我来说,关于函数式编程的最好的事情之一就是它产生的思维规律。 我发现它可以帮助我学习将问题分解为可测试的小部分,并阐明我的分析。 仅出于这个原因,这是一个值得的实践。”

函数式编程语言已经存在很长时间了,2011年甚至还没有引起人们对它们重新产生兴趣 的开始 。 但是,2011年似乎是FP在主流软件开发博客圈和媒体中真正起飞的一年。

9.传说丢了

今年见证了多位杰出技术专家的死亡。 史蒂夫·乔布斯可能是其中最著名的,但同年我们也输掉了丹尼斯·里奇和约翰·麦卡锡 。

人身死亡并不是我们行业在2011年遭受的唯一损失。2011年10月 , Mark Pilgrim 撤消 了他的大量在线捐助。 这使人想起了为什么幸运的僵硬人在2009年以类似的方式撤消了他的在线业务(贡献了相当多的Ruby)。

8. C ++:另一种“死”语言卷土重来

对于C ++而言,2011年是重要的一年。 C ++ 11 (AKA C ++ 0x )被批准并发布,这是C ++ 03以来的第一个新的标准化版本 。 C ++再次成为新闻,似乎正在经历与Java相似的振兴。 参见C ++及之后的2011年:Herb Sutter –为什么使用C ++? 举个例子。

正如有关并发性所提到的,Microsoft对其C ++ AMP ( 加速大规模并行化 )引起了新的兴趣。 此外, 2011年7月的《 MSDN杂志》刊登了一篇名为《 为什么C ++仍很重要 》的社论,其中作者说:“ [[MSDN读者]一直告诉我们的一件事是,我们不必像对待疯狂的叔叔那样对待C ++。阁楼。” Bjarne Stroustrup的FAQ对“ C ++下降吗?”这个问题有一个有趣的答案。 :

不,我不这么认为。 C ++的使用在某些领域似乎正在下降,而在另一些领域却正在上升。 如果我不得不猜测,我会怀疑在2002-2004年的某个时候出现净下降,而在2005-2007年以及2010-2011年又出现净增长,但是我怀疑有人真的知道。 大多数流行的措施基本上都测量噪音,应该以分贝而不是“受欢迎程度”报告其发现。 C ++的许多主要用途是在基础架构(电信,银行,嵌入式系统等)中,程序员无需参加会议或公开描述其代码。 许多最有趣和最重要的C ++应用程序没有被注意到,它们不作为编程产品向公众出售,并且从未提及其实现语言。 例如Google和“ 800”电话号码。 如果我在1985年想到了“ C ++ inside”徽标,那么当今的编程世界可能就大不一样了。

我认为Stroustrup关于C ++的许多说法以及缺乏在线覆盖对于通用Java也是如此。 用传统的Java编写语言并不像使用更新的语言那样令人兴奋或时髦,但是应该谨慎地假设某个主题的作者所占的百分比等于用户所占的百分比。 C ++还没有死 。

7. Java社区:OpenJDK和Java社区流程

对于OpenJDK来说, 2011年仍然是重要的一年。 在2010年末, IBM加入了OpenJDK , 苹果随后又加入了OpenJDK 。 2011年, Twitter还加入了OpenJDK , Apache Harmony退休了。

Java社区中的其他重大新闻涉及Java社区流程 (JCP)。 JCP.next帖子JSR 348 —迈向 Java社区流程的新版本中描述了JSR 348 (“迈向Java社区流程的新版本”)。 这篇文章的结论是:“ Java社区的成功取决于开放和透明的JCP,因此JCP.next值得我们的赞赏和关注。” 该帖子列出了JSR 348的一些早期行动,包括“通过要求所有开发都在开放的邮件列表和问题跟踪器上进行以提高透明度”和“专家组成员的招聘过程将公开可见”。 目的是“建立一个更加公开,开放,可访问和透明的JCP”。

作为重要的一年,2011年是为Java社区的其他证据,我举了有史以来第一次的Java社区主题在JavaOne大会期间, 2011 JavaOne大会 。 对我来说,Java社区似乎比过去几年更加充满活力和热情。

6. JavaScript

对于JavaScript来说,2011年是丰收的一年 。 首先,我的理由是Dart , CoffeeScript的 ,和Node.js的为“优秀奖”的发展(后来在这个职位)和我今年最大的赢家是HTML5的理由是证据和JavaScript在2011年的影响自己的Oracle在JavaOne 2011上 宣布 ,他们打算提供一种新的服务器端JavaScript实现( Project Nashorn ),以说明和测试非Java语言JVM支持以及在JVM上运行的高质量服务器端JavaScript实现。 jQuery的成功(及其2011年的增长 )也是说明JavaScript日益重要的另一个例子。

5. Java的回归与Java的回归

2011年出现的一个重要趋势是几个著名的项目使Java返回了Java。 例如, Twitter在将搜索架构从Ruby on Rails迁移到Java / Lucene之后, 加入了Java Community Process 。 最近的另一个例子是Yammer将其产品的一部分从Scala迁移到Java 。 提供在Java中复苏兴趣的其他证据翔实的职位包括埃德Dumbill的O'Reilly的雷达 岗位提前OSCON Java的2011 。 Oracle技术网 的2011年我们最受欢迎的技术文章主要是与Java有关的文章。

亚历克斯·汉迪 ( Alex Handy )在他的文章《 看2011年洗了什么:Java的回归》中写了Java的近期积极方向。 他写道:“在经过漫长的休假以及Sun似乎无休止的抖动之后,Oracle正式为Java提供了所需的支持。 ……Java不再停滞不前。 ”

Markus Eisele的帖子将Java向前推进? 一个定义。 一年回顾。 总结了2011年Java领域的事件。Eisele引用了Oracle的口号“ Moving Java Forward ”,并将其描述为“可能是2011年的句子”。 关于2011年,Eisele说:“对我个人来说,这是一个强大的Java年。”

有人可能会说,除了博客作者和顾问之外,大多数Java开发人员从未真正离开过Java。 这种论据的证据包括Java在TIOBE编程社区索引和编程语言评级(例如2011十大编程语言 )中一直保持很高的排名(几乎始终是第一)。 对于“ 死语言 ”,Java仍然非常流行并且充满活力。

Java编辑凯文·法纳姆(Kevin Farnham) 从Java角度总结了2011年 :“人们普遍认为2011年对于Java和在JVM上运行的语言来说是重要的一年。”

4.移动设备仍然风靡一时

去年, 移动设备开发在我的软件开发开发列表中占很高的位置,并且似乎继续在软件开发新闻和趋势监视中占据主导地位。 这并不意味着移动开发是最常执行的开发,而仅仅是意味着它得到了最多的关注。

随着移动设备的普及 ,移动开发将变得更加重要 。 《经济学家》杂志的《不仅仅是谈话》指出:“手机是世界上分布最广泛的计算机。 即使在贫穷的国家中,也有大约三分之二的人有机会获得这一机会。”

我们不需要任何其他证据来证明移动开发的普及性,但是值得注意的是, Objective-C在TIOBE编程社区指数中的高排名几乎完全是由于iPhone,iPad和iPod Touch等苹果移动设备的缘故。 一家公司的移动设备几乎单枪匹马地将编程语言从晦涩难懂的地方提升到了前十名。

3.云计算

我也将云计算放在去年的榜单上。 它仍然是软件开发中最流行的流行语,但对消费者和开发人员也具有现实优势。 我相信没有灵丹妙药 ,云计算不会改变这种信念。 但是,即使没有灵丹妙药,我们在软件开发行业也取得了长足的进步,前进的步伐不那么重要,在某些情况下,云计算确实可以提供优势。 任何时候(在任何情况下),任何事物(包括云计算)都不可能对所有人都是最好的,但是云计算无疑似乎使某些人和情况受益。

关于2011 年云状态的好书是2011年:云计算动摇了数据中心 。 这篇文章重点介绍了私有云和公共云在2011年取得的进展。 本文中有一句话特别令人感兴趣:“通往简单之路似乎铺就了更大的复杂性。”

可以说(我认为是凯文·法纳姆 ( Kevin Farnham)做到了 ),云计算在2011年受到了广泛的关注,但实际上在2011年并没有任何易于识别的重大发展。相反,许多小型发展和激烈的在线对话该主题的总和使云计算又迎来了又一年。

2.简化并发

2011年的主要趋势似乎是宣布各种语言如何简化编写高度并发的应用程序。 这是Scala和其他一些较新的JVM语言经常广为宣传的好处之一。 即使是JVM最古老的语言Java本身,也有望通过Java 8中的 lambda表达式 (在J2SE 5和Java SE 7中进行重大改进之后)来继续增强其并发支持(请参见Kevin Farnham的Java编辑Java的状态)。 :应对多核挑战,以取得良好的概览)。 微软对在其平台上开发并发应用程序的C ++表现出了新的兴趣。 具体来说, Herb Sutter和Daniel Moth讨论了C ++ 加速大规模并行化 (AMP)如何“为C ++引入了一项关键的新语言功能以及一个类似于STL的最小库,使您可以非常轻松地使用大型多维数组来并行表达数据。可以在加速器(例如GPU)上显示大量并行性的算法。”

Scala和函数式编程的日益普及并不是偶然的,因为人们对简化并发的兴趣越来越浓。 马丁·奥德斯基已提出 (在OSCON Java的2011 ,为什么它是如此难以得到并发共享状态/内存是正确的)。 布鲁斯·埃克尔(Bruce Eckel)让我们想起了布莱恩·格茨(Brian Goetz)的演讲,该演讲提供了支持相同主张的重要证据。 Goetz在2011年1月的一次采访中谈到了Java 7并对此提供了更多支持:

改进的库不仅提供常用习语的预烘焙版本,而且开发人员通常可以通过限制程序中的共享可变状态来避开并发的复杂性。 如果您没有共享状态,则无需协调对该状态的访问,这就是麻烦所在。 功能语言是基于此原理构建的,但是我们不必为了获得好处而切换语言-我们只需要采用不变状态优于可变状态的方向,并寻求增加不变性和减少共享。 在Java SE 7中,我们将添加一个用于fork-join分解的框架,这将使编写跨各种硬件配置自动并行化的算法变得更加容易。

1. HTML5的持续优势

在去年的软件开发重点文章中 ,我说过:“ HTML5似乎终于在主要浏览器中以及在Web开发人员和作者中引起了它的关注,值得关注。” 随着HTML5的Swift普及,许多人在2011年开始关注HTML5 。 HTML5接管了Web开发生态系统的迹象很多,因为它也侵入了移动设备 。 的确,可以说, 拥有一个通用平台以在众多移动设备上开发应用程序的愿望,一直是 HTML5成功兴起的最大动力。

HTML5成功的受害者越来越多。 我们在 2011年第一季度获悉 , Google Gears已被淘汰 (2011年发生的许多Google项目修剪之一)。 Gears的消亡公告明确承认了HTML5的作用 :“我们已将努力转移到将所有Gears功能纳入HTML5之类的Web标准中。”

2011年晚些时候,Adobe宣布不再开发用于移动设备的Flash Play,并在此之后Swift宣布Adobe将尝试将Flex (已开源,但在Adobe的领导下) 捐赠给Apache。软件基础 。 当然,许多Flex开发人员希望这不仅仅是Adobe使用开源作为垃圾场的方式 。 在解释有关Flex的问题时 , Flex博客在解释有关Flex的决定时承认:“从长远来看,我们认为HTML5将是用于企业应用程序开发的最佳技术。” 在宣布放弃移动Flash Player改用AIR和HTML5时,Adobe表示:“ HTML5现在在主要移动设备上得到了普遍支持,在某些情况下是唯一的。 这使HTML5成为在跨移动平台的浏览器中创建和部署内容的最佳解决方案。”

Microsoft提供了更多有关HTML5动量具有说服力的示例。 Windows 8和Windows Phone 7 Metro的 早期详细信息已在Silverlight社区中吓到了一些,例如Microsoft已放弃Metro IE中的Silverlight和所有其他插件的帖子所证明的, Microsoft 是否只是杀死Flash,Silverlight? 和Silverlight开发人员通向地铁的最顺利之路 。

HTML5仍未完全解决 (尚无法 使用HTML5完成的五件事 ),但似乎已经是胜利者。

荣誉奖

这些主题没有进入2011年我的十大主题,但是非常接近。

JavaFX似乎可以保留

在JavaOne 2010上 ,Oracle宣布将弃用JavaFX Script,并宣布了有关JavaFX 2.0的其他计划。 但是,正是在2011年(再次在JavaOne上 ),Oracle宣布了开放JavaFX的计划并通过Java Community Process将其纳入标准Java中,从而重申了JavaFX的未来。 JavaFX 2.0现在随Oracle的JDK 7 Update 2一起提供 。 Oracle的声明和行动使我相信JavaFX终将有未来。

现在,Oracle的JDK 7 Update 2包含JavaFX SDK,Oracle的Java 7 Update 2 JRE包含JavaFX运行时,JavaFX将可以在更多机器上使用。 JavaFX包括对与HTML5集成的一些支持,并且可能会添加对该集成的其他支持,这应会增加JavaFX的采用。 对于JavaFX,2011年可能是最大的一年。 不能使我进入前十名的唯一原因是,我相信开发社区感兴趣的部分仍然相对较小,但是在不久的将来可能会改变。

Node.js

Node.js平台在2011年总体上表现不错。尽管它成立于2009年,但在2011年似乎引起了媒体的广泛关注。除了2011年关于Node.js的大量博客文章和文章之外,还有几本书可供使用今年。 其中包括Node Web Development ( 2011年8月 ), 动手Node.js ( 2011 年 5月 )和Node Beginning Book ( 2011年10月 )。 预计在2012年还会出版两本书:节点:启动和运行:具有JavaScript的可扩展服务器端代码和编程Node.js:在JavaScript中构建事件化的I / O应用程序 。

并非如帖子Node.js所示,每个人都对Node.js着迷 ,而Node.js中的混合报告是否最适合Comet?

斯卡拉

对于Scala来说, 2011年是丰收的一年。 今年5月, Greylock Partners (风险资本家) 向 新成立的 Typesafe 投入了300万美元 , Typesafe是由Scala创造者Martin Odersky和Akka创造者JonasBonér同月创立的Scala / Akka公司。

近年来,Scala受到了广泛的关注,并且这种情况似乎在2011年逐步升级。我经常阅读Java或其他JVM语言上的帖子评论,这些帖子吸引了一些Scala用户,他们指出在Scala中如何轻松完成该帖子中讨论的任务。 布鲁斯·埃克尔 ( Bruce Eckel )在2011年撰写了《 Scala:感觉动态的静态语言》 。最近,在我关于Scala的最新社区对话中,Scala也受到了一些负面报道。

我相信这样的讨论的存在以及人们实际上共同关心讨论的事实表明,Scala处于进入主流的阶段。 Barb Darrow在GigaOM上的文章(同一站点上发表了“ 为什么现代应用程序需要 Greylock Partners的两位作者提出现代工具的要求” ), Scala着眼于Java忠实信徒中的顶级地位,这表明Typesafe的人们也有类似的感觉(比我更接近情况)。 Darrow的文章开始说:“为了听到Typesafe的话,Scala编程语言即将加入Java,C ++,Ruby和PHP等顶级开发工具的行列。 用于Eclipse集成开发环境(IDE)的新Scala插件应有助于铺平道路。”

说到Scala和Eclipse,本月宣布已经发布了Scala IDE V2.0 。 关于Scala的最常见的抱怨之一是缺乏工具支持,因此绝对值得欢迎。

在2011年斯卡拉的其他新发展包括第二版的发布程序在斯卡拉 (不同的方式在不同的地点和范围上市的发布日期从2010年12月至2011年1月)和礁HORSTMANN的公告的他即将出版的新书斯卡拉不耐烦 (其中Typesafe提供了免费预览 )。

与过去一两年的情况一样,Scala继续“差点错过”,使我成为该年度十大软件开发人员。 我认为2012年对于Scala来说将是重要的一年,因为我对Scala的看法是,在采用方面,它正处于一个重要关头。 目前看来,在采用方面,它确实会起飞或变平,并且在2012年可能会变得更加清晰。

云和服务中断

今年发生了一些大型且明显的中断。 通常高度可靠的Blogger(我的博客的托管人)已经停了大约24小时,而Amazon的EC2 在2011年也出现了故障 。 有关仅在2011年上半年的云中断列表,请参阅2011年(迄今为止)的10大云中断 。

任何依赖于单点故障的架构或基础设施都可能最终因该决定而遭受痛苦。 这些故事简单地提醒我们,这也适用于云。

Google Chrome和Firefox

通过Chrome浏览器作为首选的Web浏览器将继续上升 。 据报道, Chrome 15( StatCounter ) 是 最受欢迎的 单个Web浏览器 (按特定版本)。 很难确定哪个浏览器最受欢迎,因为这取决于哪个网站在进行计数,但是在采用率方面,Chrome肯定已经赶上了Firefox 。

我在12月16日至12月23日期间的一周内查看了自己博客的Blogger统计信息 ,其中,突破性突破(不针对特定版本)是39%Firefox,23%Chrome和20%Internet Explorer。 接下来显示包含这些统计信息和其他浏览器的快照。

Chrome的Swift普及似乎使Firefox处于劣势。 但是,有报道称从Google向Mozilla 支付巨额费用 , 以使Google成为Firefox的默认搜索引擎,这表明Firefox仍然存在。 Chrome工程师:Firefox是合作伙伴,而不是竞争对手的帖子引用了Chrome团队成员Peter Kasting在Google+上的帖子 ,其中Kasting解释了他对Google与Firefox达成近10亿美元交易的看法:

不管我尝试多少次,人们似乎都无法理解Google为什么要构建Chrome。 这很简单:Chrome的主要目标是使网络尽可能快地前进。 而已。 Chrome是否真正吸引了大量的用户,或者网络是否在进步,这是与其他目标完全无关的,因为其他浏览器供应商会加强他们的游戏并生产出更好的浏览器。 无论哪种方式,网络都会变得更好。 任务完成。 结束。

伍迪·莱昂哈德 ( Woody Leonhard) 写道 :“ Google现在比以往任何时候都更需要Firefox。” 莱昂哈德(Leonhard)还观察到:“钱是在搜索中,而不是浏览器。”

Firefox 在2011年取得了自己的进步 。 博客文章Firefox:2011年开始,“ Firefox在2011年使Web变得更加强大。” 它着重介绍了Firefox 4的发布,适用于Android的Firefox以及Firefox如何“不向业界引入”。 该帖子还包含“ Firefox:2011”信息图(如下所示,带有原始链接 )。

谷歌发布 Dart编程语言的举动让人联想起Go编程语言的发布 ,在2011年引起了广泛的讨论 。 Lars Bak 宣布 Dart称该语言为“一种用于构建Web应用程序的基于类的,可选键入的编程语言。” Bak继续指出,Dart旨在成为一种“结构化但灵活的Web编程语言”。 Bak在另一次采访中说,称Dart为“ JavaScript杀手 ”是“夸大其词”。 话虽这么说,JavaScript肯定有其缺点,而Google则具有使Web技术成功的影响力(但有些失败 )。

Dart可以编译为JavaScript(让人联想到Google Web Toolkit的Java-to-JavaScript编译),也可以在Web浏览器的虚拟机中运行。 Dart是一种开源语言,可从http://www.dartlang/获得 。

CoffeeScript

说到编译成JavaScript, CoffeeScript在其主页上被描述为“一种编译成JavaScript的小语言”。 该主页上还添加了“ CoffeeScript是一种尝试以简单的方式公开JavaScript的优秀部分的尝试。” 关于这种语言的书《 CoffeeScript:加速JavaScript开发 》于2011年出版。

NoSQL

近年来, NoSQL引起了巨大的发展轰动,但是Oracle在2011年进入 NoSQL的世界使2011年尤其值得关注。 CouchBase和SQLite在UnQL ( 非结构化数据查询语言 )上进行合作的宣布也可能导致NoSQL数据库的采用增加。

大数据

清楚地说明了为什么2011年是大数据大年的原因
2011年最大的大数据故事 。 麦肯锡全球研究所 将大数据称为 “创新,竞争和生产力的下一个前沿”。

NetBeans

NetBeans团队的2011年年终消息使我们想起了NetBeans IDE 2011年的重大发展。 该消息指出,“对于NetBeans来说,2011年是里程碑式的一年,我们的活跃用户达到了100万。” 该消息还补充道:“我们还发布了NetBeans IDE 7.0和NetBeans IDE 7.0.1,并为许多其他项目的成功奠定了基础。” 该消息还指出, NetBeans 7.1 (当前在候选版本2中)有望在2012年初发布。NetBeans7.1的主要内容之一是对JavaFX 2.0的支持。

科技工作市场卷土重来

2011年,包括软件开发职位在内的技术工作机会似乎正在增加。 丹·泰南 ( Dan Tynan)写道:“现在可能只是片刻而已”,再一次对自己说:“我很高兴我选择了技术职业。 ”

单核细胞增多症

单声道的“跨平台... 开源实现基于ECMA标准的C#和公共语言运行库Microsoft的.NET Framework的”在2011年有一个大的一年的岗位在2011年单在2011年盖的单声道相当详尽和状态,“ 2011年显示了使用Mono构建的应用程序的爆炸式增长。” 在与Mono有关的数项开发中,对我而言最为突出的是下岗的前AttachMate / Novell Mono团队成员创建的Xamarin 。 对于一个开源项目,这无疑是受欢迎的消息,当时有人担心它注定要失败 。 今天,Mono承诺“在iOS , Android和Windows Phone 7之间共享代码”。

开发者

“DevOps的”仍然是一个大肆宣传的概念在2011年我还是很难理解这是怎样运动帮助我还是会帮我,但我不明白的问题,移动/努力旨在解决 。 Wikipedia将devop定义为“用于在软件开发(应用程序/软件工程)和IT运营(系统管理/基础结构)专业人员之间进行通信,协作和集成的一组新的原理,方法和实践。” 尼尔·麦卡利斯特 ( Neil McAllister ) 称devops为 “ IT的最新纸老虎”。

相互联系

我在2011年的前十名列表和荣誉提名部分中引用的大多数项目与列表中的至少一个其他项目高度相关,并且经常与多个项目高度相关。 例如,函数式编程Scala使并发变得更容易,而约翰·麦卡锡(John McCarthy)的失落都是相关的。 同样,JavaScript与HTML5,Dart,CoffeeScript,移动设备,云开发和Web浏览器有关。

结论

2011年又是软件开发行业取得重大发展和进步的一年。 这篇文章中汇编的清单表明了这些进步的广泛程度,影响了不同的编程语言,不同的部署环境和不同的利益相关者。 当人们认为这是一个由单个人编写的清单时,很快就会发现,实际晋升的幅度远远大于这些有偏见的清单。

参考:我们的JCG合作伙伴 Dustin Marx在Inspired by Actual Events博客上提出的2011年重要软件开发 进展 。

相关文章 :

  • 2011年:软件安全性和质量状况
  • 软件开发和维护中的回报递减
  • 任何软件开发公司应存在的服务,实践和工具,第1部分
  • Java工具:源代码优化和分析
  • 每个程序员或架构师都应该知道的9 + 7件事

翻译自: https://www.javacodegeeks/2011/12/significant-software-development.html

软件开发进展缓慢原因

更多推荐

软件开发进展缓慢原因_2011年软件开发的重大进展