0%

English系列之完成进行时(现在完成进行时)

这篇笔记摘选自张满胜老师的《英语语法新思维中级教程通悟语法第2版》,以及其他网上知识点收集,只是我自己的个人复习笔记,禁止转载,如有侵权,请联系我删除。

完成进行时态的构成

以动词work为例,三种完成进行时态的构成形式如下:

  1. 现在完成进行时:have been working
  2. 过去完成进行时:had been working
  3. 将来完成进行时:will have been working

完成进行时态的意义

从结构(structurally)的角度来看,完成进行时态是由完成时态与进行时态复合而成的,这种结构上的复合也必然会反映到意义上,因此完成进行时兼备“完成体”和“进行体”这两种时体的意义。
比如,对于现在完成进行时而言,一方面,完成体赋予了它“始于现在之前”的概念,即表示一个动作或状态是从过去持续或重复到现在;另一方面,进行体赋予它暂时的、不间断的延续性。所以,结合这两者的特点,现在完成进行时的核心意义是表示:被描述的事件开始于现在之前,而且是有限地(不会无限期地)持续下去。简言之,完成进行时的核心含义是表示“有限的延续性”。

延续事件

现在完成进行时强调动作的持续性,表示一个到目前为止尚未完成的活动。具体来说,它表示开始于过去的活动持续到现在,并且活动往往还没有结束,将继续持续下去。此时的完成进行时常与“for+时间段”“since+时间点”,all morning,all day,all week 等这样的表示一段时间的时间状语连用,以强调在这一段期间内,某项活动正在持续。

I’ve been studying English for over ten years now, but I still can’t speak it well.
该句的谓语have been studying采用了现在完成进行时态,表示学习英语这一动作从10年前开始,一直持续到目前说话的时候,并且还将继续持续下去。

你妈妈看到你正在看电视,不高兴地说:
A: Hey, you’re watching TV again.
B: I’ve been studying for the whole morning. I need to relax now.
该句的谓语have been studying采用了现在完成进行时态,但“学习”这个活动在说话时并没有在持续,而是在说话之前的一段时间内持续进行。

延续事件根据延续时间长短的不同,可以区分四种不同的延续事件:长期在延续的一般性活动;近期在延续的活动;在说话时刻仍在延续的活动;在说话时刻之前在延续的活动,或者说刚刚在延续但现在已结束的活动。

长期在延续的事件

现在完成进行时可以表示从过去到现在的一个相当长的时期内持续的一般性活动。
I’ve been learning English for over ten years now.
我学英语到现在有十多年了。
He has been working in the same job for 30 years.
他干同样的工作一干就是30年。
A: Winter is over at last. Time to pack up my gloves and boots.
B: I’ve been waiting for this for months.
A:冬天终于过去了,现在该把手套和长靴收拾起来了。
B:我等了好几个月了!
从以上例句可以看到,这些现在完成进行时表达的都是在相当长的一个时间段内(比如:for 30 years)持续的一般性活动。说它们是“一般性活动”,是因为这些活动并不具有很强的“正在进行”的动作的意味,或者说这些活动在说话的时刻一般并不正在持续。这些活动类似于一个持续的状态,更具有状态的意义,而没有多少动作的意义。
所以, 现在完成进行时的这一用法与“现在进行时态”的关系较远,而与“现在完成时态”的关系更近,完全类似于现在完成时所表达的“延续事件”的意义。比如,如果把上述句子的时态改成现在完成时态,也同样是正确的表达,而且意义上没有多大差别,所以可以这样说:
I’ve learned English for over ten years now.
He has worked in the same job for 30 years.
A: Winter is over at last. Time to pack up my gloves and boots.
B: I’ve waited for this for months.

