转SCI论文全攻略(部分内容很有借鉴意义,但是要做批判性阅读)

第一部分:选题与创新

一、先想先写最后做:
1. 做研究之前,必须想清楚:结果能不能发表?发表在哪里?
2. 先把文章大框写好,空出数据,等做完实验填完空就可以发了;正所谓心中有沟壑!
3. 在未搞清“写什么、发哪里、自己研究与同类研究有何出色之处”之前,就不要动手做!
4. 继续去看文献,去想;想不清楚就做还不如不做!
5. 要想这样做,就得先看文献!要知道如何把文章架起来、要知道别人是如何讨论的、要知道自己的数据是不是说明了与别人不同的东东或别人没有做过……这个过程 就是阅读文献及思考的过程,这些搞清楚了,写就简单了!
6. 要是先做事,做完发现别人做过,或无法用理论来解释,岂不是冤大头?
二、如何科学选题:
  1. 课题选择和国际接轨。想在国际核心期刊发表文献,就必须了解国际研究动态,选择与国际 学术研究合拍的课题。由于多方面因素的影响,我国科学研究选题与国际先进水平还有一定距离。我国一家权威科研机构不久前在国内挑选了许多前沿 领域的研究课题,准备参与国际合作,但到美国后发现近三分之二的课题已经不属前沿,在美国很少有人研究。在高校,一些教师治学严谨、基础扎 实,但科研成果不突出,重要原因就是不重视有关领域学术动态,不能选得合适的课题。
  2. 课题要有可发展性。课题可发展性对高水平论文的持续产出具有极大作用。中国科技大学 范洪义另辟蹊径,发展了诺贝尔奖得主狄拉克(Dirac)奠定的量子论的符号法,系统地建立了“有序算符内的积分理论”,1998年有24篇 论文被SCI收录;他对自己论文高产的解释是,研究“具有开创性,突破一点以后就可以向纵深发展,使研究工作自成系列、成面成片”。我院被 SCI收录论文最多的杨新民老师从事凸性理论研究,该理论兴起于 20世纪70年代,90年代进入高峰。作为新兴研究领域,该理论本身有许多尚待研究之处,同时该理论也可用来解决最优化方面的问题。反之,有人由于所接触 的问题已处于该研究分支的末端,即使在该点上有所突破,也难持续发展。
3. 借助工具选题:①查阅有关领域的检索工具,这些工具各高校都有;②了解SCI收录期刊所反映的科技动态,ISI期刊信息可从http://www.isinet.com查获,也可从SCI印刷版每期A、D分册的来源出版物目录(Lists of Source Publications)查找,还可从ISI引用期刊报告 (Journal Citation Reports,简称JCR)了解期刊信息,该文献有印刷版、网络版(JCR on the Web)和光盘版 (JCR on CD-ROM);③利用ISI提供的选题工具帮助,例如,能对正在开展的工作进行量化分析以保证用户科学研究同科学发展趋向一致的(Essential Science Indicators),介绍有关最杰出人物研究状况、有关领域研究热点和发展趋向的(ISI Highly Cited.com);④利用网上数据库了解国际学术研究动态及有关资料。只要有心参与国际学术竞争,选择与国际学术研究接轨的课题并不存在难以克服的障 碍。
三、如何获得好的idea
无论是临床还是基础科研,最关键的是idea,idea的出台决定了科研水平和档次。高水平的科学家一听你的科 研课题和方向,就能判断你科研水平。因此,获得好的idea是至关重要的。
1. 优秀科学家要具备敏锐的科研嗅觉,而这种敏锐性是经过长期的思考和实践获得的。通过几天或半个月的苦思苦想得到了一个自以为很好的idea,很可能是别人 十几年前就做过的工作。但新手上路时重复一些经典实验以获得经验是很正常的。此外,科研要注重质量,千万不要为单纯地追求数量而令懂行的人嘲笑。如何获得idea呢?
A. 大量地、仔细地阅读 文献,多听学术报告、多与同行探讨,从中获得启示,不能急于求成。
B. 总结感兴趣领域内尚 未探讨过但很有意义的课题;
C. 总结争论性很强的问 题,反复比较研究方法和结论,从中发现切入点;
D. 善于抓住科研过程中遇到的难以解释的问题,往往会成为思维的闪光点;
E. 细致地拟定方案,论 证可行性。

