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



如果中国重新开发像MATLAB、solidworks这样的软件大概需要多久? 第1页

     

user avatar    网友的相关建议: 
      

怎么说呢,把全国最顶尖的计算机学者和数学研究者关到一起让他们做十年都做不出来。

matlab 是美国mathworks公司最杰出的产品。

mathworks 公司当年靠解决了史诗级别的《Intel CPU 浮点运算 bug》发家,从那以后每年都找来美国最优秀的计算机和数学方面的顶尖人才来开发完善这个工具,不仅仅是人,钱也是如海一样涌入,只为了实现最精密的数学计算。

举个比较low的例子

Ax=b,一个矩阵方程求解,假设不病态不缺秩一切安好

但是怎么算,x可以保留几位小数精度?

如果A和b里面有值的大小相差超过100万倍的咋办?

算出来会不会出错,误差会不会积累,怎么保证算出来x是对的,有效精度是多少?

光这个问题就可以够985研究生研究一阵子,不是随便写个高斯消元就行的。

a11x1+a12x2=b1

a21x1+a22x2=b2

你要写一个能够准确判定这么一个方程组,不管四个a的值是怎样,不管两个b的值是怎样都能正确解出x来的求解器,起码要2千到3千行代码

因为你要做非常多的判定,至少要用5到6种不同的路线,根据不同的取值来做,才能保证你解出来的x是对的,而且2千到3千行只是说正确,精度那就难了。

比如a11=0xffffffffffffff,a22=1,你如果直接把数字扔给什么长整型,解出来是不能用的,就算你用的语言,比如Python,自己内置的大数运算库还可以,稳定性还OK,你也没有办法,知道到底解出来的x有几位有效数字。你还需要看很多论文。才知道怎么样让X的有效数字增多。

然后现实里遇到的Ax=b,会有各式各样的问题,大小经常在几百万维以上,A还经常不是方形的,不是满秩的,或者是超定的,或者各种病态。

然后你写的求解器还必须把x正确稳定地算出来,保留他最多的有效位数,而且你得准确告诉用户有多少位有效位数。

然后这个计算因为计算量很大,单机肯定是不可能的,你必须得在超算上写程序,写大规模并行程序,还得考虑到几百万上千万个CPU core的不稳定性。

你还得学会各种物理化学生物过程,把科学问题先稳定的转化为Ax=b。这个部分随便在哪个领域都是个博士毕业熬10年才能就业的难度。

好像扯远了,matlab最牛逼的地方不仅仅在于数学运算,在于他的simulink ,换句话说,

现在给你一个包,所有的simulink的功能都有,这个包你敢用吗?没有经过严格测试的数据,科学的计算包,你敢用吗?在严肃项目里,没人敢用。

就算是开源的numpy,也会有有算法稳定性,算法正确性,算法收敛性的问题。拿来搞一下教学还可以,正经严肃的,比如说你设计一个J20气动外形,基于numpy的算法包不严格验证谁敢用。mathworks的积累就是过去几十年一直花钱请各个学校的数学家帮忙验证算法实现的正确性和效率。

就比如今天给你一篇论文,你把它实现了,放到开源社区去,这个代码大家都喊666,但正经的公司和研究所,没人敢用的,你写的开源算法,哪有用户,都是学生拿来用。

用户要检验,那是要放到重大的项目里面去,用出了事,然后再回头给开源社区去贡献,说我们的飞机摔下来了,因为我们发现这个地方中间矩阵有个地方精度会衰减。你觉得这可能吗?

又比如,在理论上 softmax 在二分类上和sigmoid结果一样 但是sklearn里面的xgb 计算精度不同 会导致 计算结果不一致。

intel那个高精度计算库,里面都是过时多少年的算法,一年license多少钱,人家确保在一定版本的intel CPU上的数值精度,你安心调用即可

最后举个例子,我们知道光刻机原理不难,难在工艺,而我们被封锁了光刻机工艺技术。而matlab也一样难在工艺,比如说一个算法要求稳定收敛数值确定性好,这就是工艺,可能全中国就没人知道怎么做。还记得quake那个平方根倒数吗?那个不开源,全中国有几个人会?

所以matlab要想搞出来,得经过非常长的时间的积累,或者是立马召集顶尖的科学家来研究,但是没有哪个公司愿意投入这么多的钱和人力来搞这个还没有收获,都忙着发展。所以我们要用上自己的matlab,应该还要蛮久的。

如果真的做出来了,我应该会热泪盈眶,如果需要我,我一定会离开我现在的岗位去贡献自己的一份力,毕竟我爱中华


user avatar   torrekie 网友的相关建议: 
      

2015年1月9日,清华大学教授、中南大学校长张尧学院士率队完成的“网络计算的模式及基础理论研究”项目荣获2014年度国家自然科学奖一等奖。

这是当年的新闻:

你可能会想,不就是一个一等奖的老新闻吗,为什么今天突然给我讲这个?

嗯,这个乍一看好像没有问题,但是如果你去看看张教授发的项目演示视频,说不定就发现了什么端倪:

看完了吗?看完了。还没有发现什么问题吗?没发现。好,不要紧,我来带你发现发现。

当你走到10:25的时候,可以看见平板上弹出了一段英文提示:Direct, Swipe Pan: Swipe to pan around. Tap ...

这个时候你就会感到很好奇了,为什么突然弹出这样的提示语呢?你决定查一下它是什么意思,于是你在Google搜索了这一小段文字,这个时候你就会被带到这个链接下面:github.com/iiordanov/re

点进去,你会发现,这不过是一个平平无奇的xml源码罢了,但是为什么会跳到这里面来呢?难道那句英文提示和它有什么关联吗?抱着这样的想法,我们把那句话贴在页面内搜索,于是看到了这样的景象:

