Mathematica 有哪些不如 MATLAB 的地方?
1 Mathematica没有workspace,查看已定义变量不是太方便。2 Mathematica的debug功能让人蛋疼。
3 Mathematica不支持OOP(面向对象编程)。
4 Mathematica是黑箱,用户无法看到函数代码,也无法修改代码,而MATLAB大部分函数是有源代码的,可以看到代码,可以修改代码。
https://wenwen.sogou.com/z/q705208067.htm
我到现在都不知道如何用mma调试,太渣了!我只能用print变量的办法 本帖最后由 kastin 于 2019-3-18 14:30 编辑
两者根本不是一种类型的语言,很难直接比较,各有各的优点。
首先,MMA创始人刚开始就是为了设计一种函数式编程语言来方便处理数学公式以及符号操作的,自然不适合面向对象方式编程。
其次,符号变量操作里面会存在惰性求值过程,并且符号操作产生的很多值并非数值类型,workspace这种功能作用不大。另外,根据函数式编程的精神,如果想要类似workspace实时观察变量值的功能,理论上可以写一个函数,其输入参数为所需要的变量名,返回的是实时值列表(当然可能需要需要Dynamic的特性)。
debug功能同理,这是其函数式语言特性决定的,也是采用函数实现。不过好在官方提供了调试工具(有断点、步进、步入、步出等等功能),学会使用这个工具,就方便多了,可以具体指导出错在哪一个语句,语句内部执行是怎么样的,具体局部变量值是多少(https://note.youdao.com/ynoteshare1/index.html?id=556026c5dda745eb3b9de92e4dac338b&type=note#/)。不会用就多看资料,听说弱者只会吐槽埋怨。
关于黑箱问题,其实matlab里面很多也是内建(built-in)函数,不过大多是极为底层的或者对于算法效率要求较高的函数会用这种形式,MMA则不然,大部分函数都是内建的,自然看不到源代码,这是因为这些函数涉及大量符号操作化简和推理过程,而这些过程对于效率要求较高,自然适合内建了;并且很多函数本身功能非常强大和“智能”的原因就在于它内部对于很多情况都进行了(规则)考虑,这种源代码长度在官方给出的资料中说是有上千页(比如常微分方程的求解函数DSolve),至于其他很多函数也是上百页的长度,写成脚本形式不仅执行效率低而且阅读也不方便。另外,每个函数里面几乎都是用当今数学相应领域的前沿算法,不是精通这个数学领域的专家,是很难对算法中的局部进行改动而执行不报错的,MMA本身就是为了让普通人包括学生能够用习惯的数学语言去操作,省去中间的复杂算法考虑,直接快速得到结果。综合以上原因,写成脚本形式的函数没有那个必要。
kastin 发表于 2019-3-18 14:28
两者根本不是一种类型的语言,很难直接比较,各有各的优点。
首先,MMA创始人刚开始就是为了设计一种函数 ...
并非只有你才会用搜索引擎,那文章我早就看了,但是奈何我操作不起来,
虽然我会操作很多软件的调试,比如VB vba,但是我就是操作不起来
mathematica的调试
页:
[1]