我过去几年开发的仿真工具使用C++编写,目前具有tcl解释器前端。它被编写为可以在交互式shell中运行,也可以通过传递输入文件来运行。无论哪种方式,输入文件都是用tcl编写的(我添加了许多其他特定于仿真的命令)。这允许使用相当强大的输入文件(例如-当运行蒙特卡罗模拟时,随机分布可以直接编程为tcl过程)。
不幸的是,我发现与更现代的解释语言相比,tcl解释器变得有些受限,并且其语法似乎有点神秘。由于计算引擎是作为具有c兼容API的库编写的,因此编写替代前端应该很简单,我正在考虑转移到新的解释器,但我花了一些时间选择(主要是因为我没有太多使用经验许多解释语言)。我已经开始探索的选项如下:
继续使用tcl: 优点: - 无需更改现有代码。 - 现有输入文件保持不变。(尽管我可能会将tcl前端保留为选项) - 成熟的语言,有很多社区支持。 缺点: - 对语言语法感到受限。 - 用户抱怨学习tcl的困难。
Python: 优点: - 现代解释器,已知非常高效。 - 大型、活跃的社区。 - 知名的科学和数学模块,如scipy。 - 在学术科学/工程界常用(我的代码的典型用户)。 缺点: - 我从未使用过,因此需要时间学习语言(这也是一个优点,因为我一直想学习python)。 - 严格格式化输入文件(缩进等)。
Matlab: 优点: - 非常强大且广泛使用的数学工具 - 强大的内置可视化/绘图。 - 可通过社区提交的代码以及商业工具箱进行扩展。 - 许多在科学/工程学术界熟悉和舒适使用matlab。 缺点: - 无法分发为可执行文件-需要添加/工具箱。 - 需要matlab编译器(价格昂贵)。 - 需要matlab,这也是昂贵的。
这些优缺点是我能想到的,尽管我对解释语言的经验非常有限。如果您对我提出的解释器有任何想法,这里列出的优缺点是否合理,以及我没有考虑的任何其他解释器(例如-php是否适合此类任务?lua?),我很乐意听取您的想法。在您的代码中嵌入解释器的第一手经验绝对是一个加分项!
不幸的是,我发现与更现代的解释语言相比,tcl解释器变得有些受限,并且其语法似乎有点神秘。由于计算引擎是作为具有c兼容API的库编写的,因此编写替代前端应该很简单,我正在考虑转移到新的解释器,但我花了一些时间选择(主要是因为我没有太多使用经验许多解释语言)。我已经开始探索的选项如下:
继续使用tcl: 优点: - 无需更改现有代码。 - 现有输入文件保持不变。(尽管我可能会将tcl前端保留为选项) - 成熟的语言,有很多社区支持。 缺点: - 对语言语法感到受限。 - 用户抱怨学习tcl的困难。
Python: 优点: - 现代解释器,已知非常高效。 - 大型、活跃的社区。 - 知名的科学和数学模块,如scipy。 - 在学术科学/工程界常用(我的代码的典型用户)。 缺点: - 我从未使用过,因此需要时间学习语言(这也是一个优点,因为我一直想学习python)。 - 严格格式化输入文件(缩进等)。
Matlab: 优点: - 非常强大且广泛使用的数学工具 - 强大的内置可视化/绘图。 - 可通过社区提交的代码以及商业工具箱进行扩展。 - 许多在科学/工程学术界熟悉和舒适使用matlab。 缺点: - 无法分发为可执行文件-需要添加/工具箱。 - 需要matlab编译器(价格昂贵)。 - 需要matlab,这也是昂贵的。
这些优缺点是我能想到的,尽管我对解释语言的经验非常有限。如果您对我提出的解释器有任何想法,这里列出的优缺点是否合理,以及我没有考虑的任何其他解释器(例如-php是否适合此类任务?lua?),我很乐意听取您的想法。在您的代码中嵌入解释器的第一手经验绝对是一个加分项!