哦,我的天呐,这世上为什么会有如此奇妙的巧合?我居然找到了教授这伟大的科研成果!早已久仰大名却想不到我有一天居然可以直接看到教授写的代码,实在是三生有幸……哎?等一下?

这个项目的名字难道不叫“透明计算”吗?

这个项目的名字难道不叫“TransparentCompose”或者“TransparentCalculation”吗?

——都不是。

那这个项目叫什么?

——它叫"remote-desktop-clients",作者是iiordanov。

啊?作者不是张教授吗?不过话说回来,这个项目它是干什么的呀?

——"为安卓与黑莓10开发的VNC、RDP、SPICE、oVirt/RHEV/Proxmox客户端。"

哦~原来是个远程桌面呀~嗯???等一下?

合着我看了半天的高科技不就是个远程桌面??而且还是直接复制粘贴的别人的开源项目??

哦……教授的难处我懂我懂~我知道我知道~哎呀没事的教授,您缺钱直接跟人家说呀~不用费劲录这么长的视频来讨生活费的~

“我们的理想是,能让所有开发商开发的应用都能放在网上,用户不再局限于某个操作系统,所有应用软件、程序都能够实现操作系统跨平台使用。用户不用再掏钱去购买最新的操作系统版本。”张尧学说。

当然您开这种全国范围的大网吧嘛,雄心勃勃还是可以理解滴~


张尧学,男,汉族,1956年1月出生于湖南澧县。曾经是教育部高等教育司司长。

参考资料:
Connnnngratulations! This project won China 2014 State Science and Technology Prizes ! FIRST PRIZE!!!!! · Issue #39 · iiordanov/remote-desktop-clients
国家科技一等奖看起来怎么像是 WebOS?透明计算是啥? - V2EX
张尧学_百度百科
github.com/iiordanov/re


user avatar   liu-yun-cheng-67 网友的相关建议: 
      

基本的计算部分,即相关语法,性能还说得过去的底层实现,部分simulink模块等,真正去开发了,很快就可以拿出个原型。

一些需要和工业配合,不断修正、积累经验的模块,因为世界上已经有了很多论文、资料等东西,不需要从零开始摸索,不会特别容易,但也不会是个很大的问题,可以经过一定时间来完善。

中国是有能人的,真的是需要开发,我觉得根本不是什么问题。

问题是,谁来给你开发?需要自己发展的东西多了去了,相关人才如果全身心来搞这个,按照目前的行情,他能生活无忧?能活下去?大山里房价便宜,你让人去山里开发?天天纳米石墨烯的大水逼动辄一下子就是几百万经费,一天天划水,屁用没有。

这些工程软件、硬件,包括光刻机等在内,根本就没法发文章,或者说保密等原因没法发,这会的评价体系和风气下,怕是绝大部分技术骨干连3年考核期都过不了,让真正能做贡献的人去做冷板凳,和他们去谈奉献,有人愿意来开发那才有鬼了,就算是有很多人一心报国,那他总得生活吧,一天天在这里辛苦奋斗,下班了再去送外卖养家糊口,他是刨人祖坟了还是怎么着。

中国目前所急需的软硬件的基础设施、应用等,从来都不会缺能够研发的技术骨干,缺的是对技术骨干人员起码的尊重和保障。

从我自身体验来讲,

第一,保障中上等的生活待遇水平。

第二,让外行领导滚蛋,至少核心领导应当有懂技术的。

这样有大把优秀的人会愿意来为国家开发各种核心基础设施。

对于第一点待遇问题,不需要一线城市财富自由,只要在二三线城市,或者研究所、工作单位对应的城市,保持在这个城市中上等的生活待遇,即有房(不需要多大、位置多好),如果位置偏远能有辆代步车,孩子上学、老人看病等相关内容有一定保障,能够在日常开支之后攒下一点钱,绝大部分人就会非常满足了。

想想以前是怎么发展两弹一星等重点项目的,是怎么对待科研人员的,现在不说这么对标,至少拿出点诚意。

最关键的其实是第二点,外行领导/外行评价内行的体系。

别的不说,就单纯软件开发这方面,至少在研究所、国企等部门,我是没看到过评审的相关“专家“,”领导“是软件相关的,整体风气大家就是觉得软件这个东西,不就是敲敲键盘就出来了吗,有什么好说的。

你费劲介绍了一下你这个架构设计的多好多好,但是人家只能看懂个,"整体性能提升个xxx%"这种废话,真的太缺少专业的同行评议了,和开源社区简直没法比,更不要说,从事软件开发,基本就意味着你与发文章无缘了,如果有人愿意挂挂你的名还可以,否则目前情况下,你可能在软件方面是个大牛,但是在考核的时候你就是个“废物”,因为没有人关心你的具体做了什么。

不管什么领域的大型软件,只要是在工业界用的,是工控的也好,CAE也好,还是其他的,代码规模都很大,只要写过一定的代码的人我觉得应该都能知道这意味着什么,这些软件不是本科生的课设,也不是随便写写。

从顶层设计,具体需求设计,实现,测试等等有相当多的工作量,这些软件都是长期作战任务,但是这些工作都能被人看到吗?非技术出身的人能看到吗?看到了能理解吗?其实不理解,没有过类似工程经历的,难以理解在干什么或者无法理解花这些精力的实际意义。

还有些人会讲,只有最后结果成功才是成功,过程不重要。如果连最开始的技术沉淀的过程都要这么浮躁,那我很难相信你这个项目最后能做出什么东西来,沸腾不能当饭吃。

还有一点,现在很多重点攻关项目,你看到的是学校通力合作,一起拿下项目,攻关卡脖子项目,你看不到的是项目申请人都是老朋友,都是一个圈子的,申请也好,最后验收也好,那是来和你研究项目的吗?那是来social的。

