有没有一个程序可以帮助理解另一个程序?

时间:2010-03-10 08:44:02

标签: programming-languages

我需要记录我目前正在处理的软件。该软件由几种编程语言和脚本组成,让我思考。如果新的开发人员出现并需要修复某些东西,他们可能会知道Java,但可能不是bash脚本。如果有一个程序可以帮助理解什么是

,那就太好了
for f in "$@" ; do

装置。我正在考虑创建一个静态HTML页面,其中包含代码和语法高亮显示,如果您将鼠标悬停在某些内容上(例如“for”),它会显示一个带有解释的弹出窗口:

  

for启动循环,迭代in后的所有值。在循环中,您可以通过变量$f访问每个值。循环体介于dodone

之间

这样的事情已经存在吗?

[编辑]这只是一个例子。您将获得fin"$@";do的其他帮助,即应该解释该行的每个元素。未知元素(如命令名称)应链接到Google。因此,即使您遗漏了一些细节,也可以了解它的作用。

[EDIT2]我知道你不能写一个能理解其他程序功能的程序。我正在寻找的是一个简单的工具,它将执行“扩展语法突出显示”,因为它将为表达式着色并给出简短解释它意味着什么(加上可能是一些链接到 - 深度参考)。

这适用于那些知道如何编程但可能以前没有看过一些模糊构造的人。说

echo "Error" 1>&2

每个bash程序员都知道这意味着什么,但Java开发人员可能会对1>&2感到困惑,尽管他们可以猜到echo == System.out.println。一个简单的“重定向stdout到stderr”将清除事情并立即给出“AHA!”这使他们能够保持目前的思路。

6 个答案:

答案 0 :(得分:3)

可以使用ANTLR构建这样的工具,即使用该语言的ANTLR语法将代码解析为抽象语法树,并编写生成带注释代码的HTML生成器。

这听起来像是一个有用的工具,可用于语言学习,或探索您未维护的项目的源代码 - 但它是否适合文档?

为什么帮助其他语言的程序员理解这个实现细节级别的代码很重要?任何维持此级别实现的人显然必须知道该语言,并且可能有一个IDE来完成大部分工作。

那就是说,我肯定会把这样的工具当作学习辅助工具。

答案 1 :(得分:1)

IMO在Wiki页面上收集指向特定语言的参考文献和教程的链接会更简单,更有效。

对于所有主流语言,此类来源存在并定期维护。如果您尝试创建自己的引用,则还需要维护它。很公平,bash语法不会经常改变,但其他语言确实发展得更快,因此它将成为一种负担。

答案 2 :(得分:0)

如果你考虑一下,拥有一个解释语法的工具并没有用。开发人员只需谷歌搜索关键字,而不是以与http://www.codeweblog.com/source/类似的方式浏览网站。

我相信好的评论会更有用,还有一些工具可以通过使用评论来提取文档(例如,HappyDoc就是为Python做的)。

答案 3 :(得分:0)

这是一件非常棘手的事情。首先,根据定义,可以证明将“理解”任何程序的程序不存在。但是,您仍然可以使用现有文档。也许使用像Doxygen这样的工具可以帮到你。您需要通过注释记录您的代码,并从中生成文档。

答案 4 :(得分:0)

语言不能仅通过其语法来解释。运行时环境与语言和图书馆的基本哲学一起发挥了重要作用。

此外,对于大多数常见语言而言,语法并不复杂(考虑到代码编写时考虑了可维护性)。

继续使用bash示例,如果你对进程没有任何了解,就无法深入理解bash。作业控制,环境变量,unix命令的大列表(tr,sort,cut,paste,sed,awk,find,...)以及许多其他未出现在语法中的功能。

答案 5 :(得分:0)

如果生成工具

  

用于启动迭代循环   随后的所有价值观   循环,您可以通过访问每个值   变量$ f。循环体是   在做和完成之间

这将是毫无价值的。这正是学员(人类)程序员被告知要写的那种评论。