【问题标题】: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 社区拥有非常广泛的受众,并且很可能会推荐我不会遇到的语言和技术。

【问题讨论】:

标签: pseudocode


【解决方案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 = [] ;
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-03-05
                    • 1970-01-01
                    • 2010-09-09
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-10-25
                    相关资源
                    最近更新 更多