为什么说这一类软件的开发会面临这个问题?因为这一类软件如果要开发,必然是国家出面,由相关国家背景的单位来牵头做,这根本没法绕开。非国家背景的公司能做吗?

能做,并且大概率这些问题上会比国企等做的好,但是除非,这件事情会有非常大的利润,不然你觉得资本会长期大力投入吗?开源不假,但大型商业公司对于核心项目的开源,难道没有商业目的?

至于说研究所、国企技术落后,我都觉得不是事了,哪怕vc6.0+mfc一把梭,能让人真的全身心投入进来做,那也可以,至少真的想好好开发的话,后面会自己研究出合适的技术方案的。

我个人是真的感觉,技术问题确实是个大问题,但也不是个大问题,最大的问题是现有体制下,根本就没有人愿意来做,这一个是评价体系的问题。

没有人会愿意拿那么少的工资来被外行侮辱,花几年的时间来沉没自己的技术。


user avatar   kingspin 网友的相关建议: 
      

作为一个同样对华为和哈工大禁售的工程软件的算法开发(你不用职责我,甚至指责公司都没用,我们头顶的是美国商务部,我们只是照章办事),我觉得这根本就不是需要多久或者多少人力的问题,而是如何能发生的问题。这就好比我们谈一个化学反应的速度,吉布斯自由能都不满足,谈反应速度有意义吗?

工程软件是在欧美工业社会中自发产生的一种产品,不是靠国家说我们必须要这么一个东西,或者是靠教育部设立个工业软件专业或者应用软件学院。在我们的team里,有学力学的、学数学的、也有学计算机的,真的没有学软件的。工程软件的出现仅仅是因为有这样的市场需求和这样的技术,有能养活自己的利润空间了,自然就有干这一行的人了。

欧美并不存在缺乏工程软件开发人员这种问题,甚至就不存在一类特定的人群是专门为了开发工程软件的。究其原因,我觉得就是个特别自然的生态问题——版权。在欧美国家,版权保护极其严格,学生,特别是低年级的时候是很难有机会使用高级的工程软件的,因此所有理工科的学生,为了完成课业,他都需要编写一些小的程序。从中学到大学,再到硕士博士,一路走下来,程序能力没有太差的。因此就不会存在所谓的学专业的不会编程,会编程的不懂专业这样的问题。

同样因为版权,不可能所有的企业都采购昂贵的高档工程软件,这就给了很多小软件、低档软件生存空间。欧洲的工程软件创业基本上都是技术创业(和中国的梦想创业非常不一样),依靠一些特色技术初创公司。如果你把它直接和行业巨头去竞争,它肯定是没活路的。但小企业是买不起高端产品的,可能也用不上,这样小的软件公司就可以通过给小企业提供服务养活自己,之后逐渐发展起来。很多小的软件公司一开始就三两个人。

但如果不保护版权,纵容盗版横行,故事就是完全不一样的结果了。因为有盗版,学生可以起手就用顶配工具,显然也就不用自己编写多少程序。编程能力弱是自然的结果。同样因为有盗版存在,企业对低档工具的容忍度基本为0,初创软件产品要直接与行业顶级产品竞争,结果可想而知。更何况国内企业的软件采购多数来自于国家项目拨款,里面也涉及很多不能摆在桌面上的原因,这个就不说了。

再有就是前面有人提到的维护问题,这是一个非常大的成本,20年前国内也有很多开发工程软件的团队,大多都是倒在维护上的。一个产品开发出来很容易,你有需求我有方法,再写一点儿程序,产品就出来了。但一个产品如果要真正走向成熟(什么是成熟?成熟就是不仅仅靠一两个熟客买单,能够被更广大的用户接受)至少需要五年的迭代。这个成本是国内的团队很难接受的。一个实际的例子是我以前大学的一位老师也开发过软件,是属于在工程计算方面比较简单的一个领域。恰好我工作后公司也有同类的产品。在一次会上,他就问我的leader,这样一款软件我们用了多少时间多少人开发出来的,我的leader给的答案是十个人、六七年时间。这个人力大家可能觉得没什么,但在工程软件这个行业,你可能真的难有这样的手笔。因为本来这个行业就是小本生意。

很多人觉得政府应该如何如何,我并不这样认为。以前有位国内新能源领域的大佬曾经说,政府补贴哪个行业,哪个行业就一定要完。我赞同这个观点。一个行业的产生是有它的客观规律的,条件合适了它自然就出来了。政府只有在规范市场行为的同时充分放权给市场,才可能真正出现有竞争力的工程软件企业,拔苗助长的结果只能是见光死。

可能有人会问,中国这么大,找不出十个二十个数学力学编程就好的人吗?能,而且肯定远远不止这么点儿。但你要清楚欧美这个行业能有今天,你看到的是发展了几十年的几个行业巨头,看不见的是数以千计死在沙滩上的创业企业,这些人都是这个微不足道的小行业发展至今的重要基石。


user avatar   xie-ling-xi 网友的相关建议: 
      

看到这个问题,不禁回想起当年开发maTHmU项目的热血岁月。

当时,我们几个大三的学生,想要搞出一个能比拟Mathematica的东西来。于是就从12月搞到4月,也总算是搞出了一个雏形来。不过,除了当时拿了几个奖以外,现在能够残留下的东西,也就是一些模糊的记忆了。

我当时负责前端开发,就是把复杂的数学公式展现在屏幕上,并且使得用户的输入交互尽可能简单。我们当时翻阅了无数资料,甚至包括Mathematica设计师早年的博士论文,东拼西凑地搞出了一个能用的系统。另外几个负责后端部分的同学就更加辛苦,要搞定符号计算(例如不定积分)、大规模数字计算(比如当时的一个目标就是计算1000000的阶乘能够超过Mathematica)等各种我们之前完全没接触过的东西,最后竟然还写了一本书。

