科学网

 找回密码
  注册

tag 标签: 学编程

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

我在学编程——懂得一二还需懂得三四
热度 4 whitesun 2013-10-29 23:06
很多人都学过编程,也会编程,我的研究生也应我要求编写实验用的程序,可以说她也会编程。 其实说起编程,并非易事,大到编写操作系统、互联网应用基础软件等,小到算个一元二次方程的根、打出一个熊猫图案等。如果讨论如何编程,可以比作翻译,编程是将用户需求翻译成计算机语言,就像将英文文章翻译成中文一样。事实上,编程比翻译难,因为往往是没有英文原文的,是需要自己先构思好英文原文而后翻译的。做到这点非常难。翻译有直译与意译之分,编程也不例外,初学者往往是直意,中高水平的者更多的是意译。至于编程水平的层次,就我看来至少可以划分五个层次: 准入门级:学懂某门计算机语言的基本语法,掌握书中简单的示例,能写点小程序,完成一些功能,如6岁孩童能讲话,讲点简单的事情; 入门级:掌握了1-2门计算机语言的基本知识,能参照已有的系统开发简单的应用系统,如同小学生也能写作文,读书看报; 初级:掌握一些计算机基本知识,如网络、数据库、图像处理等知识,能编写完成特定功能的程序,并用于实际系统中,如同大学毕业生,掌握某一专业知识,能在某个行业就业; 中级:较全面地掌握计算机学科知识,面对实际应用系统的模糊需求,能考量实现这样系统所需的具体技术、设计各组成部分、完成核心功能的开发,如同大学毕业后具有3-5年实际经验的工程师(指货真价实的工程师,并非现在社会上那种1篇论文评出的); 高级:对计算机学科知识有深入的认识,能考虑到用户的深层次需求,可以设计和架构先进的系统并实现。 上述层次划分,其实有意将较低水平细分开。在计算机领域实际上将第三层次及较低或较高水平,细化为初级程序员、中级程序员和高级程序员。具体来说,我认为绝大多数计算机专业的学生毕业时的水平达到了入门级,而大部分工作2-3年后的程序员的水平接近初级,算是标准的程序员,而少数优秀的程序员能超越第三个层次,但没达到第四个层次,算是常说的高级程序员。 至于第四个层次,即中级,其要求实际上远远高于高级程序员,只有经过较好锻炼的有经验的程序员才能达到,算是常说的架构师;至于第五个层次,做到了行业领先,算是科学家或专家,例如Hadoop,storm这样系统的设计者,或一些新一代语言的设计者,他们看到的是未来的整个行业需求,设计的系统是满足行业发展需要的。 我作为教软件代码开发技术的老师,从高二(92年)开始学中华学习机上的basic到现在,还一直不断的学这种语言、那种技术,在内心深处一直有种自卑感,觉得自己不会编程,往往是想的容易,不敢动手,总有些畏惧感,做不到潇洒自由。当然,这与我经历相关,毕竟不天天编码,当然这也是上述层次决定的,达到初级容易,进入中高级绝非易事。 鉴于上述认识,我在勉强达到初级水平之际,怎敢不学编程,走在向往第四层次、仰慕第五层次之路上,其压力尤胜评教授、上博导,绝非易事,怎敢不学编程。在此,我也想劝一下我的学生们,投点精力,夯实基础,学学编程不丢人,别整天浪费时间,别编个完成不了功能的程序对付老师、应付自己的未来。
个人分类: 科研实践|4679 次阅读|6 个评论
科学家和工程师要学编程吗?(131028)
热度 33 ymin 2013-10-28 08:36
科学家和工程师要学编程吗?( 131028 ) 闵应骅 有人说,现在所有科学都在迅速变成所谓的 “ 数据科学 ” 。如今的研究人员,不论来自理工农医、甚至是人文学科,都要从巨量数据中找到可用之物,并将它们转化成有价值的东西。而用计算机离不开程序,大数据技术解决不了各门各类的数据分析问题。那么,是不是所有学科的科学家、所有工程领域的工程师都要学会编程呢? 近代的科学家和工程师在计算机上花的时间越来越多。譬如海洋学、机械工程,高科技的船上,机械零件的装配,水下传感器数据的收集,都离不开计算机。一个海洋工作者也许在海里的时间只占 5% , 95% 的时间在计算机前从数据中清理、格式转换、处理、提取他的观察、验证他的猜想。对于其他领域,像天文学、生物学、物理学、航空工程师、经济学者、遗传学者、生态学家、环境工程师、神经系统科学家,所有这些科学家和工程师都要从数据中处理、分析和提取他们的观察,或者说是验证他们的假设。他们无法回到中学或大学去重新学编程。这问题怎么解决?我在 买手机 学手机( 130729 ) 一文中曾谈到计算机操作系统理念的改变, 每一种应用都有一个 APP ,用户不必去考虑系统是怎么调度和运作这些资源的,系统就给你提供这些服务。对于一般用户,这已经足够了。但对于科学家和工程师的专业工作,这是不够的。 科学家和工程师 学会编程有许多好处,有时甚至是必需。他们不可避免地要面对许多事务性的工作,譬如清理和集成数据,如果用程序,比手动至少提高工作效率 10 倍。当然,大牛、老板也许不需要自己动手,这样就离开了科研第一线,但是,可能失去某些发现和创新的机会。计算机帮你不是简单地使用工具和数据库,那些人人都会做。如果你写一个程序从新的数据源获取数据;清理、格式转换、集成已有数据;进行用原有工具做不到的更复杂的分析;你可能发现新的东西。而且,知道怎么编程使你更有效地与你实验室的程序员进行交流,更有针对性的指导学生。你究竟不是软件专业的人士,但是,你懂得编程,与他们的共同语言就多了。如果你能告诉他编什么样的程序可以帮助解决你的技术问题,譬如在并行计算机上进行计算,也许比你自己解决要快 100 倍。所以, 科学家和工程师 学会编程是有必要的。 现在科学家和工程师已经学会了某些编程,譬如 Excel , MATLAB, 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 )建议梅西尔到自己志愿工作的 “ 软件工坊 ” 去。意识到系里好多人和她有相同的需求,梅西尔在图森的自家校园里组织了一个为期两天的编程突击营,帮她学习为自己的问题编程。 科学家和工程师利用已有工具进行简单的编程,应该像过去使用计算尺一样熟练和普通,才能得心应手,运用自如。
个人分类: 做学问|20133 次阅读|69 个评论
猪八戒学编程的悟理心得
热度 3 qsqhopeiggcas 2013-1-20 07:22
话说唐增师徒四人从西天取得真经回来后,八戒回高老庄和高小姐结婚了。婚后八戒对夫人好极了,让干啥就干啥,拿老婆的话当圣旨,整天像鱼和水一样粘在一起。幸福的生活总是过得很快,不知不觉 7 年过去了。 高 夫人不但贤惠,还特有主见,有一天对八戒说“夫君呀,咱俩在一起过得挺开心,幸福的像花儿一样,但咱家的余粮确实不多了,你们师徒分手时师傅赠给你的白龙马也早歇菜了,这样吧,我在家里耕耘着农田,你去电脑培训班学个一技之长,也好找份体制内的工作挣钱养家呀。”八戒说“遵旨,老婆叫干啥就干啥,听老婆的话,跟老婆走,永远不当一把手,好吧,我明天就去报名。” 八戒第二天早早起来,到街上看到一家标有“千仞速成电脑培训班”的学校正在招生,就去报名。报名处一位长相妩媚的小姐和八戒打招呼“ Hi ,我是余璐璐小姐,先生要报名吗?”八戒说“是啊,在你们这里学什么好找工作呀?”余小姐说“学编程啊,毕业后好找工作,工资可高了。”八戒说“好吧,就学编程吧,你们这里都教啥编程语言呢?”余小姐介绍说“有 Java 、 PHP 、 VB 及 VC 可以选择,先生想学哪种?”八戒心想,学带 V 的好,在电视上看洋人们上街游行一伸手,俩指头比划成 V 形状,表示胜利的意思,帅呆了。但 VB 与 VC 选择哪种呢?八戒想了一会,有了,学 VB 吧, B 是 C 的哥哥,咱在取经的路上,当沙师弟哥哥好多年,当哥的感觉真好,就学 VB 吧。 第一堂课学数组,奥巴驴老师举例: Dim Pig(88) as integer, Dim Bajie(250) as double ,老师说,数组是有界限的,否则程序运行时会出现 overflow 。八戒听的是云里雾里,心想数组怎么还有界限限制呢?我不服!想当年我当天蓬元帅时,想怎么折腾就怎么折腾,爱咋地就咋地,数组还敢管我?不行,我得问问唐增师傅是怎么回事?八戒拿起“爱疯”手机给师傅打电话,师傅在电话里说“这就对了,什么事儿得有个度,不能由着自己的性子胡来,若社会没有法律的约束,人人都‘和尚打伞,无法无天’,社会不知会乱成啥样子?” 不知怎么了,唐师傅今天兴致很高,继续说道“人最大的追求是自由。一个人一旦失去了自由, TA 还有幸福和快乐可言吗? TA 还可能有所作为吗?自由是受‘度’约束的自由,过度的自由就会失去自由。如在弹性极限内拉一根弹簧,一松劲,弹簧会恢复原状,但一旦超过了这个‘度’,弹簧就无法复原了。做人做事,为人处事也有一个‘度’的问题,‘度’的这一边可能是阳光灿烂,而‘度’的那一边却可能是乌云密布。 ” 经师傅这么一讲,八戒是整明白了。 第二堂课是讲循环语句 Do…..Loop ,老师举了个例子说明其用法: A=0 Do A=A+1 If A10 then Exit do Loop 八戒的联想能力挺丰富,想 Do 就是做或干的意思, Loop 是循环或转圈的意思。想当年在取经的路上,和猴哥一掐架,猴哥用他的金箍棒在地上画个圈不让我出去,打得我满地找牙,如果俺老猪不求饶,还逃离不出去。看来循环语句和猴哥是一路货色。这事儿包含着什么科学道理呢?想了一阵,一拍大腿,明白了这样的道理:遇到难题时,光苦干不行,也不能一头钻进牛角尖里出不来,在里面打转转,得换个角度想问题,条条道路通罗马,正向思维解决不了,咱换逆向思维或另类思维,这样或许在“山重水复疑无路”的时候,就能看到“柳暗花明又一村”了。 未完,待续 …… 。
个人分类: 趣谈|4318 次阅读|7 个评论

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

GMT+8, 2024-5-11 14:25

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部