英语答疑网(http://ask.yygrammar.com/ask/q.asp?id=1305)有老师认为:
① I worked in the factory for five years, but now I am a teacher. 中的worked不能改为have worked,即只能用一般过去时,不能用现在完成时。
笔者认为:在这种语境中,既可以用一般过去时,也可以用现在完成时,即延续性动词用于一般过去时和现在完成时(必须处于特定的语境)的肯定句中,都可以表示动作或状态的完成,但动作或状态完成截止的时刻略有不同。用一般过去时,表示“我在这家工厂工作5年”的截止时间在说话时刻之前的某一时刻,即“我在这家工厂工作5年”和“我现在是教师”之间有一段时间的距离,其间做什么不知道,总之,现在“我不在这家工厂工作了”,可以用下图表示:
②―You speak very good French!
―Thanks. I ______ French in
A. studied B. study C. was studying D. had studied (答案为A)
通过分析可知: “我在四川大学学习4年法语” 的截止时间也是在说话时刻之前的某一时刻,即“我在四川大学学习4年法语”和“我现在法语说得好”之间有一段时间的距离,其间不再学习法语,总之,现在“我不再学习法语了”,可以用下图表示:
③ I ________ in London for many years,but I’ve never regretted my final decision to move back to China.
④ I have worked in the factory for five years, but now I am a teacher.
用现在完成时,表示“我在这家工厂工作5年”的截止时间就在说话时刻,即“我在这家工厂工作5年”和“我现在是教师”之间没有时间距离,可以用下图表示:
⑤―You speak very good French!
―Thanks. I have studied French in
用现在完成时,表示“我在四川大学学习4年法语”, 所以“我现在法语说得好”,我还有可能继续学习下去,可以用下图表示:
A. lived B. was living
C. have lived D. had lived (所给答案为A)
笔者认为,该试题选A,即用一般过去时,固然正确,但选C,即用现在完成时,也是正确的。用现在完成时,表示“我在伦敦居住多年”的截止时间就在说话时刻,即“我在伦敦居住多年”和“我从不后悔决定搬到中国”之间没有时间距离,可以用下图表示:
最后,请看延续性动词用于现在完成时的肯定句中,表示动作或状态的完成的例证:
1. 英国专家J.米林顿-沃德(Millington-Ward, J.)在The Use of Tenses in English《英语动词时态用法新释》(魏焕华译,商务印书馆1987年08月第1版)P61认为:
He lives in
这句话里虽然有一个时间范围 for about thirty years ――它本来表示他仍在中国居住的――可是这句话的真正含义――即他现在并非住在中国――已经在句子的第一部分中清楚地表示出来了。
2. 秦裕祥著《英语语法专题研究》(湖南师范大学出版社 1999年5月第1版)P55:
Martin now works as an engineer, but he has been a teacher for year.(笔者注:此句与句①非常相似,但所用时态不同,依据此句①完全可以使用现在完成时。)
3. 薄冰编著《英语时态》(开明出版社 2000年1月第1版)P126:
These shoes are worn out. They’ve lasted a long time. (a long time之前省去了介词 for,have lasted在这里当然不再持续下去)
I’ve lived here all my life but now I’m going away. (have lived 在这里也不再继续下去)
4. 郑树棠编著《英语动词与时态》(广西人民出版社 1986年8月第1版)P105:
You’ve come at last. I have waited for you for two hours. (虽然 have waited 有for two hours作状语,但上句已说 You’ve come,所以have waited的动作不再延续)
He lives in
These socks are worn out. They’ve lasted a long time. (句中have lasted的动作已完成)