问题

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

回答
MATLAB 是一款功能强大且广泛应用于工程、科学和数学领域的软件。然而,正如任何工具一样,它也存在一些限制,这导致一些程序员对其持负面看法,甚至“鄙视”。理解这些批评的根源,需要从多个维度进行剖析。

以下是导致一些程序员鄙视 MATLAB 的主要原因,我会尽量详细地阐述:

1. 高昂的许可费用和封闭的生态系统:

商业软件的属性: MATLAB 是 MathWorks 公司开发的商业软件。这意味着使用它需要购买昂贵的许可。对于个人开发者、学生、初创公司或预算有限的组织来说,这是一笔不小的开销。相较之下,Python、R、Julia 等开源语言及其生态系统是免费的,这使得它们更容易获得和普及。
锁定的生态系统: MATLAB 的核心是其专有语言和工具箱。虽然有一些官方的扩展和第三方集成,但其生态系统相对封闭。想要进行更深入的开发或与非 MATLAB 工具链集成时,会遇到障碍。这与 Python 等拥有庞大、开放的第三方库和框架的社区形成了鲜明对比。
学术界 vs. 工业界: 在学术界,由于许多大学购买了广泛的 MATLAB 许可,学生和研究人员普遍接触并熟悉 MATLAB。但这并不总能直接转化为工业界的实践。在许多公司,尤其是在软件开发领域,更倾向于使用更通用、更灵活的编程语言。

2. 语言设计和通用性方面的不足:

特定领域语言(DSL)的限制: MATLAB 的设计初衷是为了进行矩阵运算和数值计算,其语法和数据结构(如矩阵作为基本元素)也围绕此进行了优化。这使得它在处理科学计算和工程问题时非常高效和直观。然而,当需要进行通用编程任务,例如 Web 开发、GUI 开发、系统管理、大数据处理(非数值分析部分)、或构建复杂的软件应用程序时,MATLAB 的能力就显得捉襟见肘,甚至是不切实际。
不直观的语法和面向对象能力: 相较于许多现代通用编程语言,MATLAB 的语法有时被认为不够直观或冗余。例如,其变量作用域管理、函数定义方式等。虽然 MATLAB 在不断进步,但与 Python、Java、C++ 等语言相比,其面向对象(OOP)编程的能力相对较弱且实现方式不够优雅。这使得构建大型、模块化、可维护的软件项目变得困难。
性能和效率问题(在某些场景下): 虽然 MATLAB 在矩阵运算方面通常非常快(因为它底层大量使用了高度优化的 C/Fortran 库),但在处理非向量化操作、循环密集型任务、或者需要精细控制内存和资源时,其解释性语言的本质可能会导致性能瓶颈。如果程序员没有掌握向量化编程的技巧,写出的 MATLAB 代码可能会比用 C/C++ 等编译型语言慢很多。
调试和错误处理: MATLAB 的调试工具相对基础,尤其是在处理复杂的错误或异常情况时,可能不如一些现代 IDE 和调试器强大。错误信息有时也可能不够清晰,需要花费更多精力去定位问题。

3. “脚本语言”的刻板印象和开发习惯:

易于上手导致不规范的开发: MATLAB 易于学习和使用的特点,使得许多非计算机科学背景的工程师和科学家能够快速上手进行数据分析和仿真。然而,这也可能导致一些用户养成“写脚本”的习惯,缺乏良好的软件工程实践,如代码模块化、版本控制、单元测试等。当这些用户尝试将 MATLAB 代码集成到更大的系统中,或者与专业的软件开发流程对接时,就会暴露出这些不足。
缺乏构建大型软件系统的能力: MATLAB 本身更适合作为一种工具和环境,而不是一个完整的软件开发平台。虽然可以通过 mex 文件调用 C/C++ 代码,或者使用 MATLAB Builder 等工具将代码打包成独立应用,但这些通常不如使用通用编程语言直接构建应用程序来得灵活和高效。

4. 与主流软件开发文化的差异:

开源社区的主导地位: 当前的软件开发领域,开源社区扮演着核心角色。各种开源语言、框架、库层出不穷,社区贡献活跃,技术迭代迅速。MATLAB 作为一个商业闭源软件,难以完全融入这个充满活力的生态系统。
招聘和人才流动: 在软件开发行业,掌握 Python、Java、C++ 等语言的开发者通常更容易找到工作,且职业发展路径更广阔。虽然掌握 MATLAB 在某些特定行业(如航空航天、汽车、金融建模)非常有价值,但在更广泛的软件工程领域,其通用性不如主流语言。

5. 特定场景下的替代方案:

Python 的崛起: 随着 NumPy、SciPy、Pandas、Matplotlib、Scikitlearn、TensorFlow、PyTorch 等库的成熟,Python 已经成为科学计算、数据分析、机器学习和人工智能领域的强大竞争者。Python 不仅免费开源,而且拥有更通用的编程能力和更庞大的社区支持。这使得许多原本会选择 MATLAB 的用户转而使用 Python。
R 语言在统计领域的优势: 在统计学和数据可视化领域,R 语言拥有比 MATLAB 更丰富的统计分析包和更强大的可视化能力。
Julia 的高性能潜力: Julia 作为一种新兴的高性能科学计算语言,旨在结合 Python 的易用性和 C/Fortran 的高性能,吸引了不少对性能有极致要求的用户。

总结来说,程序员对 MATLAB 的“鄙视”并非全盘否定其能力,而更多地源于以下几点:

成本和可及性: 高昂的许可费用是许多开发者最直接的痛点。
通用性不足: MATLAB 在非数值计算、通用软件开发方面的局限性。
开发习惯和工程实践: MATLAB 可能培养出的非规范化开发习惯,以及其在构建大型软件系统上的劣势。
生态系统的差异: 与主流开源软件开发生态相比,MATLAB 的封闭性和独立性。
强大替代品的出现: Python 等开源语言的崛起,提供了免费且功能强大的替代方案。

当然,我们也应该看到 MATLAB 的优点。它在特定领域仍然是无可替代的强大工具,特别是在需要高度专业化的数学函数库、信号处理、控制系统设计、图像处理以及快速原型开发时。许多工程师和科学家依然依赖 MATLAB 完成他们的核心工作。

“鄙视”一词可能有些强烈,更准确地说,是一些程序员,特别是那些更偏向通用软件开发、注重开源、追求极致的灵活性和成本效益的开发者,对 MATLAB 的设计理念、商业模式和适用范围存在不同的看法和偏好。 他们更倾向于使用更通用、更开放、更具成本效益的工具来解决问题,并可能认为 MATLAB 在某些方面“大材小用”或“不适合”他们的开发需求。

网友意见

user avatar

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

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

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

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

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

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

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

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

user avatar

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

