鄙视是无知啊。用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
这样的表达式,这就要求程序员额外记住一个 .*
操作符。如果各个模块都这么自己发明操作符,那简直是可读性和文档维护的灾难,这也是为什么在编程时要慎用操作符重载。
我了个去,为什么抖机灵的答案能破百…
欧阳锋是双雕里最牛逼的角色。
首先,杨康曾拜欧阳锋为师,一日为师终身为父。所以欧阳锋是杨康的爸爸。
穆念慈是杨康老婆,所以也要叫欧阳锋爸爸。
杨康与郭靖是金兰兄弟,兄弟的爸爸自然是一个人,所以欧阳锋也是郭靖的爸爸。
郭靖与老顽童是兄弟,所以老顽童要叫欧阳锋爸爸。
老顽童是老王的弟弟,所以老王要叫欧阳锋爸爸。
林朝英是老王的恋人,自然也要叫欧阳锋爸爸。
瑛姑是老顽童的姘头,所以也要叫欧阳锋爸爸。
一灯是瑛姑的丈夫,所以一灯也要叫欧阳锋爸爸。
全真七子是老王的徒弟,所以见了欧阳锋要叫爷爷。
耶律齐是郭靖黄蓉的女婿,也是老顽童的徒弟,所以要叫欧阳锋爷爷。
完颜萍是耶律齐的义妹,所以也要叫欧阳锋爷爷。
郭襄是郭靖黄蓉的女儿,所以要叫欧阳锋爷爷。
金轮法王是郭襄的师傅,可以视作父亲,所以欧阳锋是金轮法王女儿的爷爷,所以金轮法王要叫欧阳锋爸爸。
武三通是一灯的徒弟,所以要叫欧阳锋爷爷。
陆展元娶了是武三通的养女,所以要叫欧阳锋太爷爷。
陆立鼎和陆展元是兄弟,所以陆立鼎也要叫欧阳锋太爷爷。
所以陆无双要叫欧阳锋曾太爷爷。
程英与陆无双义结金兰,所以也要叫欧阳锋曾太爷爷。
黄药师是程英的师傅,也就是父亲,所以要叫欧阳锋太爷爷。
黄蓉是黄药师的女儿,所以也要叫欧阳锋曾太爷爷。
洪七公是黄蓉的师傅,所以要叫欧阳锋太爷爷。
综上所述,双雕里最牛逼的是欧阳锋。
杨过是杨康的儿子,所以要喊欧阳锋爷爷。
杨过是欧阳锋的义子,也就是儿子。
所以欧阳锋要喊欧阳锋爸爸。
其实我还有另一个胡说八道的答案