如何面对问题

WARNING

请仔细阅读本节,在你遇到问题时,这些内容可能会很有用。

本文改编自 MaxXing 编写的《编译原理》实践文档相关章节。

面对问题/完成大作业的态度

在完成大作业,乃至你日常编码的过程中,你可能会遇到很多问题,比如:

  • 不清楚某个工具的用法;
  • 不清楚某个功能实现的思路;
  • 编译/链接代码时出现警告或报错;
  • 运行程序时段错误;
  • 程序输出的结果和你的预期相去甚远;
  • 其他各种各样的问题……

与其说,遇到问题是一件很正常的事,不如说,没遇到问题才是一件不正常的事情。

我们希望你在完成课程实践时,不要:

  • 抱着应付的态度,遇到问题时随便改改自己的代码,能过测试用例就万岁了;
  • 发现随便改改也没用,于是直接找大佬/助教/老师求助,不加任何思考;
  • 求助的时候问一些相当没价值的问题,比如: “我的程序出错了,怎么办”;
    • 想象一下你的电脑小白朋友,三天两头来问你 “我电脑坏了,怎么办?”,同时完全不说到底发生甚摸事了,你还能否保持低血压的健康生活;
  • 在某些国内网站上一通乱搜,找到了另一些国内网站上的低质量内容,大抄特抄;
    • 然后丝毫没有意识到,自己在几天后遇到的某个问题就是因为抄了垃圾代码而导致的
  • 拖到最后才开始做课程实践,发现自己做不完了,疯狂求助大佬/助教/老师;

你应该:

  • 不放过任何一个问题,包括编译代码时的警告
  • 遇到问题时对背后的原因多加思考,找出它的深层原因;
  • 独立解决问题,同时不要怕尝试,不要怕 debug,你会在这个过程中学到相当多的东西;
  • 遇到自己解决不了的问题: STFWRTFMRTFSC。搜索引擎和文档/手册里通常能找到绝大部分问题的答案,如果没有,源码里一定会有;
  • 学会摆脱对百度的依赖,在 Google/Bing 上用英文搜索问题。中文互联网什么样相信各位心中自有 B-tree。

TIP

如果你在解决问题的过程中实在坚持不下去了,听听尼尔叔叔的鼓励open in new window

如何提问

助教,我的解释器崩溃了,怎么办?

助教听了这个问题,也崩溃了,怎么办?

请不要再这样提问了,这种问题没有任何价值。以及,有些问题在网络上稍微搜索一下就可以解决,或者哪怕同学们稍微亲手尝试一下也可以解决,比如: “C++ 的成员类型可以是引用吗?” 与其花时间问别人,你不如自己直接写份源代码,然后让编译器告诉你答案。

我们希望大家:

我的解释器在输入为 XXX 的时候出现了 YYY 问题 (附完整的报错信息或截图)。
我尝试 AAA,发现 BBB,我认为这代表 CCC。
我还尝试 DDD,发现 EEE,我认为这代表 FFF。
综上所述,我觉得问题可能出在 GGG,但之后我就没思路了,请问我的分析是否正确?问题的具体原因是什么呢?

问答墙

TIP

正在施工中

助教不会回答/会回答的提问

助教不会回答:

  • 和课程无关的提问。
  • 任何不加思考就提出的提问。
  • 能在文档/问答墙里找到的提问。
  • 可以通过你自己尝试/调试解决的提问。

助教会回答:

  • 关于评测平台/实验框架存在的问题的提问。
  • 关于反馈实验设计不合理的提问。
  • 详细描述出错原因,附带解决问题的尝试,同时带有自己思考的提问。

为什么要设置这一节

为什么设置这一节,并把它放在开头?

  1. 都是血的教训。
  2. 以前的课不光折磨同学们,也折磨助教啊😭。
Last Updated:
Contributors: Guyutongxue