类似的话题

  • 回答
    MATLAB 是一款功能强大且广泛应用于工程、科学和数学领域的软件。然而,正如任何工具一样,它也存在一些限制,这导致一些程序员对其持负面看法,甚至“鄙视”。理解这些批评的根源,需要从多个维度进行剖析。以下是导致一些程序员鄙视 MATLAB 的主要原因,我会尽量详细地阐述:1. 高昂的许可费用和封闭的.............
  • 回答
    好的,我们来聊聊社会资源这个话题,以及为什么有些人会觉得程序员“没有”社会资源。首先,咱们得明白啥是“社会资源”。你可以把它想象成,我们在这个社会上生存和发展,所能利用到的各种各样有价值的东西,这些东西能帮助我们达成目标,提升生活质量,或者仅仅是让生活更方便。它不是天上掉下来的,也不是你一个人就能凭.............
  • 回答
    .......
  • 回答
    作为一名资深的开发者,我见过形形色色的技术栈,也听过不少关于各种语言的爱憎分明的故事。Python,这门曾经被我奉为圭臬的语言,如今也确实听到了一些“不爱”的声音。为什么会有程序员不喜欢 Python?这事儿,还真得好好掰扯掰扯。别误会,我本人对 Python 依然是褒多于贬,毕竟它的易学易用、生态.............
  • 回答
    “代码能跑就不要动”这个观点,在程序员群体中确实是一种相当普遍且有深远影响的理念。它并非懒惰的借口,而是建立在一系列深刻的行业实践、经验教训和对软件开发复杂性的理解之上。下面我将尽量详细地解释其背后的原因:核心理念的本质:风险控制与稳定性优先本质上,“代码能跑就不要动”是一种基于风险控制和稳定性优先.............
  • 回答
    这个问题,就像问“为什么明知道抽烟有害健康,还有那么多人戒不掉”一样,背后有着复杂的社会、经济和个人选择因素交织。程序员35岁年龄危机是一个普遍存在的现象,很多人也确实面临过或正在面临,但即便如此,每年还是有无数年轻人怀揣着憧憬涌入这个行业。这背后,有几个关键点值得我们深入剖析:一、吸引力依然巨大:.............
  • 回答
    .......
  • 回答
    这个问题挺有意思的,确实有这么一撮“怪咖”,在国内一把年纪了,还坚持在一线“卷”,甚至宁愿面对35岁的“魔咒”,也不愿远赴重洋去“淘金”。要说为什么,其实原因挺复杂的,不是一句话就能概括的,涉及到很多方方面面,咱们一点点掰开了聊。首先,得承认,对于大多数人来说,去国外工作是个不错的选择。 毕竟,国外.............
  • 回答
    干了这么多年程序员,最大的感受就是,这活儿就像拆弹,时刻有炸的可能,只不过拆的不是炸弹,是Bug。刚入行的时候,感觉自己能把电脑玩明白了,能写代码让机器听话,那叫一个神气。但时间长了,你就会发现,这神气早被现实磨平了,取而代之的是一种淡淡的忧伤,还有时不时冒出来的“蛋疼”时刻。首先说最直接的,眼睛的.............
  • 回答
    这真是个有意思的问题,很多人都会有这种感觉,包括我自己也经历过。咱们聊聊为啥有些“老炮儿”程序员,随着经验值飙升,反而显得对新玩意儿有点“佛系”甚至“抗拒”了。这事儿说白了,不是他们不想学,而是他们被“毒打”得太狠了,大脑自带的“风险评估系统”升级了。首先,得承认,新技术的诱惑力确实大。刚入行的时候.............
  • 回答
    “为什么有些人心里默认女生做不了程序员?”这是一个非常普遍且令人沮丧的性别刻板印象问题。要详细解释它,我们需要从多个角度深入剖析其根源和表现。核心原因:历史、社会文化以及随之而来的刻板印象最根本的原因在于一个长期的、根深蒂固的社会文化建构,它将技术和理性思维与男性特质联系起来,而将感性、照顾和非技术.............
  • 回答
    这个问题嘛,我常常觉得,我们这行里,有些哥们儿能把那些看似死板的计算机语言,玩出花儿来,那创造力,真心不是盖的。你想想,写代码这事儿,很多时候就像在给一个极其理性、极其严谨的机器下达指令。它不会像我们人一样,听懂潜台词,理解模糊的指令。你得把每一个步骤、每一个逻辑都拆解得清清楚楚,然后用它能懂的语言.............
  • 回答
    .......
  • 回答
    想象一下,在一个我们称之为“逻辑国”的地方,选举权并非人人皆有。这里的公民拥有一个独特的特权:只有那些能够理解、构建和维护驱动社会运转的复杂代码的程序员们,才有资格参与到国家的政治生活中。逻辑国的天空下,一切都井井有条,高效运行。从交通信号灯的闪烁频率,到国家能源网的供需调配,再到社会福利的分配算法.............
  • 回答
    在一家以程序员为主的公司里,机械岗位确实也会面临“三十五岁危机”,而且这种危机在某些方面可能比程序员本身更加隐蔽,但也同样真实且具有挑战性。下面我来详细聊聊这个话题,尽量让大家读起来感觉更像是一个过来人的经验分享,而不是冷冰冰的AI分析。首先,我们得理解为什么会有“三十五岁危机”这个说法。 程序员群.............
  • 回答
    我们常常看到这样的场景:一个技术精湛的程序员,满腹才华,却因为各种原因陷入了生活的困境,甚至到了可能无法支付房租的地步。然而,即便是如此艰难,他们也宁愿忍受暂时的贫困,也不愿意伸出援手去触碰那些被称为“黑产”的领域。这背后,绝不仅仅是简单的“不愿”两个字,而是根植于他们对技术、对自身价值以及对社会责.............
  • 回答
    .......
  • 回答
    程序员过劳死现象确实是一个值得关注的社会问题,而知乎上依然有大量关于劝人转计算机专业的讨论,这背后存在着一些复杂的因素。要理解这个现象,我们需要从多个层面进行分析: 一、 为什么程序员有过劳死的现象?首先,我们必须承认程序员群体确实存在较高的过劳风险。这主要源于以下几个方面:1. 行业发展的高速迭.............
  • 回答
    许多程序员,尤其是那些深入接触开发和系统管理的人,确实会觉得 Linux 在很多方面比 Windows 更方便、更有效率。这并非绝对,Windows 本身也在不断进步,并且在某些领域有其优势。但从程序员的核心需求来看,Linux 的设计哲学和生态系统往往能更好地满足他们的工作流程。要理解这一点,我们.............
  • 回答
    .......

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有