现在完成进行时往往表示有限的延续性,这是进行体赋予它的这个特点。而这里提到现在完成进行时表示长期在延续的事件,二者就有了语义上的冲突,这也就解释了为什么现在完成进行时的这一用法与现在进行时关系较远的原因。这一语义上的冲突其实也是在告诉我们:能够表示长期延续事件的现在完成进行时对谓语动词有特殊要求。换句话说,并不是所有的动词用于现在完成进行时都能表示一个长期在持续的事件。来看下面这个句子:
He has been repairing his car since 6:00 this morning.
这里的现在完成进行时has been repairing也是表示延续事件,但不是长期在延续的事件,而是一个“从早上6点到现在”短短几个小时的延续活动。整个句子的意思是“从早上6点到现在,他一直在修理他的车”,这个句子的言外之意就是,他现在仍然在修车,也就是说,在说话的时刻,repair的动作依然在进行。这完全不同于上述表达状态意义的wait等动词。
如果这种动作意味很强的动词与表达较长时间的状语连用,会产生何种语义效果。比如说:
He has been repairing cars for almost 20 years.
当我们说“他修理汽车有将近20年了”,显然不是表示repair这个动作一直不间断地持续了将近20年,也就是说,这里的has been repairing与表达较长时间的状语for almost 20 years连用时,就不能把它解释成一个长期延续的事件了,而只能把它解释成“重复事件”,即在将近20年当中,他不断“重复”地修理汽车,这就强烈地表明,他是专门从事汽车维修工作的,修车是他的职业。而如果说“从早上6点到现在,他一直在修理他的车”,则并不能说明修车是他的职业,只是表示他一直在做的一项活动而已。
从对以上两个例句的比较可以看出,像repair这样的表示单一具体动作的动词用作谓语时,若句子接有一个表示较短时间的状语,则表示延续的活动;但若句子接一个表示较长时间的状语,则表示一个重复的活动。也就是说,像repair这样的动词虽然具有一定的延续性,但持续的时间不能太长,所以这类动词被称为有限延续动词。英文中的大多数动词都是有限延续动词。
由此可见,能够表示长期延续事件的谓语动词不能是那些动作意味很强的动词。在英文中,像study, live, work, learn, teach和wait这样的动词并不能表达出某一具体的动作,它们近乎一种状态的延续,这样的动词被称为无限延续动词。这一部分动词在英文中比较少。因此,现在完成进行时在表示长期持续的事件时,其谓语动词必须是一些无限延续动词。
“Someday, when I have some time, I’d like to…”Heard that one lately? I think I use that phrase at least 10 times a week. But“someday”never seems to arrive. Now is the time for those little activities you’ve been saving for the future.
这里的save不是一个具体的动作,而是一个具有状态意义的动词。
“等我哪天有了时间,我一定就会去做……”经常听人这么说吧?我自己一星期至少要说10次这样的话。可是,“哪天”似乎从来就没有来过。对于那些你一直攒着想等将来做的事情,现在就应该去做。
对于无限延续动词来说,其所接的时间状语不论长短,都表示延续事件的意义。例如work是无限延续动词,表示一种状态,所以下面两句不论是与表达短时间的状语for two hours连用,还是与表达长时间的状语for 30 years连用,都是表示延续事件:
He has been working on the puzzles for two hours.
他玩这个拼图游戏有两个小时了。
He has been working in the same job for 30 years.
这个工作他做了有30年了。
对于wait是同样的道理,与表达长时间与短时间的状语连用都表示延续事件。

近期在延续的事件

现在完成进行时除了可以表示一个长期持续的活动,还可用来表示最近一段时期内正在持续的一般性活动。
A: Has Cynthia been working hard on her term paper?
B: Day in and day out.
根据B的回答Day in and day out. (天天如此忙着。) 就可以知道,A的意思并不是在问Cynthia在说话的时刻是否一直在忙着写论文,而是问她近期是否在忙着写论文。
Cynthia is working hard on her term paper these days.
这里有时间状语these days,表明该句的语义重点不在于辛西娅在说话的时刻是否在写论文,而是表达她近期的一般性活动。
由此可见,现在完成进行时表示“近期在延续的事件”这一用法与现在进行时的关系更密切。

I have been thinking about changing my job. 我最近一直在考虑换个工作。
I have been thinking it over. 我最近一直在考虑这件事。

在口语中,如果想要表达“我一直想干什么”或“我早就想干什么”, 可以说“I have been wanting to do…”或“I have been meaning to do…”;如果要表达“一直想要什么”,可以说“I have been wanting…”。现在完成进行时的这一用法在大多数情况下是不带有持续时间状语的,不过也可以带有持续时间状语(如for the past couple days),都可以表示一个近期在持续的一般性活动。
Thank you so much for the binoculars. I’ve been wanting a pair for ages.非常感谢你送我这副望远镜,我一直想要一副。
I have been wanting to meet you for long. 我早就想见你了。
另外要注意,这里的“近期”是一个相对概念,可能是近几天,也可能是近几个星期,甚至是近几个月。所以,“近期”与“长期”并没有明确的界限,完全是根据实际生活经验来判断的。

在说话时刻仍在延续的事件

