Cocotron是逆向工程的结果吗?

3

它是否模仿各种库的行为(所以调用完全相同),还是只使用独特的优化和新方法从头开始编写它们的代码?

2个回答

10
有不同种类的反向工程,大致分为肮脏方式和清洁方式。肮脏方式基本上涉及将机器代码反汇编以找出其作用,并使用反汇编代码创建新代码。肮脏方式会产生版权侵犯问题,你基本上是抄袭旧系统来创建新系统,无论是直接还是间接通过对旧系统实现的直接了解。清洁方式则是使用文档实现相同的API,并针对要重新实现的系统进行测试。这两种技术可以单独或结合使用。例如,PC BIOS使用了两个团队进行反向工程,肮脏方式团队反汇编原始BIOS并创建规范,清洁方式团队使用规范实现新的BIOS。反向工程的高风险商业情况通常需要专门从事该领域的律师来创建适当的新实现,以避免侵犯旧实现。
Cocotron是一个清洁方式的实现。我/我们使用文档和测试程序创建了一个新实现(Cocotron),它与旧实现(Cocoa)的行为匹配。苹果公司的文档非常好,API组织得很好,需要时很容易创建测试程序。我可以说Cocotron还不错,但它绝对不是Cocoa,我想两者之间的源代码差异很大。

2

Cocotron的内部实现与Cocoa相当不同。我不会说其中有任何“逆向工程”。

你应该知道,有一个将Cocoa API的实现分离出来的历史(有点像)。Cocoa起源于OpenStep,最初被设计为在不同平台上拥有许多不同实现的规范。


好知道,谢谢。你是否知道苹果的反向工程库(我主要对AppKit感兴趣)?了解库的行为有时非常有用。 - John Smith
不是的,但是浏览Cocotron的源代码可以展示一种方法去做它,即使不是最佳方法,这仍然是有趣和有用的。 - andyvn22
我同意。然而,我无法相信还没有人尝试过。 - John Smith
GNUStep的Foundation源代码非常好。建议查看,因为我认为在行为方面没有太多变化。 - JohnBrighton
尽管如Cocotron一样,GNUstep并不一定以与Cocoa相同的方式实现任何内容。(还要注意,Cocotron更加努力地保持与Cocoa的兼容性,而GNUstep更注重成为自己的东西。) - andyvn22
andyvn22的答案完全不正确。GNUstep的目标是与Cocoa兼容。 - greg.casamento

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接