近日,越来越多的同学调程序中的一个行为引起了我的注意:遇到了问题不看提示,直接蒙头看代码。提示信息不一定准确,但是最重要的参考之一,有的能直接告诉我们问题所在,有的至少能给我们启发。不看的原因据说是看不懂英文提示。
与同学们交流后给我的结论是,看不懂只是因为没有看。英语学了N年,到真正用英语的时候了,先给自己扣个大帽子——英语不好,然后就舒舒服服地对程序中出现的问题胡猜乱蒙去了。真的舒服吗?学编程序要在用中学,英语的学习也要用中学。现在每天都有去用英语的必要和需要,却不去主动挑战一下那个所谓的心理障碍,沉下心来读一读。这个问题不解决,将如同在调试中不会单步执行一般,成为学习程序设计的一大障碍;这个问题不解决,将使你永远处在慌乱之中,严重影响学习编程的进度,也得不到该有的好感受。不去解决这个问题,就是沉浸在学英语就是做选择题的圈子里,而不是结合学习需要将英语用起来,在用中学。这是一副老态龙钟,死气沉沉的样子!
所以,将用好编程环境中给出的英语提示,作为我们近期要提高的一个重要方面。很多事情,亲自做了,不会有想像中的那样难。遇到不会的词,猜一下,或直接用在线词典查一下,就会有解释,看懂英文提示的过程,也是一个学习提高的过程,对程序设计中的术语将留有更多的映像,同时又知道了英语表达方法,一举两得的事情。
用英语上,要有更多信心。学英语,一直是为着考试学了,而到用的时候却逃了。如果此时要用了却不迎上去,这辈子在英语上的投入真就是完全浪费了。凭着十来年学习英语的经历,无论标准化考试得多少分,任何一个同学完全有能力去读懂那些错误提示,只要去用,就能会。进一步,用一段时间,沉下心来,读一读经典的英文原著,进步会更快。越是经典的书,其中的表达越简单,越是易读。我们所缺的,只是起步去做。再说一个让大家能鼓劲的事情:比我年长的大学生,很多在高中都没有学过英语,上大学后是从abc开始学起的,但不少人在日常工作中,一直在使用着英语。
为了实现在编程学习中用英语的目标,从本周起,我们在调试程序过程中,建一个文本文件,随时记录下遇到的错误提示,记录下改错的过程,甚至是搜索得到的启示。将这种随手记录的方式进行下去,逐步积累,这将是财富啊。从失败中学习,永远都是最有效率的。
与此同时,在提交程序的博文中,在总结部分将记录的内容复制上去,列出你遇到过的错误提示及你的解决办法,让博客真正地记录了我们成长的进程。
例如,调试程序中,你写过下面的程序:
#include <iostream> using namespace std; class Student { public: void set_data(int n, char *p,char s); void display( ); private: int num; char name[20]; char sex; }; void Student::set_data(int n, char *p,char s) { num=n; strcpy(name,p); sex=s; } void Student::display( ) { cout<<"num: "<<num<<endl; cout<<"name: " <<name<<endl; cout<<"sex: " <<sex<<endl; } int main() { Student stud1; stud1.set_data(1,"He",'f'); stud1.sex="m"; stud1.display(); return 0; }
你可以只提交最后调试通过的程序,但在博文的总结部分,需要写出:
在main()函数中使用了语句:stud1.sex="m"; 在这一句上提示了两个错误,错误及解决办法分别是: error C2248: 'sex' : cannot access private member declared in class 'Student'——不能存取声明在Students类中的私有成员sex;(解决办法:在程序中专门设置一个公用的函数setSex(char)实现性别的更改。) error C2440: '=' : cannot convert from 'char [2]' to 'char'——sex数据成员是字符型,但赋值时给出的是字符串"m"。(解决办法:把"m"改为'm'。)
从认真看编译错误的提示开始,走上我们用英语的征程。