从MATLAB回忆出的往事和感想

从MATLAB回忆出的往事和感想。从MATLAB回忆出的往事和感想万湖小舟
最近看报导中国有十三所高校被美国禁用软件MATLAB , 还说或导致数年停滞 。 我想停滞不至于 , 但给教学和科研工作带来不便到可能是真的 。谈到MATLAB就让我的思绪回到在德国留学的那些年月 。 正是MATLAB为我添补了家用 , 也使我成为一名全职的德国研究工程师 。九十年代初我在德国高校时就看到MATLAB在广泛使用 。 由此也开始学习和使用它 。 当时使用的软件还有Simulink 。 它是以MATLAB为基础的图形编程开发环境 , 用做控制系统建模 , 仿真和分析等 。那时为了保证全家人的生活质量 , 周末或者傍晚就利用工余时间到S市一个机械高级制造技术研究所去给人家用MATLAB编程 , 有点额外收入 。 记得当时合同是40小时/月 , 每小时25马克 。 是大学专门给做博士学位的学生提供的业余"科研助理" 职位 。在德国持学生签证是允许做假期工的 , 比如到汽车公司的流水线上工作等 。 但持Promotion的签证(做博士签证)是不允许做大学生这种类型的假期工的 。 只可以在大学研究所内做一些研究性的业余工作 , 比如科助这样的工作 。 德国教育系统和英美不同 。 在德国做博士学位的人其实都不再视为学生(只需学生注册一年就可以了) 。 做博士都是有工资的 , 研究所要么付给你全职工资或半职工资 , 或让你拥有奖学金 。 拥有奖学金的人大多是外国学生 。 由于学生注册在月票 , 住房上等都有一些优惠 。 所以我们外国学生基本上每年都注册 。除了在做博士的那个研究所正常工作外 , 我在那个制造技术研究所业余时间当科助,工作了三年左右的时间 。 由于这个经历 , 当我一完成论文 , 甚至还在等候答辩期间 , 大学内一家金属成形研究所就给了我一个全职研究工程师的职位 。 因为我在做业余科助的工作期间 , 帮金属成形所解决了应力应变图形分析的算法和软件 。 他们希望我继续这个科研项目 , 那是德国AUDI汽车公司资助的课题 。 在那里又工作了几年 。 在这个职位上有一段时间身兼三职 , 过去做博士的研究所希望我给一个同事的课题帮忙 , 编程一个数控系统 , 我答应业余时间来做 , 原来作科助的研究所还希望我能把承接的那个用MATLAB编程的工作做完 , 当然也是业余时间去完成;再就是全职的研究工程师的工作 。 现在回想起来那段时间真辛苦 。 感谢家人的支持 , 我们一起度过了那段忙碌又充实的岁月 。这些经历让我当时对MATLAB比较熟悉 。 我觉得MATLAB适合于研究所 , 科研等场所 , 但不一定适合于工业界 。 比如一个工业应用系统软件要运用曲线拟和 , 要用有限数据做多项式的插入计算 , 解高阶线性或非线性方程等 , 这些计算MATLAB都有 。 但你不能把MATLAB整合到你的应用软件中去 。 这涉及到MATLAB的使用许可 , 应用系统的内存是否允许 , 软件编程和使用是否方便等等 。 最简单的就是在这些应用软件中根据数值方法的原理 , 自己编程形成各个功能的子程序 , 然后把这些子程序嵌入到应用软件里 。 这样这个应用软件就不涉及MATLAB的授权许可问题 , 可以直接服务于工业界 。 同时应用软件所占内存也不大 , 运行快 , 可靠性好 。 我一般接工业课题时 , 如果涉及到数值方法的某些应用 , 都自己编程 。因此后来当我在高校教授数值方法时(Numerical Method) , 我一般更愿意使用普通的编程语言 , 如Visual C++, Visual Basic 和Excel 或Micro of Excel而不使用MATLAB 。 我常给学生讲数值方法这门课是告诉你MATLAB背后发生的故事 , 而不是MATLAB的使用 。 因为MATLAB功能强大 , 一个指令就可以做很多事 。 但这不是了解数值方法原理的好途经 。 因为很多细节都反应在普通语言的编程中 。 另外学生学到用普通语言编程数值方法的各种算法后 , 可以很容易开发工业应用软件 。 当然这只是我个人见解 。 目前很多高校教授数值方法时 , 不少教授也愿意使用MATLAB 。另一方面在非数学的一些课程中 , 比如电工学中求解交流电路时 , 如果采用相量(phasor)方法 , 用MATLAB来求解就很容易 , 让MATLAB去做繁琐的复数运算 , 学生可以集中精历在电工学的原理和电路分析上 。使用MATLAB必须付费 。 学校买有许可证 , 学生可以免费到计算机实验室使用 。 如果想要安装到自己的个人电脑上就必须购买使用许可 。 目前在网上MathWorks公司给学生提供一个月的MATLAB免费使用的学生版 。 一个月后如想继续使用就需付大约50~100加元 。回到中国一些高校被禁用MATLAB的话题 。 我想MATLAB背后的基础编程并不难 , 为什么这么多年过去了 , 中国并没有开发出自己的类似于MATLAB的数学和控制仿真软件? 我个人体会中国缺乏一种融汇多学科的技术人才 。在数值方法方面 , 中国出版过很多书籍 , 有些书还被评为优秀书刊 , 内容写得好 。 那是理论部分 。 当要把这些理论转变成数学应用软件时 , 写书的教授不一定会软件开发 , 或不很精通软件研制;会编程的软件开发人员不懂数学理论 。 协同工作常常"鸡同鸭讲" 。 软件人员不懂数学理论很难开发好数学应用软件 。 最好的办法就是培养多学科的技术人才 。 我常给学生讲 , 一个现代的机械工程师 , 不能只掌握机械设计的原理和技术 , 还必须掌握电工 , 电子技术 , 控制技术 , 软件技术等多学科的知识 。一方面得到信息和体会到几十年来中国技术进步巨大 , 我深信这一点 。 另一方面都说中国人数学能力高 , 同等年龄的中国中学生比美国的中学生数学能力强 , 我也相信 。 可是为何像MATLAB这样的软件又没有中国自己的版本呢?前段时间有人写文章说华为的巨大进步靠的不全是中国人 , 有很多外国人参与 。 任正非先生也提及曾有一位俄罗斯年轻数学家帮华为研发了一种算法解决了2G , 3G的机站运行难题 , 让华为领先了其它竞争者 。 所以为华为工作的有很多外国人 。 任正非先生说华为采取的策略是:在有凤的地方筑巢 , 而不是筑巢引凤 。 也就是说不把外国人才引入中国 , 而是在当地招聘外国人才为华为工作 。那么美国商用数学软件MATLAB的开发和研制是不是也有来自世界各地的多学科的人才呢?


推荐阅读