为什么中国程序员工资那么高,连一个 MATLAB 的替代品都开发不出来?

链接:https://www.zhihu.com/question/402837414

编辑:深度学习与计算机视觉

声明:仅做学术分享,侵删

作者:一直住顶楼

https://www.zhihu.com/question/402837414/answer/1298741699

开发Matlab的IDE真是不难的,随便来一个过得去的产品经理带几个好程序员就能干了,门槛在架构师,老实说IDE这种东西早就是白菜科技了。

问题是Matlab的核心竞争力是它集成的那些计算,这个和程序员没关系,你需要一批真正优秀的phd来写这个算法需求,和能理解这套东西的程序员(最好是计算机系phd中途退学的那种)来实现和测试这些算法和集成。正常来说这个世界上99%的编程是不需要啥智商就能干的,但Matlab的算法实现还是略有一点门槛。如果你有预算找一堆程序员,开发一个wps是不难的,但是Matlab是另外一个难度量级的东西。因为关键的瓶颈需要真的不是程序员。

如果你只是找一堆程序员来开发的话,大概率会得到一个有Matlab 5%功能,能满足90%客户需求,很可惜的是这90%客户都是白嫖的需求(真会付费的10%用户需要的不仅仅这5%功能)。所以最后你就会真的得到一个:“我们中国真是太厉害了”的产品。

作者:扩散性百万涩面包
https://www.zhihu.com/question/402837414/answer/1298220759

工资高跟开发matlab没有任何关系。

首先是不明白程序员的分工,从行业分工看,有做传统桌面软件的、有做互联网的、有做银行后台系统的、甚至有做冰箱、路由器等嵌入式设备开发的,从工种来看,有做前端的、后端的、中间件、游戏、数据、算法、客户端、数据库、操作系统、编译器的,而每个工作又有细分,比如算法也分种类,有做机器学习/深度学习等AI算法的,有做多媒体类(音视频编解码算法)的,有3D视觉算法的,楼主批判的抖音、快手需要的程序员类型跟做matlab的重合度很低,不是抖音、快手没了,中国版matlab就有了。

其次搞不清楚高工资是怎么来的,是来源于「卖方市场的稀缺性+买方市场的资金供给」,两者缺一不可,说白了就是供需关系决定了工资高低,matlab 就不属于这种类型,开发周期长、变现效率低、人才需求高,在投资的角度看,做中国 matlab 是纯粹赔钱的生意,项目不赚钱、投资人不看好就不可能有高工资,抖音、快手的盈利模式来源于信息流广告+直播打赏抽成,是在商业上被验证过的可持续盈利模式。

还有搞不清楚「中国 matlab」应该由谁来负责,题主上来就把矛头指向抖音、快手这种商业公司应用,似乎他们要为matlab被卡脖子背锅,这种研发周期长、人才需求高、变现效率低的项目不可能有商业公司来开发,因为就算做出来了也不如「真.matlab」好用,最后就是死路一条,企业的目的是盈利不是做慈善(当然,现代社会的慈善本身就是门生意),所以需要政府下场用有形的手来扶持这种从商业上看起来非常差但是又是对中国产、研具有重大意义的项目,然而事实是这类软件长期的扶持力度都不够。

作者:pansz
https://www.zhihu.com/question/402837414/answer/1299440292

我跟大家的看法不同。

并不是开发不出来。

以前还有Mathmatica,还有Octave。。。

尤其Octave甚至是开源的。

要做,都是能做的。

但它们似乎最终还是比不过Matlab。

细分专业领域,使用者数量有限,不可能养活很多个产品。

M语言已经建立了自己的生态,没法容纳另外一款软件了。

所以再开发一个Matlab没有意义。

实际上你开发第二个微信第二个支付宝也没有意义。当然,微信支付宝还有几亿用户,Matlab用户连个零头都不到。几十万几百万用户养这么一个软件顶天了,还分着养几个软件,那谁都吃不消。

一个软件有足够多的用户或者足够高的盈利才能分摊掉研发的开销。就是这样。而在很多细分领域其实承担不起资源的浪费。

所以,并不是做不出来,而是这样做的代价太大,根本不能获得足够的收益,所以没人做。

作者:DsyDemo
https://www.zhihu.com/question/402837414/answer/1301944285

你说得很对,但你搞错了一点,Matlab不是光靠程序员就能写完的,而且这和程序员工资也没关系,工资是受市场影响的,如果一个程序员开发了一款不受市场欢迎的软件,那么他的工资也就可以想象了。

