منطق ایجنت‌ها › M4 — مرزها و راستی‌آزمایی
۴.۳ پایدار تدریسی ~۲۵ دقیقه

وقتی همه‌چیز انگلیسی است

در یک نگاه

۴.۳.۱

چرا خطاها و مستندات انگلیسی‌اند

یک واقعیت که عوض نمی‌شود و بهتر است زود بپذیری‌اش: تقریباً همه‌ی پیام‌های خطا، نام دستورها، و مستندات فنی انگلیسی‌اند.

دلیلش هم توطئه نیست: این ابزارها در جامعه‌ای ساخته می‌شوند که زبان مشترکش انگلیسی است، و پیام‌های خطا معمولاً ترجمه نمی‌شوند چون ترجمه‌ی غلطشان بدتر از انگلیسی‌شان است — جستجوی متنِ ترجمه‌شده هیچ نتیجه‌ای نمی‌دهد.

و اتفاقاً همان آخری یک مزیت پنهان دارد: چون خطاها انگلیسی و استانداردند، جستجوشدنی‌اند. هر خطایی که تو می‌گیری، هزار نفر قبلش گرفته‌اند و جوابش جایی نوشته شده. اگر ترجمه می‌شدند، این ممکن نبود.

پس مسئله این نیست که انگلیسی بلد باشی — این است که بدانی با آن متن انگلیسی چه کار کنی.

۴.۳.۲

ترجمه با خود ایجنت: خطا را بده، فارسی بخواه

ساده‌ترین و مؤثرترین ترفند این فصل، و شاید کل ماژول.

به‌خاطر بسپار متن خطا را عیناً کپی کن و بده — نه توصیفش را. «یک خطایی داد» تقریباً بی‌فایده است؛ متنِ کاملِ خطا معمولاً همان اول جواب می‌دهد. حتی اگر یک کلمه‌اش را نمی‌فهمی، کپی‌کردنش که سخت نیست.

و به‌جای «این یعنی چه؟» — که یک ترجمه‌ی لفظی می‌گیری — این‌طور بخواه:

و اگر می‌خواهی بگردی ولی نمی‌دانی چطور: بگو «یک عبارت جست‌وجوی خوب برای این خطا به من بده». آن‌وقت خودت با عبارت درست می‌گردی — و قاعده‌های فصل ۲.۸.۲ اینجا به کار می‌آیند: مسیر و نام فایلِ خودت را از متن بردار، چون برای دیگران وجود ندارند.

۴.۳.۳

واژه‌نامه‌ی خطاهای رایج

چند الگویی که زیاد می‌بینی. لازم نیست حفظشان کنی — کافی است بدانی هر دسته چه جنسی از مشکل است، تا بدانی کجا را بگردی. (نسخه‌ی کاملِ خطابه‌خطا، با اولین قدمِ هرکدام، در ضمیمه‌ی واژه‌نامه‌ی خطاهاست.)

و یک الگوی کلی که وقت زیادی نجات می‌دهد: در پیام‌های خطای طولانی، مفیدترین خط معمولاً اولین یا آخرین خط است — وسطش جزئیات فنی است که فعلاً لازم نداری.

۴.۳.۴

خواندن یک مستند انگلیسی با کمک ایجنت

گاهی مشکل خطا نیست — باید یک صفحه‌ی مستندات را بفهمی. و اینجا هم روشِ درست «ترجمه‌اش کن» نیست.

سه درخواستی که بهتر جواب می‌دهند:

و یک احتیاط مهم که از فصل ۱.۱ می‌آید: خلاصه‌ای که می‌گیری ممکن است چیزی را جا انداخته باشد یا از خودش اضافه کرده باشد. پس برای هر چیزی که قرار است اجرایش کنی، بخواه عین جمله را از خود صفحه نقل کند — همان روش نقلِ مستقیم که در فصل ۱.۱.۴ به‌عنوان ضدتوهم آوردیم.

و لینکِ خودِ صفحه را نگه دار. در همین جزوه هم هر جا رفرنسی داده‌ایم، لینک اصلی کنارش هست — عمداً، تا خودت بتوانی چک کنی.

نکته‌ی طلایی انگلیسیِ ضعیف دیگر مانع فنی نیست، ولی یک عادت را نگه دار: متنِ اصلیِ خطا را جایی کنار خودت داشته باش، حتی وقتی ترجمه‌اش را خوانده‌ای. چون اگر مجبور شدی بگردی یا از کسی بپرسی، آن متنِ انگلیسی همان چیزی است که جواب می‌آورد — نه ترجمه‌اش.
ضدالگو دادنِ توصیفِ خطا به‌جای متنش: «یه ارور داد که فایل رو نمی‌شناخت». این جمله به هر کدام از شش دسته‌ی بالا می‌تواند مربوط باشد، و هر کدام درمانِ متفاوتی دارد. متن خطا یک کپی‌پیست است و ده برابر بیشتر اطلاعات دارد.

تمرین (ساختنی)

این پیام خطا را با ایجنت بفهم و درمانش را بنویس.

Error: ENOENT: no such file or directory, open 'data/sales.csv'

۱. عیناً بدهش و بپرس: یعنی چه، و چه چیزی باید عوض شود؟

۲. بعد بپرس سه علت محتملش چیست و برای هرکدام چطور بفهمی همان است.

۳. بگو کدام دسته از واژه‌نامه‌ی بخش ۴.۳.۳ است.

۴. و یک عبارت جست‌وجوی خوب برایش بنویس — با رعایت قاعده‌ی «چیزهای مخصوصِ خودت را بردار».

پاسخنامه — یک نمونه‌ی خوب را ببین

دسته: «پیدا نشد» — همان دسته‌ی اول. ENOENT کوتاه‌شده‌ی «چنین فایل یا پوشه‌ای وجود ندارد» است.

سه علت و راه تشخیص:

«۱) در پوشه‌ی اشتباهی ایستاده‌ام. تشخیص: pwd بزنم و ببینم کجایم.»

«۲) پوشه‌ی data وجود دارد ولی اسم فایل فرق دارد. تشخیص: ls data و ببینم داخلش چه هست.»

«۳) اصلاً پوشه‌ی data نیست. تشخیص: ls در پوشه‌ی جاری.»

عبارت جست‌وجو: ENOENT no such file or directoryبدون data/sales.csv، چون آن مالِ من است و برای دیگران وجود ندارد.

نتیجه: «امتحان کردم؛ علت دوم بود — فایل sales-1405.csv بود نه sales.csv

چرا این جواب خوب است: به‌جای پذیرفتن اولین راه‌حل، سه فرض ساخته و هر کدام را با یک آزمون یک‌خطی قابل‌تشخیص کرده. و درمان با امتحان تأیید شده، نه با حدس.

ذخیره شد