阅读更多

1顶
0踩

非技术

原创新闻 未来编程的十一个预测

2017-06-14 17:11 by 副主编 jihong10102006 评论(0) 有12978人浏览
引用
原文:11 predictions for the future of programming
作者:Peter Wayner
翻译:雁惊寒

译者注:作者对未来编程的发展趋势提出了十一个预言,包括云、物联网、视频、机器学习、法律问题、容器等各个方面。以下是译文。

技术的进步日新月异。午饭刚吃饭,一位从事芯片设计的朋友就会为自己请求宽恕:摩尔定律要求他必须每周让芯片的速度提高0.67%,即使是在假期。如果达不到这个要求,那么芯片的速度就不会每两年翻一番。

为了能在将来打下基础,现在需要对未来的技术方向做出预判。但是,从物联网日趋严峻的安全问题到遍地可见的机器学习,编程的未来变得越来越难以预测。

云将击败摩尔定律

有的人认为芯片速度的发展不会再像八九十年代那样每两年翻一番了。虽然,这很有可能,但是,却不重要,因为芯片之间的界限变得越来越模糊。

在以前,桌面CPU的速度很重要,每隔几年就要重新购买一个更快的CPU才能提高工作效率。而现在,大部分的工作都可以在云上面完成。当你在使用Google搜索时,Google公司庞大的云端可能会投入10台、20台,甚至1000台主机为你寻找正确的答案。

程序员目前面临的挑战是如何为每个用户部署性能足够的计算能力,让用户能够快速完成计算,而不是让用户等的时间太久,以致于闲的逃到其他竞争对手的网站上去。提供云服务的公司能为你解决计算密集型问题,但是你自己必须去寻找并行计算算法让服务器协同工作。

物联网(IoT)的安全性让人忧心忡忡

Mirai病毒的出现给物联网的发展敲响了警钟,这些聪明的小设备也会像普通计算机一样感染病毒。目前并没有一个有效的机制来修复这些设备的漏洞。我们的烟雾探测器、烤箱、烘干机,以及房子里的一切,他们的的软件未必都是最新的,未必安装了所有的安全补丁。设备数量的增加使得监控家庭网络的智能化变得更加困难,因为你无法分辨出连接到家庭路由器上的所有设备。

物联网平台的开放性能让设备具有更大的灵活性,但是也为病毒开发者提供了更多的机会。他们需要做的就是找一个存在漏洞的小设备,然后就能黑进成千上万个同样的设备中去了。

视频将以新的方式主宰网络

当HTML标准委员会将视频标签加入HTML标准时,他们可能只是为了解决插件带来的问题,而并没有想到要重新定义娱乐。在过去,大多数视频是被动消费的。人们坐在沙发上,按下播放按钮,由视频的作者来决定观众能看到什么。

JavaScript对视频的控制是有限的,但是聪明的网页设计师们正在设计一种巧妙的方法,这种方法可以将视频与网页有机地整合在一起,使得用户可以与视频进行交互,控制故事的发展。但是作家、艺术家和编辑们的想法需要编程人员来实现。

控制台将继续取代电脑

人们都喜欢游戏机,游戏机有着强大的显卡和稳定的软件平台,让我们能在客厅释放压力,在游戏中锄强扶弱,或者是踢足球。

客厅控制台只是开始,房子的其余部分的制造商们也可以遵循类似的路线向前发展。制造商可以选择一个开源的生态系统,但他们目前却在建立属于自己的封闭平台。封闭的平台会破坏市场,可能造成一个开关能控制这个灯,却不能控制另外一个。对于程序员来说,这减少了代码重用的机会,使得他们的工作量大大增加。

数据将继续称王称霸

在2016年的美国总统大选之后,一些人开始嘲笑数据分析专家,称他们的分析统计是一种愚蠢的行为,大数据也是毫无用处的,因为专家们对总统选举的结果预测错了。那他们是如何得出这个结论的呢?通过将一组数字(预测)与另一组数字(选举结果)进行比较。其实,他们这时候就是在用数据分析。

人们可能会根据不完美的数据做出错误的预测,但这并不意味着我们应该停止收集和分析数据。数据的收集、整理和分析是当今企业最重要的工作之一。程序员将继续提供更多、更容易理解的数据给决策者使用。但这并不意味着决策肯定是完美的,因为决策者的知识背景和直觉也会影响最终决策。这对于程序员来说需要更加努力地工作,构建更大、更快、更多的数据密集型软件。

机器学习将成为新的标准功能

当大学生们在学习“数据结构”这门课时,他们了解到祖父母们以前写代码的时候是无法依赖一个名为“数据库”的东西的。真正的程序员必须脱离Oracle、MySQL或MongoDB而对数据进行存储、排序,以及关联数据。

