科学网

 找回密码
  注册

tag 标签: 好文章

相关帖子

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

没有相关内容

相关日志

我喜欢的文章
热度 1 Enago 2013-10-25 13:44
按照做研究的阶段不同,俺对文章的认识也经历了以下过程。 一开始的时候特别喜欢技术类的文章。那个时候纯粹是为了解决问题而看文献。目的是看有没有现成的方案可以模仿,别人怎么实现的。而且文章实现部分写的越详细就越喜欢。这个阶段的俺,还没有办法看到整个项目的轮廓。通常是老板说要实现一个什么样的功能,让做一个很具体的事情,比如识别一下条形码啦,控制某个设备啦。那段时间,做这些事情特别得high 。觉得能解决一个问题,就是一个很大的成就。能写出一段别人看得晕乎乎的代码,就比别人聪明。现在回头看,严格地说这不算在做科研。因为只是解决一个技术上的细节问题。这个问题肯定是可以被解决的,没有理论上的困难。 后来,要写项目申请,就不能再事无巨细地掰了,要说有重点的,要说项目的意义。一开始的时候,特别不适应这种思维转变。这感觉就跟你闹着玩地种下一棵树,别人就要你上升到改善全球环境的境界。今天忘了吃肉,就要正义凛然的说,不吃肉是为了保护动物。不过意义还是要扯的,不扯项目申请书就没法写了。所以这个时候就特别喜欢读综述文章,只要是综述就都是好的,也不在乎对还是不对,反正只要抄抄那些意义,错也是综述写错了。这算是科研吗?我想,这个算是入门吧。至少,你开始关心做这个事情的意义了。 后来,花了几年做一个自己还觉得不错的项目。也觉得这个项目很有意义。亲手搭了所有的硬件,写了所有的控制跟测试代码。花了不少时间,也花了不少精力。走的时候留下一堆文档跟一个原型。一年之后,再回去看到时,东西仍在,满是灰尘,没有人动过。要好的同事说,东西看起来不错,但没敢用,太复杂了,不会用。要是只有一个电源,只有一个开关,那就好了。可是又要跳线,又要设置程序。功能是多,但太复杂了。我们要做实验的话,只要简单的功能就够了。后来据说,地震了,原型倒了。意义也没了。 现在,说实话,我已经不知道什么是好文章了。只是觉得好文章就是一种感觉。就像你吃饭的时候,可能喜欢很多种不同的味道。都是好东西,但是真正的好菜就是吃过了一回,你还记得那种味道,下次还想要再品尝一回。文章也一样,很多文章确实是看过了就忘记了,或者就记得conclusion 的某一句话。好文章是那种读了之后,能让你心里一颤,然后那种快乐慢慢溢出,心里慢慢舒缓下来。原来,这个东西是这个样子的,我以前怎么就没有想到过呢。或者,以前我想的怎么都是错的呢。还有一种也是好文章的感觉,就是它自成一体,就像一只缩头的乌龟,你把它翻转过来,怎么转它,仍然看不出什么破绽。也许它没有什么工程上的价值,没有什么实际用途。但是,它的本身就是一个自洽的逻辑。它就是它,它不需要改变你的任何观念,但是它就在那,就是一种美。 或许,我老了。已经老眼昏花了,不懂得什么是真的好文章了。 本博客内容皆由英论阁资深学术专家团队撰写提供 § 英论阁专业团队提供 英文论文编辑 、 SCI 论文润色 、一站式编辑、出版协助 http://www.enago.cn §
个人分类: 科研感悟|4049 次阅读|3 个评论
怎样才能发好文章?
热度 3 skylark1981 2012-5-5 06:44
最近连续发了几篇不错的文章,谈谈我的感想。 1. 选题并非决定性的,要往深处挖掘。我做的文章基本之前都有类似的工作了,但是如果往深处挖掘,就 有可能找到重要的东西。我之前有一个题目是我师弟几乎想放弃了的,因为结果都和别人的差不多。 2. 不要急着发表,千锤百炼。做一个课题往往可能得到很多结果,有些很普通,有些可能不普通。如果急着 发表,就不能从普通的结果中看出不普通的来。我做文章很慢,半年一篇。 3. 文章要浓缩,讲想法而不是细节。我知道很多人喜欢写长文章,我不喜欢。我喜欢发表最重要的结果,不 重要的结果就直接丢弃。  4. 突出亮点。要努力去找文章的亮点,然后抓住这个亮点,讲一个完整的故事。这样的文章一般都很不错。 纯粹个人建议,如果您觉得幼稚,莫要笑我。
4187 次阅读|4 个评论
[转载]好论文是如何炼成的
sciencenetctrl 2012-4-10 18:46
《好论文是如何炼成的》转载自网络 作者: 演讲:林宙辰 整理:孙凌 最后更新:04-10 16:14:35 我的实验成果斐然,为什么要“浪费时间”写成论文呢? 我觉得自己的论文质量不错,为什么学术会议和期刊总是不收录呢? 做实验没日没夜,实验后的论文写作更是夜以继日,我如何能够从容地写作呢? 林宙辰研究员告诉实习生们:“要写出好论文,技巧只是锦上添花,当你理解了写论文的必要性,用心写作的意识便会油然而生。” 为什么要写论文——分享与提炼 要写出好论文,技巧只是锦上添花,当你理解了写论文的必要性,用心写作的意识便会油然而生,所谓正心诚意为先,而后才能齐家治国。我们为什么要写论文?许多学生回答是:老师要求写,或者写论文才能毕业。不幸的是,以上答案很少能催生出优秀的论文。 正解是:第一,研究者有优秀的研究成果要分享,并希望在学术圈内制造自己的影响。论文极大地提升了分享的效率,文章在手,重复宣讲的烦恼不再有。以前10个人向你咨询,你要讲10遍,现在只是一篇文章,轻轻点击,发予10人的简单操作。 第二,写论文可以极大地帮助自己提炼想法,把粗略的想法精细化。本来思路上也许有盲点,但当你必须考虑如何让他人接受自己的观点时,几行论点的草稿自然是不够的,将所有材料重新进行有机整合是十分必要的。 以下诗句也说明了写作对研究者的意义:听而后忘却(I hear and I forget)、看而后记忆(I see and I memorize)、写而后理解(I write and I understand)。 何时开始写论文 对这个问题的错误答案是:现在必须写了,不写不能毕业,或会议的截稿日期将近。不幸的是,匆匆赶制的论文往往质量不佳。写文章颇耗时日,好文章不是3-5天赶出来的。正解是:当材料充分、思考清晰、实验结果齐备时,动笔时机才成熟。 什么是好文章——想法好、表达好、语言好 首先,文章要内容好、想法好,不能只靠包装。所谓内行看门道,论文最终要给同行看,他们自然会把你的想法和现有的想法进行比较,你的想法要经得起推敲。 其次,想法还要语句通顺、逻辑连贯地表达出来。好论文首先要结构清楚,逻辑性强,前后呼应。例如,文章靠后部分如果引用一些知识,可以先用文献综述在前方铺垫好,给读者一定的知识储备,避免造成理解困难。其次,解释要清晰。论文,尤其是工程类论文,要能够让读者重现自己的算法,就要求必须解释清楚每一个步骤。论证要充分翔实,要充分地向读者展现自己想法的价值。 在向读者展示的过程中,一些辅助手段可以让文章中的解释更加清晰,例如图表、直观的记号。例如我们学习物理学时使用的符号非常直观:用希腊字母来表示角度、小写字母表示矢量、大写字母表示矩阵。记号非常有助于思维过程,阿拉伯 数字系统影响巨大,而其它计数法都消亡了,那是因为这种系统对记忆、理解都有很大的帮助。当然,如果一定要用其它符号进行表示,对文章内容没有影响,但读者在阅读时已经对符号所代表意义有所假定,如果改变了现有假定,会造成阅读障碍。 第三,从语言上说,参加国际学术会议的论文一般是英文论文,我们用非母语很难做到文采飞扬,但至少可以语言平实而顺畅,杜绝语病和错别字。单词拼写、时态,甚至标点符号也要运用规范,尤其是数学公式里的标点符号。 写论文的几大误区——想法多、吹大牛、太复杂、过多引用自己的文章 有人认为“想法越多,论文越好”,但对于论文,特别是工程类论文,中心思想集中非常重要。一般地说,对于会议论文,由于篇幅和审稿时间的限制,一篇文章以讨论一个方法、解决一个问题为好。对于杂志论文,其篇幅可以很长,因此可 以深入讨论一个方法在不同问题上的应用。如果有很多种方法,建议每种方法写一篇论文,而且后续投稿所讨论的方法,要和先前所投的方法进行比较。 有人认为“吹得越牛,论文越好”,实际上要对自己的论文有正确认识,审稿人作为你的同行可以辨识出作者是否过分拔高自己。另一方面,过分的自谦也没有必要,因为审稿人不会比作者更愿意费心去挖掘论文的创新之处和贡献。 有人认为“越复杂,越显得我水平高”,但事实上一眼就能看懂,甚至简单到“愚蠢”的文章反而更好,太复杂的论文很容易被拒掉(后面分析审稿人时,会仔细论述这一点)。 有人认为“引用自己越多,越说明自己是该领域的专家”,但恰恰相反,过多引用自己的文章,说服力比较差。 了解审稿人——志愿服务、工作繁忙、潜在对手 知彼知己,百战不殆,我们要了解审稿人,写论文才能有的放矢,因为是审稿人决定我们的论文的接收与否。 首先,他们是志愿者,在学术圈里做志愿服务,并不因审稿而产生任何经济收入。他们不一定与你来自同一领域,或研究相同问题,所以,不要直接进入主题,而是要讲清楚问题的来龙去脉,相当于让他在读你的文章时,也学到了知识。大家愿意做审稿人,是因为审稿是拓展视野的简便途径,而且有机会比其他人更早了解到最新的思想。如果审稿人在读你的文章时感到有收获,你的文章会因此得分。 第二,审稿人工作繁忙,他们用业余时间进行服务,常常服务于多种期刊与学术会议,手头经常会积累很多论文待审,并不是只拜读你的一篇文章。所以,文章一定要简明易读,节省他们的时间与精力。 第三,审稿人经常是会议的领域主席(area chair)或杂志的副主编(associate editor)从你引用的论文的作者里挑出来的。他们一般做相关领域的研究,但是经常不会和你做完全一样的问题。所以,不要在文章中对现有工作进行过于苛刻的批评。写论文相当于和读者面对面地对话,你可以提出意见并进行评论,但一定要有礼貌,否则审稿人可能会相当地恼火。 了解了审稿人,我们来看看他们如何审稿。会议和杂志一般会给审稿人提供评审表,提醒审稿人需要考察哪些事项,比较典型的有:第一,论文是否在本会议或杂志的讨论范围之内,如果风马牛不相及,论文会被立即排除。第二,实验结果是否能被重现。第三,论文是否写得好,一般读者是否能读懂。另外,引用的文献是否太多或太少。当你们的工作和审稿人的工作相关时,审稿人很自然地会关心自己的研究是否被引用,如果不加引用,你的文章将被减分。有些人觉得不引用或少引用会显示出文章的新颖性,但是审稿人能看出是否有未引之处。如果被指出重要的文献有缺失,文章将很难被收录,因此不要故意隐瞒你所知道的文献。另外,这也是一种违反学术道德的行为。 关于审稿人,我们的认识常常存在一些误区。有人认为审稿人会认真拜读所审的论文。其实由于审稿人经常同时审多篇论文,如果审稿人能在一篇文章完整地花上2小时,就算非常负责了。审稿的典型的顺序是:题目→作者→摘要→结论→参考文献→导言。审稿人看参考文献经常是看他/她的论文是否被引用。至此,正文还没看,审稿人就已经有了是否收录的倾向性,后续的阅读只是为了找正面/负面的证据来支持他/她的决定。所以,要把所有重点在前面提到的几个环节中强有力地展示清楚,使得审稿人能够尽快正确理解你的论文的创新之处和贡献。 论文的组成部分 论文的组成部分,大致来讲,由以下构成:题目——摘要——导言——相关工作——正文——实验结果——结论/讨论/未来研究——参考文献——附录。 以下所列的论文组成部分,要视具体的情况取舍,比如附录,如果没有数学公式可推导,就可以没有。次序也可以视具体情况调整,比如“相关工作”有时会放在最后,因为有时评论前人工作时先需要理解当前论文的工作,如果放在文章的前半部分,审稿人很难读懂,而如果放在后面,审稿人读懂评论和比较就会比较容易。 “题目”就是用一句话来概括自己的文章。好的题目有两个要素。首先,不能有歧义,要能让审稿人正确联想出文章做了什么。其次,要便于记忆,否则读者日后要写论文时,你的论文早已经不知丢在何处,如果有容易记忆的题目,他会优先想到你的文章。要做到这点,题目要短、要有关键的字眼。 “摘要”就是给出论文的概况,吸引读者。在这里要给一些适当的细节,简略描述你的方法是如何实现的、有哪些组成部分(components)、实验结果如何、比现有的技术提高了多少。 “导言”部分很重要,首先要讲明做本研究动机,讲明为什么本文所述的研究很重要?为什么该研究是值得做的?如果不能很好地论证,后面写得再好也没有用,因为大家不会浪费时间在“没有用”的东西上。其次,本文的贡献、创新性要明确突出,不要让人误认为你的研究与别人相似。第三,介绍你的方法时要比摘要详细些,但是不要给太多的细节。 “相关工作”是为了证明你的工作的新颖性的。因此对前人的研究的引用要完整,并且一定要尊重相关文献的作者,可以指出其缺点,但一定要礼貌,要以建设性的方式提出。 “正文”用来介绍技术上的细节,终极目的是要让人理解你的方法并能重现实验结果。首先,逻辑要清晰,其次,技术上的细节不能缺失。但是,如果细节可能喧宾夺主,则要适当删减或挪到附录甚至补充材料里,以免干扰正常的阅读节奏。如果文章比较复杂,可以叙述一下方法的组成部分,画出框图,展示方法、内容及其关系。文章的实验结果要证明“我的方法的确比现有最好的方法还要好”。有一个细节需要注意:有些同学在文中用红、绿、蓝色来指示对象,但经常图片打印出来都是灰色的,对象难以区分,所以最好不要用颜色来指示图片里的对象,而要尽量用不同样式的线型、填充模式等,再打印出来确认不同对象的确是可以区分的。另外,对于所有的图、表,要在正文里加以说明,对于反常规的结果尤其要突出地论述其原因。 “结论”部分是给读者留下印象的最后机会,要进一步突出自己的贡献。 你还可以开诚布公地承认自己的缺点,其实这会让审稿人留下好印象,并且给其它读者以提升空间,让他们沿着你的方向继续前行。 有一个很不好的做法,就是将摘要、导言里对方法的介绍和结论用同样的话进行表述,甚至互相拷贝。文章的摘要、介绍、结论,要在不同的细节层次上介绍你的方法、强调你的贡献。 文章末的“参考文献”要完整、相关性要强。当叙述到与本文相关的最新技术或不常用的技术时,一定要频繁地引用相关文献,不然审稿人有可能会误以为你把这些工作声明成你的贡献,最终对你的文章产生负面影响。 “附录”不常有。如果细节特别长,放在正文中影响正常的阅读节奏,导致读者读完细节就已经忘记了前文,则可以放在附录里,当读者希望看细节时再参考这一部分。 如何写论文——日积月累的好习惯 写论文这个过程,要经历几个阶段。首先要准备材料,其次,在进行思考和实验的过程中要书写并保存一些草稿,之后再把细节填充进去。等材料收集齐备,就可以进行修改。修改有两种,“大修改”是revise,意思是可以把段落顺序进行调换,可以大篇幅地进行删除、增补,而“小修改”是edit,即“编辑”,例如对于用词和标点符号的修改。修改论文时,最重要一点,就是要从一个做相关工作、但不和你做完全一样的问题的人的角度来审视你的论文,只有这样才能最佳地组织文章结构、确定需要介绍多少相关知识和技术细节。 写作顺序没有固定的模式,可以完全遵从自己的习惯。你可以从头写到尾,可以先写技术细节再写导言,也可以先搭框架,再填充细节。但是,需要格外注意的是,写论文的功夫在平时,要注意积累材料,注意记录平时读文献时的主要想法、作者、文章题目、页码、与其它文章的区别等,另外,实验结果也要及时记录。随时进行记录的好习惯,会把你的写作时间分散到平时,让写作更“轻松”。如果平时只是拼命做实验,最后三天熬夜写文章,结果一般都不尽如人意,因为这样容易丢三落四,且常常会出现问题,例如有时会发现实验参数不对,但此时为时已晚。 在修改过程中,以下是一些值得推荐的技巧。 要注意,一定不要依赖别人,如果你只会做实验,希望让他人代写论文,你的文章永远要挂他人之名,你永远没有独立的作品。平时要多积累,可以多摘抄一些好词好句。要记录下自己的错误,同样的错误尽量避免犯两次。请别人帮你改过的版本最好保留下来,多跟帮你改文章的人交流,了解他们做这些改动的原因。字处理软件提示可能拼写错误的词要重点审查一遍。如果有余力,申请去帮忙审稿,这样就可以通过审稿人的角度来看稿件,从而反思自己的论文。 写作不仅需要结构严谨、内容充实,语言也要顺畅可读。我们可以通过遵循以下写作注意事项,来逐步提高写作能力。 如果总是先写中文再译成英文,英语很难提高。直接用英语写作,刚开始可能很困难,可能写完5行字,就已经花了一小时,但是万事开头难,迈出第一步,路会越走越顺。对于我的学生,我一般会认真指导他们完成第一篇,从第二篇开始,就基本上不用太费心。其次,要用自己最熟悉的、确定不会产生歧义的单词。不要用金山词霸等软件直接查词,选择自己没有使用过的词,这样很容易产生歧义。第三,每段只讲一个要点,并且要明确。第四,毕竟是在进行科技文献写作,注意语言要正式,要进行提炼,用语不要过于琐碎家常。第五,要避免“毫无疑问”(no doubt)、“绝对”(absolutely)、“显然”(obviously)这类绝对化的用词。第六,不要使用复杂的语句,要尽量简单明晰,便于读者理解。另外,要注意衔接过渡,选择正确的过渡词与联接词,还要注意转折,注意连贯性,避免行文跳跃。最后,现在很多字处理软件都提供拼写检查功能,对于软件提示可能出错的字,一定要仔细再检查。 结论 首先,写作不是为了应付任务,而是为了让你对问题的理解更加深入和完整。写作的目的不应该是为了赶“deadline”,而是因为有思索、有内容,想要进行分享。其次,一篇好的论文,是好的内容与好的写作的结合。第三,决定论文“生死”的审稿人,工作繁忙,没有时间仔细推敲你的文章,因而一定要让文章重点突出、逻辑清晰、用语简明,从而减轻他们的工作量。第四,要养成经常用文档进行记录的习惯,将写作时间分散到平时,写文章的过程才会顺利。最后,要自己首先修改、修改、再修改,而不要想着依赖他人。所谓的“依赖”,就是在自己还没修改到无法改得更好时,就交给别人。只有对自己的文章负100%的责任,才能最快速地提高。 以上要点,我们唯有以认真负责之心、多次实践之行,才能真正掌握,才能写出好论文。 (本文作者林宙辰博士是微软亚洲研究院视觉计算组的主管研究员,现在是北京交通大学、上海交通大学和东南大学的客座教授、中科院计算所的客座研究员和IEEE的高级会员。)
2725 次阅读|0 个评论
好的文章的标准
热度 3 apple54321 2012-1-30 11:13
老夫愚钝,很久以来一直想不通什么样的文章算好文章,最近终于想通了。 好文章需要满足4个条件: 1、必须是重要的话题,越高档的杂志话题也越重要。比如“遗传物质是核酸”。 2、必须是之前没说过的。比如有人现在发表一篇文章,说伊曲康唑在抗真菌治疗中效果很好,这就不算好文章,伊曲康唑能抗真菌是大家早就知道了的。 3、结论必须是清楚明白的。是或者不是,很肯定的结论。比如“某某分子是一个重要的分子”就不算好文章,因为重要这个词太模糊,而且这个文章一看很可能就是一篇什么也没说的文章。比如“阿司匹林在无血栓高危因素的应用来那度胺的多发性骨髓瘤患者中的预防血栓形成的作用与低分子肝素一样好”,这就是一篇好文章,很明确,让人看了就知道了,下次这种病人我们就可以放心地使用阿司匹林了,没必要用低分子肝素了,因为那个打起来很不方便。 4、结论的证明必须是确凿的。否则光有清楚明白的结论,却没有证明过程,那不叫文章,那叫乱猜。 有了后3条,可以算是一篇文章了,否则只能算垃圾。加上第1条,可以算好文章。
3514 次阅读|3 个评论
我的第一次尝试
热度 2 mmfmartha 2011-11-4 15:30
来科学网已经整整一年了,经常看很多老师的博客,也曾有过开博客的冲动,但最终还是忍住了。因为这里人才济济,自己的那点东西羞于拿出来,还是自己收藏吧,免得别人一眼就看穿了,呵呵。最近又开始萌动了这个想法,思来想去就开通了,决定自己不写,只用来分享一些老师们的好文章,留待慢慢研读。是的,开通之后的几天一直在做这个事情,加一些老师为好友,分享一些好的文章。看看这些好文,还是没有忍住,就想写点啥。也就不怕人笑话了。希望能利用这个地方,坚持写点科研笔记、生活上的点点滴滴吧。
3098 次阅读|4 个评论
奇异的一周:N多的好文章!!
热度 1 genevalley 2011-11-1 03:27
精选出来的每篇都是我围绕核心。。。哈哈 1) J Bacteriol. 2011 Sep;193(18):4914-24. Epub 2011 Jul 22. Quorum sensing contributes to natural transformation of Vibrio cholerae in a species-specific manner. 关键词:自然转化 Quorum sensing ( 构建新的转化体系一个思路!! ) 2)Science 334, 238 (2011) Sequential Establishment of Stripe Patterns in an Expanding Cell population; Chenli Liu, et al. 关键词:细胞群体( 如果能加入单细胞分析,将是另外一片SCIENCE文章!! ) 3) Nucleic Acids Res. 2011 Oct 22. DNA-guided assembly of biosynthetic pathways promotes improved catalytic efficiency. 关键词:组装 代谢途径效率 ( 化学合成--生物合成--化学合成 ??DNA aptamer,出来混,迟早要还;现在做的东西,迟早会有用武之地) 番外4)Gates基金的一个奇思妙想: 吃喝绿藻接种 ,特别适合发展中国家,尤其是广大的祖国农村!!可惜暂时还没有时间去写。 偷偷乐一下,NNGX,就怕不给我机会,一有机会我就要闪光! PS,本文是个看完一周文献的速记,匆忙而成,短小精悍,中间很多东西被省略、很多思考的过程也被节省、个中的相互联系也是个人长期积累的结果,还好快乐没有被打折! 各位看官如果看不懂没关系,就当分享一个普通科研人员的小小的快乐吧。
个人分类: 自留地|740 次阅读|3 个评论
我的第一篇博客
ljhljh123 2011-10-17 17:20
这是我第一次写博客。希望可以坚持写下去。 我开博客的主要原因是自己比较健忘,有时候想找出之前在网络上看过的好文章但总忘了网址,我就想利用这个博客把他们记录下来。 开始的时候,博客主要以转帖为主,在以后再逐渐增加一些原创的内容。内容以科技类为主。
个人分类: 杂谈|1371 次阅读|0 个评论
刘玉孝教授!
chnfirst 2011-10-13 20:59
http://hi.baidu.com/%DF%E4%DF%E4%D0%A1%CF%C9%C5%AE/blog/item/411faf38d27d2aff3b87ce33.html (这是篇好文章,刘教授的全文如下) 1994年,我从边远的农村走进了毕节二中的农村班。在那里,很荣幸遇上了我们的班主任 游梦云 老师和其他老师。从那时起,我感到我的人生将从这里开始新的旅程。班主任一直教导我们, 农村孩子上学不是为了花前月下,而应该有更远大的理想、目标和抱负 。 谈起自己的科研经验,刘老师总结了以下几点: 首先,要 建立学习和科研工作中所需的最小的知识体系 ,科研创新要和学习同步进行,在学习中进行科研创新,在科研创新中学习。 其次,要想进入研究状态,掌握研究方法,实现创新,关键要 在导师和研究小组的指导下进行研究 ,认真完成导师的课题,不能把自己孤立起来。 最后,要避免眼高手低, 要从小事做起,从简单做起 。这些很纯简的经验,没有华丽的辞藻,我却感受到物理学子是与他共醉的。倘若以这些浮夸的话语表达,恐怕也失去了刘老师的秉性吧。 刘 老师还向我们提到了他喜欢的一句歌词“ 东边我的美人,西边黄河流 ”。他说, 美人是一种瞬间,而黄河流是一种永恒 。他鼓励我们多从身边的事物中去挖掘一些深层次的东西,就如他的报告中讲到的一句话“如果我们不向上爬,我们以为自己永远只生活在二维的世界里。”刘老师在报告中用来解释额外维理论,殊不知,在生活中又何尝不是如此?人的一生总要去发现新的世界。“出去走走”刘老师如是说。或许也正是如此的想法,才使他从山青水秀的贵州一路风尘仆仆,扎根在这荒凉的大西北吧。
个人分类: 生活点滴|1 次阅读|0 个评论
两篇关于我国科研创新的好文章
热度 4 renxiang 2011-9-1 12:33
《华尔街日报》近日陆续发表了两篇反思中国创新政策与创新体制的文章,观点犀利,很有启发。特转发过来,共赏。 ================= 观点:“自主创新”政策扼杀中国创新 http://cn.wsj.com/gb/20110901/opn095615.asp 中 国2006年发起的自主创新计划给世界科技巨头敲响的警钟,超过了1978年开始经济改革以来的其他任何政策措施。美国商会(U.S. Chamber of Commerce)最近一篇报告甚至把这一计划称为 “一份以空前规模盗窃技术的蓝图”。 自主创新计划的目标是让中国加快速度上升到科技阶梯的更高端。通过多种机制(比如外企进入中国市场就必须把尖端技术和研发实验室转移到中国),这个计划本来应该是有助于中国企业消化、吸收外企开发的自有技术并进行再度创新的。 人们对自主创新计划的几乎所有评估,都把它界定为一个有输有赢的设想──赢的是中国,输的是外国跨国公司。但我们的分析说明,自主创新政策对中国自身也起到了反作用。它并没有诱导科技巨头以更快速度把尖端研发工作转移到中国,而是产生了刚好相反的作用。 今天中国大约有1,000家外资所有的研发实验室。但这些实验室几乎全都是首先注重将国外形成的创新成果进行本地化改造,而不是针对全球市场开发尖端科技和产品。 科技企业高管急于利用中国人才的质量和规模。但考虑到这些自主创新措施,他们不相信在中国从事尖端研发是安全的。 跟印度比较一下就很能说明问题。印度没有类似于自主创新的规则。另外,政府也满足于在允许企业设立研发设施的同时,没有任何规定要求它们与本地合作伙伴等分享技术。 这 些政策差异似乎对企业行为有着明显的影响。想想,2006年到2010年从美国专利商标局(U.S. Patent and Trademark Office)获得专利最多的10家美国科技巨头分别是:IBM、微软(Microsoft)、英特尔(Intel)、惠普(Hewlett- Packard)、美光(Micron)、通用电气(GE)、思科(Cisco)、德州仪器(Texas Instruments)、博通(Broadcom)和霍尼韦尔(Honeywell)。 这些公司中有一半似乎并没有在中国进行任何重要的研发工作。2006年至2010年,其中五家的中国子公司均未被美国专利商标局授予专利。相比之下,这10家公司中只有一家在印度开发出来的创新技术或产品未获得专利。 对这些公司来说,印度还证明有更加“肥沃的土壤”。这10家科技巨头在印度的实验室共获得1,119项专利,比位于中国的实验室同期获得的886项专利要多。 在公司层面上,两国的差距则更为惊人。在这10家公司中,有七家的印度实验室比中国实验室获得了更多专利,在印度和中国的专利总数分别为978项和164 项。只有微软和英特尔这两家公司在中国的强劲表现才拉高了中国实验室的专利总数,这两家公司中国实验室共获得了722项专利,而在印度获得了141项专 利。 微软和英特尔的例外很能说明问题。与其他公司不同的是,微软和英特尔都在全球个人电脑行业的技术平台上拥有近乎垄断的地位。由于应用 软件要在这些平台上运行,微软和英特尔不必太担心竞争对手剽窃其技术。尽管潜在客户的软件盗版行为令人担忧,却基本上是一种短期挑战。简而言之,微软和英 特尔把中国变成其全球研发中心,恰恰是因为这两家公司不必太担心自主创新带来的不利后果。 鉴于中国对印度看似有三个主要优势,两国研发方面的差距就更加惊人了。中国的国内生产总值(GDP)是印度的三倍以上,中国的市场比印度的大得多。此外,中国在研发上的投资比印度高三倍,中国的博士生也比印度多得多。 然而,中国政府却成了绊脚石,因为政府从错误的角度看待这个问题。他们本应该为这些公司创造一个培养世界一流创新者的友好环境,而不是像现在这样试图从外国公司取得技术。 当 一家技术巨头在北京或班加罗尔这样的新地点设立研发实验室时,有95%以上的研究人员是从当地聘用的。随着时间的推移,很多研究人员离职,利用他们获得的 经验知识成立新公司或加入其他公司(常常是当地公司)。这类人员“溢出”是推动硅谷这样的创新之地发展的关键,甚至比分享具体的技术重要得多。 如果中国想成为全球技术领头羊,它需要有敞开的大门、强有力的知识产权保护措施并需要不偏向中国公司──这些政策恰恰与北京目前实施的一些自主创新措施背道而驰。 ======================== 中国是全球创新中心吗? http://www.21fd.cn/a/yijianzhongguo/2011/0805/31725.html 几乎每周都会有报纸头条宣称中国在创新竞赛中就要超过美国和其它发达经济体了。这些报道的内容无非就是中国提出的专利申请数量正在上升,中国正在出口高科技产品,西方国家注定要失败等等。   但现实却很不一样。中国确实在创新领域付出了很多努力,但看来很多学者混淆了投入和产出两个概念。   中国在创新领域的投入令人印象深刻。中国的研发支出占国内生产总值(GDP)的比例从2002年的1.1%上升至2010年的1.5%,到2020年 这一比例应该能达到2.5%。中国的研发支出占全球研发总支出的比例也从2002年的5.0%上升至2010年的12.3%,仅仅排在美国的后面。美国的 比例一直稳定在34%至35%。 据联合国教科文组织(UNESCO)透露,中国在科技研究领域投入的人力比世界任何一个国家都要多。    乍一看,中国创新的“产出”数据也令人印象深刻。 据世界知识产权组织(World Intellectual Property Organization)透露,中国发明人在2008年提交了203,481项专利申请。这一数据令中国成为继日本(502,054项申请)和美国 (400,769项申请)之后创新力第三强的国家。   然而实际数据并不如呈现在眼前的多。 超过95%的申请都是发明人在中国国内向国家知识产权局提交的。绝大多数的中国“创新”只是对现有设计的小修小改。 在很多其它情况下,中国专利申请人是在国内对一项外国发明提出专利申请,目的是在中国的法律制度下起诉外国发明人侵权。这是因为中国的法律制度不承认 外国专利。   另一个更好的办法就是看看在中国境外被认可的发明数量,即中国发明人向全球重要专利办公室即美国、欧盟和日本的专利受理机构提交的专利申请或被上述机构授予的中国原创发明的数量。从这个角度看,中国就大大落后于其它国家了。   最有力的证据便是看看三重(triadic)专利申请或被授予专利权的数量。所谓“三重”指的是就同一项发明分别向上述三国专利受理机构提出专利申请 或被三国机构授予专利权。据经济合作与发展组织(OECD)透露, 2008年(这是目前所能见到的最新数据)中国只提交了473项“三重”专利申请,美国 有 14,399项,欧洲有14,525项,日本有13,446项。2010年上述三国专利受理机构授予的专利权数量大致也反映了相同的情况。   2010年,中国人口总数占世界的20%,GDP占全球总量的9%,研发支出占全球的12%,但向中国境外的任何一家重要专利受理机构提交的专利申请或被其授予的专利权只占世界的1%。此外,中国原创专利中有一半是授予外资跨国公司在华子公司的。   创新投入和产出为何会有如此大的差距?一定程度上或许只是时间问题。创新不仅需要新的努力,还需要已有知识的丰富储备。作为科技前沿的新手,中国的机构将需要数年时间建立必要的知识储备。   但其他因素也在起作用。例如,政府为研发项目拨经费的流程依然高度政治化且无效率。决策者明显倾向于政府各部门支持的大型项目,对研发项目的拨款基本是基于政治影响力和关系,而非科学的同侪考评。   清华大学生命科学院院长施一公和北京大学生命科学院院长饶毅最近在为《科学》(Science)杂志撰写的社论中说道,为了获得几千万到几亿元的研究 经费,作好的研究不如与官员和他们赏识的专家拉关系重要,这是公开的秘密…… 中国目前的科研文化是浪费资源、腐蚀精神和阻碍创新。   严重困扰中国科研文化的因素还包括重量不重质、以及使用本土而非国际标准来评估和奖励科研成果。结果不仅导致渐进主义蔓延,还造成学术欺诈盛行。中国 科学技术协会 2009年所作的一项调查显示,全部30,078名受访者中有半数都知道至少有一位同事曾有过学术欺诈行为。这样的文化阻碍着严肃的探索并且浪费资源。    中国的教育体系是另一个严峻挑战,因为它强调的是死记硬背的学习、而非创造性的解决问题。 微软在北京开设了规模仅次于华盛顿雷德蒙研究院的全球第二大 研究院,但微软意识到,虽然其招聘的毕业生很聪明,但在从事科研时太被动。通过要求每个中国新员工提出自己想做的项目,微软的研究总监们试图解决这一问 题。但中国的科研实验室普遍都是遵循自上而下的体系,微软的方法是个例。   是的,中国在电信科技等一些领域正快步前进。但是整体来看,中国在成为全球创新大国之前仍有相当长的路要走。 =============================================== 综合两篇文章,感触如下: (1)科研GDP主义非常严重,中国的创新有其名,而无其实,科研甚至成为了一种生意和买卖,在这样的环境下,真正有价值的创新成果很难搞出来。 (2)中国企业和经济体系,没有提供创新的动力,没有创新的有效回报机制,同时缺乏对创新利益的保护机制,这些是企业创新停留在“山寨”阶段的根源。 (3)外国作者提到中国教育,我看更多的在于中国文化,我们五千年的封建社会,已经从文化上禁锢了创新思维,这一点是最可怕的。从文化上不尊重创新,不敢创新,甚至害怕打破传统,这是需要长时间解决的问题。
个人分类: 评论杂谈|4876 次阅读|6 个评论
我的好文章名单
热度 12 xcfcn 2011-7-24 00:14
我的好文章名单 看到有人抱怨编辑部,我趁机把自己觉得还比较过得去的文章列出来!其标准就是自己还有兴趣去看第二眼。很悲催得是其中没有一篇是精选博文。不过大体上网友的眼睛是雪亮的,其推荐率还算是比较高的,尤其考虑这些不属于热门话题。其中大多数文章还是下笔前经过了一番酝酿,急就章只有一两篇。看来“没有数量就一定没有质量”还是对的。当然,我最好的文章都被科学网删了,我把他留在了 sohu 网。我把名单列出来后,我还是比较自豪的!至少我觉得自己还写了几篇好文章,算是为科学网注入了负熵! 1 、 鸟 or 青蛙 VS 刺猬 or 狐狸 2 、 咸水妹、咸湿、咸猪手与易经咸卦 3 、 说盐 (7) :不得其酱不食 4 、 专家 Vs 民众 5 、 梅贻琦梅祖彦父子截然不同的选择 6 、 “三年有成”与“ 10000 小时定律” 7 、 伟大的单身母亲 8 、 只有炸药奖获得者才有资格玩“伪科学” 9 、 我是一个保守者 10 、 中科院要打攻坚战啃硬骨头 11 、 人要提升自己很难! 12 、 我们的愤怒或许将一钱不值! 13 、 学术与政治 14 、 第三波二奶潮! 15 、 西藏是中国的软实力而不是软肋 16 、 狂狷离天堂最近
个人分类: 杂论|4038 次阅读|15 个评论
推荐一篇好文章: “熵的物理意义”
热度 4 jitaowang 2011-7-1 04:23
作者 王季陶 这篇文章是我从网络上找到的 , 既不是 Science, Nature 上的文章 , 也不是 SCI 文章 , 甚至还可能不是一篇原创性的论文 . 可是我却认为 : (1) 它对一些不了解 “ 熵 ” 的 “ 物理意义 ”, 却又嚷嚷 “ 熵 ” 的情况 , 好多了 . (2) 甚至比至今在 Science, Nature 或 Phys. Rev. Lett. 上个别胡言乱语有关 “ 熵 ” 的错误文章要好得多 . 按照我国不少单位的现行规定 , 不管是非对错 , 只要上 Science, Nature 或 Phys. Rev. Lett. 上就会奖励上万元或几万元 . 把 SCI 或期刊的影响因子成为一篇论文的科学判断标准 , 荒唐可笑由此可见一般 ! 这篇文章的题目是 “ 熵的物理意义 ”, 单位是上海的 华东理工大学 , 是物理化学课程的相关内容 , 没有具体写明作者 . 其中有两个部分 . 我主要推荐第一部分 : “ 1. 熵是能量不可用程度的度量 . ” 该文中还明确 指出 “ 这便是从热、功转变角度得到的熵的物理意义 ”. 另一部分 : 2. 熵是系统无序度或混乱程度的度量 . 主要介绍玻耳兹曼公式 , 和其他热力学或物理化学书籍的内容差不多 . http://course.ecust.edu.cn/Courses/wlhx/reserach/daodu/10.pdf 是华东理工大学的课程网站 , 文章的题目 : “ 熵的物理意义 ”.
个人分类: 现代热力学|6921 次阅读|12 个评论
呼唤法治 -- 人民日报好文章 (有新材料)
热度 8 lix 2011-5-5 23:55
这篇文章级别没有 人民日报评论部文章:执政者当以包容心对待 “ 异质思维 ” 级别高,但仍然很好: 人民时评: “ 精神病收治 ” 不得偏离法治轨道 这里是关于武汉许武的最新录像,大爆料,希望大家关心以及转载:http://you.video.sina.com.cn/api /sinawebApi/outplayrefer.php/vid=51711862_1293421172_Ok63G3ZsDGfK+l1lHz2stqkP7KQNt6nki2O3v1ClJAlbQ0/XM5GcY9oG4SHQAtkEqDhAQZk4dP8u0R8/s.swf 上边那个好像已经删了,这里还有: http://wq.zfwlxt.com/newLawyerSite/BlogShow.aspx?itemTypeID=071c6217-86e0-4fda-b13c-9bf0010cee75itemID=3033dd72-48d7-487f-a1eb-9eda016df194user=10420
个人分类: 生活点滴|4363 次阅读|10 个评论
[转载]激动人心的好文章
热度 4 wyc 2011-5-5 07:27
消灭了拉登的美国佬说:要永远记住这位伟人——毛泽东! 已有 205 次阅读 2011-5-4 21:46 | 个人分类: 无所事事 | 系统分类: 人文社科 | 关键词:毛泽东 中国 美国 读了秦首的文章《 美国禁书竟然是这样描写毛泽东 》,联想到国人最近对美国佬消灭本拉登后可能腾出手来对中国捣蛋的忧虑,发表点感慨。 本拉登被美国佬击毙了。 有国人担心美国佬将更能腾出手来对付中国了,中国的日子将很难过了。这多少有点杞人忧天吧 ! 尽管如某些民间军事家预言的,美国佬的航空母舰将全部集结于西太平洋,联合小日本、韩国、东南亚诸小国对咱中国形成合围之势,但那也没什么可怕的! 也许有人说,居安思危也是应该的嘛!其实在这一点上居安思危完全没有必要。历史已经证明并将继续证明,毛主席关于美帝国主义是纸老虎的论断是永远正确的,也永远适用!国人尽管闲庭信步。 历史上,八国联军和倭寇羞辱过中国,甚至弱小邻国都冒犯过中国,但美国佬想征服中国,从没占到便宜。这正是彰显了中国人民的性格特征:越是强敌越不畏惧,越打强敌越是过瘾。 “若是那豺狼来了,迎接它的有猎枪!”这绝不是咱中国人唱着玩的,也不是阿 Q 精神使然,而是多数中国人的真实想法。 “东风吹,战鼓擂,现在世界上究竟谁怕谁 ? 不是人民怕美帝 , 而是美帝怕人民 ! ” 这也绝不是中国人的疯狂!这是毛泽东时代中美两国人民内心的真实写照。 美国佬怕中国,这要归功于怕们的领袖毛泽东。美国佬至今还对毛泽东心有余悸。也许正是因为咱们的领袖毛泽东曾经在极度贫穷落后、敌我力量对比极度悬殊的情况下狠狠地教训了强大的美国佬、教训了强大的前苏联、教训了背后有强大的美苏英撑腰的印度,才永久性地震住了美国佬,使它不敢对中国轻举妄动。 美国佬始终忘不了毛泽东!作为中国人,我们也要时刻惦记毛泽东,尽管他已经不是我们的大救星,也不能为我们谋幸福了,但他老人家仍然能叫美国佬闻风丧胆,能让我们信心倍增。每当美国佬向我们挑衅时,我就想起了毛主席。一想起毛主席,我就渴望美国佬快快来。 看看美国佬是如何评价毛泽东的,是如何敬畏毛泽东的。据秦首介绍,仇视红色中国的美国军事作家、评论家拉瑞斯约本海默这样评价毛泽东: 是谁能把一个贫瘠的国家,在短短几年的时间里,迅速崛起于世界强国的行列?事实上我记得美国以前有一位总统他是乔治·华盛顿。他以贫弱的美国北方军,经过多年苦战打败了先进的南方殖民军。使得美国获得了统一与和平。但是,在东方一个大国,他就是中国。 他是一位优秀的领导者:毛泽东先生。领导了他的人民,在贫困,饥饿,压力下却取得了远远超越乔治·华盛顿的伟大成就。 中国 1949 年毛先生建立了他领导的红色政权,同时也揭开了中国人觉醒的时代。 1950 年我们的可爱的总统大人,他觉得北韩十分不听话,同时他更加厌恶中国新生的红色大国,为了灭绝赤色他决心先打掉北韩从而占领亚洲大陆一端,再谋求最终消灭赤色中国。 随即他调兵遣将,以 18 国集团为核心,联合国安理会为民意。总计出兵 51 万 3000 人。坦克 2400 辆。战机 4000 架。各型炮火 50000 门。同时动用了原美国海军第 1 , 2 , 3 , 7 四只舰队群。以排山形式杀向北韩。 在他看来,这样的现代化的庞大的军群,任何一个国家,哪怕是当时的苏联也不敢与之交手。然而,他似乎忘记了,那位毛先生的伟大的军事战略胆量。毛在前苏联犹豫迟疑下,悍然单方面出兵抗击美国联军。于是一场惊人的战争就此爆发了。 100 万中国士兵,在没有远程炮火支援,没有空中火力掩护,没有地面集群装甲突击的情况下,依靠着火器兵器时代最原始的卡宾枪(冲锋枪),手雷。打败了美国联军。这也是人类历史上,首次由一个国家单独击败了世界力量的先例。 但是,中国人也是遭受了 525000 人的惨烈伤亡换取的。 但是对于一个几年前还在被日本军队肆意侵略蹂躏的国家,在几年后,突然间打败了世界上当时的最强军事同盟“北大西洋公约组织”这样的奇迹除了毛先生敢于创造,任何人都不可能做到。 美国就这样丢下了 113000 名阵亡士兵,戴着 84000 名伤员,以及换回来的 45000 名被俘人员迈着沉重的脚步,蹒跚的回到了自己的老家。 前苏联的伟大人物赫鲁晓夫先生,上台来,他觉得中共的毛太不懂得什么叫尊重苏联,竟敢违背他的指令。因此,他发动了一场更加荒谬的战役——中苏珍宝岛战役。苏军以一个远东集团军的一个坦克旅, 3 个摩托化步兵团,总计约 20000 人在没有事先警告情况下对中国采取了军事行动。 坦克师 10 个步兵师, 3 个防空炮师, 3 个机械化师的全套装备。而中国当时最强的主战坦克 T59 型也就是前苏联的 T54A 。战斗全重只有 36 吨。如果与前苏联最新的 T62 型坦克对比,可以说对方无需开火,使用自身就可以 T59 撞翻。 他打了!毛先生在接到边防军告警电报后,他做出了最快决定:打!就把他打疼!结果苏联人丢下了约 1 个团的装备以及成批尸体气恼的回家去了。 赫鲁晓夫接到失败的电报后,召开了紧急军事会议,先后撤职了隶属于苏联远东集团军 1 位元帅(坦克装甲诸兵种元帅), 3 名大将,四名中将, 24 名上将,少将。抓捕了远东红旗 134 师(主力师)营级以上全部军事主管。 在毛先生对外战争历史中,还有一场值得提起,那就是中印边界之战:麦克马红线。 印度为了夺取那块 30 万公里的不毛之地,与中国军队公然交手。 其实在印度背后有输了韩战无处撒气的华盛顿,有中苏决裂后满脸怒火的克里姆林宫。有祈求可以捞足好处的大英帝国,等等。他们几乎出现了从所未有的合作! 苏联低价货款给印度尼赫鲁,装备了 7 个印度陆军师。华盛顿给了尼赫鲁大批战后物资。英国把自己的那些老式火炮都给了出来。一时间印度成了当时世界 2 大集团的宠儿。 但是,短短的 30 天时间,印度军队全军溃败。当时在第 2 师作战术指挥教导的洛克弗菲希尔准将说:你见过非洲的斑马群奔跑吗?但是他不如印度军队溃逃更加壮观。 8940 名印度军人葬身山谷, 1370 名士兵被俘一名准将被击毙,亚洲第一美国旅:“锡克”旅完了。英国全资资助“廓尔柯”营完了。而 毛先生在他的官邸中南海战前就曾说:不管你说印苏联军,还是美印联军,即便是再来一次八国联军我们中国也要与你们打!打出一个真理来。 毛先生的英明是前所未有的。中国拿回来 30 万公里土地(这个数字不准确)。消灭了印度联军,打败了美国与苏联的再一次的恐吓,这就是毛先生。 毛先生一贯坚持自力更生,他坚决反对当时另一位中共领导所提:造——买——租的理论,但是也是由于他的如此英明,中国建立了自己的核武器工业。制造远程洲际导弹。打造了核潜艇战略部队。 制造了以 TU16 (当时较为先进的中型轰炸机 ) 为主的中程核武器空中投射能力。但是在那个时代,中国没有现在改革成就,国家资金薄如薄纸,但是他依旧搞了这些,在今天华盛顿严重难以承受的军事工业,他叫一个贫弱无力的中国从此站起来。 不怕苏联,更加不惧怕我们。 在他那个时代,只有那个时代,我们空军在靠近北越领空时候,战斗机就会自动报警,因为那里有中国派驻的 34 支火炮与导弹防空营。 我们国家:美国!请你永远记住这位伟人:毛泽东! 这是一个美国人对毛泽东的评价,可是,今天的中国人,是不是还都记得我们这位罕见的民族伟人呢?——不,是真的巨人! function errorhandle_clickhandle(message, values) { if(values ) { showCreditPrompt(); show_click(values , values , values ); } } 收藏 分享 举报 全部 作者的其他最新博文 • 从“
个人分类: 未分类|1894 次阅读|8 个评论
[转载]一篇好文章
hexm89267 2011-5-1 13:58
民主应与道德谈谈心、恋恋爱 谢无愿 日前笔者一篇习作,语焉不详地提及“民主的建立,应以道德作为其社会的精神底色”,有网友持相反意见,强调“民主与道德无关”。因觉得这两者的关系确实有些微妙,便再啰嗦一下,没多少学理的支撑,更多是凭感觉来谈。 应该说,如果将民主视为仅仅意味着每人手中拥有一张选票,也即从最直观、单一与静态的角度去看民主这一政治生活形式,或把民主当成公民一种纯粹的天然权利,则民主似乎真的与道德关系不大。不过,西谚有一句,称“因为人性是恶的,所以民主是必需的;因为人性又是善的,所以民主是可行的。”所谓善,大体上说的应该就是人心德性好的方面,也即道德或道德感,看来它与民主不应该完全不相干。 的确,并非坐在那里等着,就有从天而降的选票之类的民主权利落到我们手中。绝大多数时候, 1 、民主需要去争取,为此甚至连普通的人也需付出一定的代价; 2 、民主需要去维护(与提升),这往往也需要代价,哪怕仅仅为去投下自己一票而忽略半天工作这样的小小付出。现代社会化民主的微妙与艰难之处,又恰恰在于它必需以广泛的参与为其存在的基础。可是,对于一个个的人来说,他们只不过是社会海洋里的一滴水,因此以个体行为为形式的民主参与,很容易就会被视为对个人、对整体社会的作用可有可无,若不是出于某些社会责任感,很多的个人是不会参与的,或者不会总是积极地参与。如果一个社会作如此想的人占相当大部分,那么就不会有真正民主,至少民主的根基和运作条件是很薄弱的。 而这样的社会责任感,往往就来源于一个人的道德良知。 在概念上“道德”仍是个较笼统的说法,其中又分为私德与公德。通常来说,私德更多体现为个人或小圈子人际行为中的自爱、爱人,是比较具体的道德精神行为,也是比较内向的;而公德则更多地表现为对较广阔生活环境和社会施予正面关切的精神行为,是较为抽象的道德感,更为外向,也更带有理性色彩。一般来说,私德与公德往往是一体两面,很难想像一个只顾自己、对父母至亲冷漠的人,会去关心外人的安危和社会的兴衰;反之也然。 举一个例子,假如一个身强力壮的人坐在公共汽车里,对近在身旁的老弱病残漠不关心,连让让座都不行。那么,大概可以断定,此人在社会或民主需要大家有所奉献的时候,哪怕仅仅是劳动他多走几步路,他也不一定会干。这样的人一多,即使民主幸运地来临,估计也会很快玩完。 所以,一个人在具备相当程度的道德感之下,才可能有公心、是非心,以及由此而来的扬善憎恶的感情,正是这样的感情激励他去参与民主的争取与维护。当然,在这个基础上,如果加上对民主制度文化、程序、民主理想等有所理解、追求,也即此人在道德感情之上,还有较为充分的社会理性,这个时候此人就有一个公民所需的可观的“积极道德”,那就更好了。对一个社会的很多民众来说,道理也是一样。 杨恒均先生前日论及“民主制度与民主价值观”的文章,启人心扉。缺乏必要民主价值素养的民族与民众,即使有了民主形式这样的“制度硬件”,民主制度在引入和运作的过程中,也一定是很不顺畅,矛盾重重。正如泰国等不少国家,为什么引入源自西方的民主制度后,总会别别扭扭。说到底,还是因在这些国家与地区,不管民众还是统治阶层,都缺乏对民主价值观的认知与实践,如果假以时日,民主制度与民主价值观在这些国家地区得到较好的融合,正如火车轨道的两条铁轨一样,连接处处而又和谐平行,社会民主的运行自然会畅顺(如今日的日本、韩国)。也正因为如此,所谓“国情不同”民主便不能施行的说法,实是统治者的一种恶意误导! 而民主价值观的形成,就需要民众普遍拥有相应的道德水平,尤其是体现为社会责任感的公德心,以及由此生发的社会理性;或者可以说,道德良知乃是构成民主价值观的生活意识基础。西方国家之所以有平顺发达的民主生活,与基督教特别是新教在民间造就的道德支撑有莫大关系。 不过在中国,在民主与道德有关的前提下,情况又稍微有异。中国素来自称以德立国,可是为什么却总离民主价值有千里之遥,专制权力对民主的野蛮排斥固不待说,我们以传统意识为核心的道德不足以让民主滋生、发育,可说是根本原因。这是为什么呢?是因为由儒家学说(甚至道、释都然)主导下的传统道德,既以小圈子人伦关系为中心,且主要讲的是克己、隐忍,以及由此而来的明哲保身,是一种典型的“消极道德”;而本来与恻隐之心、廉耻之心紧密相连的公德心、社会责任感,则在“克己复礼”这类过于沉重消极道德的压抑下,基本上给消灭了。中国传统道德用来修身养性绰绰有余,但用来形成积极参与的社会责任感,用来抵御专制独裁,匡助民主,却无半点之力,甚至会起反作用,这是中国传统道德的最劣处,也是其反动与反人性之处。在此情况下,即使有民主的形式,也注定是孱弱的、短命的。正如民初时期一样,从政治形式上当时也照样有“共和”、代议制及“权力分立”的法院等等,但以民众深重的国民性、劣根性,这样民主如何能有血有肉,如何能壮大、持久呢。在此一点上,对儒家等学说怎么批判,确实都不过分。 民主必须与道德发生关系。但在目前道德危机深重的中国,要构成这样的关系,还必须扬弃深入我们骨髓的传统负面道德精神,并在此基础上形成较新的、适合于现代普世民主价值观的社会道德意识,民主才真正有希望。这也许是中国人一项特别的历史任务。 “纳粹抓犹太人时,我没有说话;纳粹抓共产党人时,我没有说话;纳粹抓工会会员时,我还是没有说话。到我被抓的时候,也就没有替我说话了。”这种个人的消极道德状况,正是法西斯得以存在、蔓延的社会精神前提,幸运的是德国人懂得忏悔。 在道德生活日益畸形、缺德现象泛滥的现实中国,这样的忏悔我们有吗?在我们指责专制统治者和既得利益者恶劣地排斥民主之时,其实我们普遍缺乏能与民主拥抱的现代道德,才让那样的排斥总能得逞,才让民主总是可望不可即,这是最令人绝望之处。
个人分类: 生活点滴|1850 次阅读|0 个评论
[转载]好文章推荐-优秀科学家必备的几个要素
nanofeifei 2011-3-31 12:36
来自: http://blog.sciencenet.cn/home.php?mod=spaceuid=203132do=blogid=428191 优秀科学家必备的几个要素 蒋继平 2011 年 3 月 30 日 平心而论,在科技领域工作的人,都希望自己成为一个优秀的科学家。然而, 美好的愿望仍然只是愿望而己,真正能成为优秀科学家的人仍然为数不多。为什么会造成这种差异呢? 主要原因是优秀的科学家必须具备几个必备的要素。我现在来简单地谈谈个人在这个问题上的体会。 丰富的想象力( Imagination )。 这个因素是至关重要的。 一个优秀的科学家必须具有独立的思考能力, 不能总是跟着别人的思路走 , 不能光听导师的,光听领导的。 当然,独立思考并不等于不听别人的,别人的观点也要听, 要认真地听,但是, 要有自己的分析和判断能力。 科学研究有许多时候需要假设, 这个假设实际上就是想象力。 要是你不具备丰富的想象力,你能提出优秀的假设吗? 在这里,我说的想象力不是空洞的, 毫无依据的抽象概念, 而是在自然界和社会生活中经常会遇到的问题的前因后果的相互关系。 这种想象力要能够透过现象看本质, 有超越常规的思路,有独到的见解。 扎实的基本功( Knowledge )。 想象力 ( 科学假设 ) 相当于一张设计图, 是一个工程或者艺术品的初步规划。 现在, 我们要根据这个设计来施工。 在施工前,我们必须要有必要的材料和工具。 假如我们要建造一座大楼, 我们必须要有一块地,一个坚固的根基,要有钢筋水泥,要有吊车和其他工具,要有各种其他的材料。 没有这些材料和工具,你是根本无法建造一座大楼的。同样的道理,我们要成为一个优秀的科学家,也必须具有必备的科学知识。 科学知识越广阔,根基打得越扎实, 越有利于你的科研工作 。 记得我第一次博士资格考试时, 五位监考教授问的问题真是广泛和深奥, 其中的一位是系主任,美国科学院院士,世界知名的植物病理生物生化科学家, 他问的问题是全世界的, 保罗万有。 我当时一点儿思想准备都没有, 当然没有通过这次博士资格考试。 这位教授后来对我说, 那是他故意如此做,为的是使我有一个扎实的基本功(他知道我是洛克菲勒奖学金获得者, 不用担心学费和时间,在系里多学一段时间对我本人和对整个系都有好处)。大概一年后, 在我第二次进行博士资格考试时, 这位教授几乎没有问任何问题就让我通过了(其他教授都看他的举动)。 现在想起来,我真的很感谢这位教授的良苦用心。 强烈的责任心 (Responsibility) 。 有了设计图,有了必备的材料, 我们开始建造。在建造过程中, 我们必须始终保持强烈的责任心。 只有这种强烈的责任心才能确保一个高质量的工程按期完工 。 强烈的责任心应该包含一丝不苟的工作态度, 勤奋耐劳的敬业心, 和规划严密的时间性。 实际上, 我们不光是搞科研,做任何事都要有责任心, 没有责任心, 是做不成大事的。 我在读博士的时候, 研究的课题是非常普通的,别人已经搞了几十年了,没有结果。 我在导师的要求下,继续从事这个课题的研究。我从来不放弃任何机会, 尽我全能, 整天在实验室观察记载, 有的时候,在显微镜底下一看就是 3-4 小时,直到眼睛痛不能再看停止。 也许我的执着精神感动了神灵, 有一天晚上, 我看到显微镜底下的孢子都在朝我眨眼睛(那是真的眨眼睛, 因为我平时一天到晚都看到它们的, 我的导师和其他教授已经在几十年前看到这些“眼睛”了,但是, 这些“眼睛”没有引起我们大家的注意), 我就用定时照相机把这些孢子的“眼睛”如实地照下来。 结果发现这些“眼睛”是孢子的核, 一对“眼睛”其实是雌雄两个核。 后来我进一步发现,只有这两个核在一个孢子内融合后,这个孢子才能在适当的环境下萌发。我的这个发现正是这个课题几十年来一直想寻找的答案。 当一个人具有高度的责任心, 他就会以苦为乐,充分利用好时间,全心全意地做好自己的工作。在我博士毕业走向社会后,不管到那里, 交给我的科研任务要是在六个月之内不能完成的话,我是吃不好睡不着的。不过,到现在为此,也很少很少出现过这样的情况, 绝大多数课题在我手上不用六个月就得到解决。 敏锐的洞察力 ( Judgment )。 敏锐的洞察力是一个优秀科学家必备的要素之一。 这是因为科学研究一般都是对自然现象的观察, 记载和分析。 因而,我们不但需要细致的观察力, 还必须具有通过表面现象看本质的判断力。 首先, 细致的观察力是第一位的, 要能够从物体的细微变化中找出差异。 实事求是地说, 要是很明显的东西, 那肯定被别人早就发现了, 等不到你来发现。 优秀科学家的素质是能够从这些细微的变化中找到差异,并能够将这些差异扩大加倍, 从而使之成为明显的不同。在这一点上,谨密的逻辑推理也是很重要的。 一个优秀科学家要具有把观察得来的数据, 运用扎实的知识基本功, 进行严密的分析推道, 做出适当判断的能力。 高度的专注性( Focus ) . 一个科研项目通常需要一定的时间才能完成, 这不是一天两夜就能完成的事。 因而,作为一个科学家, 献身于科学事业, 就得有充分的准备, 要集中所有的时间和精力来从事自己的专业。 要不然的话, 是做不出什么大的成就来的。 这是因为一个人的时间和精力是有限的, 你把时间和精力用在别的地方, 那必然会减少你花在科研上的时间和精力。 正因为如此, 世界上绝大多数优秀科学家仅仅只是科学家而已, 他们不可能既是优秀的科学家, 又是责任重大的管理者 。 极少数的优秀科学家成为管理者的例子也是有的, 但是, 那是他们在成名后被推荐当领导的。不过,当他们成为管理者后, 他们就不太可能继续集中精力来搞科研了, 所以,出的成果也必然会少。鉴于这种原因,大多数科学家一辈子只是默默无闻地奉献。 良好的适应性( Adaptability )。 大多数科研项目不是一个人可以完成的,而是需要几个人或者说一个团队一起来完成的。 这就需要一个团队合作精神。 一个优秀的科学家必须要有一个良好的合作精神,要能够与同事, 上级和下级搞好关系。 不可否定, 要成为一个优秀的科学家, 科研环境也是一个关键因素。 要是你的研究环境很不利于你的研究工作, 那你就得考虑换一个环境。 科研需要一定的仪器设备,也需要一定的经费, 要是你的单位不能提供这些必要的保障, 那你在这个单位就不太可能做出巨大的贡献的。 还有,社会很复杂, 不是每个人都是很容易相处的, 要是碰倒一些心胸狭隘的同事或者上级, 那你也得考虑换一个地方 。 但是,不管这么说 , 一个优秀的科学家本身必须具有良好的合作精神, 有了这种精神,走到哪里都会受到别人的喜爱的。 良好的适应性不但包含一个人的合作精神, 而且还包含一个人的优良个性,热情,开朗, 勤奋, 宽容, 和不计较个人得失 。 结论,一个优秀的科学家必须具备丰富的想象力,扎实的基本功,强烈的责任心,敏锐的洞察力, 高度的专注心, 和良好的适应性。假如你已经具备这些素质,那么,你必将是一位优秀的科学家或者必将成为一位优秀的科学家。要是你没有如愿以偿, 那么,我建议你分析一下你身处的环境,是否应该换一换?
个人分类: 生活点滴|2563 次阅读|0 个评论
[转载]转载三篇值得参考的好文章
热度 1 cyj 2011-2-19 22:30
处理教授 造假 法律不能缺席 今题网 2011-02-12 字体 : 我要评论 源自 : 晶报 李连生 | 黄禹锡 | 论文 | 工程 | 教授 春节刚过,两条消息让人有些肠胃不适。 其一, 2005 年国家科学技术进步奖二等奖获奖项目“涡旋压缩机设计制造关键技术研究及系列产品开发” 的 推荐材料,由于其代表著作存在严重抄袭和经济效益数据不实等问题,根据有关条例规定,科技部按法定程序撤销了该项目所获 2005 年国家科学技术进步奖二等奖,收回奖励证书,追回奖金。而此前,该项目 的 主要负责人之一 李连生 已被撤销博士生导师资格,解除教师聘用合同,免除西安交大国家工程中心副主任职务。 其二,近年来,我国科研论文发表数量突飞猛进。最新 的 数据显示,我国科技人员发表 的 期刊论文数量,已经超过美国,位居世界第一。然而,这些科研论文 的 平均引用率却排在世界 100 名开外。 尽管有“迟到 的 正义非正义” 的 说法,但考虑到中国 的 特殊国情, 李连生 案能获如此结果,已属不易。中国 的 科研水平整体不高,但是科研论文 的 数量却是世界第一,至少说明我们 的 论文大多有水分无水准,倒是印证了中国人擅长“做 文章 ” 的 传统。在这样 的 大背景下,论文抄袭移花接木,可谓稀松平常;像 李连生 等人 的 科研项目代表著作存在严重抄袭之类 的 现象,也不会令人太感意外。 不过,这样说并不意味着就可以放 李连生 们一马了。换言之,光是免除职务、撤销奖励、追回奖金,对如此重大且影响恶劣 的 科技 造假 而言,似乎太便宜了当事人,也不足以警示他人。 试举一例。曾被称为“韩国克隆之父” 的 黄禹锡,因学术 造假 东窗事发,被首尔大学解除教授职务,其“最高科学家”称号也被韩国政府撤销,韩国检察机关还对他提起诉讼,罪名是诈骗、侵吞研究经费和非法买卖人体卵子违反生命伦理法等等,最终被判处有期徒刑 18 个月缓期两年执行。 对照黄禹锡这个案例, 李连生 事件可谓不相伯仲 。 李连生 等人著作 造假 、侵占他人学术成果进行拼凑和包装,并且拿 造假 项目去参评国家科技进步奖,所报经济效益数据也存在不实,说他们涉嫌诈骗并不为过。 而且众所周知,中国 的 科研项目是要使用国家科研经费 的 ,这其中, 李连生 们有无不当使用甚至侵吞国家科研经费 的 行为,也应该通过司法程序加以澄清。 报道披露,早在 2007 年年底,西安交大 6 名老教授就联名举报 李连生 严重学术不端,但相关部门 的 态度却十分暧昧,举报者不得不将 李连生 等人告上法庭。要知道,学术问题最好 的 解决方式不是走上公堂,而是由学术机构据理裁决,因为只有高校和科研机构 的 学术委员会才能对学术是非做出准确判断。但遗憾 的 是,有关高校自己放弃了这一权利,那么,就让法律来对 李连生 们 的 行为做出判断吧。 try{var s = window.name;parent.MM .initIframe();}catch(e){} 科技打假:为何正义总是姗姗来迟 2011 年 02 月 12 日 08:36:24  来源: 羊城晚报 【字号 大 小 】【 留言 】【 打印 】【 关闭 】    在诸多学术打假行动中,最该履职的科研机构和政府有关部门总是在一边旁观甚至是从中包庇,正义总是在举报人和舆论的推动下姗姗来迟。甚至,许多学术打假的正义,至今还是遥遥无期。无论在学校还是在科研机构,至今没有形成“学术造假人人喊打”的氛围,权力纵容、包庇造假者仍然大有市场,这是最让人忧心的 。   因存在严重学术不端行为, 2005 年国家科学技术进步奖二等奖获奖项目“涡旋压缩机设计制造关键技术研究及系列产品开发”,被科技部公开撤销了其昔日获得的国家科技奖项。(《北京日报》 2 月 10 日) 不明就里的人们,还以为这是一件最新发现的学术造假事件,可能还非常高兴地称赞此“大义灭亲”的行为。但是,其实早在 2007 年底,西安交大 6 名老教授就已经对此项奖的主要领衔者李连生在获奖项目中存在造假、侵占他人学术成果进行拼凑和包装等严重学术不端问题,联名进行了实名举报;并且,举报者还被造假者李连生等人以名誉侵权告上法庭 ,并经过两年多的漫长诉讼(博主附注,被烂诉半年。故此处应该改为 “历经跨年度五年的搏斗 ”),才迎来了科技部的一纸撤消获奖文件。明白于此,你就该感慨这种正义太过于姗姗来迟了吧!   通常来说,对于违法行为,人们总是先诉诸行政执法查处,最后在走投无路之时,才可能走向法庭,这不仅在于司法是社会正义的最后一道防线,而且,司法处理时间漫长且成本高昂。并且,需要指出的是,对于学术问题来说,最好的裁决地方不是法庭,而是由高校、科研院所组成的学术委员会,因为,法官并不精通学术问题,即便是通过法院来处理,最终也要依赖于权威的专家、学者的判断。 在这一科技造假事件中,我们却没有看到具有学术执法功能的相关部门主动查假,居然任由造假者将举报人告上法庭,岂非咄咄怪事!   且看校方是如何处理当初的举报:先是 2008 年 2 月 26 日,分管科研的西安交大副校长、校学术委员会副主任和科研处副处长见到举报人,称学校地处西北,学校科技排名比较靠前来之不易,希望大家慎重对待。(博主附注 ; 此处应该加上——“后是 2009 年 4 月 22 日,前次的三为校级领导人再次劝阻举报人停止博客网上公开检举揭发造假者,不然便是败坏学校的面子和败坏国家的面子”。在举报人不予赞同的情况下, 2009 年 5 月 25 日,造假者将举报人告上法庭!)。直到 2009 年 4 月,西安交通大学学术委员会才正式成立专门调查小组,(博主附注:然而,调查组的调查,却是在造假者蓄意安排下,取得一份完全歪曲事实的“结论”)又到 2011 年 1 月,李连生的博士生导师资格才被撤消。正是这种迟缓与暧昧,才让造假者敢于上法庭反戈一击举报人;也正是校方的这种迟迟的不作为,才让举报人在法庭上不得不与造假者消耗时间、金钱与精力,进行持久战;还是因为校方和有关部门的纵容,才让 2005 年造假获得的奖直到 2011 年才被撤消,让“国家科学技术进步奖”这一国家级奖项蒙羞。   西方法谚言“迟到的正义非正义”,此言确矣! 通过漫长的较量过程得来的正义,不但让造假者尽享了造假所带来的巨大收益,而且让举报人心灰意冷,今后可能权衡成本与收益而不再举报,更让围观的公民看到有关部门只是在公民和舆论推动下亦步亦趋地行动,而看不到学术机构和国家有关部门严厉惩治学术造假的决心,一些蠢蠢欲动者更是由此看到有更多可趁之机。 试想,如果不是这 6 名举报人经过 3 年多时间漫长的举报,他们不计较个人的得失,不计量法庭上的白眼,如何能等来这场迟到的正义。   可惜,查处学术造假不是学术机构与政府部门的执法,反而仅仅成为举报人与造假者之间的一场刀与剑的较量,并不止发生在西安交大。在诸多学术打假行动中,最该履职的科研机构和政府有关部门总是在一边旁观甚至是从中包庇,正义总是在举报人和舆论的推动下姗姗来迟。甚至,许多学术打假的正义,至今还是遥遥无期。 无论在学校还是在科研机构,至今没有形成“学术造假人人喊打”的氛围 ,权力纵容、包庇造假者仍然大有市场,并且不会因为李连生的“国家科学技术进步奖二等奖”被撤消而消失,这是最让人忧心的。(杨 涛) 撤奖,还远不是欢庆的时候 2011 年 02 月 12 日 09:24  来源: 光明日报   参与互动 ( 0 )   【字体: ↑大 ↓小 】   长江学者、西安交通大学原教授李连生所获 2005 年国家科学技术进步奖二等奖因造假而被撤销,有人额手称庆。   但是,额手称庆,仅仅是庆幸。因为还远不到欢庆的时候。   这是我国第一例因学术造假而被撤销的国家科学技术进步奖奖项,因而这次“科学的胜利”的确具有某种里程碑的意义。但是,尽管如此,我们更希望看到的是,这一次的胜利,不仅是几位老教授们执蓍打假的个人胜利,而是我们打击学术不端制度的胜利。    这一事件,从老教授们的检举“事发”,到被骗取的国家大奖被撤销,历时逾三年。我们应该庆幸,在这三年中,这些老人们在屡受挫折时没有放弃,在被反诬一口时没有退缩。但是,我们甚至不愿作出这样的假设——假如没有这样的坚守,胜利的天平会偏向哪一方?   我们应该庆幸,有关部门在意识到李连生用造假骗取了国家大奖后亡羊补牢的果断。 但是,在撤销决定和相关报道中,我们没有看到那些“严重抄袭”和“数据不实”等问题是如何、是由谁判定的。套用法律的术语,老教授们是“原告”、李连生们是“被告”,那么,在科技部以及国家科学技术奖励委员会组织的“法庭”上,谁是“法官”? 在这个“案件”中,学界呼吁多年的权威仲裁者——“学术共同体”依然缺位。或许,这个“案件”简单到不需“学术共同体”出场便能是非立判,然而,如果以“学术共同体”为基础、公开透明的评判机制不能确立,仍然会有很多欺世盗名者肆无忌惮,仍然会有很多学术不端行为被推诿粉饰为“说不清的糊涂账”,即便是真相最终获胜,这样的胜利也是无法复制的。   我们应该庆幸,李连生最终没能骗走我们的国家荣誉。但是,除了荣誉、职位这些本就不该属于他们的东西之外,造假者似乎也并没有付出额外的代价。 我们可以追回荣誉证书、高额奖金,但是,全社会为此付出的诚信损失,是否真的就此可以追回呢? 要知道,韩国科学界的国宝级人物黄禹锡造假事发,即便被“轻判”,仍然要接受刑事处罚。 诚信,不仅是一种道德操守,同时,也是一种社会成本——这样的成本付出,是为了换回一个干净的世界。我们必须让造假者付出更加沉重的代价 。   我们应该庆幸, 李连生造假 败露,再度引起了全社会对学术不端行为的“零容忍”话题的关注。但是,正如虽然吃不死人但也不能治病的药仍然是假药一样,除了学术造假之外,学术垃圾的无限量制造,是否也是另一种学术不端行为呢?对此,我们是“零容忍”还是选择视而不见呢? 还远不是欢庆的时候。问 樵
2365 次阅读|0 个评论
[转载]MapReduce的数据处理方法-推荐阅读的好文章
nefujwp 2011-2-6 08:43
MapReduce:超大机群上的简单数据处理 摘要 MapReduce是一个编程模型,和处理,产生大数据集的相关实现.用户指定一个map函数处理一个key/value对,从而产生中间的key/value对集.然后再指定一个reduce函数合并所有的具有相同中间key的中间value.下面将列举许多可以用这个模型来表示的现实世界的工作. 以这种方式写的程序能自动的在大规模的普通机器上实现并行化.这个运行时系统关心这些细节:分割输入数据,在机群上的调度,机器的错误处理,管理机器之间必要的通信.这样就可以让那些没有并行分布式处理系统经验的程序员利用大量分布式系统的资源. 我们的MapReduce实现运行在规模可以灵活调整的由普通机器组成的机群上,一个典型的MapReduce计算处理几千台机器上的以TB计算的数据.程序员发现这个系统非常好用:已经实现了数以百计的MapReduce程序,每天在Google的机群上都有1000多个MapReduce程序在执行. 1.介绍 在过去的5年里,作者和Google的许多人已经实现了数以百计的为专门目的而写的计算来处理大量的原始数据,比如,爬行的文档,Web请求日志,等等.为了计算各种类型的派生数据,比如,倒排索引,Web文档的图结构的各种表示,每个主机上爬行的页面数量的概要,每天被请求数量最多的集合,等等.很多这样的计算在概念上很容易理解.然而,输入的数据量很大,并且只有计算被分布在成百上千的机器上才能在可以接受的时间内完成.怎样并行计算,分发数据,处理错误,所有这些问题综合在一起,使得原本很简介的计算,因为要大量的复杂代码来处理这些问题,而变得让人难以处理. 作为对这个复杂性的回应,我们设计一个新的抽象模型,它让我们表示我们将要执行的简单计算,而隐藏并行化,容错,数据分布,负载均衡的那些杂乱的细节,在一个库里.我们的抽象模型的灵感来自Lisp和许多其他函数语言的map和reduce的原始表示.我们认识到我们的许多计算都包含这样的操作:在我们输入数据的逻辑记录上应用map操作,来计算出一个中间key/value对集,在所有具有相同key的value上应用reduce操作,来适当的合并派生的数据.功能模型的使用,再结合用户指定的map和reduce操作,让我们可以非常容易的实现大规模并行化计算,和使用再次执行作为初级机制来实现容错. 这个工作的主要贡献是通过简单有力的接口来实现自动的并行化和大规模分布式计算,结合这个接口的实现来在大量普通的PC机上实现高性能计算. 第二部分描述基本的编程模型,并且给一些例子.第三部分描述符合我们的基于集群的计算环境的MapReduce的接口的实现.第四部分描述我们觉得编程模型中一些有用的技巧.第五部分对于各种不同的任务,测量我们实现的性能.第六部分探究在Google内部使用MapReduce作为基础来重写我们的索引系统产品.第七部分讨论相关的,和未来的工作. 2.编程模型 计算利用一个输入key/value对集,来产生一个输出key/value对集.MapReduce库的用户用两个函数表达这个计算:map和reduce. 用户自定义的map函数,接受一个输入对,然后产生一个中间key/value对集.MapReduce库把所有具有相同中间key I的中间value聚合在一起,然后把它们传递给reduce函数. 用户自定义的reduce函数,接受一个中间key I和相关的一个value集.它合并这些value,形成一个比较小的value集.一般的,每次reduce调用只产生0或1个输出value.通过一个迭代器把中间value提供给用户自定义的reduce函数.这样可以使我们根据内存来控制value列表的大小. 2.1 实例 考虑这个问题:计算在一个大的文档集合中每个词出现的次数.用户将写和下面类似的伪代码: map(String key,String value): //key:文档的名字 //value:文档的内容 for each word w in value: EmitIntermediate(w,"1"); reduce(String key,Iterator values): //key:一个词 //values:一个计数列表 int result=0; for each v in values: result+=ParseInt(v); Emit(AsString(resut)); map函数产生每个词和这个词的出现次数(在这个简单的例子里就是1).reduce函数把产生的每一个特定的词的计数加在一起. 另外,用户用输入输出文件的名字和可选的调节参数来填充一个mapreduce规范对象.用户然后调用MapReduce函数,并把规范对象传递给它.用户的代码和MapReduce库链接在一起(用C++实现).附录A包含这个实例的全部文本. 2.2类型 即使前面的伪代码写成了字符串输入和输出的term格式,但是概念上用户写的map和reduce函数有关联的类型: map(k1,v1) -list(k2,v2) reduce(k2,list(v2)) -list(v2) 例如,输入的key,value和输出的key,value的域不同.此外,中间key,value和输出key,values的域相同. 我们的C++实现传递字符串来和用户自定义的函数交互,并把它留给用户的代码,来在字符串和适当的类型间进行转换. 2.3更多实例 这里有一些让人感兴趣的简单程序,可以容易的用MapReduce计算来表示. 分布式的Grep(UNIX工具程序, 可做文件内的字符串查找):如果输入行匹配给定的样式,map函数就输出这一行.reduce函数就是把中间数据复制到输出. 计算URL访问频率:map函数处理web页面请求的记录,输出(URL,1).reduce函数把相同URL的value都加起来,产生一个(URL,记录总数)的对. 倒转网络链接图:map函数为每个链接输出(目标,源)对,一个URL叫做目标,包含这个URL的页面叫做源.reduce函数根据给定的相关目标URLs连接所有的源URLs形成一个列表,产生(目标,源列表)对. 每个主机的术语向量:一个术语向量用一个(词,频率)列表来概述出现在一个文档或一个文档集中的最重要的一些词.map函数为每一个输入文档产生一个(主机名,术语向量)对(主机名来自文档的URL).reduce函数接收给定主机的所有文档的术语向量.它把这些术语向量加在一起,丢弃低频的术语,然后产生一个最终的(主机名,术语向量)对. 倒排索引:map函数分析每个文档,然后产生一个(词,文档号)对的序列.reduce函数接受一个给定词的所有对,排序相应的文档IDs,并且产生一个(词,文档ID列表)对.所有的输出对集形成一个简单的倒排索引.它可以简单的增加跟踪词位置的计算. 分布式排序:map函数从每个记录提取key,并且产生一个(key,record)对.reduce函数不改变任何的对.这个计算依赖分割工具(在4.1描述)和排序属性(在4.2描述). 3实现 MapReduce接口可能有许多不同的实现.根据环境进行正确的选择.例如,一个实现对一个共享内存较小的机器是合适的,另外的适合一个大NUMA的多处理器的机器,而有的适合一个更大的网络机器的集合. 这部分描述一个在Google广泛使用的计算环境的实现:用交换机连接的普通PC机的大机群.我们的环境是: 1.Linux操作系统,双处理器,2-4GB内存的机器. 2.普通的网络硬件,每个机器的带宽或者是百兆或者千兆,但是平均小于全部带宽的一半. 3.因为一个机群包含成百上千的机器,所有机器会经常出现问题. 4.存储用直接连到每个机器上的廉价IDE硬盘.一个从内部文件系统发展起来的分布式文件系统被用来管理存储在这些磁盘上的数据.文件系统用复制的方式在不可靠的硬件上来保证可靠性和有效性. 5.用户提交工作给调度系统.每个工作包含一个任务集,每个工作被调度者映射到机群中一个可用的机器集上. 3.1执行预览 通过自动分割输入数据成一个有M个split的集,map调用被分布到多台机器上.输入的split能够在不同的机器上被并行处理.通过用分割函数分割中间key,来形成R个片(例如,hash(key) mod R),reduce调用被分布到多台机器上.分割数量(R)和分割函数由用户来指定. 图1显示了我们实现的MapReduce操作的全部流程.当用户的程序调用MapReduce的函数的时候,将发生下面的一系列动作(下面的数字和图1中的数字标签相对应): 1.在用户程序里的MapReduce库首先分割输入文件成M个片,每个片的大小一般从 16到64MB(用户可以通过可选的参数来控制).然后在机群中开始大量的拷贝程序. 2.这些程序拷贝中的一个是master,其他的都是由master分配任务的worker.有M 个map任务和R个reduce任务将被分配.管理者分配一个map任务或reduce任务给一个空闲的worker. 3.一个被分配了map任务的worker读取相关输入split的内容.它从输入数据中分析出key/value对,然后把key/value对传递给用户自定义的map函数.由map函数产生的中间key/value对被缓存在内存中. 4.缓存在内存中的key/value对被周期性的写入到本地磁盘上,通过分割函数把它们写入R个区域.在本地磁盘上的缓存对的位置被传送给master,master负责把这些位置传送给reduce worker. 5.当一个reduce worker得到master的位置通知的时候,它使用远程过程调用来从map worker的磁盘上读取缓存的数据.当reduce worker读取了所有的中间数据后,它通过排序使具有相同key的内容聚合在一起.因为许多不同的key映射到相同的reduce任务,所以排序是必须的.如果中间数据比内存还大,那么还需要一个外部排序. 6.reduce worker迭代排过序的中间数据,对于遇到的每一个唯一的中间key,它把key和相关的中间value集传递给用户自定义的reduce函数.reduce函数的输出被添加到这个reduce分割的最终的输出文件中. 7.当所有的map和reduce任务都完成了,管理者唤醒用户程序.在这个时候,在用户程序里的MapReduce调用返回到用户代码. 在成功完成之后,mapreduce执行的输出存放在R个输出文件中(每一个reduce任务产生一个由用户指定名字的文件).一般,用户不需要合并这R个输出文件成一个文件--他们经常把这些文件当作一个输入传递给其他的MapReduce调用,或者在可以处理多个分割文件的分布式应用中使用他们. 3.2master数据结构 master保持一些数据结构.它为每一个map和reduce任务存储它们的状态(空闲,工作中,完成),和worker机器(非空闲任务的机器)的标识. master就像一个管道,通过它,中间文件区域的位置从map任务传递到reduce任务.因此,对于每个完成的map任务,master存储由map任务产生的R个中间文件区域的大小和位置.当map任务完成的时候,位置和大小的更新信息被接受.这些信息被逐步增加的传递给那些正在工作的reduce任务. 3.3容错 因为MapReduce库被设计用来使用成百上千的机器来帮助处理非常大规模的数据,所以这个库必须要能很好的处理机器故障. worker故障 master周期性的ping每个worker.如果master在一个确定的时间段内没有收到worker返回的信息,那么它将把这个worker标记成失效.因为每一个由这个失效的worker完成的map任务被重新设置成它初始的空闲状态,所以它可以被安排给其他的worker.同样的,每一个在失败的worker上正在运行的map或reduce任务,也被重新设置成空闲状态,并且将被重新调度. 在一个失败机器上已经完成的map任务将被再次执行,因为它的输出存储在它的磁盘上,所以不可访问.已经完成的reduce任务将不会再次执行,因为它的输出存储在全局文件系统中. 当一个map任务首先被worker A执行之后,又被B执行了(因为A失效了),重新执行这个情况被通知给所有执行reduce任务的worker.任何还没有从A读数据的reduce任务将从worker B读取数据. MapReduce可以处理大规模worker失败的情况.例如,在一个MapReduce操作期间,在正在运行的机群上进行网络维护引起80台机器在几分钟内不可访问了,MapReduce master只是简单的再次执行已经被不可访问的worker完成的工作,继续执行,最终完成这个MapReduce操作. master失败 可以很容易的让管理者周期的写入上面描述的数据结构的checkpoints.如果这个master任务失效了,可以从上次最后一个checkpoint开始启动另一个master进程.然而,因为只有一个master,所以它的失败是比较麻烦的,因此我们现在的实现是,如果master失败,就中止MapReduce计算.客户可以检查这个状态,并且可以根据需要重新执行MapReduce操作. 在错误面前的处理机制 当用户提供的map和reduce操作对它的输出值是确定的函数时,我们的分布式实现产生,和全部程序没有错误的顺序执行一样,相同的输出. 我们依赖对map和reduce任务的输出进行原子提交来完成这个性质.每个工作中的任务把它的输出写到私有临时文件中.一个reduce任务产生一个这样的文件,而一个map任务产生R个这样的文件(一个reduce任务对应一个文件).当一个map任务完成的时候,worker发送一个消息给master,在这个消息中包含这R个临时文件的名字.如果master从一个已经完成的map任务再次收到一个完成的消息,它将忽略这个消息.否则,它在master的数据结构里记录这R个文件的名字. 当一个reduce任务完成的时候,这个reduce worker原子的把临时文件重命名成最终的输出文件.如果相同的reduce任务在多个机器上执行,多个重命名调用将被执行,并产生相同的输出文件.我们依赖由底层文件系统提供的原子重命名操作来保证,最终的文件系统状态仅仅包含一个reduce任务产生的数据. 我们的map和reduce操作大部分都是确定的,并且我们的处理机制等价于一个顺序的执行的这个事实,使得程序员可以很容易的理解程序的行为.当map或/和reduce操作是不确定的时候,我们提供虽然比较弱但是合理的处理机制.当在一个非确定操作的前面,一个reduce任务R1的输出等价于一个非确定顺序程序执行产生的输出.然而,一个不同的reduce任务R2的输出也许符合一个不同的非确定顺序程序执行产生的输出. 考虑map任务M和reduce任务R1,R2的情况.我们设定e(Ri)为已经提交的Ri的执行(有且仅有一个这样的执行).这个比较弱的语义出现,因为e(R1)也许已经读取了由M的执行产生的输出,而e(R2)也许已经读取了由M的不同执行产生的输出. 3.4存储位置 在我们的计算机环境里,网络带宽是一个相当缺乏的资源.我们利用把输入数据(由GFS管理)存储在机器的本地磁盘上来保存网络带宽.GFS把每个文件分成64MB的一些块,然后每个块的几个拷贝存储在不同的机器上(一般是3个拷贝).MapReduce的master考虑输入文件的位置信息,并且努力在一个包含相关输入数据的机器上安排一个map任务.如果这样做失败了,它尝试在那个任务的输入数据的附近安排一个map任务(例如,分配到一个和包含输入数据块在一个switch里的worker机器上执行).当运行巨大的MapReduce操作在一个机群中的一部分机器上的时候,大部分输入数据在本地被读取,从而不消耗网络带宽. 3.5任务粒度 象上面描述的那样,我们细分map阶段成M个片,reduce阶段成R个片.M和R应当比worker机器的数量大许多.每个worker执行许多不同的工作来提高动态负载均衡,也可以加速从一个worker失效中的恢复,这个机器上的许多已经完成的map任务可以被分配到所有其他的worker机器上. 在我们的实现里,M和R的范围是有大小限制的,因为master必须做O(M+R)次调度,并且保存O(M*R)个状态在内存中.(这个因素使用的内存是很少的,在O(M*R)个状态片里,大约每个map任务/reduce任务对使用一个字节的数据). 此外,R经常被用户限制,因为每一个reduce任务最终都是一个独立的输出文件.实际上,我们倾向于选择M,以便每一个单独的任务大概都是16到64MB的输入数据(以便上面描述的位置优化是最有效的),我们把R设置成我们希望使用的worker机器数量的小倍数.我们经常执行MapReduce计算,在M=200000,R=5000,使用2000台工作者机器的情况下. 3.6备用任务 一个落后者是延长MapReduce操作时间的原因之一:一个机器花费一个异乎寻常地的长时间来完成最后的一些map或reduce任务中的一个.有很多原因可能产生落后者.例如,一个有坏磁盘的机器经常发生可以纠正的错误,这样就使读性能从30MB/s降低到3MB/s.机群调度系统也许已经安排其他的任务在这个机器上,由于计算要使用CPU,内存,本地磁盘,网络带宽的原因,引起它执行MapReduce代码很慢.我们最近遇到的一个问题是,一个在机器初始化时的Bug引起处理器缓存的失效:在一个被影响的机器上的计算性能有上百倍的影响. 我们有一个一般的机制来减轻这个落后者的问题.当一个MapReduce操作将要完成的时候,master调度备用进程来执行那些剩下的还在执行的任务.无论是原来的还是备用的执行完成了,工作都被标记成完成.我们已经调整了这个机制,通常只会占用多几个百分点的机器资源.我们发现这可以显著的减少完成大规模MapReduce操作的时间.作为一个例子,将要在5.3描述的排序程序,在关闭掉备用任务的情况下,要比有备用任务的情况下多花44%的时间. 4技巧 尽管简单的map和reduce函数的功能对于大多数需求是足够的了,但是我们开发了一些有用的扩充.这些将在这个部分描述. 4.1分割函数 MapReduce用户指定reduce任务和reduce任务需要的输出文件的数量.在中间key上使用分割函数,使数据分割后通过这些任务.一个缺省的分割函数使用hash方法(例如,hash(key) mod R).这个导致非常平衡的分割.然后,有的时候,使用其他的key分割函数来分割数据有非常有用的.例如,有时候,输出的key是URLs,并且我们希望每个主机的所有条目保持在同一个输出文件中.为了支持像这样的情况,MapReduce库的用户可以提供专门的分割函数.例如,使用"hash(Hostname(urlkey)) mod R"作为分割函数,使所有来自同一个主机的URLs保存在同一个输出文件中. 4.2顺序保证 我们保证在一个给定的分割里面,中间key/value对以key递增的顺序处理.这个顺序保证可以使每个分割产出一个有序的输出文件,当输出文件的格式需要支持有效率的随机访问key的时候,或者对输出数据集再作排序的时候,就很容易. 4.3combiner函数 在某些情况下,允许中间结果key重复会占据相当的比重,并且用户定义的reduce函数 满足结合律和交换律.一个很好的例子就是在2.1部分的词统计程序.因为词频率倾向于一个zipf分布(齐夫分布),每个map任务将产生成百上千个这样的记录the,1.所有的这些计数将通过网络被传输到一个单独的reduce任务,然后由reduce函数加在一起产生一个数字.我们允许用户指定一个可选的combiner函数,先在本地进行合并一下,然后再通过网络发送. 在每一个执行map任务的机器上combiner函数被执行.一般的,相同的代码被用在combiner和reduce函数.在combiner和reduce函数之间唯一的区别是MapReduce库怎样控制函数的输出.reduce函数的输出被保存最终输出文件里.combiner函数的输出被写到中间文件里,然后被发送给reduce任务. 部分使用combiner可以显著的提高一些MapReduce操作的速度.附录A包含一个使用combiner函数的例子. 4.4输入输出类型 MapReduce库支持以几种不同的格式读取输入数据.例如,文本模式输入把每一行看作是一个key/value对.key是文件的偏移量,value是那一行的内容.其他普通的支持格式以key的顺序存储key/value对序列.每一个输入类型的实现知道怎样把输入分割成对每个单独的map任务来说是有意义的(例如,文本模式的范围分割确保仅仅在每行的边界进行范围分割).虽然许多用户仅仅使用很少的预定意输入类型的一个,但是用户可以通过提供一个简单的reader接口来支持一个新的输入类型. 一个reader不必要从文件里读数据.例如,我们可以很容易的定义它从数据库里读记录,或从内存中的数据结构读取. 4.5副作用 有的时候,MapReduce的用户发现在map操作或/和reduce操作时产生辅助文件作为一个附加的输出是很方便的.我们依靠应用程序写来使这个副作用成为原子的.一般的,应用程序写一个临时文件,然后一旦这个文件全部产生完,就自动的被重命名. 对于单个任务产生的多个输出文件来说,我们没有提供其上的两阶段提交的原子操作支持.因此,一个产生需要交叉文件连接的多个输出文件的任务,应该使确定性的任务.不过这个限制在实际的工作中并不是一个问题. 4.6跳过错误记录 有的时候因为用户的代码里有bug,导致在某一个记录上map或reduce函数突然crash掉.这样的bug使得MapReduce操作不能完成.虽然一般是修复这个bug,但是有时候这是不现实的;也许这个bug是在源代码不可得到的第三方库里.有的时候也可以忽略一些记录,例如,当在一个大的数据集上进行统计分析.我们提供一个可选的执行模式,在这个模式下,MapReduce库检测那些记录引起的crash,然后跳过那些记录,来继续执行程序. 每个worker程序安装一个信号处理器来获取内存段异常和总线错误.在调用一个用户自定义的map或reduce操作之前,MapReduce库把记录的序列号存储在一个全局变量里.如果用户代码产生一个信号,那个信号处理器就会发送一个包含序号的"last gasp"UDP包给MapReduce的master.当master不止一次看到同一个记录的时候,它就会指出,当相关的map或reduce任务再次执行的时候,这个记录应当被跳过. 4.7本地执行 调试在map或reduce函数中问题是很困难的,因为实际的计算发生在一个分布式的系统中,经常是有一个master动态的分配工作给几千台机器.为了简化调试和测试,我们开发了一个可替换的实现,这个实现在本地执行所有的MapReduce操作.用户可以控制执行,这样计算可以限制到特定的map任务上.用户以一个标志调用他们的程序,然后可以容易的使用他们认为好用的任何调试和测试工具(例如,gdb). 4.8状态信息 master运行一个HTTP服务器,并且可以输出一组状况页来供人们使用.状态页显示计算进度,象多少个任务已经完成,多少个还在运行,输入的字节数,中间数据字节数,输出字节数,处理百分比,等等.这个页也包含到标准错误的链接,和由每个任务产生的标准输出的链接.用户可以根据这些数据预测计算需要花费的时间,和是否需要更多的资源.当计算比预期的要慢很多的时候,这些页面也可以被用来判断是不是这样. 此外,最上面的状态页显示已经有多少个工作者失败了,和当它们失败的时候,那个map和reduce任务正在运行.当试图诊断在用户代码里的bug时,这个信息也是有用的. 4.9计数器 MapReduce库提供一个计数器工具,来计算各种事件的发生次数.例如,用户代码想要计算所有处理的词的个数,或者被索引的德文文档的数量. 为了使用这个工具,用户代码创建一个命名的计数器对象,然后在map或/和reduce函数里适当的增加计数器.例如: Counter * uppercase; uppercase=GetCounter("uppercase"); map(String name,String contents): for each word w in contents: if(IsCapitalized(w)): uppercase-Increment(); EmitIntermediate(w,"1"); 来自不同worker机器上的计数器值被周期性的传送给master(在ping回应里).master把来自成功的map和reduce任务的计数器值加起来,在MapReduce操作完成的时候,把它返回给用户代码.当前计数器的值也被显示在master状态页里,以便人们可以查看实际的计算进度.当计算计数器值的时候消除重复执行的影响,避免数据的累加.(在备用任务的使用,和由于出错的重新执行,可以产生重复执行) 有些计数器值被MapReduce库自动的维护,比如,被处理的输入key/value对的数量,和被产生的输出key/value对的数量. 用户发现计数器工具对于检查MapReduce操作的完整性很有用.例如,在一些MapReduce操作中,用户代码也许想要确保输出对的数量完全等于输入对的数量,或者处理过的德文文档的数量是在全部被处理的文档数量中属于合理的范围. 5性能 在本节,我们用在一个大型集群上运行的两个计算来衡量MapReduce的性能.一个计算用来在一个大概1TB的数据中查找特定的匹配串.另一个计算排序大概1TB的数据. 这两个程序代表了MapReduce的用户实现的真实的程序的一个大子集.一类是,把数据从一种表示转化到另一种表示.另一类是,从一个大的数据集中提取少量的关心的数据. 5.1机群配置 所有的程序在包含大概1800台机器的机群上执行.机器的配置是:2个2G的Intel Xeon超线程处理器,4GB内存,两个160GB IDE磁盘,一个千兆网卡.这些机器部署在一个由两层的,树形交换网络中,在根节点上大概有100到2000G的带宽.所有这些机器都有相同的部署(对等部署),因此任意两点之间的来回时间小于1毫秒. 在4GB的内存里,大概有1-1.5GB被用来运行在机群中其他的任务.这个程序是在周末的下午开始执行的,这个时候CPU,磁盘,网络基本上是空闲的. 5.2Grep 这个Grep程序扫描大概10^10个,每个100字节的记录,查找比较少的3字符的查找串(这个查找串出现在92337个记录中).输入数据被分割成大概64MB的片(M=15000),全部 的输出存放在一个文件中(R=1). 图2显示计算过程随时间变化的情况.Y轴表示输入数据被扫描的速度.随着更多的机群被分配给这个MapReduce计算,速度在逐步的提高,当有1764个worker的时候这个速度达到最高的30GB/s.当map任务完成的时候,速度开始下降,在计算开始后80秒,输入的速度降到0.这个计算持续的时间大概是150秒.这包括了前面大概一分钟的启动时间.启动时间用来把程序传播到所有的机器上,等待GFS打开1000个输入文件,得到必要的位置优化信息. 5.3排序 这个sort程序排序10^10个记录,每个记录100个字节(大概1TB的数据).这个程序是模仿TeraSort的. 这个排序程序只包含不到50行的用户代码.其中有3行map函数用来从文本行提取10字节的排序key,并且产生一个由这个key和原始文本行组成的中间key/value对.我们使用一个内置的Identity函数作为reduce操作.这个函数直接把中间key/value对作为输出的key/value对.最终的排序输出写到一个2路复制的GFS文件中(也就是,程序的输出会写2TB的数据). 象以前一样,输入数据被分割成64MB的片(M=15000).我们把排序后的输出写到4000个文件中(R=4000).分区函数使用key的原始字节来把数据分区到R个小片中. 我们以这个基准的分割函数,知道key的分布情况.在一般的排序程序中,我们会增加一个预处理的MapReduce操作,这个操作用于采样key的情况,并且用这个采样的key的分布情况来计算对最终排序处理的分割点。 图3(a)显示这个排序程序的正常执行情况.左上图显示输入数据的读取速度.这个速度最高到达13GB/s,并且在不到200秒所有map任务完成之后迅速滑落到0.注意到这个输入速度小于Grep.这是因为这个排序map任务花费大概一半的时间和带宽,来把中间数据写到本地硬盘中.而Grep相关的中间数据可以忽略不计. 左中图显示数据通过网络从map任务传输给reduce任务的速度.当第一个map任务完成后,这个排序过程就开始了.图示上的第一个高峰是启动了第一批大概1700个reduce任务(整个MapReduce任务被分配到1700台机器上,每个机器一次只执行一个reduce任务).大概开始计算后的300秒,第一批reduce任务中的一些完成了,我们开始执行剩下的reduce任务.全部的排序过程持续了大概600秒的时间. 左下图显示排序后的数据被reduce任务写入最终文件的速度.因为机器忙于排序中间数据,所以在第一个排序阶段的结束和写阶段的开始有一个延迟.写的速度大概是2-4GB/s.大概开始计算后的850秒写过程结束.包括前面的启动过程,全部的计算任务持续的891秒.这个和TeraSort benchmark的最高纪录1057秒差不多. 需要注意的事情是:因此位置优化的原因,很多数据都是从本地磁盘读取的而没有通过我们有限带宽的网络,所以输入速度比排序速度和输出速度都要快.排序速度比输出速度快的原因是输出阶段写两个排序后数据的拷贝(我们写两个副本的原因是为了可靠性和可用性).我们写两份的原因是因为底层文件系统的可靠性和可用性的要求.如果底层文件系统用类似容错编码(erasure coding)的方式,而不采用复制写的方式,在写盘阶段可以降低网络带宽的要求。 5.4备用任务的影响 在图3(b)中,显示我们不用备用任务的排序程序的执行情况.除了它有一个很长的几乎没有写动作发生的尾巴外,执行流程和图3(a)相似.在960秒后,只有5个reduce任务没有完成.然而,就是这最后几个落后者知道300秒后才完成.全部的计算任务执行了1283秒,多花了44%的时间. 5.5机器失效 在图3(c)中,显示我们有意的在排序程序计算过程中停止1746台worker中的200台机器上的程序的情况.底层机群调度者在这些机器上马上重新开始新的worker程序(因为仅仅程序被停止,而机器仍然在正常运行). 因为已经完成的map工作丢失了(由于相关的map worker被杀掉了),需要重新再作,所以worker死掉会导致一个负数的输入速率.相关map任务的重新执行很快就重新执行了.整个计算过程在933秒内完成,包括了前边的启动时间(只比正常执行时间多了5%的时间). 6经验 我们在2003年的2月写了MapReduce库的第一个版本,并且在2003年的8月做了显著的增强,包括位置优化,worker机器间任务执行的动态负载均衡,等等.从那个时候起,我们惊奇的发现MapReduce函数库广泛用于我们日常处理的问题.它现在在Google内部各个领域内广泛应用,包括: 大规模机器学习问题 Google News和Froogle产品的机器问题. 提取数据产生一个流行查询的报告(例如,Google Zeitgeist). 为新的试验和产品提取网页的属性(例如,从一个web页的大集合中提取位置信息 用在位置查询). 大规模的图计算. 图4显示了我们主要的源代码管理系统中,随着时间推移,MapReduce程序的显著增加,从2003年早先时候的0个增长到2004年9月份的差不多900个不同的程序.MapReduce之所以这样的成功,是因为他能够在不到半小时时间内写出一个简单的能够应用于上千台机器的大规模并发程序,并且极大的提高了开发和原形设计的周期效率.并且,他可以让一个完全没有分布式和/或并行系统经验的程序员,能够很容易的利用大量的资源. 在每一个任务结束的时候,MapReduce函数库记录使用的计算资源的统计信息.在图1里,我们列出了2004年8月份在Google运行的一些MapReduce的工作的统计信息. 6.1大规模索引 到目前为止,最成功的MapReduce的应用就是重写了Google web 搜索服务所使用到的index系统.索引系统处理爬虫系统抓回来的超大量的文档集,这些文档集保存在GFS文件里.这些文档的原始内容的大小,超过了20TB.索引程序是通过一系列的,大概5到10次MapReduce操作来建立索引.通过利用MapReduce(替换掉上一个版本的特别设计的分布处理的索引程序版本)有这样一些好处: 索引的代码简单,量少,容易理解,因为容错,分布式,并行处理都隐藏在MapReduce库中了.例如,当使用MapReduce函数库的时候,计算的代码行数从原来的3800行C++代码一下减少到大概700行代码. MapReduce的函数库的性能已经非常好,所以我们可以把概念上不相关的计算步骤分开处理,而不是混在一起以期减少在数据上的处理.这使得改变索引过程很容易.例如,我们对老索引系统的一个小更改可能要好几个月的时间,但是在新系统内,只需要花几天时间就可以了. 索引系统的操作更容易了,这是因为机器的失效,速度慢的机器,以及网络失效都已经由MapReduce自己解决了,而不需要操作人员的交互.另外,我们可以简单的通过对索引系统增加机器的方式提高处理性能. 7相关工作 很多系统都提供了严格的设计模式,并且通过对编程的严格限制来实现自动的并行计算.例如,一个结合函数可以通过N个元素的数组的前缀在N个处理器上使用并行前缀计算在log N的时间内计算完.MapReduce是基于我们的大型现实计算的经验,对这些模型的一个简化和精炼.并且,我们还提供了基于上千台处理器的容错实现.而大部分并发处理系统都只在小规模的尺度上实现,并且机器的容错还是程序员来控制的. Bulk Synchronous Programming以及一些MPI primitives提供了更高级别的抽象,可以更容易写出并行处理的程序.这些系统和MapReduce系统的不同之处在,MapReduce利用严格的编程模式自动实现用户程序的并发处理,并且提供了透明的容错处理. 我们本地的优化策略是受active disks等技术的启发,在active disks中,计算任务是尽量推送到靠近本地磁盘的处理单元上,这样就减少了通过I/O子系统或网络的数据量.我们在少量磁盘直接连接到普通处理机运行,来代替直接连接到磁盘控制器的处理机上,但是一般的步骤是相似的. 我们的备用任务的机制和在Charlotte系统上的积极调度机制相似.这个简单的积极调度的一个缺陷是,如果一个任务引起了一个重复性的失败,那个整个计算将无法完成.我们通过在故障情况下跳过故障记录的机制,在某种程度上解决了这个问题. MapReduce实现依赖一个内置的机群管理系统来在一个大规模共享机器组上分布和运行用户任务.虽然这个不是本论文的重点,但是集群管理系统在理念上和Condor等其他系统是一样的. 在MapReduce库中的排序工具在操作上和NOW-Sort相似.源机器(map worker)分割将要被排序的数据,然后把它发送到R个reduce worker中的一个上.每个reduce worker来本地排序它的数据(如果可能,就在内存中).当然,NOW-Sort没有用户自定义的map和reduce函数,使得我们的库可以广泛的应用. River提供一个编程模型,在这个模型下,处理进程可以靠在分布式的队列上发送数据进行彼此通讯.和MapReduce一样,River系统尝试提供对不同应用有近似平均的性能,即使在不对等的硬件环境下或者在系统颠簸的情况下也能提供近似平均的性.River是通过精心调度硬盘和网络的通讯,来平衡任务的完成时间.MapReduce不和它不同.利用严格编程模型,MapReduce构架来把问题分割成大量的任务.这些任务被自动的在可用的worker上调度,以便速度快的worker可以处理更多的任务.这个严格编程模型也让我们可以在工作快要结束的时候安排冗余的执行,来在非一致处理的情况减少完成时间(比如,在有慢机或者阻塞的worker的时候). BAD-FS是一个很MapReduce完全不同的编程模型,它的目标是在一个广阔的网络上执行工作.然而,它们有两个基本原理是相同的.(1)这两个系统使用冗余的执行来从由失效引起的数据丢失中恢复.(2)这两个系统使用本地化调度策略,来减少通过拥挤的网络连接发送的数据数量. TACC是一个被设计用来简化高有效性网络服务结构的系统.和MapReduce一样,它通过再次执行来实现容错. 8结束语 MapReduce编程模型已经在Google成功的用在不同的目的.我们把这个成功归于以下几个原因:第一,这个模型使用简单,甚至对没有并行和分布式经验的程序员也是如此,因为它隐藏了并行化,容错,位置优化和负载均衡的细节.第二,大量不同的问题可以用MapReduce计算来表达.例如,MapReduce被用来,为Google的产品web搜索服务,排序,数据挖掘,机器学习,和其他许多系统,产生数据.第三,我们已经在一个好几千台计算机的大型集群上开发实现了这个MapReduce.这个实现使得对于这些机器资源的利用非常简单,因此也适用于解决Google遇到的其他很多需要大量计算的问题. 从这个工作中我们也学习到了一些东西.首先,严格的编程模型使得并行化和分布式计算简单,并且也易于构造这样的容错计算环境.第二,网络带宽是系统的瓶颈.因此在我们的系统中大量的优化目标是减少通过网络发送的数据量,本地优化使用我们从本地磁盘读取数据,并且把中间数据写到本地磁盘,以保留网络带宽.第三,冗余的执行可以用来减少速度慢的机器的影响,和控制机器失效和数据丢失. 感谢 Josh Levenberg校定和扩展了用户级别的MapReduce API,并且结合他的适用经验和其他人的改进建议,增加了很多新的功能.MapReduce从GFS中读取和写入数据.我们要感谢Mohit Aron,Howard Gobioff,Markus Gutschke,David Krame,Shun-Tak Leung,和Josh Redstone,他们在开发GFS中的工作.我们还感谢Percy Liang Olcan Sercinoglu 在开发用于MapReduce的集群管理系统得工作.Mike Burrows,Wilson Hsieh,Josh Levenberg,Sharon Perl,RobPike,Debby Wallach为本论文提出了宝贵的意见.OSDI的无名审阅者,以及我们的审核者Eric Brewer,在论文应当如何改进方面给出了有益的意见.最后,我们感谢Google的工程部的所有MapReduce的用户,感谢他们提供了有用的反馈,建议,以及错误报告等等. A单词频率统计 本节包含了一个完整的程序,用于统计在一组命令行指定的输入文件中,每一个不同的单词出现频率. #include "mapreduce/mapreduce.h" //用户map函数 class WordCounter : public Mapper { public: virtual void Map(const MapInput input) { const string text = input.value(); const int n = text.size(); for (int i = 0; i n; ) { //跳过前导空格 while ((i n) isspace(text )) i++; // 查找单词的结束位置 int start = i; while ((i n) !isspace(text )) i++; if (start i) Emit(text.substr(start,i-start),"1"); } } }; REGISTER_MAPPER(WordCounter); //用户的reduce函数 class Adder : public Reducer { virtual void Reduce(ReduceInput* input) { //迭代具有相同key的所有条目,并且累加它们的value int64 value = 0; while (!input-done()) { value += StringToInt(input-value()); input-NextValue(); } //提交这个输入key的综合 Emit(IntToString(value)); } }; REGISTER_REDUCER(Adder); int main(int argc, char** argv) { ParseCommandLineFlags(argc, argv); MapReduceSpecification spec; // 把输入文件列表存入"spec" for (int i = 1; i argc; i++) { MapReduceInput* input = spec.add_input(); input-set_format("text"); input-set_filepattern(argv ); input-set_mapper_class("WordCounter"); } //指定输出文件: // /gfs/test/freq-00000-of-00100 // /gfs/test/freq-00001-of-00100 // ... MapReduceOutput* out = spec.output(); out-set_filebase("/gfs/test/freq"); out-set_num_tasks(100); out-set_format("text"); out-set_reducer_class("Adder"); // 可选操作:在map任务中做部分累加工作,以便节省带宽 out-set_combiner_class("Adder"); // 调整参数: 使用2000台机器,每个任务100MB内存 spec.set_machines(2000); spec.set_map_megabytes(100); spec.set_reduce_megabytes(100); // 运行它 MapReduceResult result; if (!MapReduce(spec, result)) abort(); // 完成: 'result'结构包含计数,花费时间,和使用机器的信息 return 0; } 本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/active1001/archive/2007/07/02/1675920.aspx
3117 次阅读|0 个评论
好文章无处不在:一个简单的非正规范例
slrseer 2011-1-30 23:03
笔者所说的好文章的范例指的是以下的网页: http://www.tuxradar.com/content/browser-benchmarks-2-even-wine-beats-linux-firefox 如果不能浏览,附件中给出了它的打印版。 它非常简短,但有一个抓人的主题。单是题目,就讲清楚两件事情: 1,此文是关于浏览器性能测试————在题目中表明主题有助于文章被搜索从而被引用; 2,wine 胜过 linux 原装的某软件。————与常识相悖,使人产生兴趣。 注意此题目的抓人之处并非作者凭空的妙笔生花,而是对实验事实的简化表述。 在正文中,作者做了一篇好文章所应该做的所有事情: 1,动机介绍;2,实验设置;3,实验结果(数据,图表);4,结果分析;5,结论与展望 作者的关键工作当然是做出了有悖“常识”的实验结果,但是文章的编排有板有眼,题目起得尤其好。 收获是,题目要写出文章的亮点。
3720 次阅读|0 个评论

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

GMT+8, 2024-5-9 12:22

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部