21CTO社区导读:
本文源引自外媒infoword。作者对编程的下一步趋势做出如下11个个预言:包括云计算,物联网,视频,机器学习,法律,容器计算等几个方面。
在今天技术之更新之快,让众多从业者目不暇接。午餐过后,一位做芯片设计的朋友很快就放弃了自己解决方案:摩尔定律要求他每周必须让芯片的速度提高0.67,即便是在假期。如果达不到此要求,那么芯片的运行速度就不会每两年翻一番。
为了能给未来打基础,现在就需要对以后的技术方向作出研判。但是,从物联网安全问题日趋严峻到现在遍地开花的机器学习,编程的未来似乎变得越来越难以预测。
云计算将打败摩尔定律
有些人表示芯片制造企业已经遇到了阻挡的墙。这些公司不再像在八九十年代的夏天那样,每两年都让芯片性能的速度倍增。但是,这些并不重要,芯片间的界限已经变得越来越模糊。
在以往,桌面级CPU的速度非常重要,每隔几年都要重新购买一个更快的CPU才能提高工作效率。而现在,绝大部分工作都可以在云端完成。当我们使用谷歌进行搜索时,它庞大的云端可能会投入10台、20台,甚至1000台服务器为我们搜索正确的答案。
目前开发者主要面临的挑战是怎么样给每个用户部署性能足够的计算能力,不能让用户等待太久,能够快速完成运算,要不然用户就会跑到其它友商的网站上去。
提供各种云计算的公司能为我们解决计算密集型的问题,但是需要程序员来自己确定和寻找合适的并行计算算法来让服务器协同工作。
物联网(IoT)的安全让人忧心
一个名为Mirai病毒的出现给物联网的发展敲响警钟,这些智能小设备也会和普通计算机一样感染病毒,目前还没有一个有效的机制来修复这些设备的漏洞。我们的烟雾探测器、烤箱、烘干机,以及房间里的一切,它们的软件未必都是最新的,不一定安装了所有的安全补丁。设备数量的增加使得监控家庭网络的智能化变得更加困难,比如有30台设备和IP连接到无线路由器,但我能知道24个设备的身份,不能分辨出连接到家庭路由器上的全部设备。如果我维护了一个智能防火墙,我会坚持只开放用得着的正确端口,以获取有价值的数据。
物联网平台的开放性,设备可以被允许运行任何的代码,这是一个好事也是一个梦靥。如果程序员想要执行更智能的任务,让用户有更大的灵活性,平台应该是开放的。但是这也为病毒开发者提供了比以往更多的机会。他们需要干的就是找到存在漏洞、没有更新驱度的小设备,然后就能黑进成百上千个主机或小设备中去了。
视频将以新的方式主宰网络
当HTML标准委员会定义了将视频标签加入HTML网页中后,他们可能只是为了解决插件带来的问题,但并没有想到要重新定义娱乐。基础的视频标签与JavaScript进行响应式编程。
这种状况将会发生变化。在过去,大多数视频是被动消费的。人们坐在沙发上,按下播放按钮,由视频的作者来决定观众能看到什么,和猫一样观看视频。
JavaScript对视频的控制是有限的,但是聪明的网页设计师们正在设计一种巧妙的方法,这种方法可以将视频与网页有机地整合在一起,使得用户可以与视频进行交互,控制故事的发展。但是作家、艺术家和编辑、产品经理们的想法需要开发者来实现。
控制台将继续取代电脑
人们都喜欢游戏机,游戏机有着强大的显卡和稳定的软件平台,让我们能在客厅释放压力,在游戏中除强扶弱,或者是踢场足球,帮助自己的国家队出线。
客厅控制台只是开始,房子的其余部分的制造商们也可以遵循类似的路线向前发展。制造商可以选择一个开源的生态系统,但他们目前却在建立属于自己的封闭平台。封闭的平台会破坏市场,可能造成一个开关能控制这个灯,却不能控制另外一个。对于程序员来说,这减少了代码重用的机会,使得他们的工作量大大增加。
数据将继续称王称霸
在2016年的美国总统大选后,一些人开始嘲笑数据分析专家,称他们的分析统计是一种愚蠢的行为,大数据也变得毫无用处,因为专家们对总统选举的结果预测错了。那他们是如何得出这个结论的呢?通过将一组数字(预测)与另一组数字(选举结果)进行比较。其实,他们这时候就是在用数据分析。
人们可能会根据不完美的数据做出错误的预测,但这并不意味着我们应该停止收集和分析数据。数据的收集、整理和分析是当今企业最重要的工作之一。程序员将继续提供更多、更容易理解的数据给决策者使用。但这并不意味着决策肯定是完美的,因为决策者的知识背景和直觉也会影响最终决策。这对于程序员来说需要更加努力地工作,构建更大、更快、更多的数据密集型软件。
机器学习将成为新的标准功能
当大学生们在学习“数据结构”这门课时,他们了解到祖父母们以前写代码的时候是无法依赖一个名为“数据库”的东西的。真正的程序员必须脱离Oracle、MySQL或MongoDB而对数据进行存储、排序,以及格式化数据。
机器学习算法在最近这几年得到了突破性的发展,过去程序员需要自己编写大量的代码来执行复杂的分析,但是像R语言这样的商业智能工具逐渐流行起来,并开始成为一些软件的基本功能。
机器学习算法不会在一夜之间发生翻天覆地的变化,目前我也不清楚它的未来会是什么样子,但是很明显,越来越多的商业计划和产品依赖于机器学习算法来找到最佳的解决方案。
随着个人电脑的衰退,UI设计将变得更加复杂
在智能手机、客厅控制台和平板电脑崛起的时候,唯一仍然坚持使用个人电脑的人是上班族和需要交作业的学生。
以前,程序员在制作UI的时候可以假设软件或网站用户都有一个键盘和一个鼠标。但是现在很多用户却没有键盘或者鼠标。智能手机用户用手指触摸一块几乎无法容纳完整的26个字母的玻璃屏幕,而控制台用户正在按遥控器上的方向键。
由于触摸事件与点击事件略有不同,因此,设计一个网站会更加复杂棘手。用户屏幕的分辨率各不相同,屏幕尺寸也差异很大。在将来,UI设计越来变得更麻烦,UI设计师们更有价值啦。
开放性的终结
个人电脑在逐步走向衰退,这个市场从开放而又深受欢迎逐步走向衰亡。
PC端的开发者可以自由地写程序,编译成为软件,将其复制到磁盘上,然后将这些磁盘打包,向全世界的人销售。而现在,家庭控制台被牢牢地管控着。没有资本投资,就没有人能够进入这个市场。应用商店虽然开放,但它们仍然是一座有着围墙的花园,限制我们能做什么,不能做什么。
我们正在失去共享代码的能力,因为我们正在失去编译和运行代码的能力。PC的终结是开放性终结的其中一个重要的方面。虽然对于现在来说,大多数读者可能还是会有一台可以编译和运行代码的桌面电脑的,但这正在慢慢的发生变化,能够编写并分享代码的人将越来越少。
自主交通就在这里
这不单单是指汽车,一些人想要制造不需要道路的私人飞机,而另一些人想要制造适合简单旅行的自主滑板。
程序员不会控制人们在屏幕上看到的内容,但是能控制人们去哪里,以及如何与世界进行交互。人只是游戏的一部分。所有的东西都可能自由移动。
如果你想要吃市中心的某个著名厨师做的食物,那么一个带有保温功能的自主滑板会把食物带到你家里。如果您想要割草,自动割草机将取代邻家的小孩子。
法律会发现新的限制
几年前,最高法院认为对车辆进行跟踪需要有相关的授权,因为可能只有警察在汽车里装配跟踪器。现在,没有人真的知道哪条规定适用于获取Waze、Google或者其他应用程序的跟踪数据,而这些数据包含了每个人的位置信息。警察伪造文件或密码合法吗?如果目标是真正的恐怖分子,或者仅仅是在停车点停车太久而没有及时付费的普通人呢?
这是开发者未来几年的一大难题。软件架构师需要在设计软件地时候提前考虑这些法律问题。在编写任何代码之前,他们需要考虑隐私和法律的问题。如果不这样做,开发者在以后可能会遇到麻烦。
同时,代码本身就是法律的一个版本。程序员定义软件什么可以做什么不可以做。在我们编写代码时,我们实际上定义了世界的某个角落的自由和限制。
容器将统治系统
理论上我们不再需要容器。可执行文件用来运行,操作系统负责权限管理和资源调度,以便让所有的可执行文件可以和平共处。但这个梦的破碎比以往任何时候都要快。可以和平共处的程序逐渐变少,许多程序依赖于各种不同版本的库或其他特殊的环境。即使有标榜着“一次编写,随处运行”的技术,例如Java,也可能会遇到麻烦,因为有各种不同版本的虚拟机。
好的VM可以解决这个问题,但是它们很庞大。容器是轻量易于使用,大家都喜欢。
我们将在企业的各个角落看到越来越多的容器,因为他们的魅力实在太大了。
编译:21CTO社区
原文:http://www.infoworld.com/artic ... .html