DoNews.com
当前位置: IT写作社区赵玉勇信仰
C语言之父:独立完成工作时的建议
赵玉勇 | 信仰 | 出处:转载| 2004年03月06日 16:31 | 阅读
        

Unsolicited advice on independent work in CS

独立完成工作时的几点建议

Brian Kernighan

Brian Kerniphan是C语言之父,在网上看到了他的这篇文章,翻译了一下,请会英文的New友批评指正一下.

Thu Sep 19 15:51:06 EDT 2002

These are some observations on independent work in CS, based on my experience over the past few years. Others will certainly have a different take on some of this, so your mileage may differ. The bottom line, however, is the same for everyone: independent work can be a great experience if you put some time and energy into it.

基于我在计算机科学验上的多年实践,在独立完成某项工作时有了一些体会。由于研究方向的不同,或许你的体会和我的有所不同,但下面的这一点一定是相同的:如果你将很多时间和精力投入到某项工作中,你会觉得独立工作是一种非常重要的经历。

The first problem is finding a topic, so you should be thinking about this the semester before you plan to do IW. (Too late already? Sorry about that -- best get started now.)

最重要的一件事是发现一个研究的主题,和主题相联系的是一个工作周期,你可能马上意识到这个周期中,在你订出计划之前还没有灵感火花的出现。(是不是已经太迟了?不要对这点感到遗憾——最重要的是现在马上开始干。)

If you have a great idea -- something that seems sensible and turns you on -- start talking to faculty members who might be willing to be your advisor. Begin with people who are in the right technical area, since you're most likely to strike a chord there, but talk to others as well -- they may have hidden interests, or they might be interested in branching out, or there might be better personal chemistry, or your first choice might simply be too busy.

如果你有一个伟大的想法——一些自我感觉较好的并且是你愿意去做的——那就去告诉你身边的在这方面最优秀的人士,并且是他能成为你的指导者的这样的人士。在和专业人士开始探讨这个问题之前,你最好能够掌握问题中的某一部分,并且和这人交谈时要了解:他们是不是将自己的兴趣没有说出来,或者他们感兴趣的仅是其中的一部分,或者你们有很好的私人关系,或者你选择的第一个问题仅仅是比较麻烦。

Even if you've got an idea that really appeals to you, it might be too big or too small for a semester or a year. Advisors and others can help you adjust the problem to the right size. Many initial ideas are way too big -- if you intend to take on something that thousands have worked on for decades, you probably won't knock it off in a semester as a junior. Lots of problems in AI -- natural language processing, translation, etc. -- are like this, and trying to resolve P=NP might be over-reaching as well. So part of the job is to find a manageable piece of the problem, something about right for a semester or a year.

即使你得到了一个真正是自己挖出的问题,但让它在一个工作周期或一年的时间内完成可能时间太长或太短。那些指导者能够帮助你将这个问题调整到一个适当的大小。很多最初的想法总是太大——如果你面对的一个问题是成千上万人工作数十年才能完成的,作为一个初学者在一个工作周期内是不可能完成的。在人工智能的许多问题中——自然语言的处理和翻译等——和上述这点类似,只有尽量将一个任务分解成多个任务才可能解决这个问题。因此处理这个问题的一项工作便成了找到一个容易处理的部分问题,并且是适合一个工作周期或一年就能完成的。

Sometimes the proposed problem is too small, more like a week of effort than a semester. Here your advisor may be able to help you beef up the idea into something that's an appropriate amount of work. Maybe there's some generalization of your idea, or several related cases that add up.

某些时候我们遇到的问题可能太小,象一个一周就能解决的问题和一个学期就能解决的问题一样。现在导师就可以帮你增加一部分内容以达到一个适当的工作量。或许这其中有一些是关于你的问题的一般化的推广,也可以加上一些相关的问题。

On the other hand, if you have no clue at all about what to work on, it's time to get started. Think about some area where computers might be used better, or where a better program or tool or language or experimental result might be useful. Think about places where some aspect of computing irritates or frustrates you -- maybe you could do it better. Look at what other students have done in the past few years; again, "I could do that better" is often a good place to start. Think about an area or a language or a tool or a system that you want to learn more about and how to parlay that learning experience into something interesting.

另一方面,如果你找不到任何可以继续往下研究的线索,那说明开始的时间到了。想一下那些可能应用计算机比较好的领域,或者好的程序、工具、语言或实验结果可能比较有用的地方。想一下有哪些方面惹出了你的脾气或阻止了你前进的步子,或许你可以做的更好。看一下最近几年其他的学生已做的工作,并且,“我可以干的更好”是一个好的开始的起点。好好审视一下你想进一步研究的一个应用领域、一门语言、一种工具或一个系统,并且思考一下如何使这种研究经历进化成一种有趣的事情。

After you've done some homework, you can visit likely advisors more profitably. Most faculty have at least a few ideas that they think might make good projects, or they have ongoing research projects that could use some help. Sometimes talking with a student who has been thinking about potential topics  will suggest something to them. But don't just walk into faculty offices hoping for someone to hand you the perfect problem. This is supposed to be your independent work; trying to figure out what to do is a good place to start being independent.

