11

从现在开始编写代码时,我计划首先用漂亮、可读的伪代码布置所有内容,然后围绕该结构实现程序。

如果我将我目前知道的语言从最容易翻译到最难翻译,我会说:

Lisp、Python、Lua、C++、Java、C

我知道每种语言都有其优点和缺点,但我特别关注伪代码。您使用哪种语言最适合伪代码到代码?我总是喜欢学习新的语言。此外,如果您目前使用这种技术,我很想听听您对构建实用伪代码的任何提示。

注意:我觉得这是主观的,但根据个人喜好有一个明确的答案。我在这里问这个问题是因为 SO 社区拥有非常广泛的受众,并且可能会建议我不会遇到的语言和技术。

4

13 回答 13

15

我会首先评价 Python,而不是 Lisp,因为大多数人不使用前缀括号语法编写伪代码 :)

于 2009-06-05T00:09:18.017 回答
7

Pascal 在那种伪代码描述中比较流行。

于 2009-06-05T00:12:19.493 回答
7

你可能对Literate Programming感兴趣,你写的“源代码”更像是写一本书,但它是一本可以“缠结”成真实代码或“编织”成格式化文档的书。

请参阅http://www.literateprogramming.com/cweb_download.html提供的示例。

您可能还会发现埃菲尔很有趣:

“... Eiffel 回避旨在作为编译器优化提示的编码技巧或编码技术。其目的不仅是使代码更具可读性,而且还允许程序员专注于程序的重要方面而不会陷入困境实施细节……”

于 2009-06-05T00:24:47.300 回答
4

我认为这完全取决于伪代码的风格。讽刺的是,我在算法教科书中看到的很多伪代码看起来都像 Pascal。帕斯卡一直被认为是一种很好的教学语言。

于 2009-06-05T00:10:25.520 回答
2

是我认为第一次将 python 引用为“可执行伪代码”的链接。本文转载自澳大利亚墨尔本 PC 用户组杂志《PC Update》2001 年 8 月号。

于 2009-06-05T00:34:39.620 回答
1

在为 .NET 测试少量代码时,我发现Boo已成为我的“伪代码”语言。非常类似于 Python 类型语法。

于 2009-06-05T00:08:38.533 回答
1

你已经提到了,但是..

Python 有非常清晰的语法。它非常接近伪代码并且易于阅读。

于 2009-06-05T00:10:04.630 回答
1

我认为你有这种倒退,有点。这个问题的问题在于,您倾向于使用与您计划用于实际代码的语言近似的伪代码。任何想要创建伪代码语言的人(比如世界语?)是常用编程语言的混合物。

于 2009-06-05T00:50:19.540 回答
1

TCL 语法很容易最像伪代码。在可读性和表达更典型的汇编代码的较低级别操作方面,命令胜过函数。同时,高级算法也很容易阅读。语法的统一性允许用户专注于步骤而不是语言工件。我什至会说数学运算的“expr”关键字是一个优势,因为它清楚地描述了程序的数学部分和算法部分。更少的符号被重载,像“set”这样的词被用来代替它们。这是伪代码的又一次胜利。与任何其他语法相比,TCL 跨越了函数式和命令式风格之间的鸿沟。

于 2011-07-06T15:48:22.110 回答
0

你可以试试 Flash 的 Actionscript。

于 2009-06-05T00:31:06.693 回答
0

我会说 lua 最适合从伪代码进行翻译(在大多数情况下)。只要变量命名良好,lua 就可以被大多数程序员轻松读取,而且速度也非常快!

于 2009-06-05T00:32:56.673 回答
0

我同意 Nosredna 的评论,即 Ada 看起来非常像伪代码。

如果您不介意 Ada 需要的所有额外输入,我认为这是一种很棒的语言,因为代码确实意味着它所说的内容。

于 2009-06-05T01:38:19.430 回答
0

Prolog 是您可能不会遇到的东西。它一起回避了伪代码的问题。从某种意义上说,没有代码。只有事实和规则。

例如,附加谓词就是我们对列表的了解,如下所示:
将列表 Y 附加到空列表产生 Y。

append([], Y, Y).

如果将 Xs 附加到 Ys 会产生 Zs,那么我们可以将相同的值附加到 Xs 和 Zs 并且关系仍然成立。

append([X|Xs], Ys, [X|Zs]) :- append(Xs, Ys, Zs). 

我们实际上还没有编写过代码。我们刚刚说了我们对附加列表的了解。但现在我们可以让 Prolog 追加 2 个列表:

?- append([1,2],[3,4],Z).
Z = [1, 2, 3, 4].

或者给 Prolog 一个列表,让它告诉我们可以附加哪些列表来获取目标列表:

?- append(X,Y,[1,2]).
X = [],
Y = [1, 2] ;
X = [1],
Y = [2] ;
X = [1, 2],
Y = [] ;
于 2010-04-28T01:36:48.720 回答