媒介尝试algorithm?
根据定义,algorithm与运行的介质无关。 例如,我使用Excel表格来播放数据结构,并在用编程语言实现algorithm之前做一些移动/改组/标记实验。
你用什么工具和技术来devise和模拟algorithm的function? 你如何使用绘图程序? 一种特殊的规范语言?
algorithm独立于语言,是真实的。 但是你使用的任何媒体都是一种语言,句号。 使用Excel意味着你正在使用Excel的“语言”(行,列,单元格等)来expression你的一些algorithm。 也许不是完整的成品,但是你已经在Excel中expression了它。
UML图是用于表示algorithm的语言。 纸上的素描是expression的语言。 柏拉图理想algorithm很难从所有具体的表示中分离出来。 不pipe你做什么,你都用某种语言来expression。
诀窍是将algorithm从特定的语言function和限制中分离出来。
任何“非正式”符号都可以帮助您做到这一点。 英语(或其他自然语言),math,图表等等都是用一种没有执行怪癖和问题的语言expressionalgorithm的候选者。
我从英文的概述开始。 纯文本,甚至没有MS-Word或格式是一个分心的东西。
对于非常复杂的事情,一点补充math有助于在程序状态上作出正式的断言。
此外,UML图帮助。 我使用Argo UML – 便宜有效。
有关此主题的更多信息,请阅读正式validation系统。
我通常在纸上画出来,然后在Common Lisp中快速实现,并在REPL上进行testing。
我不使用这样的工具,但是在Java中实现它之前,我经常会在高级脚本语言(如groovy)中粗略地使用algorithm。
我发现用更高级别的脚本语言你不必担心这么多的语言,你可以更关注algorithm。 然后,当你已经certificate了algorithm,你可以移植一个更加严格的语言。
我通常使用白板(我有一个在工作,两个在家)画出粗略的algorithm,并尝试一个非常小的问题。 如果我需要编写代码,我用Python编写一个原型。
当我需要编写正式的规范文档时,我通常只使用绘图程序。 这些通常显示比algorithm更高层次的devise,就像使用Visio for UML图表一样。
我想这取决于algorithm的复杂性。
通常我会在一些纸上画一个stream程图。 有一些优秀的图表工具可用,但我还没有find一个像一张纸上的老式草图一样快。
除此之外,我经常会在VB.NET窗体或控制台应用程序中,将algorithm模拟成一个“快而脏”的模型。 有了像LINQ到SQL这样的更新function,甚至可以在很短的时间内将依赖数据库访问的原型放在一起。
根据定义,algorithm与运行的介质无关。
那是什么定义? 是谁做的? 他们是否知道漏抽象 ?
好的algorithm必须经常知道他们正在使用的平台。 如果不是这样,程序将自动并行化为GPU,并且可以毫不费力地重写成在量子计算机上工作。
也就是说,许多基础algorithm确实是平台无关的。 奇怪的是,我真的觉得用C ++来操作algorithm是最舒服的。 但是,当我这样做的时候,我很大程度上依赖于高度的抽象,所以我不玩弄指针或类似的东西。 另一方面,STL实际上提供了一个相当丰富的工具来玩弄algorithm。
而且和Bill一样,我用白板很多。 我的客厅里实际上有一个1米* 2米的白板。 爬行。 😉
我通常使用Python实现algorithm。 我会完全忽略任何理智的编码准则 – 例如,我不会创build类来存储我的数据,但我只是创build更大,更大的元组来包含我所有的信息,并代表一个“对象”。 这只是为了尽快获得algorithm的工作版本。 一旦我理解了,我将以更为理智的方式在目标语言中实现它。