译者注:作者对未来编程的发展趋势提出了十一个预测,包括云、物联网、视频、机器学习、法律问题、容器等方面。下面是翻译。技术进步日新月异。刚吃完午饭,一位从事芯片设计工作的朋友为自己求情:摩尔定律要求他每周将芯片速度提高0.67%,即使是在节假日也不例外。如果不满足这个要求,那么芯片的速度不会每两年翻一番。为了给未来打基础,现在就需要预测未来的技术方向。但从物联网日益增长的安全问题到机器学习的无处不在,编程的未来变得越来越不可预测。云将战胜摩尔定律有人认为,芯片速度的发展将不再像80年代和90年代那样每两年翻一番。虽然这很有可能,但随着芯片之间??的界限变得越来越模糊,这并不重要。过去,台式机CPU的速度很重要,每隔几年就需要重新购买更快的CPU以提高生产力。现在,大部分工作都可以在云端完成。当你使用谷歌搜索时,谷歌庞大的云可能会投入10台、20台甚至1000台主机来为你找到正确答案。程序员目前面临的挑战是如何为每个用户配置足够性能的计算能力,让用户快速完成计算,而不是让用户等待太久,以至于逃到其他竞争对手的网站。提供云服务的公司可以为你解决计算密集型问题,但你必须找到并行计算算法,让服务器协同工作。物联网(IoT)的安全性令人担忧。Mirai病毒的出现为物联网的发展敲响了警钟。这些智能小工具就像普通电脑一样会感染病毒。目前还没有有效的机制来修复这些设备的漏洞。我们的烟雾探测器、我们的烤箱、我们的烘干机,我们家里的所有东西不一定都安装了最新的软件,也不一定安装了所有的安全补丁。设备数量的增加使得监控家庭网络的智能化变得更加困难,因为您无法分辨所有连接到您家庭路由器的设备。物联网平台的开放性为设备提供了更大的灵活性,也为病毒开发者提供了更多机会。他们需要做的就是找到一台易受攻击的小型设备,他们就可以侵入成千上万台类似的设备。视频将以新方式主导网络当HTML标准委员会将视频标签添加到HTML标准时,他们可能只是想解决插件问题,而不是重新定义娱乐。过去,大多数视频是被动消费的。人们坐在沙发上,按下播放按钮,由视频的创作者决定观众看到什么。JavaScript对视频的控制是有限的,但聪明的网页设计师正在设计巧妙的方法将视频与网页有机地结合起来,让用户与视频互动并控制故事的展开方式。但是作家、艺术家和编辑的想法需要程序员来实现。游戏机将继续取代计算机。人们喜欢游戏机。游戏主机拥有强大的显卡和稳定的软件平台,让我们可以在客厅里放松,在游戏中以弱胜强,或者踢球。客厅控制台只是一个开始,房子其他部分的制造商可以沿着类似的路线向前发展。制造商可以选择开源生态系统,但他们目前正在构建自己的封闭平台。一个封闭的平台会破坏市场,可能会产生一个可以控制一盏灯但不能控制另一盏灯的开关。对于程序员来说,这减少了代码重用的机会,使得他们的工作量大大增加。2016年美国总统大选后,数据将继续称霸,一些人开始嘲笑数据分析专家,说他们的分析统计是一种愚蠢的行为,大数据没有用,因为专家对总统选举一无所知。结果证明预测是错误的。那么他们是如何得出这个结论的呢?通过将一组数字(预测)与另一组数字(选举结果)进行比较。实际上,他们此时正在使用数据分析。人们可以根据不准确的数据做出错误的预测,但这并不意味着我们应该停止收集和分析数据。数据的收集、整理和分析是当今企业最重要的工作之一。程序员将继续提供更多、更容易理解的数据供决策者使用。但这并不意味着决策一定是最好的,因为决策者的知识背景和直觉也会影响最终的决策。这是为了让程序员更加努力地工作,构建更大、更快、数据更密集的软件。机器学习将成为新的标准功能当大学生参加一门名为“数据结构”的课程时,他们了解到他们的祖父母在过去编写代码时不能依赖一种叫做“数据库”的东西。真正的程序员必须在Oracle、MySQL或MongoDB之外存储、排序和关联数据。近年来,机器学习算法取得了突破。过去,程序员需要编写大量代码来进行复杂的分析。但是,R语言等商业智能工具已经逐渐流行起来,开始成为一些软件的一部分。基本功能。机器学习算法不会在一夜之间改变,我不知道未来会是什么样子,但很明显,越来越多的商业计划正在依赖机器学习算法来寻找最佳解决方案。随着PC的衰落,UI设计将变得更加复杂。随着智能手机、客厅控制台和平板电脑的兴起,仍然坚持使用PC的只有上班族和有作业的学生。过去,程序员在制作UI时会假设软件或网站用户有键盘和鼠标。但是现在很多用户没有键盘或鼠标。智能手机用户正在用手指触摸勉强能容纳完整26个字母的玻璃屏幕,而控制台用户则在遥控器上按下方向键。由于触摸事件与点击事件略有不同,因此设计网站可能会更加棘手。用户的屏幕有不同的分辨率,屏幕尺寸也大不相同。以后UI设计只会越来越麻烦。开放的终结个人电脑的逐渐衰落是开放和大众化市场的消亡。PC的开发者可以自由地编写程序、编译代码、将其复制到磁盘上,然后将这些磁盘打包并出售给世界各地的人们。然而,现在家庭控制台已牢牢掌控。没有资本投入,就没有人能够进入这个市场。应用程序商店是开放的,但它们仍然是围墙花园,限制了我们能做什么和不能做什么。我们正在失去共享代码的能力,因为我们正在失去编译和运行代码的能力。个人电脑的终结是开放终结的一个重要方面。虽然大多数读者现在可能仍然拥有一台可以编译和运行代码的台式电脑,但这种情况正在慢慢改变,能够编写和共享代码的人将越来越少。自主运输就在这里。这不仅仅是关于汽车。一些人想建造不需要道路的自主飞机,而另一些人则想建造用于简单旅行的自主滑板。程序员不控制人们在屏幕上看到什么,但他们控制人们去哪里以及他们如何与世界互动。人只是游戏的一部分。一切都自主移动。如果你想吃市中心著名厨师的食物,一个带绝缘的自动滑板会把它带到你家。如果你想修剪你的草坪,自动割草机将取代邻居的孩子。法律会发现新的限制几年前,最高法院裁定,追踪车辆需要搜查令,因为只有警察才会在车内安装追踪器。现在,没有人真正知道哪些规则适用于访问Waze、Google或其他应用程序的跟踪数据,其中包括我们的位置信息。警察伪造文件或密码是否合法?如果目标是真正的恐怖分子,或者只是在停车位停车时间过长且未及时付款的普通人怎么办?对于未来几年的开发人员来说,这是一个很大的难题。软件架构师在设计软件时需要提前考虑这些法律问题。在编写任何代码之前,他们需要考虑隐私和法律问题。如果不这样做,开发人员以后可能会遇到麻烦。同时,代码本身就是法律的一个版本。程序员定义软件可以做什么和不能做什么。我们在写代码的时候,实际上是定义了世界某个角落的自由和限制。容器将统治理论上我们不需要容器。可执行文件是用来运行的,操作系统负责权限管理和资源调度,让所有可执行文件和平共处。但这个梦想破灭得比以往任何时候都快。能够和平共处的程序越来越少,很多程序依赖于各种版本的库或者其他特殊情况。即使使用诸如Java之类的“随处运行”技术,您也可能会遇到麻烦,因为存在各种版本的虚拟机。好的VM可以处理这个,但它们很大。容器重量轻且易于使用,因此每个人都喜欢它们。我们将在企业的每个角落看到越来越多的容器,因为它们非常有吸引力。
