如何提问
(与本文有关的意见或建议,请Email至: fzd19zx@gmail.com 我将持续不断地改进这篇文章。)
学习程序设计,特别是初学者,总会遇到各种各样的问题。遇到问题后,学生总想第一时间找人问问。这种求知欲,当然是好的。但是,提问的方法却未必是人人都知道的。
选择适当的提问方式,不但有助于他人高效地回答你的问题,而且也有助于你自身素质的提升。
特别撰写此文,希望对新加入信息学奥赛的同学,有所帮助:(虽然是针对信息学奥赛所写的文章,但我想对于其他领域的问答,也是同样适用的。)
1、提问的态度:大方、谦虚、实事求是
提问,并不是一件丢人的事情,不必遮遮掩掩。
只有两种人从不提问,一种人他什么也不用做,于是也没什么好问的;另一种人他连怎么问问题都不知道,于是也知道闭口不言。
提问的时候,应当谦虚、实事求是,不要轻易地把产生问题的原因怪罪给他人或者机器。“书上写错了”,“电脑自己出了错”……,这种话可以讲,但是一定要慎之又慎,尤其是电脑的编译器,经过了千百万人的反复检测,几乎不存在“出错”的可能。在没有搞清楚问题的原因之前,就武断地将出错的原因推给他人甚至可怜的不会说话的电脑,只能显示提问者的无知和幼稚。
2、提问的时机:经过自己反复的检查之后,再提问题
不要一遇到问题就立刻想着找人来帮助你解答。别人做给你看的解题方法,即便你从头到尾都看懂了,那也是别人的技艺,不是你的,你只是个围观者。只有自己独立思考,得出的就解题方案,才是你自己的财富,任何人都夺不走的。
所以,在提问之前,要反复检查自己的源代码,复习课本内容,检查、检查、不断地检查……拼写有没有错?中英文标点有没有错?引号有没有错?文件命名有没有错?大小写有没有错?……
只有确认自己已经穷尽了所有的检查机制,仍然没有发现问题的根源后,才想他人提问求助。
3、提问的对象:网络、同学、老师
Google是一个很好的提问对象。(百度?你……不是吧:) ) 向GOOGLE提问,几乎会得到所有问题的解答。而且,GOOGLE从不介意你三更半夜或是一大清早就向他反反复复地问问题。
向同学提问,嗯,也是个好办法。同龄人之间的思想激荡,往往会产生智慧的火花。就连老师,有时也会从学生的解答方案中受益良多。
老师,当然是一个良好的提问对象,唯一的问题是,老师往往没有办法非常快速地响应你的问题,毕竟,你知道的,老师也不是机器人。但是,还是欢迎你将自己的问题提交给老师。因为老师会喜欢在课堂上讲解学生遇到的典型的问题。
上述几种途径,你可以同时进行尝试:Google的同时,给同学QQ留言一下,也给老师发送一份电子邮件。蛮好的想法。
4、提问的形式:客观、详尽地描述你的问题
这是最关键的一步。
常常有同学发给我一份EMAIL,内容只有一句话,“老师,我的代码错了,请你帮我看一看。” 看一看?!看什么看! 坦率点讲,这种邮件,我看都不看,直接就删除了。
下面我告诉你,要怎么办:
首先,详尽地描述你的运行环境:
“老师,我用的是Windows XP 32位版本(记住,多少位版本很重要)。我的编译器是:Dev C++ 4.9.9(记住,编译器版本更重要)”
然后,将题目完整地附在邮件中:
“题目名称:《…》要求:……”
接着,描述一下你的输入/输出数据:(这是最关键的。有时候,为了形象地说明问题,还可以考虑附上你的截图)
“我输入的数据是:abcabcabc…
我得到的输出数据是:xyzxyzxyz…
但是,正确的输出应该是:123123123… ”
最后,在邮件的末尾,用附件形式附上你的源代码。源代码必须缩进优美,注释正确。关于缩进和注释,请看:《如何缩进你的代码》和《注释的作用,以及如何写注释》。
我始终认为,提问不但是一种技巧,更是一种艺术。
好的提问,不但会让提问者和解答者之间产生思想的激荡,而且会让解答者对提问者肃然起敬。
相反,
坏的提问,……,拉倒吧……说多了都是泪。