编者按:人们通过编写代码,创造出一个新的世界后,出现了新的危机——自己写的代码,自己却看不懂了,而且也不可预测。近日,《卫报》发表了一篇文章,详细介绍了这一趋势背后的问题。作者为,安德鲁·史密斯(Andrew Smith),其《Totally Wired: The Rise and Fall of Joshua Harris and the Great Dotcom Swindle》一书将于明年2月出版。
一名女性被自动驾驶汽车撞死,凸显了一场正在蔓延的技术危机,因为堆积在代码上的代码创造了“一个没有人完全理解的世界”。
2018年3月18日,是科技行业极为忧虑的一天。那天晚上,一轮新月几乎没有给亚利桑那州坦佩昏暗的道路增加任何光线,从而让一辆经过特别改装的Uber沃尔沃XC90检测到前方有物体。作为开发自动驾驶汽车这个现代淘金热的一部分,这辆SUV已经自动驾驶了19分钟,期间没有来自后备驾驶员的任何干预。一系列雷达和激光雷达传感器使得机载算法能够计算出前方有物体,考虑到他们车辆的稳定速度为43英里/小时,物体在6秒钟路程之外——假设它保持静止不动。但是道路上的物体很少保持静止不动,所以更多的算法会接入一个可识别的机械和生物实体的数据库,寻找一个可以推断出这个物体可能行为的匹配方案。
一开始,计算设备一片空白;几秒钟后,它决定处理迎面而来另一辆汽车,它预计它能开走,所以不需要特别行动。直到最后一秒钟,它才发现了一个清晰的标识——这是一个骑自行车的女人,手把上挂着的购物袋,毫无疑问,她认为沃尔沃会像任何普通车辆一样绕过她。被禁止独自采取规避动作的计算设备突然将控制权交还给了人类,但是人类没有注意到。49岁的伊莱恩·赫茨伯格(Elaine Herzberg)遭到撞击致死,这让技术团体中更多的反思者提出了两个令人不安的问题:这种算法悲剧不可避免吗?如果我们习惯于这样的事件,我们是否应该做好准备?
“在某些方面,我们已经失去了代理权。当程序传入代码,代码传入算法,然后算法开始创建新算法时,它离人类越来越远。软件被发布到一个没有人能完全理解的代码世界中。”
这些话听起来令人震惊,尤其是对于艾伦·厄尔曼(Ellen Ullman)来说,自20世纪70年代以来,其一直是一名杰出的专业程序员,也是为数不多的公开写代码过程的人之一。
“人们会说,‘Facebook怎么样——他们创建和使用算法,并且可以改变它们。’但是它不是这样工作的。他们只是启动算法,学习、进行改变和并让代码自己运行。Facebook定期干预它们的运行,但是他们真的没有控制它们。特定的程序不仅仅是独立运行的,它们还会调用库、深度操作系统等等......”
算法是什么?
现在,很少有比算法更经常被热烈讨论的主题了。但什么是算法呢?事实上,自20世纪90年代中期,互联网、特别是搜索引擎兴起以来,算法已经发生了有趣的变化。从根本上来说,算法是一件小而简单的事情;是一种用于自动处理数据的规则。如果 a 发生了,那么做 b;如果没有,那就做 c。这是传统计算的“如果/那么/否则”逻辑。如果用户自称18岁,允许他们进入网站;如果没有,就给出“对不起,你必须18岁才能进入”的提示。从本质上讲,计算机程序就是这种算法的捆绑包,一种处理数据的配方。在微观层面上,没有比这更简单的了。如果计算机看起来在表演魔术,那是因为它们速度快,而不是智能。
近年来,出现了一个更具预示性和模糊性的含义,用“算法”一词来表示任何大型、复杂的决策软件系统;根据给定的一组标准(或“规则”)获取一系列输入数据并快速评估的任何方法。这已经彻底改变了医学、科学、交通、通信等领域,使得人们很容易理解多年来占据主导地位的乌托邦式计算观。算法以各种方式改善了我们的生活。
自从2016年以来,我们才开始对新的算法现实进行更细致的考虑。如果我们倾向于用几乎圣经式的术语来讨论算法,作为拥有自己生活的独立实体,那是因为我们被鼓励这样看待它们。Facebook和谷歌这样的公司已经出售并捍卫了它们的算法,这是一种客观的承诺,能够用数学上的超然和没有模糊的情感来衡量一系列的条件。难怪这种算法决策已经扩展到贷款/保释/福利/大学名额/工作面试以及几乎任何需要选择的事情。
我们不再如此温顺地接受这种算法的推销。在2016年出版的《Weapons of Math Destruction》一书中——作者是曾经是数学天才的凯茜·奥尼尔(Cathy O'Neil),其离开华尔街去教书、写作和运营优秀的数学博客——毫无疑问地证明,算法非但不会消除人类偏见,反而会放大和巩固这些偏见。毕竟,软件是由极其富裕的白人和亚洲人编写的,这将不可避免地反映他们的假设。偏见并不是为了伤害,不像人类,我们不能轻易地要求算法看门人解释它的决定。奥尼尔呼吁对直接影响公众的任何系统进行“算法审计”,这是一个明智的想法,但对科技行业来说,因为算法是公司销售的产品;它们最不愿意做的事情就是提高透明度。
好消息是这场战斗正在进行。坏消息是,与接下来的事情相比,它看起来已经很古怪了。人工智能的遥远承诺和威胁引起了如此多的关注,以至于几乎没有人注意到我们进入了算法革命的新阶段,这可能同样令人担忧和困惑——几乎没有人提出质疑。
奥尼尔和其他人标记的算法是不透明的,但是可以预测的:他们做的是他们编程要做的事情。熟练的编程人员原则上可以检查和挑战他们的基础。我们中的一些人梦想有一支公民军队来做这项工作,类似于支持该领域专业人员的业余天文学家网络。使这一切成为可能的立法似乎不可避免。
我们可以称这些算法为“愚蠢的”,因为它们是根据人类定义的参数来工作的。结果的质量取决于编程的思想和技巧。另一个极端是人工智能的遥远梦想——类人的人工智能,或称 AGI。一台适当智能的机器将能够根据我们自己的直觉(我们可能认为这是经验和知识的广泛积累)来质疑自己计算的质量。为了更好地理解这一点,谷歌的DeepMind部门因创建了一个能够掌握街机游戏的程序而受到了应有的称赞,该程序只是从一个旨在获得最高分数的指令开始。这种技术被称为“强化学习”,因为一台计算机可以快速玩数百万场游戏来学习是什么产生分数。有人称这种能力形式为“狭义上的人工智能”,但在这里,“智能”一词被广泛使用,就像Facebook使用“朋友”一样——意味着比现在更安全、更容易理解的东西。为什么?因为这台机器没有根据场景来说明它在做什么,也不能做其他任何事情。最重要的是,它也不能将知识从一个游戏转移到另一个游戏(所谓的“转移学习”),这使得它的聪明程度连蹒跚学步的孩子,甚至乌贼都不如。我们不妨称石油井架或蚜虫是“智能”的。在某些特定的专业任务上,计算机已经大大优于我们,但是,与我们的一般能力相抗衡的那一天可能还有一段路要走——如果这种情况真的发生的话。
这就是问题所在。在“愚蠢”的固定算法和真正的人工智能之间,存在着一个问题重重的中转站,我们几乎没有一个想法,几乎没有争论,更不用说在目标、道德、安全、最佳实践方面达成一致了。如果我们周围的算法还不智能,也就是说能够独立地说“计算/行动过程看起来不正确:我会再做一次”,它们仍然开始从它们的环境中学习。一旦一个算法开始学习,我们就不再确切知道它的规则和参数是什么了。在这一点上,我们不能确定它将如何与其他算法、现实世界或我们互动。在那些“愚蠢”的固定算法——复杂、不透明并且已经习惯于实时监控的地方——原则上是可以预测和质疑的,而这些算法却不是。在“训练”了一段时间后,我们不再知道它们是什么:它们有可能变得不稳定。
破译代码
这些算法本身并不新鲜。大约五年前,当时我在为《卫报》撰写一篇关于股票市场高频交易(HFT)的文章,我第一次遇到了它们。我发现了一个不同寻常的现象:一个人造的数字生态系统,分布在数十亿美元的数据农场中,黑匣子像忍者一样蜷缩着,这就是股票市场的现状。一旦有了实际的交易平台,所有的行动都转移到了一个中央服务器上,在这个服务器上,灵活的、掠夺性的算法依靠笨拙的机构算法,引诱它们通过欺骗市场状况来低价出售和高价购买。人类HFT交易者(虽然没有人在积极交易)称这些大型、缓慢的参与者为“鲸鱼”,他们大多属于共同基金和养老基金——即公众。对于大多数HFT来说,“鲸鱼”现在是主要的利润来源。本质上,这些算法试图智胜对方;它们正在以光速进行隐形战斗,每秒10000次下订单和取消订单,或者将如此多的订单投入到系统中,以至于整个市场都震动了——所有这些都超出了人类的监督或控制范围。
没有人会对这种不稳定感到惊讶。2010年发生了一场“闪电崩盘”,在此期间,市场经历了5分钟的自由落体,然后5分钟又恢复了——没有明显的原因。我去芝加哥见了一个叫埃里克·亨萨德(Eric Hunsader)的人,他惊人的编程技能让他能够比监管者更详细地看到市场数据,他告诉我,到2014年,“迷你闪电崩盘”每周都会发生。甚至他也不能证明确切的原因,但是他和他的工作人员已经开始给他们看到的一些“算法”命名,就像麦田怪圈猎人给在英国夏天发现的地层命名一样,称它们为“Wild Thing”、“Zuma”、 “The Click” 或者是“Disruptor”.。
迈阿密大学专攻复杂性的物理学家尼尔·约翰逊(Neil Johnson)对股票市场波动进行了研究。“太迷人了,”他告诉我。“我的意思是,人们多年来一直模糊地谈论计算机系统的生态,比如蠕虫病毒等等。但是我们可以研究一个真正的工作系统。更大的问题是,我们不知道它是如何工作的,也不知道它会产生什么。”这种态度似乎是“眼不见,心不烦”。
重要的是,约翰逊关于这一主题的论文发表在《自然》杂志上,用“从混合人机阶段到新的全机阶段的突然系统转变,其特征是持续、超快且频繁的黑天鹅事件”,描述了股票市场。根据科学历史学家乔治·戴森(George Dyson)的说法,情况很复杂。只要让黑匣子用少量的钱尝试不同的东西,如果可行,就会加强这些规则。我们知道已经做到了。然后,会有一些没有人知道规则是什么的规则:算法创建自己的规则——你让它们像自然进化生物体一样进化。非金融行业观察家开始假设一场灾难性的全球“闪电式崩盘”,而增长最快的市场领域成为从波动中获利的工具。罗伯特·哈里斯(Robert Harris)在他2011年的小说《恐惧指数》(The Fear Index)中,想象了通用人工智能的出现的背后,正是这种数字化的渗透。令我惊讶的是,没有一个科学家会断然排除这种可能性。
如果不是因为一个简单的事实,所有这些都可以被认为是高级金融学术语。过去持有这种技术的智慧首先被色情业采用,然后被其他人采用。但是21世纪的色情就是金融,所以当我认为我看到了类似HFT的算法在其他地方引发问题的迹象时,我再次打电话给尼尔·约翰逊。
“你说得对,”他告诉我:一种新形式的算法正在走向世界,它具有“重写自己代码的能力”,此时它就像“遗传算法”。他认为他在Facebook的实际调查中看到了他们的证据(“我的账户被攻击了四次,”他补充道)。如果是这样的话,算法会在那里进行竞争和调整,就像在股票市场一样。“毕竟,Facebook只是一个大算法,”约翰逊说。
“我认为这正是Facebook面临的问题。他们可以有简单的算法在别人页面上的照片中识别我的脸,从我的个人资料中获取数据,并将我们联系在一起。这是一个非常简单的具体算法。但问题是,数十亿这样的算法在宏观层面上协同工作会产生什么影响?你无法从微观规则中预测群体层面的学习行为。所以Facebook会声称他们确切知道微观层面的情况,他们可能是对的。但是在群体水平上会发生什么呢?这就是问题所在。”
为了强调这一点,约翰逊和迈阿密大学的一些同事发表了一篇论文,其目的是从数学上证明试图在社交媒体上联系人们不可避免地会分化整个社会。他认为Facebook和其他人应该用气候科学家模拟气候变化或天气模式的方式来模拟(或让他们模拟)他们算法的效果。
奥尼尔说,她有意识地将这种自适应形式的算法排除在《Weapons of Math Destruction》之外。在一个错综复杂的算法环境中,什么都不清楚,将责任分配给特定的代码段变得极其困难。她解释说,这使得它们更容易被忽视或忽略,因为它们和它们的确切影响更难识别,然后她建议,如果我想在“野外”看到它们,我应该问问亚马逊上的闪电崩盘会是什么样子。
“我也一直在寻找这些算法,”她说,“我一直在想:‘哦,大数据还没有到达那里。但是最近,一位亚马逊书店的朋友告诉我,像他这样的人,那里的定价情况变得多么疯狂。你经常会看到有人在Twitter上说‘嘿,你可以在亚马逊上花4万美元买一条奢华的纱线。’每当我听到这种事情,我就会想:‘啊!那一定相当于一场闪电崩盘!’”
亚马逊上异常事件的轶事证据很多,一篇2016年的学术论文声称:“出现了一些例子,其中竞争的算法定价软件以意想不到的方式相互作用,产生了不可预测的价格,以及一些算法被有意设计来实施定价。”同样,问题是如何在混乱的算法环境中分配责任,简单的因果关系要么不适用,要么几乎不可能追踪。就像在金融领域一样,否认性被融入了这个体系。
现实生活中的危险
当安全受到威胁时,这真的很重要。当一名司机被撞死后,美国航空航天局的专家花了六个月的时间检查其操作系统中的数百万行代码,没有找到司机家人认为已经发生的事情的证据,但制造商坚决否认汽车是自动加速的。只有当一对嵌入式软件专家花了20个月的时间深入研究代码时,他们才能够证明这个情况,揭示出程序员称之为“意大利面条代码”的扭曲群体,充满了推搡和争斗的算法,产生了异常、不可预知的输出。目前正在测试的无人驾驶汽车可能包含1亿行代码,并且,考虑到没有程序员能够预测现实世界道路上的所有可能情况,他们必须不断学习和接收更新。在这样一个流动的代码环境中,我们如何避免冲突,尤其是当算法还必须要保护自己免受黑客攻击时?
20年前,乔治·戴森在他的经典著作《机器中的达尔文》(Darwin Among the Machines)中预见了今天发生的许多事情。他告诉我,问题是我们正在构建超出我们智力控制能力的系统。我们相信,如果一个系统是确定性的(按照固定的规则行事,这是算法的定义),它是可预测的——并且,可预测的可以被控制。但这两个假设都是错误的。
“这是一个缓慢进行的独立过程,”他说。“20年前,我痴迷的东西已经完全占领了今天的世界,它们是多细胞的、转移的数字有机体,就像我们在生物学上看到的一样,你可以在人们的iPhone上运行所有这些代码,总的来说,它就像一个多细胞生物。”
“有一个叫做阿什比定律(Ashby’s law)的旧定律,它说控制系统必须和它控制的系统一样复杂,我们现在正全速运行,在这种巨大的推动下,制造自动驾驶汽车的软件必须有一个完整的模型,几乎从定义上来说,我们不会理解它。就像我们了解的任何模型都会像撞上消防车一样。”
与我们的旧电子机械系统不同,这些新算法也不可能彻底测试。除非而且直到我们有超智能机器来为我们做这件事,否则我们将会面临走钢丝的情形。
戴森质疑我们是否会允许自动驾驶汽车在城市街道上自由行动,而新南威尔士大学人工智能教授托比·沃尔什(Toby Walsh)从技术角度解释了为什么会有这种情况,他13岁时编写了他的第一个程序,并在十几岁时经营了一家初级的计算公司。
“没有人知道如何编写一段代码来识别停车标志。我们花了数年时间试图在人工智能领域做这种事情,但失败了!由于我们的愚蠢,它被耽搁了,因为我们不够聪明,无法学会如何解决这个问题。当你编程时,你会发现你必须学会如何将问题分解成足够简单的部分,每个部分都可以对应于“给机器的一条计算机指令”。我们只是不知道如何处理非常复杂的问题,比如识别停车标志或者将句子从英语翻译成俄语——这超出了我们的能力范围。我们所知道的是如何编写一个更通用的算法,在给出足够多的例子的情况下,该算法可以学习如何做到这一点。”
因此,当前的重点是机器学习。我们现在知道,在亚利桑那州被Uber的自动驾驶汽车撞到的行人赫茨伯格死了,因为算法在对她进行正确分类时摇摆不定。这是编程不良、算法训练不足还是我们技术的局限性?真正的问题是我们可能永远不会知道。
“我们最终将完全放弃编写算法,”沃尔什继续说道,“因为这些机器将能够比以往做得更好。从这个意义上说,软件工程也许是一个垂死的职业。它将被比我们做得更好的机器所取代。”
沃尔什认为,这使得公众了解编程变得更加重要,而不是更少,因为我们越疏远编程,就越觉得它是超出我们影响能力的魔法。当在这篇文章前面给出的“算法”的定义时,他发现它并不完整,并评论道:“我认为问题是算法现在意味着任何大型复杂的决策软件系统,以及它所嵌入的更大的环境,这使得它们更加不可预测。”一个令人不寒而栗的想法确实存在。因此,他认为伦理是科技行业的新领域,预见到“哲学的黄金时代”——网络安全专家普渡大学的尤金·斯帕福德(Eugene Spafford)赞同这一观点。
“哪里有选择,哪里就有道德。我们倾向于希望有一个我们可以询问或指责的机构,这对于算法来说是非常困难的。到目前为止,这是对这些系统的批评之一,因为我们不可能回去分析为什么会做出一些决定,因为内部选择的数量如此之多,以至于我们如何达到这一点可能不是我们可以再创造出来的,从而来证明无可置疑的罪责。”
相反的观点是,一旦一个程序出错,整个程序都可以被重写或更新,这样就不会再发生这种情况——不像人类,人类重复错误的倾向无疑会让未来的智能机器变得更加麻烦。尽管如此,从长远来看,自动化应该更安全,但我们现有的侵权法体系需要证明意图或疏忽,需要重新考虑。狗对咬你不负法律责任;它的主人可能会,但只有当狗的行为被认为是可预见的时候。在算法环境中,许多意想不到的结果对人类来说可能是不可预见的——这是一个有可能成为无赖宪章的特征,在这个特征中,故意混淆变得更容易,也更有价值。制药公司多年来一直受益于复杂性的掩盖,但在这里,后果可能会更严重,也更难逆转。
军事赌注
然而,商业、社交媒体、金融和运输在未来可能会看起来无足轻重。如果军方不再像过去那样推动创新,它仍然是科技最重要的采纳者。因此,科学家和科技工作者的关注与自主武器正在向战场方向发展并不奇怪,这相当于一种算法军备竞赛。一名机器人神枪手目前监管着非军事区,虽然它的制造商三星否认它有自主能力,但这一说法却遭到广泛质疑。俄罗斯、中国和美国都声称处于发展一群协调的武器化无人驾驶飞机的不同阶段,而后者则计划在战场上盘旋数日,观察,然后选择自己的目标。一群谷歌员工已经辞职,数千人质疑科技巨擘向五角大楼的Maven项目“算法战争”项目提供机器学习软件——管理层最终对此做出了回应,同意不再续签Maven合同,并发布使用其算法的道德准则。在撰写本报告时,包括亚马逊和微软在内的竞争对手都拒绝这样做。
英国兰卡斯特大学的露西·苏克曼(Lucy Suchman)与人合写了一封由技术研究人员写给谷歌的公开信,要求他们反思将工作军事化的热潮。她说,科技公司的动机很容易理解:军事合同总是有利可图的。五角大楼方面,一个庞大的传感器和监视系统网络已经超越了任何使用如此获取的数据的能力。
他们被数据淹没了,因为他们有新的方法来收集和存储数据,但是他们不能处理数据。所以这基本上是无用的——除非有神奇的事情发生。我认为他们招募大数据公司是一种神奇的思维方式,从某种意义上说:“这里有一些神奇的技术可以解释这一切。”
萨奇曼还提供了关于Maven的令人毛骨悚然的统计数据。根据2003年至2013年对巴基斯坦无人驾驶飞机袭击的分析,不到2%的以这种方式死亡的人被确认为对美国构成明显威胁的“高价值”目标。在20 %的地区被认为是非战斗人员,超过75 %的人不知道。即使这些数字是以2倍或3倍或4倍的系数计算出来的,它们也会让任何理智的人停下来。
“所以,我们有这种非常粗糙的识别技术,Maven项目打算做的就是自动化。在这一点上,它变得更不负责,也更容易受到质疑。这真是个糟糕的主意。”
加州大学圣地亚哥分校的苏克曼的同事莉莉·伊拉尼(Lilly Irani)提醒我们,信息以光速在算法系统中传播,没有人类的监督。 她建议,技术讨论通常被用作避免责任的烟幕。
“当我们谈论算法时,有时我们谈论的是官僚主义。 选择算法的设计者和政策专家被认为是客观的,在过去,人们不得不为他们的过失承担责任。 科技公司表示,他们只是在提高 Maven的准确性——正确的人会被杀害,而不是错误的人。他们说,世界另一边的人更容易被杀,而且美国军方能够确定怀疑是什么样的,这一政治假设没有受到质疑。 因此,技术问题被用来解决一些实际上是政治问题的东西。 选择使用算法自动化某些类型的决定也是政治性的。”
现代战争的法律惯例虽然可能并不完美,但它们对所做出的决定负有人类的责任。 至少,算法战争以我们可能会变得后悔的方式搅浑了水。 近日在日内瓦召开的联合国常规武器公约会议上,一群政府专家正在辩论这个问题。
寻找解决方案
解决方案是存在的,或者可以在这里描述的大多数问题中找到解决办法,但不能不鼓励大型技术公司将社会健康置于与它们的收入相当的地位。 从长远来看,更为严重的是,鉴于我们日益依赖的算法系统的规模、复杂性和相互依赖性,目前的编程方法已不再适合我们的目的。 联邦航空管理局在商业航空方面采用的一个解决办法是,记录和评估所有方案的内容,并随后对这种详细程度的更新进行记录和评估,以便事先充分了解算法的相互作用,但这在很大程度上是不切实际的。 航空航天工业采用了一种相对较新的方法,称为基于模型的编程,在这种方法中,机器可以完成大部分的编码工作,并且能够在进行的过程中进行测试。
然而,基于模型的编程可能不是一些人所希望的灵丹妙药。 它不仅使人类进一步远离这个过程,而且物理学家约翰逊为国防部进行了一项研究,发现“极端行为不能从代码本身推断出来”,甚至在使用这种技术建造的庞大而复杂的系统中也是如此。 一种叫做 TLA 的新编程语言可以使用数学证明一个软件系统没有 bug,但是这需要具有高级数学技能的程序员。 大量的“算力”被用于寻找方法,追踪意外的算法行为回到引起它的特定代码行。 没有人知道是否会找到一个解决方案,但是在侵略性的阿尔戈斯被设计成冲突和 / 或适应的地方,没有一种解决方案。
当我们等待解决方案的时候,我们可以采取预防措施。英国定量分析专家、股票市场高频交易的直言不讳的批评家保罗·威尔莫特(Paul Wilmott)自嘲地建议“学会射击、制作果酱和编织”。更为实际的是,软件安全专家斯佩弗(Spafford)建议,让科技公司对其产品的行为负责,无论是否能够识别出具体的流氓代码,或证明其疏忽。 他指出,受人尊敬的计算机机械协会(Association for Computing Machinery)根据医学希波克拉底誓词(Hippocratic oath)更新了其道德守则,指示计算机专业人士不要伤害它们,并考虑其工作的更广泛影响。
“现在,这甚至影响了选举。我是说,到底发生了什么?我认为最科学的事情是软件工程师被训练编写程序来做优化的事情——而且有充分的理由,因为你经常在飞机重量分配或者最省油的速度方面进行优化:在通常情况下,能预期的优化是有意义的。但在不寻常的情况下,情况并非如此,我们需要问:‘一旦这个算法开始与他人互动,它会发生什么最糟糕的事情?’问题是我们对这个概念连一个字都没有,更不用说研究它的科学了。”
他停顿了一会儿,试图绕过这个问题。
“问题是,优化都是关于最大化或最小化一些东西,用计算机术语来说是一样的。那么,优化的反面是什么,即最不优化的情况,我们如何识别和衡量它?我们需要问的问题是:“在我认为我正在优化的系统中,什么是最极端的行为?”
又一次短暂的沉默,以他有一丝惊讶的声音结束。
“基本上,我们需要一门新的科学,”他说。
原文链接:https://www.theguardian.com/technology/2018/aug/29/coding-algorithms-frankenalgos-program-danger
编译组出品。编辑:郝鹏程
,