为什么说软件正在吃掉整个世界?我们正在面临着什么?

如今有一句话越来越流行:

软件正在吃掉整个世界(The Software is eating the world)

我f门在许多大型的科技盛会上都会看到这句话。越来越多的公司声称自己正在转型,或者正在变成科技或软件公司,为客户提供更多的软件解决方案。

这也意味着行业背后越来越多的关键系统,正在被编译的程序所掌控,说到底是在被代码所掌控。程序员成为了当前最受欢迎的工种,与之息息相关的互联 行业也在蓬勃发展。可以说代码正吋时刻刻渗透在我们的生活之中。

而我们在依赖这些代码所营造的 会秩序的同时,越来越多的隐患也陆续地出现。我们究竟会遇到什么样的麻烦呢?这就是今天这篇文章要告诉我们的。

一、代码惹的祸

2014年,美国曾经发生过一件事,整美国因为中断了911 警服务而乱了套,一个女人拨打了911至少37次,不止是华盛顿州,这场事故几乎遍布加里福尼亚、北卡罗乃纳、尤他、明尼苏达州等各个调度中心。最后发现,导致这次事故发生的罪魁祸首,是科罗拉多一台服务器上运行的软件。这个软件供应商的置的阈值偏高了一点,从而造成了全国范围服务器瘫痪就在一年之后。

2015年的一天,美国联合航空公司的全部飞机停飞了,因为管理系统出现了问题券交易所交易软件也突然暂停升级、华尔街日 的 站莫名擁痕…发生这一切都是因为服务这时区设置错误。而最可怕的是,人们意识到,这一次瘫痪的发生只是巧合。

这些突发事件引起了学术领域的关注,在美国麻省理工学院航空航天事务所,从事软件安全研究超过35年的教授南希勒文森来接受我们曾经认为所有人类做的事情,都是有秩序的,人可以进入一个状态或者模式去思考。比如我们在设计机电系统时候,可以用纸张图画来表现、描述整系统,你会对每看着它如何表现配置都了如指掌,旦你开始测试并建立你的秩序,就会确切知道如何处理而掌握一些突发状况。

“但是这个逻辑,在程序员的世界里几乎是不存在的。在软件的世界里,我们能够起到连接作用的往往只是一个文本,也就是代码。这样做的好处是有灵活性,做成本的决策低了很多,但从另外旦失去了约束,也带来了一定的危险,可以说由代码构成的软件,是一把双刃剑。

那么,程序员到底能不码,掌控程序呢?

二、理解代理解代码是个伪命题

代码能够造出这个世界上最复杂、精密的机器,但是这些数以百万计的代码所打包成的微小芯片背后的复杂性,常常被我们低估。

著名的荷兰计算家,第戎?克斯特拉,在1988年就曾经提出,作为程序员要设计出非常精密的系统,必须要在脑中建立与之对应的平行世界,并且要注重学习算法,但是这点往往被大多数程他说:程序员往往不明白,或没有真图解决的问题,也可能他们压根儿就不在乎。”

不管是在计算火炮的轨迹,或模拟一场棋类游戏,对于大多数程序员来讲,他们看到的世界是由0和1组成的,他们以为这就是实质上要解决的问题。所以我们在每个公司都会看到,在大多数的商务前端与后端程序员的架构之中,产生一个叫做产品经理的职位:

这个职位有时候更像人肉解读器,他能够帮助后端的程序员们去理解产品商业上真正的需求。而随着越来越多代码造成的困扰急剧增加,产品经理并不是上帝,他们也会犯错或者没办法真正传达讯息、彼此沟通,这时候就需要程序员们把问题想得更透彻一些。

勒文森说,软件发生的严重问题与理解要求有关,而不是简单的编码错误。例如,汽车油门的控制代码非常重要,如果出现问题,造成严重的事故,什么时候执行,怎么执行,都很关键,但是目前汽车上有1亿行代码,极其复杂,几乎没人能完全搞懂,也根本无法预料什么样的危险会发生,应该怎么应对。

随着软件变得更加强大与复杂,程序员们自己都开始发懵了,比如微软旗下的VisualStudio是世界上最大的软件之一,拥有超过5500万行代码,然而在一次内部对于软件代码的测评中发现,高达98%以上的代码间不存在相关性。即使是内部非常好的程序员也在努力地理解他们正在使用的系统。说白了,就是他们也搞不清楚这些代码。

这像什么?这就像下棋的时候戴着眼罩在下盲棋嘛!程序员只能盯着自己负责的局部,几乎没有任何的余地去思考全局。这样的世界能走多远呢?

三、对于未来的忧虑

让我们再看看科技界的大拿是怎么理解的

克里斯·纽科姆在亚马逊工作了将近七年,现在是亚马逊的首席工程师。他曾负责亚马逊一些最关键的系统工作,包括零售产品目录和管理全世界Kindle设备的基础设施,也是亚马逊 络服务团队(AWS)该团队是给像Netflix,Pinterest和Reddit这样的大公司,提供云服务器维护服务的。在进入亚马逊之前,他还参与建立了全球最大的在线游戏服务,Steam,现在在国内很火的游戏《绝地逃生》,也就是俗称的吃鸡,就是在这个Steam平台上发行的。纽科姆设计的产品都很成功,而且是被业界公认的,但就是这样一位大拿,在聊到程序和代码的时候,也很忧虑。纽科姆说:“真正关键的算法,应该不仅仅是好,而且是极致完美的。一个细小的错误都有可能是灾难性的。但是,目前工程师是做不到的,能做的只是尽可能找到问题,但是随着算法越来越复杂,我们永远都不可能找到所有的错误。“

纽科姆的危机感不仅是对自己现在在做的云服务领域的,对于时下流行的无人车驾驶领域,也是同样适用的。现在很多汽车制造商正在从一个传统的实业公司,转型成具有软件服务职能的创新公司。但是无人车的设计,绝不能是一个事后驱动的想法。人们设计的控制软件,不能像文章一开始提到的911系统或者股票交易系统那样用事后逻辑去建立,这些软件担负着路上行驶着的数亿人的生命,它们必须精准而安全,注定需要庞大的工作量和精确的预见性去完成。毕竟,轮胎坏了,我们普通人还能自己动手换,代码要是出了问题,修理起来的门槛也就不是普通人能搞定的了,你不知道问题出在哪儿了。

这也许是我们目前要面对的困境,也是不得不担忧的未来。就像文章里说的,几乎没有程序员在开始写代码时懂得未雨绸缪。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年10月1日
下一篇 2017年10月1日

相关推荐