1
13
一本关于算法的好书应该用psueod代码a-la-clr编写… 根据我的经验,大多数涉及语言特定例子的书籍最终看起来更像本科教材,而不是严肃的参考书或学习书籍。此外,大多数语言在处理集合(尤其是C++和Java,甚至泛型)时都相当笨拙。在所有的细节之间,太多的东西是丢失的。你也会立即消除很多潜在的听众。 语言专著的唯一优势是,如果你写的是一本教科书,出版商可以附上一张CD,并增加50美元的MSRP。 我更容易从(可读的)伪代码中理解算法。如果我不知道如何用我自己的语言来实现它,我无论如何都会遇到麻烦。 您可以添加每个伪代码,列出关于特定语言实现细节的注释(例如,使用Java中的树集以获得最佳性能等)。 您还可以为本书维护一个单独的网站(不管怎样,这是个好主意),在那里您可以使用不同的语言进行实际的实现。不需要用长的打印输出来杀死树木。 |
2
10
使用真正的编程语言——不要使用psuedo语言。读者非常怀疑 对于psuedo代码,读者喜欢真正的编程语言。psuedo语言的陷阱是,您可以定义代码概念,读者无法在他们选择的语言中实现这些概念。 真正的编程语言有许多优点: 1)您可以测试您的代码,希望能够证明您的代码是正确的! 2)您可以将该代码导出为已发布的格式以插入您的书中, 确保任何跟踪您代码的人 实际可执行代码。 3)您不必为psuedo代码辩护。 语言的选择很主观,但我认为几乎所有现代语言 可以使用,但我推荐一个在快速理解方面开销最小的方法。最完美的是,读者可以得到一个编译器/解释器。 如果你想使用C,那么也许你应该检查一下D。一个改进的C。 例如,如果您保持代码“简单”,ruby就是这种类型的, Java不是(需要支持的库太多), 在早些时候,帕斯卡将成为候选人。 顺便说一句:我现在不使用Ruby,因为我目前使用的是smalltalk&rebol,但我不会使用 书中的任何一种语言。你的书会直接送到剩余的箱子里! |
3
2
我会避免任何抽象任何特定算法的核心“力学”的东西 |
4
2
在Knuth用汇编语言呈现算法的过程中,有一个巨大的好处。当我们用更高级的语言编写算法时,它迫使读者仔细考虑硅中到底发生了什么。特别是对于系统程序员来说,这种理解是无法用任何其他方式获得的。 Knuth的新MMIX是理想的:将其视为汇编级伪代码。 我理想的教科书应该有用伪代码和MMIX编写的算法,这样我们就可以看到算法的复杂形式。伪代码应该优先于“真正的语言”,因为它回避了“你应该使用这种语言而不是那种语言”的无意义的战斗。在这个阶段,伪代码不需要防御——现存最好的算法教科书要么使用伪代码,要么在Knuth的例子中使用一种汇编伪代码。 |
5
2
这个选择并不能取悦所有人。 罗伯特·塞奇威克写了他的 "Algorithms in..." books in multiple languages . 我有一个C版本的课程,并购买了C++版本时,我开始工作与C++在工作。 你不能逃避语言特性(甚至是伪语言特性)。 为了尽量取悦更多的人,你可以选择两种语言,一种是功能语言,另一种不是。这有助于说明算法选择的动机。 |
6
1
C样式经常被使用,因为许多语言使用非常相似的样式,所以大多数程序员不用解释就能理解它。此外,示例可以在任何带有C编译器的机器上运行——这几乎是每台机器。 然而,更高层次的概念通常需要使用更新的技术和技术——OO、函数式编程等。 这些通常用具有所需特性的语言表示。Java,C,Erlang,艾达等等——大多数优秀的程序员会用一点点解释来理解正在发生的事情。 但是C几乎是一个普遍的基础——如果你采用C风格的例子,你就不会出错。 -亚当 |
7
1
我不会使用任何特定的语言。使用一种对大多数做过一点编程的人都很清楚的伪语言。通常这些书使用接近C风格的东西,但这不是一个规则。我知道你说过你不想使用伪代码,但这会让你接触到更广泛的读者。 |
8
0
我会使用一些可以让你准确表达算法背后的想法的东西。 haskell非常简洁,但是我认为使用状态的算法,它会妨碍您的工作,而且您将更专注于语言而不是算法。 我不会使用C或它的后裔(C++,C语言,Java……),因为当你的算法在本质上更“实用”时,它们会阻碍你的前进。同样地,您将更专注于语言而不是算法。如果没有高阶函数的话,我会觉得很不舒服。 所以,基本上,我会使用一种你熟悉的多范式语言,并且你有信心不用深入语言细节就能表达算法。 我个人的选择是类似于普通的Lisp,但也许python或scala也是可行的。 |
9
0
巨蟒是个不错的选择。它是非常可读的,即使你以前没有在它编程。另外,它比其他一些常见的语言选择要少得多。 |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
Manny · 如何比较Perl中的字符串? 2 年前 |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |