为啥很多码农说 MATLAB 不是编程语言

MATLAB(我相信应该是全大写的)是一种编程语言没错。
也就是没有静态类型,内置容器数据结构只有矩阵和 cell(充其量可以当数组用,稍微包装包装就是线性表),在不考虑Java和.NET互操作的前提下,没有内置的栈和队列(当然,你可以用矩阵做一个出来)。
个人观点,MATLAB语言风格看起来有点丑。从这个角度来讲,我和这位同学意见一致
为什么不少程序员认为Matlab的语言设计不优雅甚至比较丑?能否举出一些例子来说明?还有这位
为什么不少程序员认为Matlab的语言设计不优雅甚至比较丑?能否举出一些例子来说明? 【为啥很多码农说 MATLAB 不是编程语言】 我之前一直以为MATLAB里面没有没有哈希表,后来查了一下,发现至少r2012(也就是 MATLAB 7.14)之后的版本里面就有了。
Map Containers - MATLAB \u0026amp; Simulink 然而我们本科入门的时候用的是MATLAB 6.0 (逃 虽然没两年就开始普及新版本了,但习惯已经养成……
但这并不妨碍它没有内置的栈和队列。
Matlab - Stack Data StructureIs there a "queue" in MATLAB?MATLAB是支持OOP的,不过在MATLAB里面写类的感觉还是极其酸爽的——主要是MATLAB(r2015以下)的自动完成有点捉急。
Implementing Linked Lists with Classes说起来,文档里面都有如何用类实现一个链表的教程了,然而MATLAB却没有内置这个数据类型
How can I create linked list捉急。
所以从一名普通的软件行业从业人员来看,这门语言其实是有点尴尬的。主要在于,编写体验实在是太差。
但是,丑归丑、看起来难受归难受,其他语言支持的操作MATLAB都支持。举个例子,我们有面向MATLAB的MediaWiki Web API client:
JRCSTU/MatWiki某些搞电力系统的同学们有了解过PSAT(虽然已经有一段时间没有更新了)
Federico Milano这是作者的PPT,上面有运行截图
http://faraday1.ucd.ie/archive/psat/brieftutorial.pdf所以,我觉得MATLAB是一个标准的编程语言没错。

其实MATLAB的优势在于,里面的工具包已经实现了大部分工程领域的常用算法。
比如当我需要算介数的时候,查了一下MATLAB的帮助文档
Measure node importance - MATLAB centrality好的……type选择betweeness就可以算介数了。很方便吧。
但如果你想算一些其他指标的时候,需要遍历一下整个图的时候……嘛反正我最后在VC++里面实现了遍历和算指标的部分,然后用mex编译了一下。人生苦短,没必要死磕MATLAB。

回到题主的问题上,我们需要注意的一点是,在大学本科期间,相比于计算机软工专业的学生而言,多数工科生在编程方面其实是偏弱的。一方面,这些同学除了MATLAB以外并没有太多编程工具上的选择。某电气学子表示我们学的C++基础是不教STL的,微机原理倒是有一些深度,但用汇编算介数?画风有点美。
另一方面,这些人正是MATLAB的主体用户。没有人想在算滤波器的冲击响应的时候考虑野指针、内存泄漏或者自己应该pip install哪个包。“我要用A算法解决问题,然后把结果画个图”。就算是用Python,在没有踩过坑的情况下,是很难一下就能知道自己需要用什么包的。而MATLAB作为一款商业软件,正好解决了这个痛点。
想做FFT/DFT/DTFT?我可以!想给FIR/IIR滤波器算参数?我可以!想做遗传算法?我可以!想做神经网络?我可以!(嘛虽然效果不明)MATLAB脚本写好之后想做点界面?我可以!做好的程序编译之后想打包加个密?我可以!想和C/JAVA/.NET/Python互调?我什么都可以!这就足够了。
相比之下,对于计科/软件的同学而言,他们在会写MATLAB、Python和R的情况下,考虑到MATLAB语言风格和商业软件闭源的问题,选择MATLAB的可能性会有所降低。比如只是有事没事用plot画个图之类的(毕竟Excel导入有非常友好的界面,画图连


推荐阅读