现在完成进行时可以表示一个在说话时刻之前一段时间内延续的活动,并且这个活动在说话的时刻仍然在进行。
A: You’ve certainly been reading that one page for a long time now.
B: Well, I’m being tested on it tomorrow.
这里read的动作从过去开始并且持续到了现在说话的时刻,在说话的时刻A仍然在看书。
A:那一页内容你显然已经看了很长时间了。
B:噢,我明天就要考这页内容啊。

现在完成进行时 vs 现在进行时

1) I’m staring at this computer.
2) I’ve been staring at this computer screen for hours and my eyes hurt.
一般不能说:I’m staring at this computer for hours. *
I’m trying to study. I’ve been trying to study for the last hour, but something always seems to interrupt me. I think I’d better go to the library.
可见,这里的现在完成进行时have been trying与持续的时间状语for the last hour搭配了,而现在进行时am trying却没有。

现在完成进行时动作持续到现在,之后是否继续可由上下文给出

A: Come to the movies with us. Everybody needs to take a break every once in a while.
B: I guess I might as well. I’ve been studying so long I can hardly concentrate.
由上文“不妨休息(I guess I might as well.)”可以推断,study的动作持续到说话时为止,不再延续。
A:和我们一起去看电影吧,谁都需要偶尔休息休息的。
B:我想也是,我学了老半天了,现在都无法集中精力了。

在说话时刻之前在延续的事件(即刚刚在延续的事件)

一个事件在说话时刻之前一直在延续,换句话说,就是刚刚在延续但到说话时刻已经结束了(a recently finished activity)。从下面这个例句可以明确看出事件“刚刚在延续”:
He returned home yesterday. He has been traveling.
这里前一句话明确说“他昨天回家了”,这就表明他的旅行到现在说话时刻已经结束了,所以has been traveling就是表示一个“刚刚在延续的事件”——刚刚结束旅行。
他昨天回到家里了,在这之前他一直在外旅行来着。

What have you been doing while I have been away?
这个句子表示“我刚才不在的时候,你们都一直在干什么了”,所以,这里的have been doing也由于从句while I have been away 的存在而明确表明一个刚刚在延续的事件。
我不在的时候,你们一直在干什么?

但是,更多的时候,某个事件“刚刚在延续”并不会像上面这两个例句这样明确地表达出来,而是通过上下文来表明这个事件是“刚刚在延 续”。先来看下面这个例句:
A: You look hot.
B: Yes, I’ve been running.
对话中的have been running表示一个延续的动作,但这个动作并没有延续到现在(说话人现在不做running这个动作了),而是一直延续到离现在不远的过去时间结束的,即表示刚才一直在延续,但现在已结束的活动(a recently finished activity)。“刚才在延续”的活动所导致的“现在”结果往往清晰可见。
A:看你很热的样子。
B:是的,我刚刚一直在跑步来着。

同样一个带有持续的时间状语的句子,在不同的语境中,既可以表示“刚刚在延续”,也可以表示“一直在延续”。
I’ve been running for half an hour.
这句话既可以理解成“一直在延续”: 到现在为止我跑了有半小时了。
也可以理解成“刚刚在延续”:
刚才我跑了半小时。(所以为什么我现在满头大汗的)
前者表明现在“我”还在跑步,这个活动并未结束;后者表明“我”现在没有在跑步,这个活动已经结束。
这种歧义在真实的口语交际中一般不会存在,因为具体的语境告诉听者该如何理解说话人的意思。比如你的朋友在正健身房的跑步机 (treadmill)上跑步时对你说“I’ve been running for half an hour.”,显然 你就要理解成“跑步的活动一直在持续”;而如果他现在满头大汗地站在你面前说“I’ve been running for half an hour.”,显然你就要理解成“跑步的活动刚刚在持续”。
不过,在没有上下文语境帮助排除的情况下,对于带有持续的时间状语的完成进行时的句子,我们一般会解释成“一直在延续”的事件。

对于不带有持续的时间状语的句子同样会存在歧义。比如:
It’s been snowing.
这句话可以有两种意思。如果在说这句话时外面还在下着雪,则表示“一直在延续”而并未结束的动作:
一直在下雪。
或者,如果说这句话时外面的雪已经停了,则表示“刚刚在延续”——延续至不久前刚刚结束的动作:
刚刚下过雪。(瞧,地上是白的)
在没有上下文语境帮助排除的情况下,对于没有持续的时间状语的完成进行时的句子,我们一般会解释成“刚刚在延续”的事件。

延续事件比较:完成进行时与完成时

比较(一):完成进行时“刚刚在延续的事件”与完成时“单一事件”

