[转帖]为什么有些程序员会鄙视MATLAB?_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 160 | 回复: 0   主题: [转帖]为什么有些程序员会鄙视MATLAB?        上一篇   下一篇 
huang.wang
高级会员
等级:中将
经验:15470
发帖:360
精华:1
注册:1970-1-1
状态:离线
发送短消息息给huang.wang 加好友    发送短消息息给huang.wang 发消息
发表于: IP:您无权察看 2019-1-22 10:49:24 | [全部帖] [楼主帖] 楼主


本文转自头条号 工控自动化联盟


image.png

有些程序员会鄙视MATLAB,甚至认为MATLAB不是一门语言,到底是为什么,是因为MATLAB容易学吗? 


一、 1号大神告诉你为什么: 

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

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

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

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

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

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

image.png

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

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


二、大神2给你讲解 

走歪了的科研狗来答一发,靠matlab入编程的门,进行数据分析,现在已经转到python瞎捣鼓。 

打个比方,matlab是一个偏科很严重的工科特长生,但程序员更喜欢各方面均衡发展的全科生。 

程序员的工作是啥?写爬虫,做软件,开发游戏,做网站搭服务器等等,matlab能实现吗?其实部分功能是可以的,但是编程体验和用户体验比较差。 

Matlab的长处在于,控制系统设计与分析、金融工业建模和仿真模拟等。这里有个匿名用户的更专业的回答来说明这一点,给大佬打call!!匿名用户:为什么很多程序员会鄙视MATLAB?这些功能如果让程序员来用其他编程语言能实现吗?显然是可以的,但是投入的时间成本显然比直接学习matlab仿真模拟工具箱要大得多。重复造轮子并不好玩,而且造出来的轮子还不一定比matlab好用。 


三、大神3给你讲解 

脱离matlab坑的原因之一,就是要把我们开发的一个新算法做成一个软件推广应用,一开始用matlab的GUI实现了这个软件,拿着m文件给导师,被反驳:万一别人没有matlab怎么运行?那就编译成exe呗,然后编译完,文件大小直逼1GB,相当于把matlab的内核都编进去了 

image.png

matlab自学小白,用的是matlab自带的应用程序打包功能,如有更高级的编译办法请大佬指正QWQ 

用之前还要安装十多分钟。。。结果打开一看是个很基本的功能界面,用户体验极差。 

做了模块m文件转成dll给c++调用,没有matlab的环境要安装打包的matlab compiler runtime然后各种设置,加载的方式变量定义啥的都要改变,确实比较麻烦,但是确实写m只用了几十行,c++下估计得好几百行,另外m转c代码的话对版本还有要求,转的代码还不尽人意,不知道有没有只打包所需lib和h文件的方法 

后来用python重新实现,代码量减少了一半不说,编译完了之后的exe只有20MB。 


四、大神4讲解 

1. 一般来说,做科研模拟仿真的确很难超越Matlab。能有Matlab就一定会用,节省时间、而且算法可靠。我只遇到过一次做一个激光场分布的计算,没有用Matlab而直接用C++,只是因为当时有一台IBM的新机器,是128位的特殊Unix系统。就直接用源码编译运行。大概算了一个星期左右就出结果,还是很快的。当时一台3、5万的工作站要跑两三个月也未必能算完; 

2. 我们学校Matlab集群应该部署很多年了。百度“东南大学+Matlab”即可找到使用方法; 

3. 做科研,Matlab是很重要,但一些C与C++的基础编程也很重要。不是能编写GUI或者Web就是编程。 

其实这么多年来的新进研究生,在编程能力上的自我评价在改变。以往都说自己能够调试多少行代码,熟悉哪些算法。现在来的研究生,说自己编程能力强,只是会写GUI,或者能弄个网站,写一点javascript。这与我们在科研工作中的编程是差的比较远的。如何做插值,如何保证没有累积误差,如何找到合适的神经网络结构与避免局部最优,这些才是我们需要研讨与培养的编程能力。 


五、大神5讲解 

1.MATLAB 是一个研究工具而不算一个构建工具。如果将其与C,C++,JAVA等做对比是不合适的。我们会比较示波器与计算机吗?也因为这样,许多程序员可能不会理解MATLAB的效用。 

2.MATLAB 对于主机性能要求还是比较高的。我们科研中一般会将MATLAB部署在最好的工作站上,然后共享使用。这与服务器类似。一般机器上跑MATLAB,特别是做上规模的模拟是很难的。 

3.研究MATLAB的圈子比较小。目前高校研究生或许在做项目时候会用MATLAB,但研讨计算机编程技术大多在C,JAVA等。主要原因之一是就业。而一些高层次MATLAB编程,大都是博士阶段。其实仿真中,每个环境用什么样的计算方法,都是要细致研究,否则会浪费很多的时间。这样的研究圈子很小,用电邮研讨会更多一点。 

我想用好MATLAB是需要环境的,我有两点想法: 

1. MATLAB 很考验计算资源,需要用足够强大的机器才能发挥其作用。目前我们学校与mathwork公司签订了大客户合同。校园内部免费使用MATLAB,同时在一个大计算机集群上部署了400个开放用例,校内师生可以做大型模拟。 

2. 需要做一些深度高阶的培训。目前市面上的MATLAB还比较初级。一些高阶使用,比如用GPU加速计算方面,都没有涉及。有限元方面,人工神经网络方面都还是N年前的资料。需要更多高手做点培训。 

我还是很感谢能有MATLAB这样的工具使用,应该说MATLAB是一个软示波器,能够助力我国基础研究发展。只有用好它,没有什么鄙视的。 



我超级酷,但是如果你回复我的话我可以不酷那么一小会儿。


——来自logo.png


赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论