2. 获得idea的两种途径:传统途径就是先阅读大量科研论文,弄清目前的研究现状和要解决的问题等; 非传统的途径是自己先冥思苦想一段时间,有了自己的idea后再去查文献。这样不会让以往的研究限制你的思维,不失为一个很好的 方法。别人没作过的东西,也许不是因为别人没想到,而是因为没有意义或者没有可能性。
3. 获得良好idea的基础前提:
A. 在科研前必须弥补基础知识,这是看懂文献的基础:《生物化学》《细胞生物学》《基因 VIII》必看(先看中文版翟中和《细胞》王境岩《生化》赵寿元《遗传》朱玉贤《分子》;再看英文的Albez《cell》赖宁格 《biochemistry》还有经典的《gene 8》)。
B. 广泛阅读文献是支撑。硕士至少查阅600篇,粗看300篇,细看100篇,研读50篇。 博士至少再多一倍,并始终关注国际动态。《nature》《science》《cell》《PNAS》《JBC》《MBC》《Genes & Development》不放过,SCI-3分以上期刊应该耳熟能详!
C. 学会阅读文献,读懂文章。建议先review再article,先中后英;中文只看《科 学通报》《中国科学》,其他不看;看10-20篇review后看研究性论文。拿到一篇研究性论文,先看标题,立即停住,问自己几个问题: (1)想想别人这文章是怎么做的(可参考材料方法)?会做哪些内容来说明其标题?(2)明白他为什么要做这个吗?(3)如文章是近半年内发表 的,该文章解决了什么问题?引出了什么问题(结合你看的综述)?接下来仔细看摘要,就知道你的想法是否与别人吻合?(4)看完实验结果,再思 考有什么地方不完善?有没有深入或拓展到底?一般来说,SCI-3分以下的文章只可能做了一部分机理,下面肯定有东西可做,关键是你自己要思 考,去发现。
4. 长期作战持之以恒。做好上面所述要求肯定会有所谓idea,但过程艰辛,需长时间磨练,需要 patience和passion。有天赋的人能考上海中科院生命科学院,北京中科院那几个所,北大、清华。耐心干5年,这些地 方正为中国带来更多本土nature、science文章。
四、博士如何出牛文章?
1. 几点忠告:多看paper没有坏处;多找非老板的其他人,如其他教授,postdoc,前辈师兄等讨论,借鸡下蛋;可以动手的东西容易上手,比如软件等; 找机会去开会,认认牛人,不发paper,做做volunteer,或者参加phd symposium之类。五主动参加seminar,自己讲几次看过的paper,最好自己组织一个topic拉几个师兄弟和postdoc参加,注意找 几本教科书看看,打好基础。
2. 如何获得IDEA:
A. 需对研究的领域有一个全局性了解,按老板的话说是要有bird eye。
B. 要有bird eye,需比较全面地阅读本领域文章。读文章要其idea,总结成一句话,并用卡片记录好,分类整理。如果把别人文章的idea总结成一句话,就容易理解 它的本质,也好作变化。
C. 读了很多文章后,可 以写一个special study,将读过的本领域东西系统总结在一起,相当于你的综合理解,也就是bird eye看到的东西了。以后翻阅起来也相当方便。
D. 用心分析对于别人的idea,任何一个idea都有weakness;想办法解决它,那就成自己idea。最好的办法就是看大牛的paper,无论他有多 牛,他的文章总是在说一个方面,总有其他东西没有包括进去,把他的文章认真精读了,总会发现漏洞和不足或不全面之处,然后你就知道怎 么做了。记住:每篇文章几乎都有没有考虑完全的东西。
E. 时不时阅读更广泛领域的东西,扩大bird eye范围,对领域外的感兴趣的文章进行copy收藏,这个叫walk around a little bit,很多领域外的东西可以借鉴、学科交叉从而产生new idea。
F. 经常跟牛人、博士后 或高年级博士等有思想的人(最好不是相同专业,而是相关专业或交叉学科)讨论,也容易出idea。再有就是,关注其他专业的书籍、杂 志等信息,从中获取交叉创新idea。

另外很有意思的一个案例研究,真正有远见的科学家的综述要经常读