Matlab受中国主流的市场欢迎吗?它只是一款研究工具,受众是很小的,也没有那么多人喜欢研究物理、化学、生物学和医学,中国人喜欢追星、喜欢赚钱,却没有人和学校愿意为一款科学研究软件付费,十分惭愧的是,我在数学建模时用的Matlab软件也是破解版的,我愿意花几百块去购物和消费,却不愿意为我的生产力工具花钱,我也是个普通而世俗的人。

那么,中国没有matlab真的可以责怪程序员吗?为什么不责怪明星呢?他们明明最受民众欢迎,而且赚钱最多?那么谁捧着明星上天的呢?如果我们国家全是乐于科学研究的人,愿意花钱在科学研究的软件上,中国何愁不能把世界上全部最牛逼的软件研发出来?

所以,最后我们只能信任国家了,国家如果愿意给这种十几年都赚不到一分钱的软件托底,我相信我们一定能研发出比matlab还好的软件。当然,你一定会反驳,中国不是最近有个Truffer了吗?去看看它的源代码吧,我是不相信这点源代码的体积能有什么惊世骇俗的功能,资本的市场就是,完成了百分之一就能拿出来卖了,这对科研软件百害而无一利。

所以,这么愤怒有什么用呢?中国有个求伯君,独身一人写出了WPS,但WPS赚到什么大钱了吗?扪心自问一下,中国没有matlab难道不是全体中国人的问题吗?

我们喜欢抖音,所以程序员拼了命地完善抖音软件,可是你不知道,那些写抖音软件的程序员可能一辈子都不用抖音,他们内心也是鄙夷的,他们可都是清北名校的学生啊!你说凭借他们的能力,什么软件研发不出来?

最后提一下,Matlab一开始只是一个老师用业余时间开发的,只是为了提高教学质量,一篇论文都没发。试问中国的老师,忙着评职称忙着升官,还有人惦记着学生的教学质量吗?有老师愿意花几十年开发一款发不了论文的软件?

作者:杨个毛
https://www.zhihu.com/question/402837414/answer/1300751365

这个问题怎么就变成了一群 matlab toolbox 侠嘲讽中国的程序员都是 API 侠……

这本身不就是问题吗?

我碰巧接触过的东西,数值计算有 octave/numpy/R 甚至 tf/pytorch(不完全是开玩笑),统计学有 scipy/SAS/R,流体力学仿真有 OpenFOAM,计算生物学有它自己的一堆开源库。碰巧都不(完全)是 matlab 一家独大的局面。

如果你所在的行业现状就是 “自己行业的核心算法居然主要活在一个商业软件的 toolbox 里”,那么不管有没有贸易战,有没有封锁,你都应该居安思危。人的命运本来就不应该被一个商业软件所掌控。

作者:yang leonier
https://www.zhihu.com/question/402837414/answer/1299341619

Matlab最初是斯坦福79级的三个学生用Fortran在小型机上写的,一开始只是他们自己搞的一个小工具,然后在应用数学界获得了一定的名气。直到84年他们毕业后,被投资者看中才成立了MathWorks公司,把Matlab移植到DOS并商业化,花了30多年一路走下来,才做到今天的这个样子。

至于Simulink这样现在无法替代的Matlab组件,也是92年左右和Matlab4.0一起出现的,也有快30年了。

中国程序员工资高应该是2008年以后的事,而且2012年以前,软件自主化正版化的潮流还都没起来。就用这几年时间去和别人30年打下的基础硬拼,还是很不容易的吧。

而且,工资高的程序员大多就职于在风口上、靠风投吃饭的那些互联网公司。其他地方的程序员,同一条件下的工资不比其他白领高出多少。Matlab这样的软件本身就是应用数学学科领域出来的,开发起来对程序员、产品甚至测试等各岗位人员的要求都相当高;有这种能力的程序员,在当今市场形势下, 更容易被互联网公司的高工资所吸引过去。

Matlab属于专业软件,面向的是已经高度细分的特定市场,潜在用户数有限,不好做成SaaS(很多应用场景下不能或者不总能连接外网),对性能和稳定性要求较高。这样的软件,在风投眼里不属于能长期带来大量热钱的产品。因此,他们对这种软件的替代品进行投资的欲望应该十分有限。

作者:罗秀哲
https://www.zhihu.com/question/402837414/answer/1301902986

这是一个复杂的问题。其背后是我们国家在科学软件方面的全面落后,这种落后不仅仅是技术层面的(甚至技术层面其实并不落后很多,甚至在一些新兴领域比如深度学习中国的软件是一些方面领先的),而是从社会支持,人才储备,版权支持,法律援助等方面的全面落后。

背景

首先想要理解这个问题,我们需要先了解以MATLAB为代表的科学计算软件的市场,它们的开发需求,以及技术需求。

以最为常用的线性代数算法库为例,这些算法实现不仅需要理解前沿的应用数学知识,此外还需要开发者对计算机体系结构,编译原理有比较好的理解,从而使得开发出来的求解器不仅仅在算法上快,也在实现上快。也只有这样才能解决非常实际的生产/应用/科研问题。比如你知道虽然QR分解,SVD分解等算法原理似乎没有那么的难,但是想把一个实现做到在小尺寸和大尺寸下都非常高效,并且提供硬件加速(比如GPU)和分布式计算,并且能够支持一些非标准类型(非IEEE标准的浮点数)其实是一个很难的事情。它对程序员的要求会很高,比如有时候函数递归实现一些算法比for循环有更好的cache locality,而有时候一些算法对GPU又更加优化等等等等。并且在特定的硬件限制下还有可能会对算法进行修改,比如arnoldi分解在GPU上实现需要在CPU上维护一个小矩阵等等。这些技术知识放在全世界的任何国家都不是多数程序员会愿意学习并且思考的,因为它们不仅很杂,而且可以很难。

而要知道线性代数只是众多功能里最简单的一环。

另一方面,这一类软件的市场相比于我们日常使用的软件(比如微信,抖音等等)要小很多。因为它本身服务于很多有技术门槛的行业,这包括工业设计,科学计算软件等等。这些行业往往是无法立刻产生效益的。这决定了这一类软件的盈利模式本质上只能通过客户的科研基金或者研发资金盈利。具体来说就是MATLAB的高校订阅,支撑numpy,scipy,matplotlib,Julia等等科学软件的NumFocus基金会,以及Julia的各种打DARPA项目擦边球的资助。

这一类软件的大部分应用场景都是做原型,算法开发等。所以往往是跑出结果就行,这也决定了它们对相关生态环境有着很大要求。所以实际上在已经成熟的应用里完全替代其中的任何一个都几乎不可能:它们已经成为了各个行业里的标准,它们的应用领域也往往并不完全交叉,仅有少量重叠。我常常会在各种地方说应当去使用Julia来代替MATLAB,但是我也要承认simulink的生态依然是很难替代的。

实际上因为MATLAB的商业特性,以及很多缺点(我们也要承认它是有缺点的),前前后后,从Octave,Python到Julia,开源社区已经出现了很多尝试替代MATLAB的努力。这些努力长则有三四十年,短则也有像Julia开发了十年的工作。即便如此,MATLAB也依然没有被完全替代。足见想要做出一个替代品是非常困难的。

这些特性决定了这类软件的诞生往往开始于某个行业的从业者的个人需要,而之后慢慢演变成一个在一些领域里主要的工具箱。这些项目的发起人以及早起开发者本身都是非常珍贵的人才资源,他们不仅熟悉相关的专业知识,也同时熟悉软件开发,高性能计算等技术知识。而实际上我们是非常匮乏这类人才的。甚至在全世界的范围里,这样的人才都很匮乏。以至于别说中国了,美国的公司也不一定能找到多少。

原因

那么为什么我们没有这样的软件出现呢?在谈这个问题的时候,有很多的原因。但是首先我要说一点是:现在去做一个MATLAB的替代品没有任何意义,因为大部分功能都有或好或差的开源替代品。所以更加值得思考的是我们应该怎样孵化出更多的国产科学计算软件。

那么现在回过头来聊聊原因

首先当然要考虑到历史的进程,中国的整体科研实力才刚刚起步,我们不能指望在十年或者二十年前去填这个坑,那个时候有更重要的事情要优先去发展。而我们的博士学位在人口中占有的比例也依然是不够高的。

其次是需求,一方面,虽然都是程序员,但是写前端,网络,数据库,编译器都是非常不同的技能树。而科学计算类的软件则和之前这些传统计算机行业有着更加不同的技能点。实际上如果不是深度学习的大规模应用,计算机行业可能都不会这么关注线性代数和微分方程等以浮点为主的实现。所以一方面,做淘宝,做数据库的程序员在技能上并不容易转向科学计算领域,毕竟隔行隔座山,另一方面,解决大众问题的软件需求更大,短时间内的收益更高,选择去做这类软件也是大部分人很自然的选择。我在上一个部分说过:这类软件往往源自于从业者解决自己问题的代码。

匮乏支持,这也是很重要的一个点。这类软件的开发一直在国内得不到比较有效的支持。一方面是科研的导向是以论文为主的。另一方面,我们完全没有支持这方面开发的基金。而实际上频繁使用此类开源软件的朋友想必一定听说过NumFocus吧?NumFocus这个基金会支持了我们今天耳熟能详的大部分科学计算软件,例如已经成为了几乎所有人标配的两个:numpy和matplotlib。

而我这里所说的支持,并不只是钱,钱很重要,但不能解决所有的问题。而是从社区的运营,软件的宣传,组织开发者之间的合作以及法律援助等一系列支持。而这种支持是需要有目标的,而不是简单的设立一个奖项发了钱了事的。这是我们在国内做的不够好的地方,也是急需改进的地方。

去年我尝试为Julia中文社区以及我们自己的软件寻找一些国内的支持,但是最后发现各方面的手续,流程对这些特定领域的小项目都很不友好。比如如果Julia中文社区去收取企业/个人捐款,并且按照正规流程做帐,税收会占掉整个捐助的大约20%,而申请非盈利组织则需要挂靠政府部门。而作为对比的是,我来到加拿大以后立刻有开源基金愿意资助我们的开源项目。

我们国内现在只有企业在做和业务相关的开源项目,但是对于这些科学软件的支持,真的非常匮乏。而这些科学软件是完全不可能靠着短期的商业变现活下去的。因为即便是领域内非常重要的软件,其用户数量可能也并不是很多。其中一个例子就是qutip,这是一个几乎所有做量子物理实验的组都用过的软件,但是它在GitHub上的star也不过800多。我在上一周和它的核心开发者Nathan交流的过程里了解到,它也是靠着日本RIKEN等实验室和开源基金提供的支持活下来的

还有很重要的一点是我们国家很多公司的996制度。996制度实际上破坏了大部分程序员的创新性,把他们变成了所谓的“社畜”。。我相信很多已经在上班的同学都有一个感受就是身体被榨干。那就算工资很高,怎么还会有心思去学习和挑战这些更难的东西?

开源运动还有待发展,MATLAB的模式已经是上个世纪遗留的模式了,想要做新的科学计算软件,不可避免地需要开源。因为需求决定了招一整个团队把所有的东西都做出来是不现实的。而开源不仅能够提供更好的生态,更新的算法,也更加方便为整个社会积累人才。但是我们现在的开源运动还不够普及,我们支持开源运动的基础设施还不够完善,我们对知识的获取也还不够开放。这些都是很大的障碍。

解决问题

我没有解决以上所有问题的方法。但是我也有一些我能够做到并且想到的建议。

要解决这些问题首先需要的就是时间:我们需要充分的时间以获得足够的人才积累,这需要相关的从业者去写更多的中文资料。我知道阅读英文材料的能力是必须的,但是我也曾经是一个什么都不懂的学生,我知道中文资料,中文教程对降低门槛真的是一个非常重要的东西。需要站在一线的大佬们为科学软件站台,号召年轻的血液加入。当初去做中文社区就是因为曾经自己作为一个物理系的学生,对计算机不那么熟悉,不会科学上网,看不太懂英文,搜索引擎也搜不到什么有用的知识,这些阻碍在我个人成长的路上让我非常痛苦。我也希望能有更多的人愿意去承担一份责任,让不仅仅是Julia语言和生态的知识,而是让所有的知识对中文群体更加友好。当然了,如果你愿意为Julia中文社区以及Julia社区贡献力量我也是非常高兴的  ;-) 我个人是非常希望语言,政治以及商业都不要成为学习知识的阻碍。

如果我们能够坚持这样的努力十年,我相信十年以后,有没有替代品这个问题就变得没有那么重要了。

其次是需求,我想既然最近这个问题已经被很多人关注了,想必需求已经在产业升级的过程里开始扩大了。所以这也许已经不再是问题了。

技术层面,我不看好任何尝试用类似模式替代MATLAB的产品,因为想要在2020年复制MATLAB的商业模式是非常困难的。MATLAB实际上也是通过它在一些领域的生态霸权来把软件卖给别人,而想要实现这样的生态壁垒不是一朝一夕就能够形成的。并且在学术界开源共享也是趋势,与其被商业软件牵制,不如做出有我们自己影响力的开源软件,拥抱开源社区,看看Python,Julia,R等开源软件里的功能缺什么,把开源的软件做到更好,让全世界都加入进来 -- 美国政府想要闭关锁国,那么我们就应该做那个更加开放的。MATLAB的繁荣不是靠一个国家,一个公司的人去完成的,而是作为一个有先发优势的软件,在过去几十年的时间里,全世界的人去贡献生态而做到的。

然后就是支持了。我尝试联系过集智俱乐部的朋友去帮忙推进一个用于资助科学计算的开源基金的事情。但是进度非常缓慢,尤其是今年遭遇了疫情之后,打断了很多事情,也许有渠道的朋友可以帮帮我们。亦或者有公司,个人愿意牵头去做一个支持中国开源的科学计算软件发展的基金都会是非常好的开始。

另外一个方面,我其实有注意到大佬@贾扬清在之前一个回答里提到的阿里巴巴的开源运动。现在每年阿里巴巴也有一个编程之夏的活动。如果我们能有更多这样的支持,以及更多孵化开源的科学计算软件的支持,我相信下一个十年我们就能用上更多更好的科学计算基础设施。

还有其它的问题,我没有什么好的办法。并且也许还有很多问题是我没有提到的。这就要靠大家去努力了。

作者:阿拉
https://www.zhihu.com/question/402837414/answer/1300914215

因为Matlab不是单单程序员能够完成的工作。

作为无线通信相关专业的人,就从这个角度来说一下Matlab究竟是什么。

从近期说起,还就在一两年前,我们在讨论关于5G的toolbox什么时候出来。为什么要等Matlab的toolbox呢?举个简单的例子,3GPP的信道模型是较为工业界和学术界认可的,摆在我们面前的现成的就有TR38.901,写文献综述的我们仅仅想了解一下3GPP提供的参数下的clustered delay line (CDL)和tapped delay line (TDL)建模。

要么我们从头做起开始建模CDL和TDL,要么使用Matlab现成的。区别在哪里呢?建模CDL和TDL会涉及到很多编程内部逻辑bug问题(并非编程报错),我们大概率要耗费掉一个硕士毕设的时间(大概6个月)让她他研究这两种建模以及3GPP文件里的参数。

可是,我们仅仅想看一下这两个模型而已,我们并不打算去研究这两个已经研究好了的模型。

我们不想做的工作是因为已经有某位或某几位专业人士把这个CDL和TDL写好了,并且我们相信他们应该已经尽可能地debug了

稍远一些,phased array库,我相信在座的不少是MIMO,beamforming研究人员,各种MRC,ZF还有dirty paper可能已经聊熟于心了, 但是你们愿意徒手算一下16*16URA给定steering angle后的directivity吗?如果天线单元不是isotropic呢?甚至不夸张的说,很多人都不愿意费时费力的去写一个通用性很好的计算directivity的程序,比如适应不同的array pattern,不同的inter-element spacing等等吧。

Matlab究竟是什么呢?单从无线通信领域来说,这叫做站在巨人的肩上。无数同行贡献了classic或state-of-the-art的程序,使得我们不用没完没了地重复0到1,更多的用时间来实现1到∞。

结论:Matlab是根本不可能靠一群程序员给做出来的,必须是一个程序员和各个领域科研人员持续进行下去的项目。

作者:yi bbbian
https://www.zhihu.com/question/402837414/answer/1301820579

这里实际是几个问题的累加。

1.后发劣势。不能不承认的是我国软件是后发的现实。后发必然会利用先发国家的基础。否则无法生存。先发国家在发展过程必然会造轮子。后发多用轮子。快速开发,使得企业可以生存。否则无法和国外企业进行竞争。自然造轮子的能力弱一点。只有在不断发展的过程中,原有的轮子不能满足需要,企业才会去造轮子。在传统行业其实也有这个问题,比如盾构机等都是这个情况。

2.先发企业或者国家耍流氓。为了打击对手,突然采取这个手段,打击对手,同样的事情在IT行业内和其他行业也屡见不鲜。看看IT发展史 ,很多。特别是中兴和华为的事情。国外总说我们专制,其实无论欧美还是日韩对我国的企业都是这样。

3.国家其实有很多研究项目,就是做这些软件的,因为市场等问题,这些研究成果被束之高阁。随着时间的流失,产品失效,人员流失。

4.这类软件,从单纯技术角度不难开发,但如何形成有效的市场机制是需要研究的,否则类似问题会层出不穷。应该对相应的国外企业给予一定的惩罚。

5.目前的软件开发和行业结合会越来越密切。专业软件公司会越来越多。如何让这些细分的专业领域软件公司得以生存和发展。是面临的一个难题。

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 mthler」,每日朋友圈更新一篇高质量博文

扫描二维码添加小编↓

你可能感兴趣的:(算法,数据库,编程语言,人工智能,java)