平常说话的时候是没有时间考虑语法的。这两种表达方式主要是用来区分说话时要表达的语气。当你强烈地想表达一个动作或行为的延续这样一个意思的时候要用Have been doing.当只是想强调一个动作的后果是用have done.(我在这里不用现在完成进行时和现在完成时的表述希望各位在想表达相应的语气时能够直接反应英语have been doing或是have done。)
比如:
My mother have been teaching English for 20 years.
意思是说:我妈妈这20年一直在教英语,现在还在教。
I have tought her already.
意思是说:我已经教过她了,她已经知道了,你不用再教她了。
也可以是:我已经教过她了,她还是不会。
再比如:
前两天windows2000/xp组里大家侃大山说谁用微软的产品早,就可以用have been
using:
I have been using the Microsoft's products since 1981.
如果只是早些年用过,现在不用了,底气就没有那么足:
Yeah, I have used some of the Microsoft's early products before, but not any
more since 5 years ago.