در حال دریافت اطلاعات ...
متن رفرنس
در تصویر، کِیت (Kate) را میبینید که در حال رنگ کردن اتاق است.
تصویر چپ (حال کامل استمراری): لباسهای کِیت رنگی است. او میگوید I've been painting (داشتم رنگ میکردم). در اینجا خودِ فعالیت (Activity) مهم است و مهم نیست تمام شده یا نه. اثرِ آن فعالیت (لباسهای رنگی) الان مشخص است.
تصویر راست (حال کامل ساده): اتاق که قبلاً سبز بوده، الان زرد است. او میگوید I've painted (من رنگ کردهام). در اینجا نتیجه (Result) و تمام شدنِ کار مهم است.
معادل برنامهنویسی:
(حال کامل استمراری - تمرکز روی فرآیند): سرت درد میکنه و چشمات قرمزه. داشتی دیباگ میکردی؟ (شاید باگ هنوز رفع نشده باشه، اما اثرِ تلاش کردن روی تو پیداست).
Your eyes are red. Have you been debugging the code?
(حال کامل ساده - تمرکز روی نتیجه نهایی): باگ رفع شد! الان اپلیکیشن بدون کرش کردن کار میکنه. من کد رو دیباگ کردهام. (کار کاملاً تمام شده و نتیجه مطلوب به دست آمده).
The bug is fixed! I have debugged the code.
این بخش با مثالهای مختلف تفاوت را روشنتر میکند:
ستون چپ (حال کامل استمراری - فرآیند):
کیبوردم داغ کرده. داشتم اسکریپتهای دیتابیس رو بهینهسازی میکردم.
My keyboard is hot. I*'ve been optimizing** the database scripts.*
سرور اخیراً بیش از حد رم (RAM) مصرف میکرده است.
The server has been consuming too much RAM recently.
از آخرین جلسه اسپرینت (Sprint) تا الان داشتی روی چه تسکی کار میکردی؟
What have you been working on since our last sprint planning?
ستون راست (حال کامل ساده - اتمام کار):
(به جای درست شدن دوچرخه): سرور الان دوباره اوکی شده. من تعمیرش کردهام.
The server is OK again now. I*'ve repaired** it.*
(به جای تمام شدن شکلاتها): یک نفر تمام ریکوئستهای API رو مصرف کرده! لیمیت (Limit) پر شده.
Somebody has consumed all the API requests. The limit is reached.
(به جای چه کار کردی با کتاب): سورس کدی که بهت دادم کجاست؟ باهاش چیکار کردی؟
Where is the source code I gave you? What have you done with it?
این یک قانون طلایی در انگلیسی است:
از حال کامل استمراری برای پرسیدن یا گفتنِ How long (چه مدت) استفاده میکنیم.
از حال کامل ساده برای پرسیدن یا گفتنِ How much/many/times (چه مقدار، چند تا، چند بار) استفاده میکنیم.
معادل برنامهنویسی:
ستون چپ (How long / چه مدت):
چند وقته داری داکیومنتهای این فریمورک رو میخونی؟
How long have you been reading these framework docs?
اِیمی تمام صبح داشته تست مینوشته. (تمرکز روی مدت زمان)
Amy has been writing tests all morning.
ستون راست (How many / چند تا):
تا الان چند صفحه از داکیومنت رو خوندی؟
How many pages of the docs have you read?
اِیمی امروز صبح ۵۰ تا تست کیْس (Test case) نوشته. (تمرکز روی تعداد و مقدار کار انجام شده)
Amy has written 50 test cases this morning.
برخی از افعال در انگلیسی (مثل know, like, believe, have به معنی داشتن) حالت استمراری (ing) نمیگیرند. بنابراین حتی اگر بخواهیم بگوییم “مدتهاست میدانم”، باید از حال کامل ساده استفاده کنیم، نه استمراری.
(به جای دانستن یک مشکل): من سالهاست زبان پایتون رو بلدم. (نباید بگویید I’ve been knowing)
I have known Python for years.
(به جای داشتن دوربین): چند وقته این لپتاپ مکبوک رو داری؟ (نباید بگویید have you been having)
How long have you had this MacBook?
یک استثنای جالب (want و mean):
شما میتوانید افعال want (خواستن) و mean (قصد داشتن) را به صورت حال کامل استمراری استفاده کنید.
(به جای قصد زنگ زدن به آنا): من مدتیه قصد دارم این کامپوننت رو ریفکتور (Refactor) کنم، اما همهش یادم میره!
I*'ve been meaning** to refactor this component, but I keep forgetting.*
فرض کنید یک پیتزای بزرگ خریدهاید:
۱. حال کامل استمراری (I have been doing): تمرکز روی «مَسیر و خودِ کار»
شما نیم ساعت است دارید پیتزا میخورید. دهانتان سُسی شده و هنوز هم چند تکه پیتزا در جعبه مانده است. دوستتان وارد میشود.
شما میگویید: I have been eating pizza (داشتم پیتزا میخوردم).
چرا؟ چون اصلاً مهم نیست پیتزا تمام شده یا نه. مهم این است که شما مشغول این کار بودهاید و اثرش (دهان سُسی) معلوم است.
۲. حال کامل ساده (I have done): تمرکز روی «مَقصَد و نتیجه»
شما کل پیتزا را خوردهاید. جعبه کاملاً خالی است و شما سیرِ سیر هستید.
شما میگویید: I have eaten the pizza (من پیتزا رو خوردم).
چرا؟ چون کار کاملاً تمام شده و نتیجه آن (خالی شدن جعبه) الان جلوی چشم است.
برای اینکه در لحظه تصمیم بگیرید کدام را استفاده کنید، از خودتان این ۳ سوال را بپرسید:
قانون ۱: آیا میخواهم بگویم “چند تا” کار انجام دادم؟
اگر میخواهید تعداد یا مقدار را بگویید (مثلاً ۳ تا قهوه خوردم، ۵۰ خط کد نوشتم) فقط از ساده استفاده کنید.
درست: I have written 50 lines of code (۵۰ خط کد نوشتهام).
قانون ۲: آیا میخواهم بگویم “چه مدت” در حال انجام کار بودم؟
اگر میخواهید روی مدت زمان طول کشیدن یک کار تاکید کنید (مثلاً ۳ ساعت است دارم کد میزنم) از استمراری استفاده کنید.
درست: I have been writing code for 3 hours (سه ساعت است دارم کد میزنم).
قانون ۳: آیا کار تمام شده و نتیجه نهایی را گرفتهام؟
اگر کار تمام شده و یک دستاورد یا نتیجه مشخص دارد (باگ فیکس شد، برنامه نصب شد) -> ساده (I have done).
اگر کار هنوز تمام نشده، یا تازه همین الان متوقف شده و خستگی یا اثراتش روی شما پیداست -> استمراری (I have been doing).
خلاصه در یک جمله:
استمراری میگوید: “ببین من چقدر تلاش کردم / چقدر وقت گذاشتم!”
ساده میگوید: “ببین من چه چیزی به دست آوردم / چه چیزی را تمام کردم!”
عنوان کارت
پاسخ