Eugene Garfield在他的微型综述A Retrospective and Prospective View of Information Retrieval and Artificial Intelligence in the 21st Century,有这样一段话:

The prototype for this type of aposteriori intelligence is
John O’Connor’s brilliant attempt to develop systems for
scanning the full text of a document, which never mentions
the word toxic or toxicity and yet an intelligent automation
could conclude that it contains an indication of toxicity
(O’Connor, 1965).

讨论了这样一件事情:有一篇文章没有全文出现过toxic和toxicity的字眼,但是通过关键词相关算法(通过这篇文章的引文的以及引用这篇文章的文章的关键词,可以计算出此文章的关键词),发现这篇文章就是关于toxicity的。一个例子说明了这种关键词相关算法的价值。

这个迷你综述的全文也很有意思。短短的篇幅,给出了这个领域基本上所有的基本问题。作者是ISI的建立者,科学学领域的建立者,确实不一样。

打算编写一本《系统理论基础》(同时一本简写本《系统科学导论》)的书

利用几年时间把最基本的教材编写出来,而且要遵循以下的原则,是一件很有意义的事情。欢迎所有有兴趣有能力的人,一起来编撰,只要同意遵循以下编撰原则。提纲可以再讨论。

前言部分:编撰思想和原则

本书的特点:
1. 来自于研究论文的例子
2. 数学物理基础和基本的系统理论的概念与方法并重
3. 附有计算技术附录
4. 包含大量习题,其中大部分来自于研究论文
5. 概念地图的应用

系统科学还不是一个非常成熟的学科,这意味着概念体系尚未完备,概念之间也还没有达到数学、物理学等领域的紧密相联的程度。但是,系统科学这个领域确实已经形成一些有自身特点的概念、研究方法和研究对象。因此,本书编撰的指导思想是通过具体的理论研究工作以及少量的应用性实例来反映这个学科的概念、方法和对象。后者通常做为对前者的观察、评论和总结来体现,同时也是前者编排顺序、材料选择的隐藏线索。同时,一个没有非常成熟的学科还决定了在这个学科里,概念与方法还没有完全压倒思想和思辨。在本书中,我们尽量把思想和思辨与概念和方法区分开来,重点放在后面。尽管思想和思辨是很重要的,但是我们采取的方式是:只有当思想和思辨对于理解概念和方法有非常大的好处的时候,我们介绍一下思想和思辨。

系统科学的基本的思想源流有几个方面,在合适的地方在具体的例子当中,我们会做进一步的阐述:系统的演化与结构的产生(与经典热力学图景的矛盾)、整体运动与激发模式、临界行为与普适性、网络科学与一般的相互作用。我们会尽量把思想和思辨层次的内容与具体的粒子结合,最好能够通过计算体现出来。所有的这些思想有一个共同点就是探讨复杂现象背后的机制,这样的机制有可能是简单的,同时把各种研究方法系统化,形成相互协调的理论体系。借用 Anderson[?] 和Kadanoff[?] 的两句话来表达就是:More is different, more is the same。多个个体通过相互作用形成整体运动的复杂的模式和行为,这样的整体运动甚至有可能独立于原始的系统,同时系统科学的研究方法追求用一般的普适的分析方法来研究各种多个个体相互作用的系统。对于对思想和思辨的兴趣大过概念、方法和计算的读者,尽管我们强烈推荐这样的读者也熟悉一下具体的例子的分析计算,我们在这本书的基础上,采用了更简单的例子(也因此失去了很多有意义的细节)编撰了《系统科学概论》。有需要可以和本书一起阅读。在具体的例子之中,我们可以很容易地理解系统性思考的角度、整体性思考的角度是什么,当离开具体的例子的时候,我们就很难做一般的讨论。因此,我们在这里再一次强调,系统科学的基本思想的理解和学习不能离开具体的研究工作的例子。这样一门学科的探索者们必须与街头卖药的区别开来。完全兜售思想和思辨就会沦为伪科学,或者至少被严肃的科学家鄙视的学科。

