在之前的一篇博文里,我介绍了 ydiff,一个通用的结构化程序比较工具。其实在设计 ydiff 之前,这个工具是用 Python 实现的,并且只处理 Python 程序。在设计了 ydiff 之后,我发现其实我不想费很多精力来写 Python 的 parser,所以对 Python 的支持就日渐疏忽了。后来我把那块代码放在了 ydiff 的 repo 里面(叫做 pydiff.py),然而几乎没有人注意到它。
现在我发现 Python 其实是一个挺重要而且有趣的语言。说它重要是因为它简单而且在某种程度上是优雅的,所以有很多人用它。说它有趣是因为它的一些设计其实比起很多更加“严谨”的语言要来得合理。语言的设计不只要有逻辑的严谨和效率,而且需要有“易用性”(usability)。Python 在易用性上面是做的比较好的。最近仔细看了一下 PEP 8 (Python 的 "Style Guide"),发现它有很多地方比起 Java, Scheme, Haskell 都有让程序更加“易读”的特点。
所以,现在我为这个 Python 的结构化比较程序重新建立了它自己的 GitHub 项目。你可以在这里得到它的代码: https://github.com/yinwang0/pydiff
对比大型文件的时候可能速度会成一定的问题。不过我打算以后对算法做一个比较大的改进。如果发现 bug 请在 GitHub 中向我报告。谢谢。
你可以在下面的窗口中看到 PyDiff 的输出结果,是 PyDiff 对比它自己的代码(我最近两天对它的修改)。
上面的界面有如下特点: