百科问答小站 logo
百科问答小站 font logo



为什么有些程序员会鄙视MATLAB? 第1页

  

user avatar   juan-ji-yun-5 网友的相关建议: 
      

鄙视是无知啊。用MATLAB的,基本上不是程序员,根本不鸟这事。

对程序员来说,代码是产品,这个产品要被执行成百上千次,所以必须考虑代码的质量和效率。

对用MATLAB的人来说,代码是工具,代码的执行结果才是产品。只要有结果,前面怎么来的当然是越简单、越省时间最好。代码只需要执行几次或几十次,讨论执行效率的意义很小,编程效率才是首要的。

打个比方,产品设计中要估计一个参数值,但是这个参数没那么好算。

若按程序员的思维,那就是整理逻辑、确定算法、写程序、优化、测试。编程花一周,执行1秒钟得到结果。

按工程师的思维,老子用MATLAB写个简单的仿真模型,拿所有可能的参数都仿一遍。编程1小时,执行1小时得到结果。后面那1小时还不需要我干活,可以顺便写个文档、回个邮件什么的。比上面精心设计一个程序有效率多了。

反过来说,如果也用其他语言按上面的参数扫描法仿真呢?当然编程效率也能提高,但是MATLAB里太多函数库是现成的,根本不需要你写;而用普通的高级语言,你得从头造轮子。Python还好,但那也是因为python在科学计算方面全面仿MATLAB。

你跟我说MATLAB太随意、太吃内存、太慢,我不在乎。它可以省我1周的时间啊。


user avatar   zhengxiaoyao0716 网友的相关建议: 
      

作为一名码农,我确实认为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这样的表达式,这就要求程序员额外记住一个 .* 操作符。如果各个模块都这么自己发明操作符,那简直是可读性和文档维护的灾难,这也是为什么在编程时要慎用操作符重载。


user avatar   jia-ming-zi-34 网友的相关建议: 
      

我了个去,为什么抖机灵的答案能破百…



欧阳锋是双雕里最牛逼的角色。

首先,杨康曾拜欧阳锋为师,一日为师终身为父。所以欧阳锋是杨康的爸爸。

穆念慈是杨康老婆,所以也要叫欧阳锋爸爸。

杨康与郭靖是金兰兄弟,兄弟的爸爸自然是一个人,所以欧阳锋也是郭靖的爸爸。

郭靖与老顽童是兄弟,所以老顽童要叫欧阳锋爸爸。

老顽童是老王的弟弟,所以老王要叫欧阳锋爸爸。

林朝英是老王的恋人,自然也要叫欧阳锋爸爸。

瑛姑是老顽童的姘头,所以也要叫欧阳锋爸爸。

一灯是瑛姑的丈夫,所以一灯也要叫欧阳锋爸爸。

全真七子是老王的徒弟,所以见了欧阳锋要叫爷爷。

耶律齐是郭靖黄蓉的女婿,也是老顽童的徒弟,所以要叫欧阳锋爷爷。

完颜萍是耶律齐的义妹,所以也要叫欧阳锋爷爷。

郭襄是郭靖黄蓉的女儿,所以要叫欧阳锋爷爷。

金轮法王是郭襄的师傅,可以视作父亲,所以欧阳锋是金轮法王女儿的爷爷,所以金轮法王要叫欧阳锋爸爸。

武三通是一灯的徒弟,所以要叫欧阳锋爷爷。

陆展元娶了是武三通的养女,所以要叫欧阳锋太爷爷。

陆立鼎和陆展元是兄弟,所以陆立鼎也要叫欧阳锋太爷爷。

所以陆无双要叫欧阳锋曾太爷爷。

程英与陆无双义结金兰,所以也要叫欧阳锋曾太爷爷。

黄药师是程英的师傅,也就是父亲,所以要叫欧阳锋太爷爷。

黄蓉是黄药师的女儿,所以也要叫欧阳锋曾太爷爷。

洪七公是黄蓉的师傅,所以要叫欧阳锋太爷爷。

综上所述,双雕里最牛逼的是欧阳锋。

杨过是杨康的儿子,所以要喊欧阳锋爷爷。

杨过是欧阳锋的义子,也就是儿子。

所以欧阳锋要喊欧阳锋爸爸。


其实我还有另一个胡说八道的答案




  

相关话题

  你写过哪些真正生产可用的 Python 装饰器? 
  有哪些明明是 bug,却被说成是 feature 的例子? 
  一个即将步入大学对编程感兴趣的学生,3 年能将 Java 学到什么程度,应怎样合理分配这 3 年? 
  编程教育以后会成为一门通识教育吗? 
  如果两个相似的软件产品都不好上手,那你们更喜欢产品免费有偿售后,还是产品收钱无偿售后? 
  如何看待奥巴马呼吁每个美国人都学习编程? 
  用惯了 C# 之后再也不想用别的语言了,正常吗? 
  你是如何走上反对某些专业劝退的道路的? 
  为什么现在大多数手机开机后不能直接使用指纹? 
  如何不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标? 

前一个讨论
放弃现在收入的一半去正儿八经的公司上班,值吗?
下一个讨论
博士第四年想 quit,什么科研成果都没有,很痛苦,该怎么办?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利