凌云时刻 · 洞见

导读:很多人都在思考如何解决“Matlab被禁”这个燃眉之急问题。大家回顾了中国的工业软件发展之痛,批评国内的盗版问题、知识产权保护问题、重硬件轻软件等一系列问题。也提出了很多好的建议,比如给了针对Matlab各种功能的开源软件替代方案。这些都算是“昨天和今天”的事。

作者 | 包云岗

来源 | 凌云时刻(微信号:linuxpk)

前言

现在我想和大家一起讨论一下关于“明天”的事。我们每个人可以问自己一个问题:从现在这个时间点开始,给10年时间,甚至20年时间,我们能做出一个卡别人脖子的东西吗?(并不是说真的要去卡别人脖子,而是说要成为别人离不开的东西)如果从这个角度来看这次“Matlab被禁”事件,那么也许可以给我们更多的是启发——我们都知道Matlab最初只是新墨西哥大学Clever Moler教授在1970年代用于教学中的一个小工具软件,那它为什么能在几十年后成为卡我们脖子的利器?

发展理念

我们一起来梳理一下Matlab发展过程中折射出来的几个理念:

一、把东西做出来,而不是追求把论文发出来。Matlab网站上有一篇Moler教授自己在2018年写的Matlab简史。他在开头就写道,在1970年和1975年他所在团队向NSF申请了两个项目,目标是“探索开发高质量数学软件的方法、成本和资源”。他自己也认为,某种程度上这两个项目是失败的,因为他们没有发表出一篇论文,他们只是开发出了两个软件:一个是EISPACK,另一个是LINPACK。而且这两个软件也谈不上多大的学术创新,因为EISPACK就是把1965-1970年发表论文中用Algo60写的算法翻译为Fortran,而LINPACK则是直接用Fortran重写一遍。

二、把东西用起来,而不是做完就扔了。虽然EISPACK、LINPACK没有论文,学术创新也似乎不是很高,但确实两个很有用的软件。EISPACK的开发团队在1974年代写了一本使用手册,我在Google Scholar上查了一下,到现在已经被引用了1800多次,1970-1980年代使用非常广泛。LINPACK更是世界超级计算机排行榜Tops500的基准测试程序,可以说是影响了世界超级计算机的发展。

三、把教学场景用起来,而不是把教学当作负担。Matlab是Moler教授想把EISPACK和LINPACK应用于教学过程中的产物。如果Moler教授不是用心去做教学,不是为了能让学生更好地掌握线性代数与数值分析,更容易地使用EISPACK和LINPACK这两个软件,那么他就不会有动机自己动手去写一个Matlab小工具来把这两个软件接口封装起来,从而方便学生使用。

今天,由于严苛的科研竞争环境和考核压力,很多人都把教学当作了一种负担,认为会影响科研。但教学其实是试验新技术、新工具最好的应用场景,因为试错成本很低,而且学生的创新性和主动性,还能帮助改进优化技术和工具。Matlab最终走上商业化,就是因为Moler教授在斯坦福大学给学生上课时,有两个学生对Matlab很感兴趣,主动提出用C重写一遍,同时移植到IBM PC上。很多技术最早都是从课堂上发展起来,比如RISC架构是David Patterson教授在伯克利的课程实验。

四、把持久战意识树立起来,而不是期望速胜论。坚持围绕一件事做,几十年后的累积效应是惊人了。中国今天被卡脖子的东西,几乎都是别人积累了20年以上的东西。从第一版Matlab算起到现在已经有40年,1980年代初的第一代EDA软件到现在也有快40年,Intel在1970年左右第一代微处理器到现在已经有50年。台积电1987年成立到现在也是积累了30多年。

其实在学术界也有很多有影响力的工作也是积累很多年的产物,我们可以看一下ACM System Software Award,获奖的软件基本上都是持续积累了几十年,比如LLVM持续优化了17年、Eclipse优化了19年、Wireshark优化了22年、Coq优化了31年,GCC则有33年。

再仔细剖析一下Matlab以及对应的公司MathWorks,可以说是持久战的典范。MathWorks在1984年成立,只有1名员工。第一笔收入是1985年卖给了MIT10个Matlab版权,收入500美元。MathWorks公司早期很不起眼,有个玩笑称它前7年员工数每一年翻一番,1984年1个员工,1985年2个员工,1986年4个员工,直到7年后的1991年也才只有128个员工。和今天很多初创公司相比,这个成长速度就像是蜗牛了。但是他们力出一孔,围绕着Matlab不断增加功能,使Matlab成为一个行业领先的工具软件。

1997年,MathWorks的营业额达到了5000万美元,380名员工。如今2019年MathWorks公司营业额是10亿美元,3000多员工,全球有400多万用户。虽然从营业额看并不大,但其实我们更应该学习这种模式——不断积累。把一项技术做到极致,成为某个细分领域的隐形冠军。

总结

最后总结一下,当我们在思考如何解“Matlab被禁这个解燃眉之急的同时,更需要考虑如何才能在未来做出像Matlab那样的工作,做出能卡别人脖子的技术。

这需要我们做出改变,观念上的改变,行动上的改变。至于哪些具体的改变,我想前面梳理的四点就算是抛砖引玉吧:

(1)把东西做出来,而不是追求把论文发出来,

(2)把东西用起来,而不是做完就扔了,

(3)把教学场景用起来,而不是把教学当作负担,