book.douban.com/subject

搞了半年,写了无数文档,最后也参加了当年的挑战杯,有幸拿到校级、市级和国家级的三项特等奖,还被作为创新典型进行了宣传。然而我们自己心里清楚,我们完成的东西,用冰山一角来形容,都有点夸大其词了。

就拿数学后端来说,要支撑Mathematica的逆天计算功能,至少需要几千个相对独立的算法。每个算法,都随时可能有更新的版本出现,需要及时更新。没有一个超大团队,或者一个健康的生态,根本不可能做到这些。至于后端,Mathematica的优美设计更是让我们震撼,几乎每个元素都能用某种box表示,不仅可以显示数学公式,还可以进行复杂的绘图和交互。按照我理解的工程效率,没有上百人的团队是不可能开发出如此强大的功能。

回到问题。开发这种软件,需要的是长期的积累和持续性的投入。然而,由于市场已经被完全占领,这些投入在早期肯定是无法看到任何回报的。即使考虑到后发优势,在下决心投入的情况下,没有5年不可能达到一个能用的标准,没有10年不可能建立起健康的生态。

所以要先明确两个因素:决心、钱,然后才能讨论时间的问题。

我有时会看到网上对我们所做工作的评论。我比较喜欢一句“不切实际的幻想”,当然评论者都是带着温暖的心态说着这句话,并且默默支持着我们。当年几个大三的学生,现在也都走上工作岗位了,据我所知,并没有人的工作和这个项目有密切的关系。我们确实抱着不切实际的幻想,亲身体会了开发大型系统的艰辛。这段经历,对我而言,是人生中宝贵的财富。

我们之所以最后放弃了开发,当然是因为各种客观条件的影响。大家都要读博,而且各自的研究方向跟这个项目没有任何关系——坦率地说,如果当时有相关的方向,我应该会毫不犹豫地去选。同时,我也会乐观地看待这件事:我们不过是几个普通的怀揣梦想的大学生。下一次有人开发这样的系统,他们肯定会站在更高的平台上,走得比我们更远。


10月20日晚更新

没想到这个回答会有这么多赞。看着大家的评论,我也回忆起不少十几年前的往事。我决定趁着还没忘记,把它们记录下来,也算是对这个问题的补充回答。

虽然是初代目的maTHmU成员之一,但我和其他几个主创(写书的几位大神)起初并不认识。当时我从数学系转到计算机系,但是计算机系没床位了,我就继续住在数学系的楼里。大约是2008年12月,他们几个已经完成了计算机代数系统的核心架构设计,并且实现了几个算法(包括符号微积分和超大整数阶乘),但一直没法实现图形界面。于是李超就在宿舍楼里贴了些A4纸黑白打印的启事,想找一个懂图形界面的同学,把项目往前推一步。我当时刚学过Java,算是对这差事比较感兴趣,就发邮件给李超(其实我们宿舍在同一层,只有30米远),表明要加入。

话说当时这个招人的广告也贴到了计算机系的宿舍楼,可没什么人关注,估计大家是不太相信几个数学系的同学能搞定这么复杂的系统吧。倒是来了两个大一的小朋友,分别来自计算机系和电子系,战斗力爆棚。我猜李超大概等了一圈,没有更合适的人,就接受了我的申请。总之,阴差阳错地,我就成了图形界面的负责人。我们七个人(四个出书大神+我+两个大一小朋友)在李超宿舍的中厅,留下了一张珍贵的合影。

开始的两个月,我这边的进展很慢。作为刚刚学会Java的同学,要实现精细的数学公式排版并且支持各种键盘操作,工作量远远超出了我的想象。记得当时反复翻看D.E. Knuth写的TeXbook,还找到了Mathematica图形界面设计师的博士论文,希望从中找一些灵感。寒假的时候,李超直接就没回家,一个人憋在集中住宿的宿舍里赶他们的著作和核心代码。我大概在寒假过半的时候,才摸索出些许门道,开学前两天总算实现了一个非常初步的版本(大概就是能用键盘打出上下标和分数线的水平)。到了学校,心想李超要骂我,没想到他看了我的demo以后觉得挺不错,我心里的石头才落了地。

随后就是完善各种功能,方便编辑操作,加上修正各种bug。大三下的前半个学期,我翘掉了除体育外的所有课,每天从早到晚都在搞这个东西,不熄灯的时候经常搞到两三点。当时程序的前端和后端通信是一个很大的问题,最后通过向一个动态链接库发送和接收指令解决了。不过解决过程并不顺利,我和负责后端的张翔进行了大量的协同调试。某天晚上熄灯以后,我把前端的代码同步给李超,他在自己快要没电的笔记本上打开程序,输入9!然后敲了回车,界面下方“神奇”地显示出362880这个正确答案,整个宿舍都沸腾了——这也成为我对maTHmU最深刻的记忆之一。

4月以后就比较顺利了。我们拿着第一个能用的版本参加了学校的挑战杯,拿到了特等奖第一名。我记得在答辩现场,评委老师几乎没问技术问题,只是反复确认:你们真的是数学系的学生吗?要知道,即使抛开图形界面,后台的代码量也是超乎想象的(准确地说,后端代码量比前端大得多)。校赛结束以后,我一边补课,一边重构前端的代码,系统的鲁棒性大大增强,我们终于可以让观众来操作这个系统了。6月,我们拿到了北京市挑战杯的特等奖。

到了大四上学期,李超忙着申请出国,参加全国挑战杯的任务就更多地由张翔和我来完成。全国赛的会场设在北航,我俩骑着车,不知道来回跑了多少次,才完成了展台的布置。当时张翔和我都确定在本校直博,还因为去实验室不够勤快,被各自的实验室警告了。好在最后拿下全国赛特等奖,算是给maTHmU画下了比较圆满的句号。

当年我们确实得到了不少荣誉。李超拿下了清华本科特奖,maTHmU应该是个很大的加分项。他还作为学生创新代表见到了来学校视察的温总理。张翔和我也捧着全国赛的奖杯,在学校2009-2010跨年晚会登台领奖。虽然学校的宣传不可避免地夸大了我们的工作(比如超越Mathematica),但就像我说的那样,我们的真实产出连Mathematica的冰山一角都比不上。项目能走到这一步已经非常不容易,如果不是李超出色的领导力和个人魅力,团队根本坚持不下来。要想让项目有质的飞跃,就必须商业化不可——如此浅显不过的道理,我当年就死活想不通,甚至经管学院的同学来找我们谈合作,我都一直持反对态度,生怕自己的孩子被人夺走似的。相比之下,张翔就比较开放,所以随后带着这个项目走完创业挑战杯的也是他。顺便说一下,其实maTHmU总共拿了6个特等奖,包括商业挑战杯的校级、市级和国家级奖项,不过后面就跟我没什么关系了。

研发方面,maTHmU作为一个学生创新研究课题,持续了挺长时间。我还招了一些感兴趣的学弟,煞有介事地教他们设计排版系统,还布置作业。也许缺乏了些热血,后面的进展似乎没有初代那么快了。

再后来,初代的主创们就各奔前程了。以下描述大多是网上能够查阅到的信息,侵删。

  • 李超去了Harvard攻读纯数学的博士学位。临行前,他说他估计会消失5年,潜心搞学问。我读博四的时候,他回国跟我们见了一面,再往后就没怎么联系了。他现在在Columbia数学系任教。
  • 张翔在交叉研究院读博,做量子计算。由于还在一个学校(其实实验室就在一个楼),我也跟他时常能见面聊聊天。和性格沉稳的李超不同,张翔是个非常爱折腾的人,时常有些神奇的想法,有时甚至让人啼笑皆非。他现在在人大物理系任教。
  • 阮威和张龙,与我交集比较少。阮威在本校拿到博士学位后,去了Berkeley的物理系,搞的好像是超导相关的研究(反正我也看不懂)。张龙也在本校拿到了博士学位,现在在国科大任教,搞的也是一个我看不懂的物理方向(感谢 @xdra 在评论区的提醒)。
  • 崔恒纲和周梦宇,是低我们两级的小朋友。他们跟我一样,都进了机器学习的坑,拿到学位以后,现在分别在Uber和Microsoft搞研发。周梦宇还领导了后续maTHmU小组挺长时间,只不过后面的成员,我也不认识了。

回头看看,好像我们都走上了科研道路,不知道是巧合,还是maTHmU项目对我们产生了神奇的影响。虽然只做了些很不成熟的东西,但我们几乎可以断言,仅凭一腔热血来做大规模系统,或许我们的项目就算是最好的结果了。没有成熟的商业模式或者健康的生态,项目不可能长期走下去。

其实前前后后加入maTHmU的成员有很多,我认识的就不下30人。这里没法一一提起,但是他们都为这个项目做出了自己的贡献。

我要感谢这个问题,让我打开记忆的匣子,唤醒了许多尘封的往事。看着12年前的邮件记录,有种恍如隔世的感觉。我也模糊地想起团队成员间的争吵(李超和张翔真的很容易吵,他们性格差太多了,但又微妙地互补——少了他们中的任何一个,这个项目可能早就黄了),当然还有各种有趣的花絮。当然,穿梭过十载岁月,最能直击我心灵的回忆,还是我们算出9!=362880的那个瞬间。

我总觉得,那天晚上的李超,似乎比拿到本科特奖和Harvard的offer时,还要更高兴一些。


10月21日晚更新

有些同学对我们的代码和demo感兴趣。其实我们很早就在GitHub上公开了当年的代码,请见:maTHμ,其中UI项目下,就是重构以后的前端代码。昨天考古,才发现我们的项目主页也存留至今:maTHmU - Welcome!。首页的视频demo,就是当年我们拿到全国赛去演示的视频,是我和张翔一起录制的。现在看这个视频有点幼稚,不过确实已经展示了我们的核心功能。

如果有人受益于我们的代码和书,能在我们的基础上更进一步,我想所有maTHmU的成员都会很欣慰的。


10月23日晚更新

截止今晚,这个回答为我带来了1K+关注者和4K+赞同。两位主创李超和张翔也久违地联系我,说他们看到了回答,回忆起不少往事。再次感谢这个问题!

同时,我也希望借这次更新,探讨一些评论区看到的问题,也算是补充回答吧。

或许有人认为,只要我们核心团队坚持下去,这个项目就能成大气候;抑或,如果当时或者现在有个金主把我们团队聚集起来,这个项目就会长期进行下去。很遗憾,这些看法都是片面的。要想比肩大型商业软件,最重要的还是长期的投入和生态。我们必须看到,国内的软件环境对于开发者非常不友好——游戏行业同样饱受盗版之苦,大家宁可花钱购买网游里的道具,也不愿支持正版单机游戏。如果这种现象没有本质改善,那么大型商业软件的出现就只能仰仗于奇迹,成功概率不是没有,但是非常低。我不希望我的文字在这个方面产生误会——否则它就仅仅是一个精彩的故事,甚至不能被当成这个问题的回答了。

项目初期,我曾经问过李超,为什么会想搞这个项目,难道真的只是为了挑战杯,为了给自己增加各种筹码?他说不是。这个项目,他从大一就开始筹划,纯粹出于个人兴趣坚持了两年,终于在大三的时候看到了做成初步版本的希望。他也向我展示了各种文档,都是他点滴积累的笔记,甚至连TeXbook都是他介绍给我的——在UI设计的初期,他在方向性问题上的视野也远比我要长远。这些知识,是不可能在短期内积累起来的。正是这种坚持打动了我,我决定和他们一起追梦。事后证明这个决定是正确的,至少我拥有了难忘的回忆和宝贵的精神财富。

最后,请各位读者在惊叹之余保持冷静。我们这个团队,不过是无数怀揣梦想的学生中的一小拨,想做一件小事,咬牙坚持了下来。我们成就了这个项目,这个项目也让我们成长,仅此而已。如果夸大了我们团队的模式,就是在夸大个人英雄主义。如果是从未有人做过的事,那么依靠个人英雄主义或许可行。然而在市场上已经有MATLAB、Mathematica等成熟软件的前提下,商业模式驱动下的团队作战才是唯一的活路。辩证地看,我们的项目之所以能进行下去,是因为我们一开始就没有冲着商业变现而去;因此,我们没有做成真正的大型项目,也就是天经地义的事了。

最后我想说,我们的经验是有正面意义的。它至少证明了:任何一个时代,都不缺少敢于追梦的年轻人。只要有合适的时机,辅以适当的引导,我们就能创造属于自己、属于这个时代的奇迹。

希望这个回答能给大家带来些许信心。如此,它就比其他高赞回答更深刻一些了吧。


10月31日晨更新

评论区里有不少声音指出,我们原创团队中的不少同学现今正在美国或者美企工作,并且多多少少表达了惋惜之情。这让我略感意外,但仔细想想却又是情理之中。这个问题本身就是假设为中国研发出先进的软件或者系统,那么拥有这些能力的人才大量“外流”,明面上看确实不是好事。

然而我希望提醒各位:不要用狭隘的眼光看待此事;不要把在美国或者美企工作,等同于无法为中国做出贡献。可以预见的一段时间内,中国科技水平和美国的差距还很大,因此任何与美国的科技合作,都会从统计意义上对中国有利。近年来,中国在计算机领域取得的重大科技进展,与美国是密不可分的。

别人不提,只说我的经历:我在学术道路上的四位重要导师,无一不与美国相关。

  • 我的博士生导师,张钹院士,是中国人工智能的先驱和泰斗。上世纪80年代,他曾在美国UIUC访学两年。直至今日,他依然会回忆起访学经历对他产生的重要影响。
  • 我的博士生副导师,田奇教授,是计算机领域的知名学者。他在美国取得硕士、博士学位,并且担任教职达17年之久。然而,这并不妨碍他为中国各顶尖院校培养数十位研究生,而听过他讲课并且受到影响的学生更是不计其数。
  • 我在微软亚研实习期间的导师,王井东博士,也是计算机领域的知名学者。他在微软亚研工作10余年,也为中国各顶尖院校培养了数十位研究生。微软亚研作也被称为中国AI的黄埔军校,对中国AI的贡献无法估量。
  • 我在JHU做博后期间的导师,Alan L. Yuille教授,本身就是美籍英国人。他的实验室里,90%以上的成员都是中国学生——我认为他对中国的贡献,比大部分中国人要大得多。

所以,请各位认清事实,以平常心态去对待两国之间人才的流动。我们要相信时代,更要相信这些优秀的学子们:中国正在逐渐强大,或者无论中国是否强大,学子们报效祖国的决心都不会改变。如果我们抱着狭隘的民族主义思想去阻止正常的学术交流,才更会阻止中国做出更好的科技成果,开发出更强的系统和软件。


user avatar   divinites 网友的相关建议: 
      

我不知道为什么现在说起来「自己开发」,总是会有一种去嘲笑,去夸大技术和人力难度的倾向。而难度其实不在这上面。技术和人力是砸钱就能短时间解决的事情,因为技术本质上也是人,靠人去读论文理解技术写代码。而Matlab和Windows这些产品,难度在于长期开发过程中的信息积累和沉淀,不是砸钱加人多就能短时间内解决的。

说操作系统难,其实能在QEMU里面能引导成功的操作系统的内核,是一个人比着教材去学去做,一个月就优哉游哉的做出来的,现在就有这样的教材:

说Matlab难,让一个有科学计算研发经验的小组去开发核心的计算功能,不讲究太前沿的优化,参考开源的Octave,也不需要多少人,多长时间。

操作系统也好,Matlab也好,要开发一个和正品一样确实不容易,但是给足钱,并且不考虑商业前景的去开发一个「凑合凑合界面看起来是那么回事的」简单原型,真不是门槛多么高的事情。很多编程语言的最初版本,也都是几个,甚至于一个程序员业余时间开发出来的。

难的在于,要真的让人愿意去用,要有生态,不然就是一个样板工程——「我们有了」,然后没下文了。其他人该用Matlab还是继续用Matlab。

比如有个有情怀的公司招了一批程序员,比着Octave写了一个中国版的Matlab——简称为CMlab。作为一个「大计算器」,基本上就挺好了。接下来就需要找客户——谁愿意放着Matlab不用,用这个公司开发的,还不知道有多少潜在bug的CMlab呢?

给定Matlab已经拥有了这么多的用户,已经有了很成熟的售后,已经有了很高的声誉,那么要从Matlab手里抢客户,就需要比对方做的更好。这时候就要体现出各种优势,比如在速度上优化更好,更贴合对方的需求,比如你可以承诺公司免费派一个或者几个工程师蹲点售后,有问题立刻解决,开发插件…… 这些都是成本。因为声誉上和网络效应的巨大差异,这个CMlab公司就要付出巨大的人力和售后成本来中和Matlab的优势。

这个过程是漫长而痛苦的。以盈利为目的的企业很难支撑下来。而如果全靠国家掏腰包,又很难做到以客户为核心,这么贴心的去打磨产品。而如果采取第三条路——开源,那么行业软件的特点,又往往不足以支持开源社区。并且开源社区是最善于搞出「能用就行」的轮子的,但是要说仔细和贴心——不付钱的用户往往人们懒得去用心伺候——开源软件往往是用户要反过来适应开发者的思路,而商业软件才能用柔软的身段去适应客户。

所以这就回到一开始说的信息沉淀的问题了。Matlab的Simlink的各种功能和细节,Windows里面对成千上万的软件和硬件的适配等等,那都是无数工程师在长达几十年的过程中一步步积累过来的,这里面蕴涵的各种信息,明坑和暗坑,都是用户们能享受到,但是其实自己也未必完全理解的,这些独有的信息沉淀,这才是它们的护城河。


user avatar   haozhi-yang-41 网友的相关建议: 
      

不是说知乎上做IT的一大堆吗?为什么这个问题下,似乎大家对研发软件的概念都有了偏差呢?

其实软件研发领域,哪怕是工业软件,也不像汽车飞机或者什么别的工业产品那样,一但面世即为完全状态的:任何一个大型软件,都是在长期的版本迭代中逐步完善的。不信的话,去翻翻所有觉得很牛X的软件的1.0版,对比看一下?


所以,回到问题,如果真的要重新研发替代,那么在资金和人员团队过关的前提下,完成一个基本功能框架,完成80%-90%的基础功能,应该不需要花太长时间。

如果是ToC的,这时候基本上就可以发1.0版了。如果是ToB的,那就开始寻找落地项目,然后慢慢完善各种工具包/插件/扩展之类的了。

至于后续的迭代进度和方向,实际上取决于使用方的需求反馈——有反馈的先做,没反馈的放着——其实很多大型软件,有不少功能实际使用概率是极低的,甚至算是为了兼容性的历史遗留,根本就没人用(或者已经有更新更好的功能替代)。

另外,后续迭代的工具包/插件/扩展,设计一个良好的机制的话,完全可以用开源的形式让用户介入,双方合作。毕竟很多这些功能是行业相关的,外人很难揣测到底应该怎么用怎么写。


但真正麻烦的问题在于,在很多时候,当这些基础的功能实现得差不多之后,剩下的那些工具包迭代,并不能简单的通过加人的方式来加快进度,是属于那种典型的“长尾”模式。所以,如果前期为了加快研发进度而选择一个较高水平较大规模的研发团队的话,那么此时进入维护状态后,就会出现比较严重的人员过剩的状态。

如果是出于商业目的,那么综合计算这些人,包括招人、裁员和团队动荡甚至直接解散之类的成本,很可能是不划算的。如果是出于政治目的,那么最起码也要安排这些人的去路——如果你一开始就不把这些路径规划好展示出来,我甚至觉得那些牛人根本就不会来。那些年薪几十万上百万的牛人,基本上不会被你几句爱国奋斗的口号就忽悠过来的。

实际上,大多数大型行业软件的真正的护城河,就在于此。


user avatar   zhang_guo 网友的相关建议: 
      

大部分知友可能高估了真实成本,以及对问题的定位不符合实际需求。

首先定义一下目标,什么是“重新开发”?造一个百分之百等同于MATLAB的软件?其实这是没有工程意义的。MATLAB用户中,有多少只用到了MATLAB基础语法?用到拓展功能的,有多少用户用的是Toolbox或者Simulink的边边角角功能?根据28定律大概可以估算是20%*20%=4%。那么如果我们实际上实现了这些基本功能,其实就可以满足了96%用户的需求。

以这个角度分析,法国人造的Scilab作为基础版的高仿MATLAB+Simulink,实际上已经可以满足这96%的用户需求了。Python的NumPy+Matplotlib等库,也至少可以满足80%的基础用户需求了。市场上的工具很多,如果真的需要替代,可以有大部分的用户可以无缝迁移到这些替代方案。

那么为什么在正常情况下,MATLAB依然牢牢占据了优势呢?用户体验。首先是文档特别简单易懂,相比之下NumPy系和Scilab的文档根本没眼看。然后是历史悠久,积累下来的社区庞大,而且MathWorks对问题的回复也很及时,有问题比较容易解决。另外就是MATLAB的语言设计也通过牺牲了编程语言的通用性实现了对科学计算更加友好。Matlab的软件本身的GUI也特别不错,当然这个特点已经被大家抄的差不多,不是一个特别大的优势。

MATLAB其实有很多缺点和历史包袱是需要解决的。比如,一个10G的安装包,把所有工具箱都打包进去,对于80-90%真的有必要吗?剩下的10-20%用户需要的往往也只是一小部分,比如电路方面的、神经网络的,等等。再比如说,作为一个老牌商业软件,必须要兼容前面的版本,这样又带来了不知道多少历史包袱。所以实现全部功能,或者大部分功能,其实并不需要把原来的步骤都做了,而是可以直接吸收长处升级改造。Python系的NumPy和Matplotlib高仿了MATLAB,Pandas基于NumPy的基础高仿了R而兼具了两个软件的优点。

肯定有人抬杠,剩下的4%怎么办?这些问题通常情况下是一些特定领域有一些用的已经很成熟的算法,有的领域有很多其他专业软件,比如信号处理、电路模拟等等,没有必要和大众一样用同一类软件。我相信MATLAB肯定还有很多自己的看家本领,这些肯定是不容易被复制的,但如果是对应学科的人在已有的基础框架下写一些基础算法,还是有可能实现的。

