【发布时间】:2011-06-13 04:03:01
【问题描述】:
我正在尝试编写一个非常繁重的基于数学的项目,它每天会解析大约 100MB+ 的数据多次,因此,我需要一种非常易于使用的快速语言。我会选择 C,但是,用 C 完成一个大型项目非常困难,尤其是在低级编程阻碍你的情况下。所以,我是关于 python 或 java 的。两者都配备了面向对象的功能,所以我不介意。现在,这是我选择 python 的优点:
- 非常易于使用的语言
- 拥有相当大的有用资料库
- 有一个易于使用的绘图库
以下是缺点:
- 不完全是炽热
- 没有处于活动状态的本机 Python 神经网络库
- 我无法关闭我的代码而不经历相当多的麻烦
- 在客户端计算机上部署 python 代码很难处理,尤其是当客户端是白痴时。
以下是选择 Java 的优点:
- 巨大的图书馆
- 很好的支持
- 易于部署
- 相当快,甚至可以与 C++ 媲美
- Encog 神经网络库非常活跃,非常棒
- 网络支持真的很好
- 强类型
以下是 Java 的缺点:
- 我找不到像 matplotlib for python 这样好的图形库
- 没有对大整数的内置支持,这意味着另一个依赖项(我的意思是真正的大整数,而不仅仅是 math.BigInteger 大小)
- 与 Python 相比,文件 IO 有点尴尬
- python 没有大量的数组操作或“简化编程”类型的功能。
所以,我希望你们能告诉我要使用什么。我同样熟悉这两种语言。此外,其他语言的建议也很棒。
编辑:哇!你们很快! 30 分钟,10 条回复!
【问题讨论】:
-
“真正的大整数”是什么意思? java.math.BigInteger 将增长到存储您正在处理的数字所需的任何大小(虽然因为 Java 没有运算符重载,但代价是语法有些尴尬)
-
您是否考虑过使用“真实的”computer algebra system?它不一定是 Mathematica(昂贵!),有很多更便宜的,甚至是免费的选择。
-
只是想知道“我的意思是真正的大整数,而不仅仅是 math.BigInteger 大小”的评论。为什么你认为 java.math.BigInteger numbers 不会这样做?在我看来,在你开始达到极限之前,你的记忆力就已经出现了问题。
-
创建一个可执行文件 + 所需的库是小菜一碟,例如cx_冻结。结果无法破译,除非有熟练的人真的愿意这样做(在这种情况下,无论如何你都被搞砸了,几乎不管语言如何)——更不用说通常反对“我想隐藏我的来源”了。
-
你应该列出你的优先事项:关闭源代码是必须的吗?你有多少时间?顺便说一句:Python IS 是强类型的,但不是静态的。