它是否复制了各种库的行为(因此调用完全相同),或者只是使用独特的优化和新方法来从头开始编码?
答案 0 :(得分:10)
有不同种类的逆向工程大致分为Dirty-Room和Clean-Room。 Dirty-Room基本上涉及以某种方式反汇编机器代码以弄清楚它的作用并使用反汇编代码来创建新代码。 Dirty-Room会产生版权侵权问题,您基本上是通过直接了解旧系统实施来直接或间接地抄袭旧系统来创建新系统。洁净室涉及使用文档和针对要重新实现的系统进行测试来实现相同的API。这两种技术可以单独使用,也可以各种组合使用。例如,PC BIOS是使用两个团队进行逆向工程的,一个Dirty-Room团队拆解了原始BIOS并创建了一个规范,一个Clean-Room团队使用该规范实现了新的BIOS。逆向工程的高风险业务情况通常涉及专业领域的律师,以创建一个不侵犯旧的实施的新的实施。
Cocotron是一个洁净室实施。我/我们使用文档和测试程序来创建一个新实现(Cocotron),它与旧实现(Cocoa)的行为相匹配。 Apple文档非常好,API组织良好,并且在需要时很容易创建测试程序。如果我这么说的话,Cocotron非常好,但绝对不是Cocoa,我想这两者之间的来源差别很大。
答案 1 :(得分:2)
Cocotron的内部实施与Cocoa完全不同。我不会说有任何“逆向工程”。
你应该知道有一个Cocoa的API(有点)的单独实现的历史。 Cocoa源自OpenStep,最初设计为在不同平台上具有许多不同实现的规范。