最近忙里偷闲,我就翻开以前写过的程序回味一番,找到了这个——RemGRE,一个用来帮助记忆GRE单词的程序。
平台要求
编写这个程序的时候,我非常热衷于C#(虽然我已经离开windows平台有一年了,用了大半年的linux,现在用mac),现在看来,开发简单的windows窗体程序,C#还是我的首选,因为简单。当然,如果需要写病毒,写外挂我还是会用C#,因为微软替dot net程序员考虑了很多操作系统native接口的集成,让C#变得更加强大。貌似在Java上就难以调用Windows底层接口,这样制作平台相关的应用就变得十分困难。闲扯了这么多,有点离题了,总而言之,这个程序是用C#编写的,要运行它你就需要.net framework 2.0+,这个在windows vista及其以上版本是自动集成的,在windows xp上你需要下载这个并安装。
如何使用?
其实,当时写这个程序只是考虑给自己用的,所以,UI的设计遵循效率优先的原则。简单的说,我希望这个程序能够真正帮我记忆GRE单词,而不是花架子。在设计UI的时候有一个小小的故事。
我看过很多其他背单词的软件,在这类软件中有一个基本的问题——判断用户是否认识这个单词。由于泱泱天朝地大物博,语言文化极其丰富,一个意思可以对应N个词语,而且N往往还很大。所以,很多同类软件都采用选择题的方式,只要判断用户的选择结果是否与“数据库”中的结果一样。这其实是一个很糟糕的做法。因为选项往往会对本来模糊的意识产生一个暗示作用,这对记忆单词是不利的。所以,我把判断对错的任务交给用户,让用户告诉我他是否想到了正确答案,然后我再记下那些他没有回忆起来的单词强化记忆。说了半天又有点跑题了,下面我说说如何使用这个程序。

这是初始界面,很简洁,是吗?大部分操作都需要通过ESC(左上角那个键)呼出命令控制台来完成的,这是出于我对键盘的喜爱。根据以往的经验,纯键盘的效率往往会高于鼠标的效率。背单词嘛,讲究的就是效率,不要在任何不相关的地方浪费时间,包括用鼠标点菜单的时间。而且,我相信大多数考GRE的同学电脑水平都应该很不错,命令行虽然提高了使用的门槛,但是不会挡住太多的同学。

通过test命令,你就可以开始单词测试之旅啦。看上图右边Console窗口中的test命令,它后面跟的参数是你需要测试的list号(忘记说了,这里面囊括的单词都是红宝书2008版的,list号也是根据该书来的)。其中1-10表示第一道第十个list,13表示第13个list,中间用分号隔开,这应该都看得懂吧。为了让测试更加有效,单词的顺序并非是红宝书上的顺序,这样可以防止因为顺序记住单词意思的bug。

当一个单词出现时:
- 回想单词的意思。
- 按J显示单词的意思。
- 如果你回想正确,按I;否则,按O。

如果你想了解这个单词更详细的信息,你可以用鼠标双击这个单词。当然,秉着所有操作都可以在命令行里执行的原则,你也可以通过ESC呼出控制台,然后输入命令:look denizen。look后面就是你需要查的单词。当然,需要使用这个功能你必须处于联网状态。

show是一个比较常用的命令,你可以通过它显示未记住的单词。它怎么知道我哪些单词没有记住?还记得之前的背单词过程吗,按J显示单词的意思,紧接着I表示记住了,O表示没有记住。为什么我设计使用这几个键?因为这几个键正好是右手比较舒适的“抚摸”键盘的姿势,左撇子对不住了……看到主窗口(RemGRE)上的20/1820了吗,这表示这么多list一共有1820个单词,你现在已经测试到第20个了,当你测试完以后,RemGRE会把你missing的单词打乱顺序接着考你!这个过程直到你所有的单词都能正确回想出。

save/load也是非常常用的命令。save是用来保存的,保存什么呢?看到save后面的c没有,c表示当前正在背的单词,后面紧跟文件名。这样,关掉程序以后你也可以再次加载你保存的这些单词。如果save后面跟的是m,那么当前遗忘列表里的单词会被保存到指定文件中。那么为什么要有这样的区分呢?我的实践告诉我,我背啊背的就把一轮背完了,这时新的一轮包含所有我上一轮没有记住的单词,但是遗忘列表已经清空,那我想要保存上次遗忘列表里的单词怎么办呢?就把当前背的单词保存下来不就行了,所以save后面会有一个参数指明当前列表or遗忘列表。这样以后,你可以今天背完之后把遗忘列表中的顽固单词保存下来,第二天背之前加载进来再过一遍,把这些顽石单词强化攻克!
后记
还有一些其他的命令我就不一一列出了,想要全面了解的话就下载下来看看里面的readme.html吧。我还有一些新的想法,我觉得单独做一个Console窗口有点冗余,为什么不把主窗口和Console窗口合并呢,采用Vi的命令输入样式去整合,这样使得界面更加简洁。如果你觉得这个程序很好用,就请告诉别人,让更多人享受到高效的单词记忆带来的快感;如果你觉得这个程序不好用,请告诉我,让我能不断的改版原有的程序。