Programming languages 是否有一个程序可以帮助理解另一个程序?

Programming languages 是否有一个程序可以帮助理解另一个程序?,programming-languages,Programming Languages,我需要记录我目前正在使用的软件。这个软件由几种编程语言和脚本组成,让我思考。如果新的开发人员出现并需要修复某些东西,他们可能会懂Java,但可能不会使用bash脚本。如果有一个项目能帮助你理解 for f in "$@" ; do 意味着。我想创建一个带有代码和语法突出显示的静态HTML页面,如果您将鼠标悬停在某个页面上(如“for”),它将显示一个带有解释的弹出窗口: for启动一个循环,循环遍历中后面的所有值。在循环中,您可以通过变量$f访问每个值。循环体位于do和done 这样的事情已经

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

for f in "$@" ; do
意味着。我想创建一个带有代码和语法突出显示的静态HTML页面,如果您将鼠标悬停在某个页面上(如“for”),它将显示一个带有解释的弹出窗口:

for
启动一个循环,循环遍历
后面的所有值。在循环中,您可以通过变量
$f
访问每个值。循环体位于
do
done

这样的事情已经存在了吗


[编辑]这只是一个例子。您将在
“$@”
中获得另一个有关
f
的帮助
执行
,即应解释行的每个元素。未知元素(如命令名)应链接到Google。所以即使你遗漏了一些细节,你也能理解它的作用

[EDIT2]我知道你不能编写一个理解另一个程序的程序。我要找的是一个简单的工具,它可以做“扩展语法突出显示”,因为它会给表达式着色,并给出一个简短的解释它的意思(加上一些深入参考的链接)

这是为那些知道如何编程的人准备的,但可能以前没有见过一些模糊的构造。说

echo "Error" 1>&2

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

如果你仔细想想,有一个解释语法的工具是没有用的。开发者可以在谷歌上搜索关键词,而不是像谷歌那样浏览网站


我相信好的注释会更有用,另外还有一些工具可以通过使用注释来提取文档(例如,HappyDoc为Python做了这项工作)。

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

IMO只需在Wiki页面上收集指向优秀语言特定参考和教程的链接,就会更简单、更有效


对于所有主流语言,都存在并定期维护这些来源。如果您试图创建自己的引用,您也需要维护它。公平地说,bash语法不会经常改变,但其他语言确实发展得更快,因此这将是一个负担。

一种语言不能仅仅通过其语法来解释。运行时环境以及语言和图书馆的基本理念起着重要作用

此外,对于大多数常见语言来说,语法并没有那么复杂(因为编写代码时考虑到了可维护性)


以bash为例,如果您对流程和作业控制、环境变量、大量unix命令(tr、sort、cut、paste、sed、awk、find等)以及许多其他语法中没有的功能一无所知,您就无法深入理解bash。

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

这听起来像是学习语言或探索未维护项目的源代码的有用工具——但它适合用于文档编制吗

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

“我说,我肯定会考虑这样的工具作为学习辅助工具。 for启动一个循环,该循环在 中后面的所有值。在 循环,您可以通过 变量$f。环体是 在做和做之间


那就一文不值了。这正是实习(人类)程序员被告知nver编写的评论。

对于不了解bash的人来说,棘手的部分不是
对于
,而是
$@
。这只是一个例子。您将在
“$@”
中获得另一个有关
f
的帮助
执行
,即应解释行的每个元素。因此,即使你遗漏了一些细节,你也能理解它的作用。+1问得好:有一些程序可以理解其他程序。它们被称为口译员/编译器。但通常他们每个人只懂一种语言。@High-Performance Mark:哪个IDE告诉你“>>”在bash脚本中的含义?@Mark:我同意IDE,但我现在没心情写:-)我需要一些东西,我可以在周五左右教bash。好的评论可以解释高级细节。但对我来说,
“$@”
的含义是显而易见的,而另一个开发人员会沮丧地盯着它看。我理解此工具不允许创建自动文档;这只是一个可以回答细节问题的“智能镜头”。那么为什么不添加一个关于“$@”的内联评论呢?您也可以为注释添加标记,如#TODO:。。。o