机器学习算法在最近这几年得到了突破性的发展,过去,程序员需要自己编写大量的代码来执行复杂的分析,但是,像R语言这样的商业智能工具逐渐流行起来,并开始成为一些软件的基本功能。

机器学习算法不会在一夜之间发生翻天覆地的变化,目前我也不清楚它的未来会是什么样子,但是很明显,越来越多的商业计划依赖于机器学习算法来找到最佳的解决方案。

随着个人电脑的衰退,UI设计将变得更加复杂

在智能手机、客厅控制台和平板电脑崛起的时候,唯一仍然坚持使用个人电脑的人是上班族和需要交作业的学生。

以前,程序员在制作UI的时候可以假设软件或网站用户都有一个键盘和一个鼠标。但是现在很多用户却没有键盘或者鼠标。智能手机用户用手指触摸一块几乎无法容纳完整的26个字母的玻璃屏幕,而控制台用户正在按遥控器上的方向键。

由于触摸事件与点击事件略有不同,因此,设计一个网站会更加棘手。用户屏幕的分辨率各不相同,屏幕尺寸也差异很大。在将来,UI设计只会变得更加麻烦。

开放性的终结

个人电脑在逐步走向衰退,这也是一个开放而又深受欢迎的市场在走向死亡。

PC的开发人员可以自由地写程序,编译代码,将其复制到磁盘上,然后将这些磁盘打包,向全世界的人销售。而现在,家庭控制台被牢牢地管控着。没有资本投资,就没有人能够进入这个市场。应用商店虽然开放,但它们仍然是一座有着围墙的花园,限制我们能做什么,不能做什么。

我们正在失去共享代码的能力,因为我们正在失去编译和运行代码的能力。PC的终结是开放性终结的其中一个重要的方面。虽然对于现在来说,大多数读者可能还是会有一台可以编译和运行代码的桌面电脑的,但这正在慢慢的发生变化,能够编写并分享代码的人将越来越少。

自主交通就在这里

这不单单是指汽车,一些人想要制造不需要道路的自主飞机,而另一些人想要制造适合简单旅行的自主滑板。

程序员不会控制人们在屏幕上看到的内容,但是能控制人们去哪里,以及如何与世界进行交互。人只是游戏的一部分。所有的东西都会自主移动。

如果你想要吃市中心的某个著名厨师做的食物,那么一个带有保温功能的自主滑板会把食物带到你家里。如果您想要割草,自主割草机将取代邻居家的小孩。

法律会发现新的限制

几年前,最高法院认为对车辆进行跟踪需要有相关的授权,因为当时只有警察会在汽车里装配跟踪器。现在,没有人真的知道哪条规定适用于获取Waze、Google或者其他应用程序的跟踪数据,而这些数据包含了我们的位置信息。警察伪造文件或密码合法吗?如果目标是真正的恐怖分子,或者仅仅是在停车点停车太久而没有及时付费的普通人呢?

这是开发者未来几年的一大难题。软件架构师需要在设计软件地时候提前考虑这些法律问题。在编写任何代码之前,他们需要考虑隐私和法律的问题。如果不这样做,开发者在以后可能会遇到麻烦。

同时,代码本身就是法律的一个版本。程序员定义软件什么可以做什么不可以做。在我们编写代码时,我们实际上定义了世界的某个角落的自由和限制。

容器将占统治地位

理论上我们不需要容器。可执行文件用来运行,操作系统负责权限管理和资源调度,以便让所有的可执行文件可以和平共处。但是,这个梦想的破碎比以往任何时候都要快。可以和平共处的程序逐渐变少,许多程序依赖于各种不同版本的库或其他特殊的环境。即使有“随处可以运行”的技术,例如Java,但也可能会遇到麻烦,因为有各种不同版本的虚拟机。

好的VM可以解决这个问题,但是它们很庞大。容器是轻量级的,易于使用,因此大家都喜欢。我们将在企业的各个角落看到越来越多的容器,因为他们的魅力实在太大了。
  • 大小: 179.6 KB
