您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 程序员电子刊2017年第十一期
ContentsCSDN要闻3外刊速递5封面报道AI,从战略优先到技术一线11如何成为一名机器学习算法工程师12如何成为一名推荐系统工程师18如何成为一名对话系统工程师23如何成为一名数据科学家29如何成为一名异构并行计算工程师34如何成为一名语音识别工程师42求取技术突破:深度学习的专业路径48实战路径:程序员的机器学习进阶方法53人工智能在物联网设备上实现深度学习61主办单位:CSDN出品人:蒋涛孟岩顾问:李航俞栋总编:孟迎霞主编:卢鸫翔编辑:何永灿魏伟唐小引陈秋歌郭芮钱曙光屠敏仲培艺景琦孙浩峰蒲鸽胡永波特约编辑:徐威龙杨福川张国强杨爽责任编辑:屠敏美术设计:纪明超美术编辑:张虓Tel:010-64351458E-mail:editor@csdn.net读者服务部读者信箱:reader@csdn.net地址:北京市朝阳区酒仙桥路10号院恒通商务园B8座二层邮政编码:100015电话:010-64351436传真:010-64348545出版日期:每月1日文章版权归CSDN所有,未经许可不得转载如发现装订错误或缺页,请寄回读者服务部调换2017.11欢迎关注CSDN微信公众账号机器学习在热门微博推荐系统的应用65移动基于接口的消息通讯解耦70Retinex图像增强算法及App端移植78云计算与大数据单体应用到Kubernetes微服务架构的迁移方案81饿了么大数据平台建设84基于Docker持续交付平台建设的实践91技术如何识别你的用户来自不同数据源的用户聚合算法96以太坊账户数据存储解读101Node.js异步编程之难108Chrome扩展开发定制HTTP请求响应头域(三)114百味幽默120News资讯要闻Headline3微软放弃Windows10Mobile,宣布进入维护期10月9日,微软WindowsPhone企划管理部企业副总裁JoeBelfiore透过Twitter宣布Windows10Mobile现已远离微软工作重心,正式进入“维护期”——今后在产品开发以及功能硬件方面将不会再有新动作,但微软仍将为其提供技术支持、Bug修复以及安全更新等。对此,JoeBelfiore无奈表示,这一决定很大程度上是由于用户体量太小,对未来情势的预估很难说服开发者与投资商参与进来,从而直接导致了应用程序的匮乏。某种程度上来看,这也是一种恶性循环,当然,由Android及iOS平台对其造成的冲击也不容小觑,JoeBelfiore更坦言自己也已经转向了Android产品。同时他还表示,即使微软用户转换到iOS和Android平台,仍旧可以在这些生态环境中找到微软的产品,例如Edge浏览器推出的iOS和Android版。事实上,作为微软进军手机市场,试图挤占iOS、Android市场份额的野心之作,Windows10Mobile早已显露发展颓势,前景一度不被看好,但面对如今“名存实亡”的局面,仍有不少评论表示,从雄心勃勃到黯然退场,虽有所预感,但急转直下的发展依旧令人唏嘘。“资格超标”成辞退新套话,职场年龄歧视引争议10月10日,极限编程创始人KentBeck发推称,“求职婉拒台词‘鉴于您的能力对该岗位而言过于大材小用,我们认为这一职位很难满足您的需求’,本质上属于歧视”。该观点一出即引发颇多争议,KentBeck本人随后也结合自身分析对一些有趣的讨论进行了总结。他在文中提及了自己此番感慨的起因——父亲在55岁时遭SRI辞退,虽然在工作能力与工作热情上并无懈怠,但硅谷求职依旧屡屡碰壁,自此放下对代码的执念,守着一亩三分地过日子。而如今随着年龄的增长,Kent也渐渐感受到了来自“年龄歧视”的威胁,开始担忧也因为年纪而被钟爱的技术“抛弃”。此外,他还根据评论重点,对这一现象做了三条总结:1.并非引用“资格超标”就等价于年龄歧视,这一标准本身是合理的,只是经常被用以实施年龄偏见,正如常常充当性别和文化偏见挡箭牌的“文化适应度过低”;2.此次讨论的关键点在于这一现象造成的结果而非动机;3.如今职场中这类婉拒套话越来越多,使用前理应三思,规避偏见下的滥用。最后,他再次强调称,是时候为那些上了年纪但仍醉心技术且能力不减的“资格超标者”做些什么了。WiFi曝重大安全漏洞,无线设备多存隐患10月16日,比利时鲁汶大学计算机安全研究员MathyVanhoef一篇介绍其WPA2安全漏洞研究发现的文章引发热议,美国国土安全局网络应急部门US-CERT亦随之确认了漏洞的存在,相关话题一度惊爆各大头条。据悉,该安全漏洞名为“KRACK”,即“KeyReinstallationAttack”(密钥重安装攻击),黑客可以借此轻松入侵用户装置、监听接入网络的设备。而作为使用范围最广的Wi-Fi网络保护协议,WPA2此番一经攻破,包括Android、iOS、Windows等在内的几乎所有无线设备都陷入安全危机(初步研究发现,面对此项攻击,Android和Linux的表现尤为脆弱),无论身处私人场所还是公共环境下,一旦连接Wi-Fi,就极有可能会遭到入侵。分析指出,该项新型攻击利用设备加入Wi-Fi网络时所用的通信为原理,安全缺陷存在于Wi-Fi标准本身,而非特定的某些产品或方案中。因此,只要设备支持Wi-Fi,则都可能会受到影响。面对部分舆论恐慌,相关专家直言该漏洞于普通用户影响不大,及时更新软件对应补丁版本即可,不必过虑。事实上,早在8月,US-CERT便已向相关厂商和专家秘密传达了该项漏洞的存在。对此,微软已于10月10日发布安全补丁,苹果也在最新的iOS11.1Beta3中修复了此漏洞。EFF:大量愚蠢专利将成为AI前进路上的绊脚石如今,许多企业出于商业利益考量,通常会努力争取一些通用专利,继而借此向侵权企业索赔,据EFF(电子前哨基金会)分析表示,这当中不乏阻碍创新发展的现象。事实上,EFF的专利律师团队每个月都会评出一个“最愚蠢“专利,而十月的CSDN要闻2017年9月28日~10月28日News资讯要闻Headline44责任编辑:仲培艺(zhongpy@csdn.net)该“奖项”则花落旧金山高科技食品公司HamptonCreek申请的一项人工智能专利,公司官方将其概括为“启用了机器学习的研究平台以及发现新成分的探索方式。”专利有效期一般较长,且一旦侵犯代价巨大,所以是一项企业常用的知识产权保护方式,但EFF的DanielNazer却直言专利反应出的业内趋势着实令人担忧,因为若按照专利权利要求执行,则无疑等于将机器学习长期局限于某一特定应用程序之上。在申诉过程中,HamptonCreek坚称其专利应予以通过,因为早期技术仅是将机器学习应用于数据鉴定,而非蛋白质片段分析。对此,Nazer表示,“事实上,在我们看来,这份专利申请看起来就像AI教科书简介部分的目录”。因为它几乎涵盖了所有机器学习基础技术以及AI入门课程大纲,包括线性和非线性回归、K最近邻分类算法、群集、支持向量机(SVM)、主成分分析、使用套索方法或弹性网的特征选择、高斯法甚至是决策树——而HamptonCreek所做的仅仅是将上述诸多技术应用到蛋白质及数据检测分析中而已。诚然,该应用自有其价值,对企业自身而言或许也耗时颇多投入巨大,但这并不意味着其就拥有申请专利的意义。与此同时,Nazer坦言HamptonCreek的这项专利并不像其他EFF所列出的愚蠢专利那么糟糕,但鉴于其可能对机器学习造成的恶劣影响,EFF还是决定将其单独列出加以说明。EFF强调,美国专利局在审核方面一向比较随意,曾有为计算机计票及卡路里计算这类简单操作授予专利的先例,如今又出现了为通用机器学习使用方式发布专利的迹象,比如Google和微软就掌握了部分“基础机器学习技术”的专利。面对EFF的评论,HamptonCreek方的发言人拒绝回应,公司已于月初专利立项后发布通稿,称该项专利技术名为Blackbird系统,囊括了公司“独一无二的机器人技术、专有植物数据库、人工智能及预测建模”。编程困局:软件未来或将迎来末日归途?9月《大西洋月刊》(theAtlantic)刊载了一篇题为《软件世界末日来袭,程序员当何去何从》的文章,总结了多位业界受访者关于末日前夕发展现状,以及将要如何调整编程方式的讨论。软件与日常生活息息相关,911报警电话致命性宕机、汽车自杀式加速——越来越多的Bug似乎都在指向一个问题,那就是随着软件复杂度的日益提升,人类程序员在固有编程体系下似乎显得无能为力,再难有所突破,“问题在于,我们一直在尝试构建超出我们智力管理能力的系统”。事实上,在所有故障中,软件本身只是完美准确地执行了我们下达的任务,错误原因在于接收了有误的指令。这其中的复杂性恰恰是人眼所不可见的,属于理想与想象的破裂。编程之难,在于其要求程序员像计算机一样思考。软件工程师习惯埋头苦干,封闭的工作环境让他们无暇思考编程困局的症结所在,“他们总是用各种各样的工具来搞定Bug,但这类重大软件问题往往与需求有关,而不是简单的代码错误”,而这就容易形成某种恶性循环。此外,程序员很难维持其较高水准的创造力,自1980年起,程序员的工作方式与所用工具几乎没什么变化,越来越多人开始相信这是一个很难持续发展的状态。在过去的40年里,计算机的运算能力每隔18个月都会翻倍,但是编程何故无甚改变呢?这个问题关系到一条原则:“创造者需要与之所创之物保持时刻的联系”,编程恰恰与其相悖,程序员对于自己的任务对象本身往往只有一层抽象的认知。随后本文构建了一个理想化环境——无需写代码,打开上帝视角,开发出所见即所得的软件系统,修改结果同步映射,一切尽在掌握。然而,尽管代码逐渐向创建动态行为的选择转换,它仍然是最为艰涩难懂的工具之一。此前提到的“创造者原则”的关键在于展示了可通过创建系统行为和代码间的直接联系来缓解问题。文中还提到了一个观点,那就是“一个软件开发者在工具开发的过程中应当首先放弃软件开发者群体的功能需求,从而关注更加亟待解决的计算机问题。”较之日常生活问题,科学及工程领域往往更需要这类技术支持。此外,程序员往往知道怎么写代码,却不知道写什么。传统编程任务更多把重心落在将复杂规则转换成代码的过程中,而在一种基于模型的设计中,更多精力集中在规则上,多研究问题而非机器。但对于这类基于模型的设计(MDE),往往存在一些偏见,有人甚至认为研究人们对于MDE的态度观念要比探索新的MDE技术更有价值。对于其支持者而言,虽然已经知道如何使复杂的软件变得可靠,但在许多场景下仍旧放弃了这一选项。这是因为人类直觉感知在预估这些每秒百万级请求的系统中极端情况发生概率方面存在天生能力缺陷。尤其当算法变得愈加复杂时,你可以做所有想做的测试,但依旧很难定位Bug。而如今的软件处处Bug的主要原因就是少有程序员会在编程前列出草案规划,往往都是直接开始着手编写代码,为此,TLA+(TemporalLogicofActions)应运而生。虽然编程是在数学中诞生的,但它已经在很大程度上脱离了数学,大多数程序员对逻辑数学、集合理论等都不甚熟悉,而这些在TLA+中都需要用到。在大多数程序员眼中,自己要做的唯编程而已,他们并不清楚该如何将基础理论付诸实践,而比代码更高层次的东西往往需要精准的思考模式——这正是数学所能带来的。对此,文中产生了两种不同的观点。一者强调数学化的失败是现代软件开发的病灶:风险持续上升,程序员止步不前,无法开发出应对日益复杂问题所需的软件。另一方则表示,程序员无需为此背锅,因为这是一项务实的工作,其对数学有本能的畏惧,数学于之更像是空中楼阁,其中的复杂性对程序员而言是一个不小的挑战。最后,与其说是末日灾难,不如说软件行业在等待一场变革。5AbroadMedia外刊速递News资讯2017.10GitHub中编程语言和代码质量的大规模研究编程语言对软件质量有什么影响?这个问题是很长一段时间以来业内人士争论的焦点。对GitHub的一项研究中,对728个项目、6300万行源代码、29,000个作者、1.5万个提交以及17种编程语言,收集了一个非常大的数据集来对这一问题进行了
本文标题:程序员电子刊2017年第十一期
链接地址:https://www.777doc.com/doc-6312588 .html