另外还有一些很容易高估成本的现实原因。高仿MATLAB相当于你已经有了一个用户文档,大概就可以定义一套自己的API系统,也同时可以作出一批测试,即使你对MATLAB的源码实现一无所知。从软件工程的角度来看,很多前期工作已经不需要花费大量时间去做了。从商业角度看,我们也可以通过各种方法大体知道哪些库和函数常用,在开发过程也比较容易有方向。在良好的工程控制的前提下,这样一个项目是可以被推动起来的。

所以我的观点是,如果真的要重新开发Matlab,不需要完整地去造一个100%高仿版Matlab,而是可以通过一系列工具链来解决。以Python为例,我设想的模式是,有一个工程经验丰富的团队来主导基础组件的开发、项目质量控制和用户生态的建设,比如Simulink目前看需要一个可以在主流Python IDE上运行的插件。这个项目同时还需要有一批熟悉各个专业领域常用算法的开发者加入为各自的专业提供工具箱,这些工具箱以包的形式做成各个学科用的插件插入使用。

另外一个方面,对现有工具箱的梳理整合也很重要。很多好的工具是因为缺乏好的教程,所以被用的范围不够大。这个是我打算重点着力做的工作,也是我们公司旗下课程平台量潮课堂的主推课程之一,期待尽早和大家见面。


user avatar   liu-da-yang-84 网友的相关建议: 
      

做不出来,最大的问题在于大量存在的破解MATLAB和Solodworks。

正版一套matlab,加各种附件,价格在五千美元以上。在国内的时候,实话说,除了学校机房,我就没见过有人用正版的。

所以,即使国家主导真的去花大力气开发,也基本没戏,因为需求实际上是不存在的。


user avatar   liu-chun-lei-55-89 网友的相关建议: 
      

第一次回答是2020年10月,现在是2022年4月,我还在继续研发,Mark一下 2022-4-10



看到这个问题,很有感触。我们也是做专业软件研发的,船舶配载仪,是船舶上用来配货的,当然跟MATLAB等比,不在一个级别。

背景:

我国目前的船舶数量及造船量均为世界第一,是不折不扣的航运大国,但是我们还不是航运强国。举个简单的例子,在远洋商船上很难见到国产核心软件,船舶配载仪就是其中一个。

记得我们硕士刚入学时,导师就跟我们说,我们学校综合能力虽然比不上清北,但是在航海领域我们是当之无愧的国内第一。希望我们这些年轻人要有使命感和责任感。导师希望通过他们这代及我们这代人的努力,能逐步实现船舶核心关键设备的国产化。

研发历程:

我来讲一讲这个小专业软件开从0到1的研发历程,截止到今天, 我们已经开发了9年,目前软件已经通过国际5大船级社的认证。昨天刚好收到邮件,我们的系统通过了国际权威机构LR的形式认可,我比较开心,这让我们的系统从国内领先跻身到了世界领先水平



我们团队能一直坚持研发的几个关键要素:

  1. 首先研发这种专业软件基本上很难赚到钱,因为国外的相对来说已经比较成熟,而且投入巨大,时间长,我觉得任何一个专业软件至少8年的投入,所以基本上商业公司和投资机构都不会看好这种项目,我们的项目现在也在亏损
  2. 要有好的领导,领导相信你,愿意给你投入。 我们比较幸运,遇到一个好导师,导师特别有家国情怀,也是我们现在公司的董事长,一直支持我做这个事情,要钱给钱,要设备给设备,要人给人,不计成本投入
  3. 核心人员不能走。每个项目都有1-2个核心算法研究人员,这些人员可能博士或者硕士毕业时面临再就业,这样研究就会断掉。我硕士、博士及毕业后一直在研究这个方向,没有换方向,保证产品一直在研发
  4. 要有好的合作伙伴,我们配载软件的研发成功,很大程度上是有上海船舶研究设计院的大力帮助和数据支持
  5. 要耐得住寂寞,守的住清贫,家人的支持,潜台词就是干这行,没有钱
  6. 要有家国情怀,为实现中华民族的再次复兴而不懈奋斗。虽说科学无国界,但别人的终究是别人的
  7. 最后一句,中间我也动摇过,也想放弃,然后像其他同学去一个稳定的事业单位或者研究所。也会时不时问自己再坚持什么,又赚不到钱,可能是怕放弃了,对不起自己曾经立下的Flag。说实话,我也不确定我能坚持多久,但是我希望我能多坚持一些时间
  8. 十年一梦,一梦十年...

放几张图片,按照时间顺序


硕士时MFC版本



博士时Winform版本,算法和产品有了雏形


第一代装船,用到生成环境的WPF版本


现在团队正在升级研发的Web版本



对技术实现感兴趣的转到这里




     

相关话题

  可以对只有一个像素的图片拥有版权或著作权吗?为什么? 
  新买了笔记本电脑后,需要进行哪些基本的设置和下载? 
  电脑压缩软件哪个好? 
  有什么好用的手机浏览器推荐? 
  为什么直到现在 RAR 仍然比 7Z 更流行? 
  如何看待 ChemOffice 向中国盗版用户发送律师函? 
  硬件明明比软件更难,国内的硬件技术也不如软件,为什么硬件工程师待遇还不如软件? 
  Linux下有哪些给你带来「快感」的软件? 
  有哪些不错的电子书管理软件? 
  如果2个月可以训练出一名合格的码农,那么相关专业出来的大学生,4年书岂不是白读了? 

前一个讨论
为啥蒋介石塔山要用侯镜如?
下一个讨论
如何看待薇娅因偷逃税被罚13.41亿元,还有哪些信息值得关注?





© 2024-05-12 - tinynew.org. All Rights Reserved.
© 2024-05-12 - tinynew.org. 保留所有权利