另外,在这里我们希望对系统理论与系统工程做一个区分。系统理论主要是基础性的科学研究,同时当然也做一些应用性研究,系统工程则是利用来自于数学的、物理学的、系统理论的概念与方法解决实际工程与管理领域的问题,是应用性的研究甚至直接就是应用。控制论、信息论、运筹学等属于系统工程的基础性学科,但是却属于系统理论的应用性学科。当然,这样的应用性学科本身也存在这基础研究的问题,这部分问题就会进入到系统理论的范畴。因此,在这里,我们不把系统工程相关学科作为重点,但是我们会讨论和学习这些学科的基本问题的部分。

作为教材,尤其是旨在促进一个学科的发展的教材,应该尽可能的来回答这个领域独立成为一个学科的理由是什么,研究对象的共同特点是什么,最基本的概念、方法与核心公式是什么。这也是本书的任务。但是,我们没有把握来回答好这个问题。在这里我们仅仅来抛一块砖。

系统科学的基本研究目标有两个层面。第一、如何处理在各种各样的系统之中的多个个体之间的相互作用,讨论其对系统的性质和功能的影响;第二、如何把对一种系统的研究方法抽象出来应用于更多的系统。两者都是方法论层次的目标,前者比后者稍微具体一些。如果我们把相互作用局限在四种基本相互作用(引力、电磁、强、弱)的框架内,那么我们讨论的就是统计物理学与场论的基本对象和目标。系统科学可以包含更广义的相互作用,例如人群之间的意见形成与传播,其相互作用形式就不能直接还原成为四种基本相互作用。沿着这个思路。在每一个层次,有这个层次自己的相互作用,这种形式的相互作用如何从更底层更基本的相互作用中涌现出来,也是系统科学研究的一个研究对象。后者其实是所有的自然科学(以及部分社会科学)的研究目标,想办法处理一个系统,接着抽象一般概念与方法来处理更多的系统。那么为什么要单独提出来作为系统科学的一个有特点的研究目标呢?在这里,我们强调,传统的学科是按照研究对象的某种共性来区分的,而系统科学的研究对象可以没有任何共性,可以来自于任何一个传统学科,只要而且希望,这样的跨学科的研究对象的研究方法上存在这共性。例如相变与临界现象原来是来自于物理学,尤其是统计物理学,的研究对象,后来人们发现在地理学、生态学、社会学甚至神经科学中都大量存在这多个体组成的系统整体状态出现定性变化,也就是相变这样的现象,因此从物理学发展起来的临界现象的研究方法(例如序参量、相变点附近的长程关联、重整化群、Metropolis 模拟方法)自然也就在以上这些学科的相应研究中的到了应用。通过本书的例子,多大程度上我们能够回答这个问题,多大程度上我们能够按照这个思路来回答这个问题,只能够留待本书使用者的检验了。

由于前面提到的本学科基本概念与方法之间的联系的紧密和一致性程度还不高,我们又希望通过本书能够给出一个比较清晰的系统科学的图像,在本书中我们尝试使用了一个比较新的学习技术:概念地图。概念地图就是把概念与概念之间的连接画成一张图,用来整理制作者的思路,指引学习者对概念的理解。

本书的逻辑体系、内容选取都仅仅是一个尝试,而且是与通常的教材不那么一样的一个尝试。我们希望本书具体内容发挥一定作用的同时,也希望它尽早地被逻辑体系和具体内容都更好的书取代。这样才能表明本学科的成熟度的到了提高,学科取得了发展。另一方面,我们也希望本书的编撰原则和特点,它们是内容来自于研究论文、大量的来自于研究课题的习题、学习方法方面的一定的考虑、技术和概念并重压缩对思想的讨论,得到延续。