1
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 讨论:Acegi安全框架能解决和不能解决的安全问题

    就我目前对Acegi的了解,Acegi安全框架主要解决的安全问题是访问入口级别的安全问题,安全问题我将其分为三类: 1) [b]入口级安全[/b] 具体体现上界面上每个操作菜单,操作元素是否可操作,在服务端则对URL程序...

  • Acegi 安全框架

     Spring框架是由Open Source开发的一个优秀的多层J2EE系统框架,它为企业级应用提供了一个非常轻量级的解决方案,大大地降低了应用开发的难度与复杂度,提高了开发的速度。  Spring框架的核心是IoC和A

  • 实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架

    对于任何一个完整的应用系统,完善的...本文将介绍如何在基于Spring构架的Web应用中使用Acegi,并且详细介 绍如何配置和扩展Acegi框架以适应实际需要。文章和代码下载: http://www.blogjava.net/Files/youlq/Acegi.z

  • Spring框架和Acegi安全框架介绍

    1、spring 框架 Spring框架是由Open Source开发的一个优秀的多层J2EE系统框架,它为企业级应用提供了一个非常轻量级的解决方案,大大地降低了应用开发的难度与复杂度,提高了开发的速度。 Spring框架的核心是IoC...

  • Acegi安全框架

    Acegi是为基于Spring的应用提供的声明式安全框架。它通过在Spring的应用上下文中配置一系列的Bean完成安全设置,完成利用了Spring提供的依赖注入和IoC编程方式。 为了保证Web应用的安全需求,Acegi使用过滤器拦截...

  • [转载]使用 Acegi 保护 Java 应用程序,第 1 部分: 架构概览和安全过滤器

    使用 Acegi 保护 Java 应用程序,第 1 部分: 架构概览和安全过滤器2007 年 5 月 08 日这份共分三部分的系列文章介绍了 Acegi 安全系统(Acegi Security System),它是用于 J...

  • acegi_使用Acegi Security保护Grails应用程序的安全

    acegi 目录 介绍 设置RaceTrack示例应用程序 安装Grails Acegi插件 创建Acegi Security组件 配置Acegi Security以保护应用程序安全 测试中 介绍 本文讨论了grails-acegi插件与示例Grails应用程序的集成。 作为此...

  • acegi安全验证

    Acegi是专门为Spring Web应用提供安全保护的开源框架,它通过配置的方式就可以对业已存在的应用实施安全控制。在Acegi实施安全控制之前,必须获取操作者的身份,并进一步获知用户的权限,这样Acegi才可能对应用资源...

  • Acegi框架

    Acegi Security 是Spring官方的一个能为基于Spring的企业应用提供强大而灵活安全访问控制解决方案的框架。它提供了以下三方面的认证与授权授权-URL资源的访问控制、业务类方法的访问控制、领域对象的访问控制。 ...

  • 使用 Acegi 保护 Java 应用程序,第 1 部分: 架构概览和安全过滤器

    这份共分三部分的系列文章介绍了 Acegi 安全系统(Acegi Security System),它是用于 Java™ 企业应用程序的强大的开源安全框架。在第一篇文章中,Bilal Siddiqui 顾问将向您介绍 Acegi 的架构和组件,并展示如何...

  • Acegi安全系统介绍

    1.1 Acegi安全系统介绍 Acegi是一个能够为基于Spring的应用系统提供描述性安全保护的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring对依赖注入和面向切面编程的支持。 当保护Web...

  • [转]使用 Acegi 保护 Java 应用程序,第 1 部分: 架构概览和安全过滤器

    使用 Acegi 保护 Java 应用程序,第 1 部分: 架构概览和安全过滤器 使用 Acegi Security System 实现基于 URL 的安全性 ...

  • 基于Spring框架应用的权限控制系统的研究和实现

    近年来,随着Internet技术的迅猛发展,计算机网络已深入到了人们的工作、学习和日常生活中,于是,怎样构建安全的web应用也成为了当前最热门的话题。Spring是一个基于IoC(Inversion of Control)和AOP(Aspect ...

  • acegi

    使用 Acegi 保护 Java 应用程序,第 1 部分: 架构概览和安全过滤器 使用 Acegi Security System 实现基于 URL 的安全性 developerWorks 文档选项 将打印机的版面设置成横向打印模...

  • 使用 Acegi 保护 Java 应用程序

    虽然它专门针对使用 Spring 框架编写的应用程序,但是任何类型的 Java 应用程序都没有理由不去使用 Acegi。这份共分三部分的系列文章详细介绍了 Acegi,并展示了如何使用它保护简单的企业应用程序以及...

  • Acegi 学习

    ECM 的一个普遍的解决方案是通过URL来实现访问控制的。Acegi提供了根据URL,实现访问控制的特性。Acegi也提供了方法访问控制的特性。 Acegi过滤器通过配置,可以做到: 1、当用户需要访问一个安全资源时,引导...

  • 毕业设计&课设_CUMT 信息安全专业毕业设计:基于区块链的能源交易系统,含架构、部署等多方面详细介绍.zip

    毕业设计&课设_CUMT 信息安全专业毕业设计:基于区块链的能源交易系统,含架构、部署等多方面详细介绍.zip

  • 用Python分析文本数据项目

    用Python分析文本数据项目

  • 基于SpringBoot的养老院管理系统源码数据库文档.zip

    基于SpringBoot的养老院管理系统源码数据库文档.zip

Global site tag (gtag.js) - Google Analytics