两者有三个共同点:

  • 两者都表示一个事件在说话的时刻已经结束;
  • 两者都伴随有现在清晰可见的后果;
  • 两者都不接持续性的时间状语。不过,需要注意的是,现在 完成进行时可以接持续的时间状语,但意思往往会不同;而现在完成 时“单一事件”的用法是不能接持续的时间状语的。

1) My hands are dirty. I’ve been cleaning the car.
2) I’ve just cleaned the car.
在例句1)中,现在完成进行时强调活动本身的持续性 (emphasis on duration),然后推导出一个与这个持续的活动本身有关的结果——手很脏了。从动词的延续性角度来看,这里的clean是一个延续活动。在例句2)中,现在完成时强调活动的结果,或者说强调活动的成果(emphasis on achievement)——车子现在干净了。从动词的延续性角度来看,这里的clean是用作一个短暂动词,而不是表示延续活动。
1)我的手很脏,我刚刚一直在洗车。
2)我刚把车洗干净了。
从这个例句可以得出二者的两点区别:
第一,现在完成进行时强调活动本身的持续性(emphasis on duration);现在完成时强调活动的结果,或者说强调活动的成果 (emphasis on achievement)。
第二,从谓语动词的延续性的角度来看,现在完成进行时的“刚刚在延续的事件”的用法所采用的动词一定都是延续性动词,以表示一个延续活动;现在完成时的“单一事件”的用法所采用的动词都是短暂动词,或者用作表达短暂性的动词,不表示一个延续活动。所以,现在完成进行时可以接持续的时间状语,但意思往往会不同;而现在完成时“单一事件”的用法是不能接持续的时间状语的。这就证明二者在谓语动词的延续性方面有差别。

1) Be careful! I’ve been painting the door!
I’ve painted the door green.
在例句1)中,现在完成进行时强调活动本身的持续性——“我”刚刚一直在给门刷漆,由此推导出一个与这个持续活动本身有关的结果——门上的油漆现在还没有干,所以“你”要小心(be careful)。从动词的延续性的角度来看,这里paint是一个延续活动。在例句2)中,现在完成时强调活动的结果,或者说强调活动的成果——门现在变成绿色了(比如说原来是白色的)。从动词的延续性的角度来看,这里的paint是用作一个短暂动词而不是表示延续活动。
1)小心!这门我刚刚刷过油漆!
2)我把门漆成了绿色。

这里也可以看到,现在完成进行时的这一用法与现在完成时态的关系更接近,而与现在进行时的关系较远,因为现在进行时没有表示事件在说话时刻已经结束的用法。

比较(二):完成进行时的“延续”与完成时的“延续”

现在完成时和现在完成进行时都可以表示“延续事件”。

与持续的时间状语连用

在带有持续的时间状语时,用两种时态几乎没有多大区别,都表示一个开始于过去的动作一直延续到现在。
我教书有25年了。 可以用两种时态来表达如下:
1) I have been teaching for 25 years.
2) I have taught for 25 years.
不过也有这样一种观点,认为此时二者的细微区别在于:现在完成进行时一般强烈暗示动作会继续持续下去;而现在完成时则往往表示动作有可能会持续下去。
1) I have been teaching for 25 years, and I can’t imagine doing anything else.
我教书有25年了,我真想象不出还能干什么别的事情。
2) I have taught for 25 years, so now it’s time to think about doing something else.
我教书有25年了,现在是该考虑改行做别的事情的时候了。

不与持续的时间状语连用

表示“延续事件”的现在完成时必须具备两个条件,其中之一就是必须与持续的时间状语连用,如果没有持续的时间状语,则不表示延续至今的事件,而是表示一个在过去完成了的事件,即表示“单一事件”中的过去的经历。而现在完成进行时在没有持续的时间状语的情况下,依然可以表示延续至今的事件。
1) I have worked in this company.
2) I have been working in this company.
在例句1)中,现在完成时have worked表示曾经的经历,即现在不在这家公司工作了。
在例句2)中,现在完成进行时have been working表示一直在延续的事件,即现在还在这家公司工作。
1)我在这家公司工作过。
2)我一直就在这家公司工作。

在不带有时间状语时,现在完成时指的是在过去某一时间完成了的动作(refer to a singular occurrence at an
indefinite time in the past),现在完成进行时则表示一个正在持续的活动(refer to an ongoing activity),活动还没有结束。下面的例句也可以证明这一区别。请比较:
1) I’ve been cleaning the house, but I still haven’t finished.
2) I’ve cleaned the house, but I still haven’t finished. *
在例句1)中,因为现在完成进行时have been cleaning 表示一个一直在持续的活动,活动并没有结束,相当于汉语中说的“我一直在打扫房间”,所以接下去可以说but I still haven’t finished,表示“但是还没有打扫完”,这样来明确表示活动还没有结束。在例句2) 中,因为现在完成时have cleaned表示一个过去完成了的活动,相当于汉语中说的“我把房间打扫完了”,所以接下去无法说but I still haven’t finished(但是还没有扫完),这样前后语义矛盾,故例句2)是错误的。