目录
第一部分 系统科学导论:Overview of Systems Science
第一章 引 言: 系 统 科 学 的 系 统 科 学 的 思 想、 目 标 和 定 位:System
Thinking, Goals and Scientific Role of Systems Science
1.1 热寂说、传统物理系统的相变与开放系统结构的产生 . . . . . 13
1.2 整体运动的激发模式 . . . . . . . . . . . . . . . . . . . . . . . 14
1.3 相变与临界性的例子 . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.1 传统相互作用与相变、临界性:Ising 模型 . . . . . . . 14
1.3.2 涌现、自组织临界:Bak-Tang-Wiesenfeld 沙堆 . . . . 14
1.4 相互作用,周期分叉与混沌的例子 . . . . . . . . . . . . . . . 14
1.5 相互作用与网络科学的例子:汉字研究、科学领域之间的关系 14
1.6 博弈与相互作用的例子 . . . . . . . . . . . . . . . . . . . . . . 14
1.7 演化与定态的例子 . . . . . . . . . . . . . . . . . . . . . . . . 14
1.8 约束下定态与动态过程的优化的例子 . . . . . . . . . . . . . . 15
1.8.1 约束下定态优化的例子:项目管理 . . . . . . . . . . . 15
1.8.2 动态过程优化的例子:银行存款 . . . . . . . . . . . . . 15
第二章 为什么要学习数学物理基础:Why math and physics
2.1 概念、数学模型的来源:新的例子或者前面的例子再阐述
2.2 处理方法的来源:例子 . . . . . . . . . . . . . . . . . . . . . . 17
2.3 研究对象的来源:例子 . . . . . . . . . . . . . . . . . . . . . . 17
第二部分 系统科学的数学物理基础:Math and Physics Foundation of Systems Science 19
第三章 线性代数 23
3.1 集合与映射的语言 . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2 从群到线性空间 . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.1 群、半群 . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.2 线性空间的矢量 . . . . . . . . . . . . . . . . . . . . . . 23
3.2.3 矢量内积 . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.4 线性算符 . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3 线性变换与表象理论 . . . . . . . . . . . . . . . . . . . . . . . 24
3.4 数值线性代数 . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
第四章 概率论
4.1 古典概型:离散概率与几何概率 . . . . . . . . . . . . . . . . . 25
4.2 现代概率三元体 . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3 大数定律与中心极限定理
4.4 概率论的 Dirac 符号形式 . . . . . . . . . . . . . . . . . . . . 25
4.5 随机过程初步 . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.6 Monte Carlo 方法 . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.7 随机变量的测量 . . . . . . . . . . . . . . . . . . . . . . . . . . 25
第五章 力学:Mechanics
5.1 力学思想:Mechanial Thinking . . . . . . . . . . . . . . . . . 27
5.2 牛顿力学的基本概念:Newtonian Mechanics . . . . . . . . . . 27
5.3 分析力学的技术:Lagrangian and Hamiltonian Mechanics techniques . . . 27
5.4 本章小结
第六章 统计力学:Statistical Mechanics
6.1 从力学到统计力学:from Mechanics to Statistical Mechanics
6.2 统计力学的基本理论:Ensemble Theory . . . . . . . . . . . . 32
6.3 在物理学以及其他学科中的熵:Entropy in physics and others 32
6.4 临界现象与 Metropolis 方法: Metropolis method and critical phenomena . . . 32
6.5 本章小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6.6 本章技术性附录 . . . . . . . . . . . . . . . . . . . . . . . . . . 32
第七章 量子力学:Quantum Mechanics
7.1 量子系统的实验:Behaviours of Quantum Systems . . . . . . 33
7.2 量子的基本理论:Mathematical Theory of Quantum Systems 33
第三部分 系统科学的基本理论 35
第八章 线性与非线性动力学简论 37
8.1 线性系统的演化 . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8.2 非线性系统的线性化:定态与线性稳定性
8.3 混沌与分支 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
8.4 更多的具体系统上的研究实例 . . . . . . . . . . . . . . . . . . 37
第九章 相变、临界性与自组织临界性 . . . . . . . . . . . 37
9.1 相变的研究方法 . . . . . . . . . . . . . . . . . . . . . . . . . . 39
9.2 临界行为
9.3 自组织临界性 . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
9.4 更多的具体系统上的研究实例 . . . . . . . . . . . . . . . . . . 39
第十章 复杂网络概论
10.1 复杂网络的描述方法 . . . . . . . . . . . . . . . . . . . . . . . 41
10.2 基本静态量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
10.3 网络演化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
10.4 网络上的动力学 . . . . . . . . . . . . . . . . . . . . . . . . . . 41
10.5 网络科学应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
第十一章 博弈论与演化博弈概论
11.1 博弈、博弈论与 Nash 均衡 . . . . . . . . . . . . . . . . . . . 43
11.2 理论与实际的对比:Nash 均衡的描述能力 . . . . . . . . . . . 43
11.3 演化博弈:均衡实现的问题 . . . . . . . . . . . . . . . . . . . 43
11.4 新的均衡的问题 . . . . . . . . . . . . . . . . . . . . . . . . . . 43
11.5 更多的具体系统上的研究实例 . . . . . . . . . . . . . . . . . . 43
第十二章 优化理论
12.1 运筹学概论 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
12.1.1 基本问题及其数学描述 . . . . . . . . . . . . . . . . . . 45
12.1.2 问题的解决方法举例 . . . . . . . . . . . . . . . . . . . 45
12.1.3 更多的具体系统上的研究实例 . . . . . . . . . . . . . . 45
12.2 控制论概论 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
12.2.1 基本问题及其数学描述 . . . . . . . . . . . . . . . . . . 45
12.2.2 问题的解决方法举例 . . . . . . . . . . . . . . . . . . . 45
12.2.3 更多的具体系统上的研究实例 . . . . . . . . . . . . . . 45
第四部分 附录:计算技术
第十三章 语言与工具的学习资源: Resource for programming language and packages of scientific computation
13.1 C 语言、Python 与编程风格 . . . . . . . . . . . . . . . . . . 49
13.2 BLAS、Lapack、Petsc、Slepc 与并行计算初步 . . . . . . . . 49
13.3 xmds2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
13.4 sage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
13.5 NetLogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
13.6 Swarm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
13.7 概念地图与 Cmaptools 简介 . . . . . . . . . . . . . . . . . . . 49

