GammaScript - 保护你的JavaScript免受宇宙射线的影响

859 阅读4分钟

[

Sebastian Carlos

](sebastiancarlos.medium.com/?source=pos…)

塞巴斯蒂安-卡洛斯

关注

2月1日

-

4分钟阅读

[

拯救

](medium.com/m/signin?ac…)

GammaScript - 保护你的JavaScript免受宇宙射线的影响

注意GammaScript v2

照片:NASAonUnsplash

JavaScript是一种独特的语言,处于流行、耻辱和崇高恐怖的尴尬交叉点。它可能是我们对抗宇宙中扭曲现实的力量的唯一希望。

第一章--地球。

雷神托尔,慢慢地将其元素的掌握权交给了我们这些凡人,大约从18世纪开始,本杰明-富兰克林等人开始掌握。

在19世纪,我们想出了可以用电来自动进行逻辑和数学计算,但技术还不到位。

在20世纪初,勇敢的电子在古老的真空管中漫游,我们利用它们为我们最早的数字计算机提供动力,如ENIAC。如今,我们把这项技术归结为复古车库乐队中吉他放大器和合成器的 "管状声音"。

1947年,它发生了。我们创造了晶体管,即可以 "开 "或 "关 "的电子开关。我们可以把它们无休止地连接起来,以存储和处理我们的整个数字世界。的确,它们改变了生活和文化。

历史记录是 塔西佗的日耳曼尼亚,是一部关于日耳曼民族的人种学著作。塔西佗将托尔称为 "海格力斯",这是由于一个被称为 "*interpretatio romana "*的过程(罗马人认为相似的特征导致将一个非罗马的神识别为罗马的神)。

然而,在实践中,我们的数字梦想正处于危险之中。计算机的工作是因为晶体管不会在 "开 "和 "关 "之间切换,除非我们想让它们这样做。但如果来自太空的东西想改变它们呢?

第二章--空间。

现在想象一下,你是一个在动物园工作的IT人员。你会把计算机服务器放在老虎的笼子里吗?当然不会。现在我们假设来自太空的隐形老虎可以穿墙而过。再也没有安全的地方了。"安全 "成为一个毫无意义的词。

当一个晶体管因宇宙射线而翻转时,我们称之为 "单一事件干扰"(SEU)或 "软错误";射线不会损坏硬件本身,但软件可能最终处于一个奇怪的状态或崩溃。

在20世纪70年代,SEU的发生有时是因为用于制造处理器的材料受到了放射性污染。但它们也可能因伽马射线暴而发生。

摘自 "数字微电子学中单事件颠覆的基本机制和建模"(2005).合著者Lloyd Massengill是研究辐射对电子产品影响的世界顶级专家之一。在这个视频中,你可以看到他解释他如何帮助美国海军为三叉戟II弹道导弹设计电子制导工具。不要对他评头论足,我们是 所有以这种或那种方式为军工企业工作。

第一篇检测SEU的论文有一个不祥的标题 "来自银河系宇宙射线的卫星异常"。

摘自 "来自银河系宇宙射线的卫星异常现象".值得注意的是,这篇论文并没有使用流行的LaTeX格式。可以说,这是因为研究人员害怕如果使用数字方法会出现宇宙射线。

第三章 - GammaScript。

请看我们的救星。

如果你知道JavaScript,你已经知道GammaScript。在这个互动的游乐场里,你可以自己尝试一下。

完整的代码可以在沙盒上找到。

就像TypeScript一样,GammaScript可以编译成普通的JavaScript。它是由Babel转换驱动的。完整的源代码可以在这里找到。

GammaScript的完整源代码。

GammaScript将每个JavaScript布尔值替换成一个由8个布尔值副本组成的数组,我们从中计算出最常见的值。在理想情况下,所有的值都应该是一样的。要改变最终的结果,需要相当讨厌的宇宙射线群。

在平等的情况下,我们对 "真 "有一点偏爱。这是因为,从神学的角度来看,我们计算机科学家认为 "真理是好的"。

细心的读者可能会问,如果一条射线翻转了用于存储临时 "trueCount" 或 "falseCount" 值的位,会发生什么?或者如何防止返回值本身被翻转?人们可能会指出,即使我们对每一种数据类型都这样做(改变数字中的一个比特就像翻转布尔值一样讨厌),指令(无论是字节码还是机器码)都驻留在RAM中,也会翻转。

对此,我要说的是--为了进一步保护指令--GammaScript v2将在输出中加入挑逗性的注释,比如说。

// 哦不,如果宇宙射线击中我,那就太可惜了,我是一段关键性的代码。

[

用我的推荐链接加入Medium - Sebastian Carlos

作为Medium的会员,你的会员费有一部分是给你阅读的作家的,而且你可以完全接触到每一个故事......

sebastiancarlos.medium.com

](sebastiancarlos.medium.com/membership)