科学家和工程师要学编程吗

来源: 投稿
作者: 谢平凡
2013-11-05

科学家和工程师要学编程吗?(131028

闵应骅

有人说,现在所有科学都在迅速变成所谓的数据科学。如今的研究人员,不论来自理工农医、甚至是人文学科,都要从巨量数据中找到可用之物,并将它们转化成有价值的东西。而用计算机离不开程序,大数据技术解决不了各门各类的数据分析问题。那么,是不是所有学科的科学家、所有工程领域的工程师都要学会编程呢?

近代的科学家和工程师在计算机上花的时间越来越多。譬如海洋学、机械工程,高科技的船上,机械零件的装配,水下传感器数据的收集,都离不开计算机。一个海洋工作者也许在海里的时间只占5%95%的时间在计算机前从数据中清理、格式转换、处理、提取他的观察、验证他的猜想。对于其他领域,像天文学、生物学、物理学、航空工程师、经济学者、遗传学者、生态学家、环境工程师、神经系统科学家,所有这些科学家和工程师都要从数据中处理、分析和提取他们的观察,或者说是验证他们的假设。他们无法回到中学或大学去重新学编程。这问题怎么解决?我在买手机学手机(130729)一文中曾谈到计算机操作系统理念的改变,每一种应用都有一个APP,用户不必去考虑系统是怎么调度和运作这些资源的,系统就给你提供这些服务。对于一般用户,这已经足够了。但对于科学家和工程师的专业工作,这是不够的。

科学家和工程师学会编程有许多好处,有时甚至是必需。他们不可避免地要面对许多事务性的工作,譬如清理和集成数据,如果用程序,比手动至少提高工作效率10倍。当然,大牛、老板也许不需要自己动手,这样就离开了科研第一线,但是,可能失去某些发现和创新的机会。计算机帮你不是简单地使用工具和数据库,那些人人都会做。如果你写一个程序从新的数据源获取数据;清理、格式转换、集成已有数据;进行用原有工具做不到的更复杂的分析;你可能发现新的东西。而且,知道怎么编程使你更有效地与你实验室的程序员进行交流,更有针对性的指导学生。你究竟不是软件专业的人士,但是,你懂得编程,与他们的共同语言就多了。如果你能告诉他编什么样的程序可以帮助解决你的技术问题,譬如在并行计算机上进行计算,也许比你自己解决要快100倍。所以,科学家和工程师学会编程是有必要的。

现在科学家和工程师已经学会了某些编程,譬如ExcelMATLAB, Mathematica, LabVIEW。但是,针对你一个特定的问题,可能数据格式不匹配、某些数据需要取舍、要在一幅图上找特定条件的点、输出要求某些特殊的格式,等等,诸如此类的需求可能需要你自己编程序。编程是一种生产力。谁学习得越多,他就越有竞争力。未来有一天,编程也许会像现在算整数一样普通。从计算机专业人员的角度讲,我们必须创造终端用户编程工具,使他们在不知道是在编程的情况下编程。当然,让每人都像软件工程师一样是不可能的。理想地,希望用户界面和工具让使用者并不感觉是在编程。

   通用编程技巧在一般的数据处理编程中都有了。只有一些特定的工具对于特定问题比较好用。譬如Excel,即使对于财务分析师,可能还需要用SQL。这对他们,可能要求太高。不管怎样,编程工具总有许多与需求不匹配的地方。终端用户编程工具应该让使用者并不感到是在编程。但现在,科学家懂得编程比只会使用工具要好。譬如Excel已经是一个很有力的工具,现在类似的东西可以做曲面积分或几何证明或在纸上画散点图。需求就是动力,即便对那些有统计学和相关数学背景的人相对容易一些,其他学科的研究人员也能够在一段合理的时间内,学会处理大量数据所需要的技能。

如果是选课,编程的MIT大学课程也不难,一般40小时授课,120小时作业,5个课程也就5X160=800小时,一个学期,足可熟练使用MATLAB/Maple/Mathematica/ C++在计算机系找一些选修课程,可以帮助研究人员获得自己需要的技术,但许多科学家发现,这并不是最有效率的学习方法。一个对他们学科领域有足够了解的编程教员,授课的效果要好得多。“软件工坊”(Software Carpentry)正是这样的一个机构。它提供这样专业的编程教员,提供各种用途的软件工坊。过去15年里一直致力于帮助科学家开发更好用的软件。有这样一个故事:朱莉·梅西尔(Julie Messier)是亚利桑那大学研四的学生,她在加拿大一个北温带森林保护区测量了25个物种,超过400棵树木的35 个不同指标。为了完成论文,她必须用到编程和统计学的技术,对这片巨大的数据网络进行分析。她在犹他大学找到了一门一学期的课程——“生物学家的编程课。这正是她需要的,但犹他州路途遥远,课也没有在网络上公开。授课教师伊桑·怀特(Ethan White)建议梅西尔到自己志愿工作的软件工坊去。意识到系里好多人和她有相同的需求,梅西尔在图森的自家校园里组织了一个为期两天的编程突击营,帮她学习为自己的问题编程。

科学家和工程师利用已有工具进行简单的编程,应该像过去使用计算尺一样熟练和普通,才能得心应手,运用自如。

展开阅读全文
1 收藏
分享
加载中
更多评论
3 评论
1 收藏
分享
返回顶部
顶部