在你已经完成自己的工作以后,再次对导师的回访是有益的。许多能力只是几条想法,那些可以很好完成任务的想法,或许在正在进行的项目中可以产生一些帮助。有时和正在思考潜在的问题的学生的谈话,对他们的工作会有某些启示。但是不要想象着仅仅坐在办公室,就有人将问题的完美解决方案交给你。这是你的独立的工作;想尽一切办法解决怎样做的问题,是开始独立工作的一个好机会。

How original does independent work have to be? There's no single answer, and different advisors will have somewhat different notions, so this is a personal opinion. There should be something about what you do that's new, but it's not that the whole thing has to be brand new. Maybe you do a different version of something that's already been done, or you find a different approach, or you experiment with an new combination of things that already exist, or you do a special case that hasn't been looked at carefully, or you revisit something done long ago but attack with modern systems and tools.

哪些是初学者在做独立工作时必须面对的呢?没有唯一的答案,不同的指导者将有稍微不同的观点,因此,这是个私人看法。在你做的工作里面一定有一些新的,但是面对全新的问题并不是所有的不得不面对的事情。也许你做的是已经被别人做出来的事情的不同版本,或者你发现了一种不同的方法,或许你关于新化合物的实验早就已经存在了,或者你做的是一种没有仔细审视全程的特殊情况,或许你第二次做了一些已很久前就被人做了的工作,只不过你采用了先进的系统的工具。

Once you've got at least a reasonable notion of what to work on, it's time to think about breaking it into pieces. The ideal is to have a sequence of intended results, such that you could stop at any time and declare success. You don't want to have a project where nothing works until it all works, where everything has to come together at once to make it work at all. You should also avoid projects that require exotic equipment or that depend on other people to do their bit (like filling out surveys, testing your code, etc.).

既然你已经得到一件事物的最小化可以持续工作的版本,下面是考虑怎样把它们分成几部分的时候了。其中的一种办法是可以在每个阶段设置一个可预期的结果,这样在每个阶段你就可以看到自己什么时候工作成功完成了。你一定不希望做这样的工作,在整个工作未完成前其他的工作什么也没有,那里要求所有的事情最后都被立即整合到一起并且能够工作。你还应避免这样的工作,它们需要奇特的设备或者需要其他人参与才能完成。(象做民意调查或测试代码等)

Now you can sketch out a more detailed plan of what you'll do each couple of weeks throughout the semester. This isn't cast in concrete; it's guaranteed to change as you run into problems, find interesting new things to pursue, and so on.

现在你可以开始草拟一个更详细的计划了,计划里将详细列出你在一个工作周期中连续的几个周中所要干的工作。这里没有建筑工程中实实在在的砖块石头和房子;它必须保证在出现问题时能得到改正,有有趣的新东西可干,等等。

As you plan, don't forget the various deliverables. You have to give a talk early on; having thought hard about what you intend to do makes your talk more believable. You have to give another talk near the end; thinking about what the dozen slides of that talk would look like will help you organize, and give you specific things to work towards. Finally, you have to write a paper describing what you did. Again, figuring out the general shape will provide a target. Be sure to include some time for these in your schedule, and for the inevitable setbacks, other courses, sickness, and having a life.

当你做计划时,不要忘记各种可能出现的问题。你必须尽早做好整体规划;深入思考你下一步要做的以使这种规划更可信。你还必须在工程结束时做好另一规划;深入思考规划过程中的众多步骤之间的关系会帮助你进行组织,并能提供给你更详细的工作方向。最后,你还要写一些描述你怎样做的资料。此外,规划出整体的工程图形将会使工作有一个目标。在时间表中一定要加入上述特殊情况出现可能耗费的一些时间,并且由于某些不可避免的问题的出现,例如疾病、生小孩等。

During the semester you should check in with your advisor pretty frequently, to keep him or her abreast of progress (or aware that you haven't made any). Preparing a weekly or bi-weekly note that says what you did, where you are, and what you intend for the next period is a useful prod; it also helps to answer the advisor's question of whether you're doing anything at all. You should do drafts of talks and the final paper ahead of time; you can get feedback from your advisor and others, and gain some confidence for when the real thing is due.

在整个工作周期中你应该适时地和自己的导师反馈信息,以使他或她和工作的过程同步(或者明白你什么还没有做)。准备每周一次或每周两次记录下面的东西:你正在做什么,你已做到哪里,下一阶段你准备解决的重点问题;这样也可帮助回答导师的问题:你是否完成了某件事情。你应该提前做出整个规划的草稿和最终的说明;这样,你能够得到你的导师和其他人的反馈,也能得到为到某一个工作时期时必备的信心。

As it is for one-semester projects, it's even more so for a senior thesis, because you're expected to do something more substantial and you're working on it for twice as long. It's easy to procrastinate when the deadline seems infinitely far away. Don't blow the fall semester.

上面是为一个工作周期而做的计划,某些高级论文也是这样的,因为你是想做某些实实在在的事情并且你要持续工作一段较长的时间。当最终期限总是遥遥无期时是很容易延期的。不这,最好还是不要拖到下一个周期内。


发表评论| 收藏此页到365Key
相关讨论

    没有评论        
关于我们 [English] | 合作联系 | 版权信息 | 聚会相册 | 友情连接 | 使用指南
Copyright (C) 2000-2005 DoNews.COM ( IT社区&媒体平台 )
All Rights reserved.