伪代码标准?

fer*_*nko 27 pseudocode

我需要将一些python和java例程转换为我的硕士论文的伪代码,但是在编写语法/样式方面遇到了麻烦:

  • 一贯
  • 容易明白
  • 不太啰嗦
  • 不太接近自然语言
  • 与某些具体的编程语言不太接近.

你怎么写伪代码?有没有标准的建议?

Eli*_*sky 20

我建议查看"算法导论"一书(Cormen,Leiserson和Rivest).我总是发现它的算法伪代码描述非常清晰和一致.

一个例子:

DIJKSTRA(G, w, s)
1  INITIALIZE-SINGLE-SOURCE(G, s)
2  S ? Ø
3  Q ? V[G]
4  while Q ? Ø
5      do u ? EXTRACT-MIN(Q)
6         S ? S ?{u}
7         for each vertex v ? Adj[u]
8             do RELAX(u, v, w)
Run Code Online (Sandbox Code Playgroud)

  • 详细说明Eli Bendersky:它的实现细节不仅无关紧要,而且因为这是伪代码,你甚至不知道它是如何实现的! (3认同)
  • @ferdystschenko:是的,但是伪代码都是关于抽象的 - 隐藏不必要的细节。在上面的例子中,第 6 行表示 u 将统一到 S 上,它的实现方式有什么关系呢? (2认同)

fer*_*nko 7

回答我自己的问题,我只想提请注意以下关于在LaTeX中排版伪代码的网页:http://www.tex.ac.uk/cgi-bin/texfaq2html?label = algorithm.他们描述了许多不同的风格,列出了优点和缺点.很可能,碰巧存在两个用于以Cormen的"Introductin to Algorithms"中使用的方式编写伪代码的样式表,如上所述:newalg和clrscode.后者是科尔曼自己写的.


Jör*_*tag 5

我建议你看一下Fortress Programming Language.

这是一种实际的编程语言,而不是伪代码,但它被设计为尽可能接近可执行的伪代码.特别是,为了设计语法,他们阅读并分析了数百篇CS和数学论文,课程,书籍和期刊,以找到伪代码和其他计算/数学符号的常见使用模式.

您可以通过查看Fortress源代码并抽象出您不需要的内容来利用所有研究,因为您的目标受众是人类,而Fortress是一个编译器.

以下是从NAS(NASA高级超级计算)共轭梯度并行基准运行Fortress代码的实际示例.为了获得有趣的体验,请将基准测试的规范与Fortress中的实现进行比较,并注意几乎是1:1的对应关系.还要比较其他几种语言(如C或Fortran)的实现,并注意它们与规范完全无关(并且通常也比规范长一个数量级).

我必须强调:这不是伪代码,这是实际工作的Fortress代码!堡垒代码示例http://ProjectFortress.Sun.Com/Projects/Community/raw-attachment/wiki/FortressQuestions/NAS-CG.png

编辑:上面代码示例链接已死.可以在这里找到类似的例子:https://umbilicus.wordpress.com/2009/10/16/fortress-parallel-by-default/

  • 我觉得很有趣,你认为这是一个清晰简单的语法.有什么区别:=和=?下标"max"是作为运算符还是只是表示法?伪代码应该是你可以向非专家解释的东西. (4认同)