闵应骅的博客分享 http://blog.sciencenet.cn/u/ymin 一位IEEE终身Fellow对信息科学及其发展的看法

博文

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

已有 17348 次阅读 2013-10-28 08:36 |个人分类:做学问|系统分类:科研笔记| 工程师, 科学家, 学编程

科学家和工程师要学编程吗?(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)建议梅西尔到自己志愿工作的软件工坊去。意识到系里好多人和她有相同的需求,梅西尔在图森的自家校园里组织了一个为期两天的编程突击营,帮她学习为自己的问题编程。

 

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




http://wap.sciencenet.cn/blog-290937-736692.html

上一篇:一个创新的苗头(131021)
下一篇:从统计数字看科研方向(131104)

45 吴国清 张忆文 张士伟 明波 文克玲 孙静宇 彭真明 王号 张学文 徐晓 褚昭明 逄焕东 徐明昆 杨正瓴 薛宇 廖晓琳 赵斌 胡传圣 范可强 陈安 李宇斌 李世春 柳林涛 王善勇 曹俊兴 姜宝石 巫生茂 周春雷 魏国 李健 姜咏江 吉宗祥 李天成 杨学祥 张骥 李盟盟 孟浩 王春艳 邱嘉文 rosejump dulizhi95 xuexiyanjiu guoyanghuawu zdzszl shenlituo

该博文允许注册用户评论 请点击登录 评论 (69 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2021-6-18 14:48

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部