如何掌握现在完成时和现在完成进行时?
2个回答

要想很好地区分have done和have been doing,我们需要从两个方面来讨论:一、完成时态和完成进行时态本身意义的差别;二、要结合动词的不同延续特点.首先我们来看两种时态的意义差别,两者根本区别是:完成进行时强调动作持续的过程(emphasis on duration),完成时强调动作的结果或成就(emphasis on achievement).具体来讲,现在完成进行时have been doing强调的是在一段时期内某项活动的持续性,强调的是动作本身.现在完成时have done则是强调动作产生的结果或取得的成就,而不是动作本身.二者的这种区别我们从下面的这些例句可以很好地领悟到:

(2) a. My hands are very dirty. I’ve been painting the house.

b. I have painted the house green. The house was white, but now it’s green.

思维分析:

句a中have been painting表示painting动作一直在持续,活动还没有结束,所以才有my hands are very dirty这样的现状.句a意思是“我的手很脏,我现在一直在给房间刷漆”.

句b中have painted表示painted动作已经结束,而且动作导致的结果是the house was white, but now it’s green房间现在是绿色的了.

(3) a. I’ve been cleaning the house but I still haven’t finished.

b. I’ve cleaned the house, but I still haven’t finished.(×)

思维分析:

为什么这里句a是正确的,而句b是错误的呢?理由很简单,句a用完成进行时have been cleaning就表明动作一直在持续,还没有结束,意思是“我一直在打扫房间,还没有扫完”.句b是错误的,因为它前面句子用了完成时态have cleaned就应该表示动作cleaned已经结束,即“我把房间已经打扫完了”,而后面接了一个I still haven’t finished,显然前后矛盾.

根据上面讨论的这两种时态本身意义的差别,我们就可以回答上面第一个问题,即我们为什么不能说上面句(1):

I have been drinking five cups of coffee this afternoon.(×)

前面说过,完成进行时强调动作持续的过程,而完成时则强调动作的结果或成就.既然强调动作的持续性,因此完成进行时是表示一种看起来是不间断的动作.如果涉及到做一件事的次数或一共做了多少件事情,这时都相当于把动作分割为一次一次的间断动作了,所以不能用现在完成进行时.从另一方面来说,既然讲到动作的次数或是一共做了几件事情,这两种情况都是在强调动作的结果或成就(emphasis on achievement),而不是动作本身过程(emphasis on duration),所以只能用现在完成时have done.因此,我们可以得出这样的结论:完成进行时态不能用来谈某个动作的具体次数或几件事情.这时,我们要用完成时态.这就解释了为什么在老外思维里没有:

I have been drinking five cups of coffee this afternoon.(×)

这样的句子,而一定会这么说:

(4) I have drunk five cups of coffee this afternoon.

因为这里说出了具体的五杯咖啡.

在上文中我们提到过,区分完成时态与完成进行时态还要结合动词的不同延续特点.换句话说,动词延续时间的长短也会影响这两种时态的使用.这里,我先来回答一位读者的提问,那位读者来信问道:“我可以说 I have been living here for ten years吗?”我们可以肯定地回答,当然可以这么说,比如:

(5) a. I have been living here for ten years.

b. I have lived h.

相同点

1. 现在完成时和现在完成进行时都可以表示从过去某一时刻开始一直延续到现在的动作.如:

I have worked in this school since 2001.

I have been working here since 2001.

2. 现在完成时和现在完成进行时都可以表示一段时间内延续的动作.如:

Mr. Smith has lived here for 20 years.

Mr. Smith has been living here for 20 years.

以上句子用现在完成时与现在完成进行时,含义上没有什么差别,两种时态可以互相换.但两种时态也存在有用法上的差别.

不同点

首先,从定义上来看,现在完成时(have done)表示的是已经完成的动作或者状态,常常与already“已经”或ever “曾经”连用,如:

We have already learnt Unit 2. (我们已经学习了第二单元.)

She is the most beautiful girl I have ever seen. (她是我见过的最漂亮的女孩.)

而现在完成进行时则表示的是从过去某一时刻开始一直延续到现在,并且还要进行下去的动作,具有未完成的特点,一般不与already或ever等连用,如:

We have been learning Unit 2. 我们一直在学习第二单元.(没学完)

注意以下两组句子含义上的区别:

I have read the novel. 我看过那本书了. (已看完)

I have been reading the novel. (一直在看,还没有看完)

Who has eaten my dinner? (表示“全吃光了”)

Who has been eating my dinner? (表示“还有一些剩下”)

第二,相对于现在完成时表示次性,现在完成进行时可以表示动作的重复,请看以下句子:

I have met him at the library. (我在图书馆见过他.)

I have been meeting him at the library. (我经常在图书馆看见她.)

第三,现在完成时和现在完成进行时都可以表示刚刚结束的动作,但在含义上有区别.现在完成时强调的是动作的结果,而现在完成进行时强调的则是动作的过程.如:

You look so tired, what have you been doing?

你看起来很累,做什么了?(强调动作)

We are very tired. We’ve been cleaning the house.

我们很累,我们刚才在打扫房子.(强调该动作所导致)

We’ve cleaned the house. You may come in now.

我们打扫过房子了,你可以进来了.(强调结果“房子干净”)