龙空技术网

对国际C语言混乱代码大赛获奖者的代码进行反编译,会发生什么?

IT168企业级 4544

前言:

现时我们对“linuxc语言反编译”大致比较看重,姐妹们都想要知道一些“linuxc语言反编译”的相关资讯。那么小编也在网摘上搜集了一些有关“linuxc语言反编译””的相关知识,希望兄弟们能喜欢,朋友们一起来了解一下吧!

有很多令人困惑的代码可以导致编程中的错误,最近科罗拉多大学科罗拉多斯普林斯分校和美国宾夕法尼亚州立大学的研究人员进行了一项新的研究,试图证明:许多代码模式在统计学意义上增加了误差,而不是模式的等效代码,并且删除这些代码模式对程序员了解大型项目代码很有帮助。

这项研究解决了源代码中的误解,并尝试证明“能够可靠地识别和删除可能导致误解的代码并将提高生产力降低维护成本。”结果提供了针对通用编码的建议,并提出了扩展现有指南的新方法。

源代码具有双重目的。它将程序指令分别传达给机器和人类,当程序员对于一段代码的期待行为与机器的执行行为不同时,问题就出现了。

换句话说,程序员对一段代码的行为解释与机器不同。虽然在某些情况下(例如涉及随机性,API知识不明确或未定义行为)的情况下,解释的差异自然会发生,但它也可能发生在小型独立的代码行中,这些易于误解的设计模式自然会导致代码中的错误。

然而,确定和删除导致混乱的程序元素不仅会导致更少的bug。根据研究,了解源代码是不断成功的软件项目最重要的元素之一。这些错误通常导致巨大的成本和错误的产品,并且有无数公司为此支付了高昂的费用。这些错误的后果可能包括生产率下降,产品故障和更高的成本。

研究人员寻求并验证导致程序员误解的最小常规代码。导致误解的这些模式简称为“混乱原子”或“原子”,它们可以作为理解使代码混乱因素的经验和基础。

该组研究人员选择的程序已经被人们认可(国际奥委会获奖者——国际C语言混乱代码大赛)和孤立的小型代码,通常包含在一行内,这些IOCCC程序是让程序员混乱的根本原因。

73名有经验的参与者进行实验,以发现这些代码模式中的哪些代码模式引起统计学上的显著混乱(即,主程序员相信包含该模式的程序行为与C语言规范不同)。

接下来,他们从大的混乱程序中消除这些混乱原因的影响,也来自国际奥委会获奖者。通过保留转换应用行为去除识别的原子并使用这些程序作为第二个实验的基础来简化IOCCC程序。

招募了10.43名未参加实验的程序员。研究人员想确定:通过澄清这些原子,可以减少多少程序错误。

结果

通过实验研究,证明了混乱原子的存在和影响。通过国际C语言混乱代码大赛的逆向工程的获胜者,最终生成了19个潜在原子的部分列表。在实验中,与功能等效的代码片段进行对比,以删除混乱原子。在19个提出的原子中,15个在统计学上被证实对受试者有明显的混淆。

他们的结果提供了针对通用编码建议的证据,并提出了扩展现有指南的新方法。具体情况可以访问:

标签: #linuxc语言反编译