重复事件

现在完成进行时可表示重复事件,具体来说,就是表示到目前为止的一段时间内重复发生的活动。
现在完成进行时表示“重复事件”的用法主要分为两种情况:一种是“短暂动词”用于现在完成进行时可以表示一个重复事件,这是最典型的重复事件的用法;另一种是“有限延续动词”用于现在完成进行时可以表示一个重复事件。

重复事件(一):短暂动词

I have been coming to Beijing for 14 years.
这里的have been coming表示的是一个重复的活动,所以这句话正确的意思应该是:
在过去的14年中,我常常来北京。
从这个例子,可以看到现在完成进行时的另一种思维表达——用短暂动词(如come)的完成进行时(如have been coming)来表示到目前为止的一段时间内重复发生的动作。
I’ve been coming to see him for 10 years.
这里的have been coming同样是表示一个在10年当中不断重复的活动。
10年来,我常常过来看望他。

再来看下面这个句子:
They have been going there for 10 years.
虽然这句话译成汉语可以是:他们去那里已经有10年了。
但这并不是表示他们一直生活在那里,而是表示“10年期间,他们屡次去那里”,即表示一个重复活动。可以把这个句子放在一个更完整的语境中:
Every Sunday they meet in the bar. They have been going there for 10 years.
这里的have been going表示一个在10年当中不断重复的活动,即在10年期间,每周日他们都去那家酒吧。所以,“他们去那里已经有10年了”并不是表示他们一直生活在那里。
他们每周日都会在那家酒吧会面,他们去那里已经有10年了。

“结婚”的英文是marry,它是一个短暂动词,所以,如果要表示“我结婚有一年了”,要用“状态表达”说成“I’ve been married for a year.”,而不是“I’ve married for a year. *”。因此,如果把marry用于现在完成进行时,则是表示一个重复的活动。比如:
Koreans have been marrying U.S. soldiers stationed here since the 1950s. The peak years were during the 1970s, when more than 4,000 Koreans married U.S. soldiers each year.
这里的have been marrying表示一个不断重复发生的事件,即重复事件,所以翻译时要注意体会。
自20世纪50年代以来,就不断有韩国人嫁给在当地的美国驻军,70年代达到了高峰,每年有四千多人嫁给美国大兵。

Over the past few years, many towns in the United States have been joining with neighboring communities to share the costs of government.
这里join的动作不是一次完成的,而是在近几年当中 (over the past few years)不断重复发生的,所以要用have been joining来表示这一重复活动。
在近几年中,美国的许多城镇不断与邻近社区合并, 以降低政府的费用开支。

短暂动词用于完成进行时态(如have been coming)一般不宜接“短的时间状语”。

比如:
Mike has been winning that race for two hours. *
这句话是没有太大的实际意义的,因为一个人一般不可能在两个小时内连续两次、甚至多次赢得某个比赛的胜利。所以,后面接的都应该是表达较长时间的状语,表示在一段相对较长的时间内重复的动作。比如这么说:
Mike has been winning that race for years.
这就表示“迈克多年以来多次赢得那个比赛”。这里的win同样是一个短暂动词,它用于现在完成进行时,可以被解释成一个重复发生的事件。

重复事件(二):有限延续动词

I’ve been chatting online for a little over three years.
这里的chat虽然是一个可以延续的动词,但它用在I have been chatting online for a little over three years这句话里面,显然就不能表示一个不间断的延续活动了,因为“聊天”不可能是一直不间断地“延续”了三年多。所以,根据日常的实际经验,只能把它解释为是在三年之中“重复”上网聊天,也即这里的have been chatting应该是表示一个重复事件,而不是延续事件。
我上网聊天已经有三年多了。
另一方面,也可以将上面这个例句中的“三年”的时间段缩短为“三小时”,而仍然保留完成进行时have been chatting:
I have been chatting online for three hours now.
在这一句里面,have been chatting则显然表示的是一个延续活动而不是重复活动,即“聊天”这一活动是一直不间断地持续了三个小时。
我上网聊天到现在已有三个小时了。
have been chatting如果接一个“较长的时间段”,则表示的是一个“重复活动”;如果接一个“较短的时间段”,则表示的是一个“延续活动”。

