蓝欣投票软件自助投票器
爱荷华州民主党核心小组 告软件失败后的轩然大波提醒程序员,事情可能会变得很糟。 计算几张简单的选票并不像制造自动驾驶汽车,训练AI以推荐电影,甚至安全地更新银行数据库那样复杂,但是程序员无法做到这一点。 一则该死的推文写道:“很难相信我们把人放在月球上。”
事实是,与飞向月球的比较并不十分公平。 尽管将阿波罗登陆器引导到月球似乎要比将几千张票制表起来要困难得多,但围绕现代选票记录进行的所有额外工作却使它变得更加复杂。
[ 也在InfoWorld上:如何通过左移测试改善CI / CD ]
一些零件变得越来越容易。 新的所谓的“无服务器”选项有望使我们编写最基本的逻辑并完成任务,但我们还没有完成。 当然,编写函数更简单,但是剩下的时间我们都在努力使用配置选项。 我们花了数小时编写数百行YAML,逐个决定地阐明了决定,但是由于某些原因,这不被视为“编码”。
是否进行编码,所有这些想法加起来。 非程序员不会理解这一点,我希望他们理解作为解释的理由,而不是借口,但是制作软件今天变得更加困难和复杂。 这有五个原因。
代码比那时更简单
感受一下NASA的工作的最好方法是阅读一些代码,这些代码现已存在GitHub存储库中 。 随机选择一个文件。 例如, GROUND_TRACKING_DETERMINATION_PROGRAM.agc有204行,其中超过85行是注释。 每行仅由一个操作组成,这与现代语言不同,现代语言可以将具有多个选项的数十个操作打包到一行中。
当您浏览文件时,简单性变得显而易见。 尽管该代码在打印出来并放入活页夹后看起来令人印象深刻,例如在著名的玛格丽特·汉密尔顿(Margaret Hamilton)的照片中,但只有几百个文件,而且大多数文件都很短而且充满注释。 他们必须是。 阿波罗制导计算机只有ROM的36k来保存编译后的版本。
这意味着程序员可以轻松地完成功能请求,而只专注于最重要的步骤。
对于大多数现代程序员来说,代码本身看起来绝对是不可理解的,因为当今很少有开发人员学会阅读汇编语言或机器代码。 更少的人学会写它。 虽然看起来很神秘,但语义要简单得多。 毕竟,机器只有几个寄存器,一些RAM和一些用于分支的IF-THEN选项。
将这些与现代程序员必须掌握的规则进行比较,以处理诸如闭包或递归对象数据之类的抽象。 Java团队现在正在推出版本14,并且此过程中的每个新版本都附带了巧妙的新机制。 即使是旨在简化编程的想法,例如JavaScript中的回调函数 ,也需要大量抽象思维。
一旦弄清了汇编程序的隐秘指令名称,实际上编写起来就容易得多。
[ 同样在InfoWorld上:启动devops程序的3种方法 ]
安全性更简单
是的,NASA的发射安全性很严格,但是程序员不必担心为连接到Internet的机器编写代码。 阿波罗制导计算机只与休斯敦通话,而且很少。 如今,每部智能手机都在后台不断与数十个可能暗中恶意的 站和服务进行交互。
这使得今天的运输代码成为安全梦night。 部署基本容器需要处理一个充满密码和“秘密”的特殊文件,以确保所有内容的安全。 Android和iOS应用程序开发人员必须管理多个密钥以对其应用程序进行签名,然后才能将其上传到各个商店。 如果这些秘密中的任何一个溜走了,那么任何与Internet连接的人都可以闯入并使用机器。
现代互联 是不良行为者的聚集地,垃圾邮件发送者,点击劫持者和 络钓鱼者是不错的选择。 有很多糟糕的演员在认真地进行弊端,甚至在好莱坞大片停顿片中谋杀 。 除了苏联的Luna 15 飞船,在阿波罗11 飞船发射的三天前就冲入了太空,当时的程序员不必担心其他任何人。
功能是重点
那时,没有设计委员会在考虑是否应将按钮移到一两个像素上。 没有启动画面,移动的图标,背景阴影或数百万种字体。 哎呀,IBM直到1961年才推出带有可变字体的Selectric 。
虽然现代程序员可以利用HTML,CSS和SVG等不错的标准,以及无数行如React或Vue的库,但同一位程序员也必须遵守其标准。 宇航员很高兴看到发光的小真空管还在发光。 他们不在乎绿色。
活动部件少
机械工程师倾向于计算运动部件的数量,并以此来代替复杂性。 月球着陆器的制导计算机有一项非常重要的工作,即跟踪位置,仅此而已。 现代化的智能手机同时执行着无数的工作,其中许多是理所当然的,这是由缺乏思想和热情的民众所理所当然的,他们会在不响应毫秒的情况下将其卸载。
所有这些复杂性加在一起。 是的,自动化的构建代码,定义明确的API和无尽的库意味着程序员可以让持续集成管道中的魔术精灵完成大部分工作,而复杂性仍然存在。 使用1.7版编译的仅显示“ Hello World”的Go应用程序仅1.6 MB,而此消息使Go世界感到非常兴奋,因为它以前是2.3 MB。
考虑艾萨克·牛顿关于站在巨人肩膀上的观点。 现代编程感觉有点像是由最疯狂的啦啦队组成的人类金字塔之一。 当然,您下面的每个人都在做很多繁重的工作,但是保持平衡是一项壮举。
[ 同样在InfoWorld上:如何将测试自动化与敏捷和devop结合使用 ]
律师自由
根据我的统计,在基本服务条款中有2万2千个字用于在Amazon的云中租用计算机。 使用 站租用机器还有一个完全不同的服务条款 。 然后每个单独的产品通常都有自己的TOS,例如Activate 。 将它们加起来,它们比Lunar Lander计算机ROM中的3.6万个指令字长得多。
阿波罗(Apollo)程序员不知道电影《异形》(Aliens)会带有标语“在太空,没人能听到你的尖叫”,但是他们很了解这个主意,并且知道这意味着没有救护车追逐律师会听到你也是。 而且如果律师确实参与进来,那么主权豁免的原则将是消除所有困扰现代程序员的法律麻烦的美丽工具。
翻译自: https://www.infoworld.com/article/3519876/why-we-cant-develop-voting-software-that-works.html
蓝欣投票软件自助投票器
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93763 人正在系统学习中 相关资源: 络投票软件票王投票软件2014v1.0-其它代码类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!