(4)把持久战意识树立起来,而不是期望速胜论。

——以上为CCF YOCSEF杭州· Matlab被禁之特别论坛的发言

END

往期精彩文章回顾

申通上云?技术详解!

Python 命令行库的大乱斗

乘风破浪的中国数据库

SpaceX上天容易,Tesla自动驾驶难

与生命赛跑,Serverless提升AI诊断效率90%

技术创造新商业:云研发时代的效能挑战

生不出孩子怪天气?驳《我国工业软件失去的30年》一文

应云而生,原力觉醒——解读云原生基础设施

又一次全球第一!

帮您管好云:阿里云混合云管理平台发布

阿里云蒋江伟:我们致力于为世界提供70%的算力

长按扫描二维码关注凌云时刻

每日收获前沿技术与科技洞见

我们能从Matlab被禁中学习什么? | 凌云时刻相关推荐

  1. 《MATLAB R2012a超级学习手册》一2.5 本章小结

    本节书摘来自异步社区<MATLAB R2012a超级学习手册>一书中的第2章,第2.5节,作者 史洁玉 , 孔玲军,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  2. matlab中udt函数,《MATLAB信号处理超级学习手册》——2.5 离散时间信号中的运算...

    本节书摘来自异步社区<MATLAB信号处理超级学习手册>一书中的第2章,第2.5节,作者:MATLAB技术联盟 , 史洁玉著,更多章节内容可以访问云栖社区"异步社区"公 ...

  3. 《MATLAB图像处理超级学习手册》导读

    前言 MATLAB图像处理超级学习手册 图像是人类获取信息的重要来源.当今的信息化社会,对图像处理和图像分析的要求越来越高,现有的图像软件由于采购成本和功能的限制,已经不能完全满足专业人士的需要,这时 ...

  4. matlab图像处理创建项目,《MATLAB图像处理超级学习手册》一一2.1 矩阵的创建

    本节书摘来自异步社区出版社<MATLAB图像处理超级学习手册>一书中的第2章,第2.1节,作者:MATLAB技术联盟 , 张岩 更多章节内容可以访问云栖社区"异步社区" ...

  5. 《MATLAB信号处理超级学习手册》——2.7 本章小结

    本节书摘来自异步社区<MATLAB信号处理超级学习手册>一书中的第2章,第2.7节,作者:MATLAB技术联盟 , 史洁玉著,更多章节内容可以访问云栖社区"异步社区"公 ...

  6. 《MATLAB R2012a超级学习手册》一第1章 MATLAB概述

    本节书摘来自异步社区<MATLAB R2012a超级学习手册>一书中的第1章,作者 史洁玉 , 孔玲军,更多章节内容可以访问云栖社区"异步社区"公众号查看 第1章 MA ...

  7. matlab机器人工具箱学习笔记——ikine函数

    matlab机器人工具箱学习笔记--ikine函数 ikine函数用法 使用实例 链接: https://blog.csdn.net/weixin_42596724/article/details/8 ...

  8. Matlab函数功能学习记录(1)

    初学乍练之作 优秀的Matlab讲解: 博客园 Matlab - 基础知识 csdn matlab库函数大全 my Matlab函数功能学习记录(2) Matlab特殊字符.命令和函数 Matlab实 ...

  9. MATLAB STATEFLOW入门学习

    MATLAB STATEFLOW入门学习 最新学习基于模型的开发,从B站找了一个入门学习视频,跟着教程搭建模型,并能成功运行 https://www.bilibili.com/video/BV1ab4 ...

最新文章

  1. 基于OpenCV的图像强度操作
  2. C++ 二分查找函数 lower_bound upper_bound
  3. 图解web前端开发工具教程
  4. django按钮点击后想刷新当前页面的view写法
  5. 2015-11-16
  6. httpd 安装详解(待更新)
  7. datagrid 重载本地数据_DataGrid 的DataSource重新加载数据
  8. VBA编程_常用函数总结1
  9. 微信投票python脚本_微信投票python脚本
  10. Java 枚举类使用实践
  11. 软件测试系统流程和常见面试题
  12. Python爬虫之链家二手房数据爬取
  13. React Concurrent Mode 之 Suspense 实践
  14. 原生js打造自定义播放器
  15. [JavaScript学习记录] 首次运用于网页,做一个简易利息计算器!!!
  16. 新加坡国立大学Robby T. Tan教授招收计算机视觉方向博士生
  17. 【R-CNN论文翻译】目标检测经典论文R-CNN最新版本(v5版)全面中文翻译
  18. Linux之(27)networkctl命令
  19. 别找ERP试用版了,直接送你一个免费的
  20. 举个栗子~Tableau 技巧(215):简化实现雷达图(Radar Chart)

热门文章

  1. 微博转发话题js代码
  2. 通过表单设计器动态生成数据库表以及动态查询的功能实现
  3. 【Flutter】二十五、Flutter的事件处理
  4. ggrcs 包2.4绘制RCS(限制立方样条图)实际操作演示(1)
  5. 目标检测、目标分割:常用框架与流程(流程包括:数据集标注与格式预处理、训练与推理、训练优化、算法代码以及原理)
  6. 图像目标检索:基于Opencv的颜色空间匹配法
  7. Elisp之实现代码自动高亮并跳转(十八)
  8. 王权富贵:安装过软件的集合
  9. 主角的超能力有哪些?
  10. #Effective Android# 警惕界面上的异步回调(No.2)