像动词chat,listen, interview,ask和eat等,都是表示可以延续的动作,所以这些动词用于完成进行时都可以表示延续的活动。这不同于come这样的瞬间即结束的动词,因为它不能延续,所以它的完成进行时have been coming用于较长的时间段时,只好把它解释为重复的动作。但在另一方面,像动词chat,listen,interview,ask和eat等,虽然比瞬间动词come具有较强的延续性,但它们所表达的延续性也是有限的,因为它们都是表达某个单一具体的动作,而对于一个能体现出具体动作的动词,一般不可能持续太长的时间。因此,当它们用于表达较长时间的时间状语时,就不能说某一活动在“延续”,而只能解释成“重复”了。

“有限延续动词”用于完成进行时态,若接表达较长时间的状语表示“重复活动”,若接表达较短时间的状语则表示“延续活动”。

重复事件比较:完成进行时与完成时

  • 重复动作的分割性:现在完成进行时表示重复活动时,不能被分割开来,即不能说出具体的次数。它的重复性是根据人们的实际经验而体会出来的。而完成时表示的重复活动,往往要说出具体的次数。因此,可以这样来看二者的差别:现在完成进行时的重复是“隐性”的,是模糊的;现在完成时的重复是“显性”的,是明确的。
  • 短暂动词的完成进行时表示重复活动。
  • 完成进行时的“重复事件”与一般现在时的“重复事件”。

比较(三):重复动作的分割性

比如这个错误的例句:
I have been drinking five cups of coffee this afternoon.*
这里涉及完成时态和完成进行时态的区别问题。完成进行时具有进行时的特点,而进行时强调动作的持续性,因此这一活动必须是连续不断的。如果把动作分割开来看, 则违背了进行时态的核心意义——持续性,所以不能用进行时态。我们在下列两种情况下就会把动作分割开:
一是谈到在一段时间内一共做了 多少件事情(比如说喝了五杯咖啡);
二是说明某件事发生的次数。
这两种情形下都不能使用各种进行时态,包括现在完成进行时。
结论:完成进行时态不能用来谈某个动作的具体次数或几件事情,而要用完成时态。
I have drunk five cups of coffee this afternoon.
今天下午我喝了五杯咖啡。
比如要说“去过三次洛杉矶”,就可以用完成时态这样说:
He has gone to Los Angeles three times this year.
或 He has been to Los Angeles three times this year.
但不能用完成进行时,说成“He has been going to Los Angeles three times this year. *”。

Larry King has been interviewing important people for more than 40 years. King has been asking famous people questions throughout his career and has done more than 40,000 interviews. He has talked with every American president since Richard Nixon.
这里has been interviewing和has been asking都是表示重复的动作,但由于并没有说明具体的次数,所以用了完成进行时态,来强调他到目前为止还一直在从事采访活动。而接下来由于说出了具体的40000次采访以及采访过每一位美国总统(every American president),这都使得动作被分割开,强调一个结果或成就,而不是一个不间断的过程,所以改用了现在完成时has done和has talked来表达。
拉里·金从业40多年来,采访过众多名人,向他们提出各种问题,累计采访达四万多人次。自从尼克松总统以来,历届美国总统都接受过他的采访。

它所表示的重复动作是不能被分割开来的,而只能看作是一个不间断的过程,这是进行体赋予它的特点。完成时态则常常表示间断的重复活动,可以标明具体几次或几件事,这也是完成时强调活动结果的体现。现在完成进行时表示的重复活动都是不能说出具体次数的,而只能从上下文体会出来,或者依据我们的实际经验体会出来。

A: I’ve been calling David for the past half hour, but I keep getting a busy signal.
B: Well, if you don’t get him soon we’ll just have to go to the movies without him.
A:近半个小时,我一直在给戴维打电话,但总是忙音。
B:噢,如果你不能快点联系上他,我们只好不带他去看电影了。
从后文的but I keep getting a busy signal可知,这里“我”打电话给戴维是多次的活动,而且都是在过去近半小时内发生的。这里的重复活动的意味是从下文but引导的分句体会出来的,但句中并没有明确说出打电话的具体次数。如果要说出具体的次数,则必须改用现在完成时态。
I’ve called David four times for the past half hour, but I keep getting a busy signal.
近半个小时我给戴维打了四次电话,但每次都是忙音。
因此,可以这么来看待两种时态所表示的重复活动:现在完成进行时的重复是“隐性”的,是模糊的,它的重复性是根据人们的实际经验体会出来的;现在完成时的重复是“显性”的,是明确的。比如:
1) I’ve been writing letters this morning.
2) I’ve written three letters this morning.
在例句1)中,复数名词letters表明“我上午写了不止一封信”,也即这里的现在完成进行时表示一个重复活动。但并没有具体说出是几封信。在例句2)中,明确地说出了是三封信。
1)今天上午到目前为止我一直在写信。
2)今天上午到目前为止我写了三封信。

