尝试算法的媒介?

时间:2008-11-28 12:17:16

标签: algorithm excel simulation specifications

根据定义,算法独立于它们运行的​​介质。例如。在使用编程语言实现算法之前,我使用Excel表格来处理数据结构并进行一些移动/改组/标记实验。

您使用哪些工具和技术来设计和模拟算法的功能?你如何使用绘图程序?一种特殊的规范语言?

7 个答案:

答案 0 :(得分:3)

我通常在纸上画出来,然后尝试在Common Lisp中快速实现并在REPL上测试它。

答案 1 :(得分:3)

算法与语言无关,是真的。但是你使用的任何媒介都是一种语言,时期。使用Excel意味着您使用excel“语言”(行,列,单元格等)来表达您的一些算法。也许不是完整的成品,但你已经在Excel中表达过了。

UML图是用于表达算法的语言。纸上的草图是表达的语言。将柏拉图式理想算法与所有具体表示分开是很困难的。无论你做什么,你都会用某种语言表达它。

诀窍是将算法与特定的语言特征和限制分开。

任何“非正式”符号都有助于实现这一目标。英语(或其他自然语言),数学,图表等都是用一种语言来表达算法的候选者,这种算法没有实现怪癖和问题。

我从英文概述开始。纯文本,甚至不是MS-Word或格式化是干扰器的东西。

对于非常复杂的事情,一些补充数学有助于在程序状态周围形成正式的断言。

此外,UML图有所帮助。我使用Argo UML - 便宜又有效。

有关此主题的更多信息,请阅读formal verification系统。

答案 2 :(得分:2)

我不使用这样的工具,但是在Java中实现它之前,我常常会在高级脚本语言(如groovy)中粗略化算法。

我发现使用更高级别的脚本语言你不必太担心语言,你可以更专注于算法。然后,当您验证了算法后,您可以将其移植到更严格的语言中。

答案 3 :(得分:2)

我通常使用白板(我有一个在工作,两个在家)来勾画粗略的算法,并尝试一个非常小的问题实例。如果我需要编写代码,我会用Python编写一个原型。

当我需要编写正式的规范文档时,我通常只使用绘图程序。这些通常比算法显示更高级别的设计,例如使用Visio for UML图。

答案 4 :(得分:0)

我想这取决于算法的复杂程度。

我经常会在某些纸上绘制流程图的快速草图。有一些很好的图表工具可供选择,但我还是没有找到一张像纸上那么好的老式素描一样快的工具。

除此之外,我经常最终在VB.NET窗体或控制台应用程序中拼凑出一个非常“快速而又脏”的算法模型。借助LINQ-to-SQL等一些最新功能,您甚至可以在很短的时间内将依赖于数据库访问的原型组合在一起。

答案 5 :(得分:0)

  

根据定义,算法独立于它们运行的​​媒体。

那是什么定义?谁干的?他们是否了解leaky abstraction

好的算法必须经常知道他们正在使用的平台。如果不是这样,程序将自动可并行化为GPU,并且可以毫不费力地重写以在量子计算机上工作。

尽管如此,许多基本算法确实与平台无关。奇怪的是,我觉得使用C ++来摆弄算法感觉最舒服。然而,当我这样做时,我严重依赖于高水平的抽象,所以我不会玩指针或类似的东西。另一方面,STL实际上提供了一个非常丰富的工具包来使用算法。

而且,比尔,我使用我的白板很多。我居然在客厅里有一块1米* 2米的白板。爬行。 ; - )

答案 6 :(得分:0)

我通常在Python中使用实现该算法的东西。我将完全忽略任何理智的编码指南 - 例如,我不会创建用于存储数据的类,但我只会创建越来越大的元组来包含我的所有信息并表示'对象'。这只是为了尽可能快地获得算法的工作版本。一旦我理解了它,我将以更加理智的方式在目标语言中实现它。