چرا خطاها و مستندات انگلیسیاند
یک واقعیت که عوض نمیشود و بهتر است زود بپذیریاش: تقریباً همهی پیامهای خطا، نام دستورها، و مستندات فنی انگلیسیاند.
دلیلش هم توطئه نیست: این ابزارها در جامعهای ساخته میشوند که زبان مشترکش انگلیسی است، و پیامهای خطا معمولاً ترجمه نمیشوند چون ترجمهی غلطشان بدتر از انگلیسیشان است — جستجوی متنِ ترجمهشده هیچ نتیجهای نمیدهد.
و اتفاقاً همان آخری یک مزیت پنهان دارد: چون خطاها انگلیسی و استانداردند، جستجوشدنیاند. هر خطایی که تو میگیری، هزار نفر قبلش گرفتهاند و جوابش جایی نوشته شده. اگر ترجمه میشدند، این ممکن نبود.
پس مسئله این نیست که انگلیسی بلد باشی — این است که بدانی با آن متن انگلیسی چه کار کنی.
ترجمه با خود ایجنت: خطا را بده، فارسی بخواه
سادهترین و مؤثرترین ترفند این فصل، و شاید کل ماژول.
بهخاطر بسپار متن خطا را عیناً کپی کن و بده — نه توصیفش را. «یک خطایی داد» تقریباً بیفایده است؛ متنِ کاملِ خطا معمولاً همان اول جواب میدهد. حتی اگر یک کلمهاش را نمیفهمی، کپیکردنش که سخت نیست.
و بهجای «این یعنی چه؟» — که یک ترجمهی لفظی میگیری — اینطور بخواه:
- «این خطا را به فارسی توضیح بده: یعنی چه، و چه چیزی باید عوض شود؟»
- «سه علت محتملش چیست، و برای هرکدام چطور بفهمم همان است؟» — همان تشخیصخواستن بهجای راهحلخواستن از فصل ۲.۸.۳.
- «این خطا از کارِ من است یا از خودِ ابزار؟» — تفکیک مفیدی است.
و اگر میخواهی بگردی ولی نمیدانی چطور: بگو «یک عبارت جستوجوی خوب برای این خطا به من بده». آنوقت خودت با عبارت درست میگردی — و قاعدههای فصل ۲.۸.۲ اینجا به کار میآیند: مسیر و نام فایلِ خودت را از متن بردار، چون برای دیگران وجود ندارند.
واژهنامهی خطاهای رایج
چند الگویی که زیاد میبینی. لازم نیست حفظشان کنی — کافی است بدانی هر دسته چه جنسی از مشکل است، تا بدانی کجا را بگردی. (نسخهی کاملِ خطابهخطا، با اولین قدمِ هرکدام، در ضمیمهی واژهنامهی خطاهاست.)
- «پیدا نشد» (
not found) — چیزی که خواستهای در جایی که گشته نیست. تقریباً همیشه مسئلهی مسیر است، نه خرابی. برگرد به فصل ۳.۲: در پوشهی درستی هستی؟ - «اجازه ندارم» (
permission denied) — فایل یا پوشه اجازهی دسترسی نمیدهد. مشکل کارِ تو نیست، تنظیمات دسترسی است. - «دستور شناخته نشد»
(
command not found) — آن ابزار نصب نیست، یا نصب شده و terminal تازه لازم دارد. همان چیزی که در فصل ۰.۸.۶ دیدی. - «خطای نگارشی» (
syntax error) — چیزی در متنِ یک فایل یا دستور، ساختارش شکسته. مثل همان کامای اضافهی فصل ۴.۲.۴. - «خیلی بزرگ است» (
too long) — از سقف context بزرگتر است. فصل ۱.۳ و ۴.۱.۲: بشکنش. - «اتصال برقرار نشد»
(
connection failed/timeout) — مسئلهی شبکه یا دسترسی است، نه کارِ تو. فصل ۰.۷.
و یک الگوی کلی که وقت زیادی نجات میدهد: در پیامهای خطای طولانی، مفیدترین خط معمولاً اولین یا آخرین خط است — وسطش جزئیات فنی است که فعلاً لازم نداری.
خواندن یک مستند انگلیسی با کمک ایجنت
گاهی مشکل خطا نیست — باید یک صفحهی مستندات را بفهمی. و اینجا هم روشِ درست «ترجمهاش کن» نیست.
سه درخواستی که بهتر جواب میدهند:
- «این صفحه را خواندم ولی نفهمیدم. در سه خط بگو این صفحه به چه سؤالی جواب میدهد.»
- «از این صفحه، فقط آن قسمتی را بگو که به کارِ من مربوط است — میخواهم فلان کار را بکنم.»
- «این صفحه دستوری دارد که باید اجرا کنم؟ اگر بله، عیناً کدام است و چه میکند؟»
و یک احتیاط مهم که از فصل ۱.۱ میآید: خلاصهای که میگیری ممکن است چیزی را جا انداخته باشد یا از خودش اضافه کرده باشد. پس برای هر چیزی که قرار است اجرایش کنی، بخواه عین جمله را از خود صفحه نقل کند — همان روش نقلِ مستقیم که در فصل ۱.۱.۴ بهعنوان ضدتوهم آوردیم.
و لینکِ خودِ صفحه را نگه دار. در همین جزوه هم هر جا رفرنسی دادهایم، لینک اصلی کنارش هست — عمداً، تا خودت بتوانی چک کنی.
تمرین (ساختنی)
این پیام خطا را با ایجنت بفهم و درمانش را بنویس.
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.»
چرا این جواب خوب است: بهجای پذیرفتن اولین راهحل، سه فرض ساخته و هر کدام را با یک آزمون یکخطی قابلتشخیص کرده. و درمان با امتحان تأیید شده، نه با حدس.