比较(四):短暂动词用于完成进行时来表示重复活动

I have been coming to Beijing for 14 years.
I’ve been coming to see him for 10 years.
Every Sunday they meet in the bar. They have been going there for 10 years.
从上面这些例句可以看到,短暂动词的完成进行时可以与持续的时间状语连用,来表示一个重复活动。但是,短暂动词的完成时是不能与持续的时间状语连用的,因为短暂动作无法延续,这与持续的时间状语形成语义上的冲突。所以,上述句子都不可能改为现在完成时:
I have come to Beijing for 14 years. *
I’ve come to see him for 10 years. *
Every Sunday they meet in the same bar. They’ve gone there for years. *

短暂动词的完成进行时可以与持续的时间状语连用,来表达一个在这个时段内的重复活动;而短暂动词的完成时不能与持续的时间状语连用,不能表示重复活动。如果短暂动词的完成时要表示重复活动,如上面讨论的那样,就只能加上具体的次数。

完成进行时的“重复事件”与一般现在时的“重复事件”

一般现在时也可以表示一个重复的习惯活动:
I run a mile every afternoon.
这句话表示“我每天下午都会跑一英里”,即已养成跑步的习惯了。现在把这个句子改为现在完成进行时:
I’ve been running a mile every afternoon.
可以把这个句子放在一个更完整的语境中:
A: I’ve been running a mile every afternoon for the past month, but I still haven’t been able to lose more than a pound or two. I wonder if it’s worth it.
B: Oh, don’t give up now. It always seems hard when you are just starting out.
这里添加了一个持续的时间状语for the past month,表示到目前为止的一个时间段内,重复发生“跑步”这个活动。
由此可见,当用现在完成进行时表达一个重复活动时,我们的头脑中就会有一个较明确的表示到目前为止的时间段,而一般现在时就不能这么用:
I run a mile every afternoon for the past month. *
当用一般现在时来谈一个重复活动时,我们的头脑里没有这样的一个时间段的概念,而只表示一种泛泛的日常习惯。
所以,现在完成进行时表示“重复事件”的一个重要概念就是:到目前为止的一个时间段内重复的活动。有时,若上下文的语境中已暗示有一个时间段的概念,即使没有明确说出这个时间段,也要用have been doing来表示在这一未明示的时间段内重复的动作。
I have been running a mile every afternoon, but I think I’ll run two miles later.
这里的but I think I’ll run two miles later就告诉我们,说话人是强调现在和将来的对比,也就是说,他头脑里是强调“到目前为止的一个时间段内每天跑一英里”,所以才有下文说“不过我想以后改为两英里”。 此时就不能说:
I run a mile every afternoon, but I think I’ll run two miles later. *

因此,遇到现在完成进行时表示的重复活动,即使没有明确的时间段出现,也要理解成这一重复活动是在从过去到目前为止的一个时间段内发生的。

1) I go to the gym every three days.
2) I’ve been going to the gym every three days, but I think I’ll make it every other day from now on.
1)我每三天去健身一次。
2)到目前为止,我每三天去健身一次,不过我想从今往后改为每隔一天去一次。

完成进行时与完成时对比总结

比较(五):完成进行时强调“延续过程”, 完成时强调“成果”

完成进行时重在“进行(ongoing)”,即未完成(incomplete),强调动作持续的过程(emphasis on duration);完成时重在“完成”,即已完成(completed),强调动作的结果或成就(emphasis on achievement)。具体来讲,现在完成进行时所强调的是在一段时期内某项活动的持续性,强调的是动作本身;现在完成时则是强调动作产生的结果或取得的成就,而不是动作本身。

比如我们一般用现在完成进行时来谈论不断的变化和发展,这是现在进行时赋予它的意义,因为现在进行时可以谈不断变化的过程。例如:
Scientists believe that the universe has been expanding since the beginning of time.

未完成与已完成

