技术开发 频道

编程世界:编程领域的十一大发展趋势

  编程发展趋势第七位: 能源同样不再免费

  保证计算机设备运作所带来的成本过去曾一度可以忽略不计。那时我们的服务器机架无论消耗掉多少能源,最终拿到手上的缴费单永远不会吓人一跳,因此根本没人在乎这方面的开销。

  然而一切都改变了——能源消费成了一项重大问题,无论大家是为智能手机还是为服务器群开发程序,这都成了需要认真对待的关键性指标。我就有一部Android手机,其最大的局限在于,就算啥任务也不处理,它的待机时间也只有八个小时。如果大家设计出一款比GPS功能耗电速度更快的应用程序,那毫无疑问它的下载量将会惨不忍睹。

  服务器程序员对这个问题可能认识不深,因为在他们眼中降低能耗似乎与自己扯不上关系。他们对于处理速度颇为慎重,但对数据库处理过程所带来的能源成本则知之甚少。谷歌在这个问题上属于走在时代前沿的几家企业之一,他们在寻找低成本能源方面投入了大量资金以支持大量的搜索活动。看起来该公司似乎在以单独的搜索活动为单位计算能源消耗,并量度其所能带来的广告收益,进而协调整套搜索服务的投入产出比。

  云计算则将这一问题进一步推上台面。那些相比之下更为复杂的云——例如谷歌App Engine或是Amazon S3——不以机架或是启动密码数量计费。它们采用的是以数据库提交及查询量为单位,尽管这给大多数程序员带来了新的挑战,但不可否认,这样的机制使能源成本更加趋于透明化。在它们的推动下,大家会开始习惯于认真考虑每个子程序所带来的支出,而不是仅仅关注代码行或者毫秒级的执行时间。

  编程发展趋势第八位: 传统教育方式已经不再重要

  问起任何一位项目管理者,他们都会抱怨优异计算机科学部门缺乏足够的人才。到目前为止,他们可能仍然愿意在不考虑简历是否精彩的情况下从一流高校中聘请一位主修文职专业的学生。但一旦讨论起一位来自同所学校、但已经步入中年的编程求职者,管理者们往往顾左右而言他,最多扔下一句“请等待电话通知”。

  事实上,不少首要技术公司都在向美国国会抱怨,声称他们不仅无法从美国公民中找到足够多的编程专家,同时也很难在与大龄名校程序员之间关于年龄歧视的诉讼中赢得胜利。

  这种现象可能说明,教育经历的附加值已经逐渐淡出企业的主流价值观。年纪较长且具备同等教育背景的员工们曾经是业内炙手可热的人才,但如今他们却反映,企业只喜欢年轻且没有家庭拖累的新员工,因为这个群体能够胜任更多加班工作。由此我们不禁想到,也许新鲜的本科学历能否令人满意并非重点,企业所真正看重的是年轻所带来的较低的薪酬期望。

  有些企业则直接跳过这类问题,将四年制高校学习简单视为制约市场发展的一项扭曲规则。风险投资商人们往往愿意为那些忽略了本科教育的潜力型人才提供资金,而另一些企业则正在积极招募拥有特殊技能的员工,并通过集中培训的方式帮他们迅速掌握工作所必需的实用性技能。在他们眼中,高校课程中常见的理论分析能力几乎没有什么价值。

  对于传统高校教育摒弃程度最深的莫过于PayPal创始人Peter Thiel所采取的方案。他大量招聘那些刚刚从高中毕业的年轻人,并为他们提供“一站式”高校教育,以培养顶尖编程人才。孩子们得到了工作,而Peter Thiel也拥有了众多年轻且极具可塑性的骨干力量。

  另一些人更关注普通高校那令人错愕的学费增长上,认为短期而更有针对性的集中式教育具有更为积极的经济意义。一位有着四十年职场经验的优异高校毕业生每个月会给我们带来1500美元的纯教育支出(也就是25万美元薪水的6.8%),相比之下充分利用供应商的网上课程与培训则能够显著降低这一成本。

  《Fast Company》一书中曾收录了这样一篇文章,其中涉及一个问题,即“为什么要在二者实际工作能力对等的情况下,优先雇用一位博士而非自学成才的少年?”紧接着,文章通过阐述企业可资借鉴的实习方案回答了这一问题。事实证明,只要培养得当,就算没有花哨的学历,企业照样能够获得真正的人才。

  编程发展趋势第九位: 准确性要求削弱,可扩展性高于一切

  多年以前,ACID主导着数据库领域。挑战在于建立一套坚不可摧的系统,以保证每条查询都得到准确且一致的响应。飓风、核武器抑或是管理者的错误插拔都不应该对数据库造成影响。使用这类服务的大客户包括银行、酒店以及航空公司,而他们最看重的就是银行账户以及预定信息的一致性与准确性。

  时至今日,业界的工作重心转移到了寻求一种简便的方式,借以存储我们生活中所涉及的点点滴滴。从我们曾经游历过的地方到与朋友们之间争论的话题,将当下世界上每个人的所有细节以快速且有效的手段记录在案才是专家们的终极目标。

  在处理这一问题的过程中,那些最具才智的人们很快意识到,恰当地抛弃干扰因素、忽略非关键性条件才是真正简化工作的不二法门。如果某些状态更新消失了,哪些人会注意到?如果某些人在使用查询服务选择了一家咖啡厅后,却没能得到与期望一致的接待,那可能也没什么大不了的,因为他们可能日后还会再次光临。在新一代数据管理者意识到他们可以通过降低对准确性的要求来大幅节约计算周期及相关基础设施的建设开支后,NoSQL及其它类似的数据存储机制也就应运而生了。

  现在,摒弃对Web准确性的要求成为缩减处理时间及资金投入的优先方案。大家不妨尝试用一些以Web为基础的工具搜索一下老旧的邮件消息,结果是,这些工具往往会偷偷忽略掉一些陈旧内容。这一现象反映出搜索标准正在经受的缓慢侵蚀。就拿谷歌为例,他们悄悄取消了使用加号进行逻辑搜索这一功能。一旦数据库管理员之间达成共识,我们肯定会看到越来越多的Web工程师用各种掩人耳目的方法巧妙地逐步放弃对准确性的执著追求。

  编程发展趋势第十位: 真正的并行架构开始付诸实践

  计算机架构师们已经花数年时间讨论如何在设备中引入真正的并行机制,但担当前锋角色的程序员们却刚刚得到工具,为这一设想付诸实践而着手工作。

  并行技术突出作用于两大领域:多节点数据库与Hadoop作业。当然在某些情况下二者之间也互有交集。

  大多数NoSQL数据存储系统用于帮助我们将大量工作负载分摊给多台计算机。有些提供自动分区,用于将数据集划分成块、将指定块同步至目标计算机并且在必要时直接查询拥有对应内容的设备;另一些则提供复制或备份功能,此类功能相对比较传统。当然也不乏二者兼而有之的系统。

  Hadoop是一款开源框架,能够协调数台计算机共同处理同一问题,并将全部答案整合起来,并编译成一种统一的结果。该项目在一定程度上模仿了由谷歌开发的Map/Reduce框架,后者主要用于同步信息搜集系统,但Hadoop的发展前景无疑比这些前辈要光明得多。

  此类工具让多设备协作处理同一问题的能力得到大幅增强。如今的基础设施非常牢固,足以让企业架构师们在略加点拨与稍有困扰的情况下,成功完成对大量设备机架的部署。

  编程发展趋势第十一位: GPU压倒CPU

  就在几年之前,CPU芯片制造商还是这个世界上赚钱最容易的企业之一。然而随着图形处理器的市场认可度不断攀升,那段美好的时光也转瞬即逝了。现在我们经常看到一些小朋友在整套计算机设备与操作系统上花上三百美元,却愿意为一块发烧级显卡砸上六百美元。

  游戏爱好者并不是痴迷于显卡的惟一群体。那些需要高功率计算能力的科学家们也在对GPU进行重新编程,用以分析蛋白质折叠结构或是猜测最小粒子单位的秘密。英伟达公司还为针对非玩家群体打造的设备召开了数次重要会议,他们为那些想要打造超级计算机的科学家奉上了极为贴心的显卡产品。美国橡树岭国家实验室计划在一台超级计算机上安置一万八千个来自英伟达公司的Tesla GPU,在这种强力加持之下,这台设备预计将登上世界计算机五百强的冠军宝座。不过他们同时也得为能源部提供一套精致的模型,以阐释整套体系的运作状态及能耗情况;毕竟这样一套怪物级设备同时也如同在只硕大无朋的电老虎,光靠玩反恐能跑多少帧可说服不了政府的官员们。

  原文链接:

  http://www.infoworld.com/d/application-development/11-programming-trends-watch-179761?page=0,0

0
相关文章