哪种编程语言最好地弥合伪代码和代码之间的差距? [关闭]

Posted

技术标签:

【中文标题】哪种编程语言最好地弥合伪代码和代码之间的差距? [关闭]【英文标题】:What programming language best bridges the gap between pseudocode and code? [closed] 【发布时间】:2010-10-31 12:31:59 【问题描述】:

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

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

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

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

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

【问题讨论】:

我一直认为 Ada 看起来更像是伪代码而不是代码。 :-) What programming language is the most English-like?的可能重复 【参考方案1】:

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

【讨论】:

说实话我从来没有用 Lisp 写过伪代码。我可以想象它会有多棒,因为我几乎可以写任何我想要的东西,然后把它全部变成宏。 我必须同意凯的观点。我从未见过用 Lisp 之类的东西编写的伪代码(不过,在这个世界上并没有那么多类似于 Lisp 的东西 :-) 他们还说伪代码是供人类阅读的——我不认为很多人能做到轻松跟随 Lisp。 听起来你同意 pgb 对我的看法 :) 如果程序变得太大,Lisp 很难接受,但无论如何它并不意味着面向大型团队的编程。对于编写代码的人来说,它看起来不那么混乱,而且当我使用 Lisp 时,我的想法真的很流畅。 我记得我在大学上过的一门课;我们的导师给了我们一个伪代码示例,并要求我们用我们最喜欢的编程语言编写它。我走到黑板上,在两行末尾加上冒号,然后坐下。 “哦......对...... Python”我们的导师用干巴巴的声音说:-P【参考方案2】:

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

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

你可能还会觉得Eiffel很有趣:

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

【讨论】:

非常有趣!我肯定会调查这些。【参考方案3】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

领先我几秒。是的,特别是在数学家中——我现在与他们交谈时发现的大多数伪代码仍然看起来像 Pascal。【参考方案5】:

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

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

你已经提到了,但是..

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

【讨论】:

我不同意。 Python 可能有一个干净的语法,但它不适合伪代码。因为伪代码必须易于翻译成您选择的语言,而 python 很大程度上依赖于后端库,因此将其翻译成其他语言可能会很困难。编写伪代码时最好使用几乎没有“落后”的语言。当然,这一切都只是恕我直言。 我喜欢 python 的一件事是你如何做到这一点:x = 0 if stuff else 1【参考方案8】:

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

【讨论】:

【参考方案9】:

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

【讨论】:

【参考方案10】:

你可以试试 Flash 的 Actionscript。

【讨论】:

【参考方案11】:

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

【讨论】:

【参考方案12】:

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

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

【讨论】:

【参考方案13】:

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 = [] ;

【讨论】:

以上是关于哪种编程语言最好地弥合伪代码和代码之间的差距? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从通用浏览器访问智能卡的架构?或者:如何弥合从浏览器到 PC/SC 堆栈的差距?

TypeScript

啥是伪代码?假的代码??是代码吗??

实战案例:使用Python开发一个Python解释器

Cython 是用于构建 C 代码还是用于构建 Python 扩展?

树和森林