先来比较现在完成进行时的“未完成”与现在完成时的“已完成”。
1) I have been reading your grammar book. After I finish it, I’ll discuss some problems with you.
2) I have read your grammar book and I have questions to ask you.
在例句1)中,现在完成进行时表示read的动作未完成。
在例句2)中,现在完成时表示read的动作已完成。
1)我一直在看你的语法书,看完以后我会有一些问题要和你讨论。
2)我看过你的语法书了,现在有问题要问你。

延续过程与结果或成果

1) How long have you been learning English?
2) How many words have you learned?
在例句1)中,询问学英语的持续时间,强调活动的持续过程,所以用现在完成进行时have been learning。
在例句2)中,询问学会了多少单词,强调学习的成果,所以用现在完成时have learned。
1)你学习英语有多久了?
2)你已经学会了多少英语单词?

1) It has been snowing all day. I wonder when it will stop.
2) We have had three major snowstorms so far this winter. I wonder how many more we will have.
1)下了一整天的雪,不知什么时候能停。
2)今年冬天已经下了三场大雪了,不知还会不会再下。

感情色彩的不同

由于完成进行时更强调动作的延续性,因而往往带有强烈的感情色彩,较为口语化。所以,在口语中完成进行时使用得较为普遍。而现在完成时则只是说明一个事实,一种结果,较为平铺直叙,缺乏明显的感情色彩。例如:
A: Why are you so late? I’ve been waiting here for more than an hour!
B: Sorry to have kept you waiting. But it has been a hectic day today. I’ve got a million things to attend to.
这里说话人A用了have been waiting的形式,显得较为生气。如果他说have waited则显得很平铺直叙,只是简单地说明“等了一个多小时”这样的事实。
A:你怎么来得这么晚啊?我在这里一直等了有一个多小时了!
B:对不起让你久等了,因为我今天一直忙得不可开交,有一大堆事情要处理。

重复活动:完成进行时强调持续,不讲次数;完成时强调成果,讲次数

1) I’ve been ironing my shirts this morning.
2) I’ve ironed five shirts this morning.

现在完成进行时与现在完成时的思维差异总结

时(tense)与态(aspect)

谈到“时(tense)”的时候,我们关心的是这个动作发生的时间,即是在现在、过去还是将来发生的。
谈到“态(aspect)”(也叫“体”)的时候,我们关心的则是:

  • 这个动作是固定不变的还是动态变化的(fixed or changing);
  • 这个动作是完成了的还是在延续的(complete or ongoing);
  • 这个动作持续的时间是很短还是很长(lasting for only a moment or for a long time)。
完成进行时的意义

无限延续动词

无限延续动词(如live)用于现在完成进行时的时候,只能表示一个延续事件。
I’ve been living in Beijing for 20 years now.
这就是“长期在延续的事件”。事实上,完成进行时的“有限延续性”这个核心意义与这里的长期延续事件是有语义上的冲突的。确切来说,这里的“长期延续性”并不是完成进行时所赋予的,而是无限延续动词本身所具有的特点。因此,这里即使不用现在完成进行时而用现在完成时,依然是表示一个长期在延续的事件。比如说:
I’ve lived in Beijing for 20 years now.
这也就解释了为什么现在完成进行时的这一用法与现在完成时的关系更近,而与现在进行时的关系较远。这一语义上的冲突其实也说明:能够表示长期延续事件的现在完成进行时对谓语动词有特殊要求。换句话说,并不是所有的动词用于现在完成进行时都能表示一个长期在持续的事件。

有限延续动词

这样的动词往往是一些表示单一具体活动的动词,比如repair这样的动词。这样的动词非常典型地反映出完成进行时的“有限延续性”的特点,因为这样的动词用于现在完成进行时,若要表示延续事件时,则只能接一个表达短暂时间的状语。比如:
He has been repairing his car since 6:00 this morning.
而不能接一个表达较长时间的状语。如果是表达较长时间的状语, 则只能解释为重复事件。比如:
He has been repairing cars for almost 20 years.
这说明完成进行时表示有限的延续性,除非是一些近似于状态的无限延续动词用于完成进行时,可以接表达较长时间的状语表示延续事件外,一般动词只能接表达较短时间的状语才能表示延续事件,否则会变成重复事件。
另一方面,这里的重复事件又是我们根据常识经验体会出来的。比如一个人若是修理一辆汽车,不可能是一直不间断地修了20年,这不符合常识,显得很荒唐。这时只能把这“修车”的活动理解为这20年来重复发生的一个活动,才能讲得通。

短暂动词

短暂动词与完成进行时“有限延续性”的含义发生作用后,产生了重复事件的解释。比如:
I have been coming to Beijing for 14 years.