鄙视是无知啊。用MATLAB的,基本上不是程序员,根本不鸟这事。
对程序员来说,代码是产品,这个产品要被执行成百上千次,所以必须考虑代码的质量和效率。
对用MATLAB的人来说,代码是工具,代码的执行结果才是产品。只要有结果,前面怎么来的当然是越简单、越省时间最好。代码只需要执行几次或几十次,讨论执行效率的意义很小,编程效率才是首要的。
打个比方,产品设计中要估计一个参数值,但是这个参数没那么好算。
若按程序员的思维,那就是整理逻辑、确定算法、写程序、优化、测试。编程花一周,执行1秒钟得到结果。
按工程师的思维,老子用MATLAB写个简单的仿真模型,拿所有可能的参数都仿一遍。编程1小时,执行1小时得到结果。后面那1小时还不需要我干活,可以顺便写个文档、回个邮件什么的。比上面精心设计一个程序有效率多了。
反过来说,如果也用其他语言按上面的参数扫描法仿真呢?当然编程效率也能提高,但是MATLAB里太多函数库是现成的,根本不需要你写;而用普通的高级语言,你得从头造轮子。Python还好,但那也是因为python在科学计算方面全面仿MATLAB。
你跟我说MATLAB太随意、太吃内存、太慢,我不在乎。它可以省我1周的时间啊。
作为一名码农,我确实认为Matlab不是一门优秀的程序语言,但我并不鄙视Matlab,硬要说的话也是鄙视仅把Matlab当作一门编程语言的人。
比起程序语言,Matlab更应该视为一整套强大的数值科学计算产品,它强在其工具链和生态,在专业领域里,拿Matlab来对比通用编程语言就是欺负人,但反过来,把这个产品中最弱的一环:.m文件里那坨语法垃圾的脚本,视为Matlab的本体,作为一门编程语言,拿来和C++、Java、Python这些通用语言做对比,那既是对Matlab,也是对其它编程语言的亵渎。
当让,如果纠正说辞,仅从程序的角度,单独把Matlab的.m文件里那坨脚本拎出来评价,只是鄙视一下巨人的脚趾头那倒是可以理解的。因为那坨脚本真的没资格与现代编程语言,或虽然古老但仍然活跃在现代的编程语言并提。当然你要硬拿它和那些几乎被时代淘汰的,处在鄙视链底端的语言比较,它还是不错的。
以上,主要观点完毕。Matlab的优势其他回答已经说了很多了,那我就来说说,为什么从程序的角度,.m那坨脚本比较容易受人鄙视。
一份Matlab“代码”,相比于其它语言代码,看起来更“数学范儿”。数学范儿的运算符,数学范儿的表达式,对于数学领域非常友好,但从编程领域看就有点不敢恭维了。编程领域和数学领域对计算的基础单位——表达式的要求是不同的。举个极端的例子,比如说大名鼎鼎的Lisp
的语法是这样的:没有真正的运算符,一切都是函数,都是前缀表达式。它的四则运算是这么写的: (+ 1 2 3)
,转换成常见的 函数名(形参列表)
的语法相当于 add(1, 2, 3)
。当然,大部分现代编程语言中还是有比较友好的 1 + 2 + 3
的语法的,但这很能说明问题:编程语言往往具有更加“一致性”的语法,更一般的对比有:math.pow(a, b)
vs a ^ b
, np.dot(a, b)
vs a.*b
等。
在数学中,一个表达式有各种奇奇怪怪的书写,一会儿前缀语法,一会儿中缀,一会儿又后缀,还有各种角标、下标和特殊排版,这些设计对于数学的表达来说往往很简洁有力,体现在Matlab脚本中,就是你时常会看到一些“不一致”的语法与表达式,比如各种奇怪的符号组合,各种奇怪的函数调用,总之代码中充斥着许许多多的“注意事项”。
但对于编程来说,纯数学表达是很别扭的,可以想象一下用键盘敲一个数学表达式,想象不出的可以想象一下用LeTex写一般程序。符号的输入与排版是一方面,另一方面是编程语言更注重一致性,减少特例降低心智负担。拿前面说的np.dot(a, b)
举例, 程序员只要掌握了函数,那么去查手册看np
模块的dot
函数是做什么怎么用的就行。但如果是 a.*b
这样的表达式,这就要求程序员额外记住一个 .*
操作符。如果各个模块都这么自己发明操作符,那简直是可读性和文档维护的灾难,这也是为什么在编程时要慎用操作符重载。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有