在算法书中选择编程语言?

Der*_*unk 7 algorithm programming-languages

关于我之前关于算法书的持久属性的问题,请看这里,现在我想问一下社区你会用什么语言来编写这样一本参考书的例子.

我可能不会使用MMIX(!)来编写本书的示例,但与此同时,我认为伪代码不如真实语言中的示例有趣.

不过,我也希望这本书也成为研究人员的资源.什么可以是社区的选择?为什么?

:我知道这是一个棘手的问题,并且会有几个不同的答案.请注意,答案涵盖了从Assembly/MMIX(!!)到Python和伪代码的整个范围.投票和争论迫使我选择Uri的明智答案,但有一点需要注意:我的伪代码将尽可能接近C(当然不会涉及平台特定问题),我可能会讨论更好的实现在旁注中(正如我们所有人都知道的那样,在数学上证明算法的工作原理远远不是实现它的问题).

这本书是关于特定领域的算法,而不是一般算法的数学(更聪明的人已经完成并且在一般算法上会做得比我好得多).因此,我认为有一件事会增加这样一本书的价值是算法的存储库,我肯定会把它放在一个配套的网站上(如果我找到时间,可能会用几种语言).

感谢所有的答案.我有时觉得我应该把所有回答的人都作为共同作者.:)

Uri*_*Uri 13

一本关于算法的好书应该用psueod-code a-la-CLR编写...

根据我的经验,大多数用于语言特定示例的书籍最终看起来更像是本科课本,而不是像严肃的参考书或学习书籍.此外,大多数语言在处理集合时都相当笨重(特别是C++和Java,甚至是泛型).在所有细节之间,失去了太多.您还可以立即消除大量潜在受众.

语言特定书籍的唯一优势是,如果您正在编写教科书,发布者可以附加CD并向MSRP添加50美元.

我从(可读的)伪代码中理解算法更容易.如果我无法弄清楚如何使用我自己的收藏品用我的语言来实现它,我无论如何都会遇到麻烦.

您可以添加到每个伪代码中,列出有关特定语言的实现细节的注释(例如,在Java中使用TreeSet以获得最佳性能等)

您还可以为本书维护一个单独的网站(无论如何都是好主意),您将在其中实际使用不同语言.无需使用长打印输出来杀死树木.

  • 伪代码附带的代码应以电子形式提供,最好通过网站提供.减少纸张浪费,更容易复制和粘贴,更容易更新勘误表和编程约定. (2认同)

小智 10

使用真正的编程语言 - 绝不是伪造的.读者非常怀疑伪代码,读者喜欢真正的编程语言.使用伪语言的陷阱是您可以定义读者无法用他们选择的语言表达的代码概念

真正的编程语言有许多优点:

1)您可以测试您的代码,希望证明您的代码正确!

2)您可以将该代码导出为已发布的格式,以便插入到您的书中,确保任何关注您代码的人都会查看实际的可执行代码.

3)你不必为你的psuedo代码辩护.

语言的选择显然是主观的,但我认为几乎可以使用任何现代语言,但我建议在快速理解方面具有"开销最小"的语言.并且优选地,读者可以获得编译器/解释器.如果你想使用C,那么也许你应该看看D.改进了C.

例如,如果你保持代码"简单",而不是Java(需要太多的支持库),那么在这种情况下,Ruby就是这种情况,在较早的时候,Pascal会成为候选者.

顺便说一句:我现在不使用Ruby,因为我目前使用的是Smalltalk和REBOL,但我不会在书中使用这两种语言.你的书会直接进入剩下的垃圾箱!