我同意JavaScript并不适合科学计算的评论。但是,你最了解自己的需求,可能已经找到了有用的库来完成你需要的工作。只是要注意,你将不得不自己实现所有逻辑。JavaScript没有内置的处理复数、矩阵或积分等复杂数学运算的功能。通常程序员的时间比机器时间更有价值。个人而言,我会考虑编译语言;在我使用最喜欢的语言创建了第一个速度不够快的版本之后再考虑。
假设JavaScript是正确的选择:
数据输入/输出
我能想到三种选项:
使用ajax将数据发送和接收到服务器
这似乎是你在Server2go中找到的解决方案。它要求你编写一个服务器后端,但可以保持相当简单。它实际上只需要能够读取和写入文件以响应于你客户端应用程序的请求就可以了。
使用包含文件I/O的v8的非浏览器实现
例如Node.js。然后你可以避免需要一个服务器,只需使用命令行界面,所有代码都将是JavaScript。除此之外,它与第一种选项大致相同。
使用文件API创建一个文件对象,然后要求用户保存或加载它
在我看来,这是最差的选择,因为需要用户交互。它可以避免需要服务器;你的应用程序可以是一个简单的HTML文件,通过ajax请求加载所有数据文件。你需要使用特殊开关启动Chrome,以允许ajax请求使用file://
协议,详见这里。
这些选项仅涉及文件I/O,而JavaScript无法执行文件I/O操作。这是因为浏览器不能允许任意的Web代码进行任意的文件I/O操作,安全问题会非常严重。每个选项介绍了一种不进行文件I/O操作的方法。
第一个选项是与执行客户端文件I/O操作的服务器通信。
第二个选项使用“特殊”版本的JavaScript,具有不同于浏览器的条件,因此安全影响不重要。但这意味着您必须查找实际使用的实现中如何进行文件I/O操作,这在JavaScript中并不常见。
第三个选项需要用户控制文件I/O。
界面
即使您不使用JavaScript来执行实际处理(目前是共识),也没有阻止您使用浏览器作为接口或使用JavaScript库进行可视化。这是JavaScript擅长的事情。
如果您想交互式地控制数据挖掘工具,则需要一个可以控制该工具的服务器。Server2go应该可以使用,或者如果您使用Node.js则可以使用内置的服务器...。如果您不需要交互式控制数据工具,即首先生成处理后的数据,然后查看数据,可以通过使用file//:
协议和JSONP来避免使用服务器。但是,真正的目标不应该是避免使用服务器。
我不会详细介绍界面问题,因为没有什么具体的要说的,而且几乎关于JavaScript编程的所有内容都与界面有关。
其中一件事,请使用像Angular.js或Knockout.js这样的声明式数据绑定库。