王宁的报告:培养学生

括号内是吴金闪的评论。

导师要有自身的方向。
传授学科的基本任务,使命感。(这个非常重要,什么是这个学科的基本对象基本科学问题)
学科和学术的审美观,欣赏工作,推荐阅读材料。(品味决定一个科学家的内在水平)
基本功训练。
学生要做课题,也要有学识上的收获和成长,与导师的自身方向结合。
师生关系的基础是共同的兴趣、共同的方向。(这样的话,学生真的很难找)
因材施教。(概念地图就是探索认知结构的工具)

处理困难问题的时候需要聪明才智,需要有毅力。(呵呵,好像有其他深意来着)

顺便小结方维海的报告:学生和老师在做人上是平等的。做事可以批评,可以相互批评,工作以外的事情是平等的。(我接受我的孩子叫我吴金闪、金闪、爸爸,同时我也接受我的学生叫我金闪、吴金闪、吴老师、老板。我不需要我的学生形式上尊重我。我认为内心尊重我是必然的,不用体现出来。我批评学生的时候都是针对具体问题。我对具体问题的要求是比较高,但是我认为学生通过努力应该达到的)

写程序的一些经验

首先,最初的习惯和最初的老师很重要。一定要自己写过几万行以上程序的老师才能有好的习惯。如果没有好的老师,那么浏览一下编程风格之类的书籍或者网页(google)是很有益处的。

其次,从带学生开始,才知道原来连如何写程序也是要教的。

下面,我把几条经验写在这里,供以后的学生参考。

第零、Linux可以运行脚本,主程序实现最核心的功能即可,其他调参数、记录结果等等,都可以通过脚本实现。更方便,程序也更容易写。
第一、编一个程序,运行的时候实现所有的参数(接受参数、安排流程是主程序的主要功能),而不是给每一个参数编一个程序;
第二、把每一项子功能定义好,写成子程序。考虑的出发点是:凡是重复很多次的代码一定要用子程序(除非特别必要的时候为了可读性多写几次);凡是 可以使得流程更加容易读和理解的,用子程序,把细节藏起来;凡是其它的程序中可能用得着的模块,写成子程序。
第三、写文件的输出在Linux下可以用运行时候的重定向实现,直接打印即可,不用写文件。
第四、一定要有很详细的注释,假定两个月以后你需要来读程序,你得看得懂。假定有你的师弟师妹需要参考你的程序,他们得看得懂。

关于风格:大括号写在子程序(或者for循环,if语句)名称后面,还是下一行;对齐方式;注释详细到什么程度;通常函数几个返回值;子程序和变量如何命名(不能太短,也不能特别特别长),这些问题没有一个标准,但是要形成一个惯例,而且这个惯例最好与主流的惯例差不多。

其它的,我请编外补充一下。