پرامپتهای برنامهنویسی برای Grok
پرامپتهایی برای چالشهای روزمره نرمافزار: خواندن کدهای ناآشنا، ردگیری باگها، نوشتن تست و داکیومنت، و تبدیل اسکرینشات طرح به کد فرانتاند.
این بیست پرامپت برنامهنویسی، کارهای معمول یک هفته کاری یک توسعهدهنده را پوشش میدهند: رمزگشایی پیامهای خطا، ردیابی باگهایی که باعث کرش برنامه نمیشوند اما خروجی اشتباه میدهند، بازبینی تغییرات کد (diff)، نوشتن تستها و fixtureها، ساخت کوئریهای SQL و عبارات منظم (Regex)، نوشتن اسکریپتهای شل، مستندسازی API، رفع گرههای کاری در Git و یادگیری یک زبان جدید از طریق مقایسه آن با زبانی که از قبل بلد هستید.
Grok زمانی سریعتر و بهتر پاسخ میدهد که جزئیات دقیق را در اختیار داشته باشد. زبان، فریمورک و نسخه مورد استفادهتان را مشخص کنید، کوچکترین بخش کدی را که مشکل را نشان میدهد همراه با متن کامل خطا ارسال کنید و توضیح دهید که چه انتظاری داشتید. برای رفع باگها، در چند پرامپت پیشنهاد شده از Grok 4.3 Thinking استفاده کنید؛ این مدل قبل از پاسخدهی، مسیر اجرای کد را تحلیل میکند که برای خطاهای یکیکمتر/بیشتر (off-by-one)، شرایط مسابقه (race conditions) و شرطهای پیچیده بسیار کاربردی است. Grok 4.20 برای توضیحات سریع و کدهای آماده (boilerplate) عالی است. دو پرامپت نیز از قابلیت درک تصویر بهره میبرند: یکی برای اسکرینشات از بههمریختگی چیدمان صفحه و دیگری برای طرح اولیه مدل داده روی وایتبرد.
هشدارهای همیشگی اینجا هم صدق میکنند، شاید حتی بیشتر از جاهای دیگر. مدلها دارای محدودیت زمانی دانش هستند و به مستندات لحظهای دسترسی ندارند، بنابراین ممکن است نام یک تابع از کتابخانهای تغییر کرده باشد یا اصلاً وجود خارجی نداشته باشد. کدی که درست به نظر میرسد ممکن است خطا بدهد، پس حتماً آن را اجرا و تست کنید. هرگز کلیدهای API، رمزهای عبور، توکنها یا دادههای کاربران را کپی نکنید؛ پیامهای شما برای تولید پاسخ از طریق سرور ما به ارائهدهنده مدل ارسال میشوند. پیامهای بسیار طولانی کوتاه میشوند، پس فقط تابعی را که اهمیت دارد بفرستید، نه کل مخزن کد را.
ببینید توسعهدهندگان چگونه از Grok استفاده میکنند، ابزار Code Assistant را باز کنید یا درباره Grok API بخوانید.
چگونه این پرامپتها را شخصیسازی کنید
- استک خود را با ذکر نسخه بنویسید: "Node 22, TypeScript 5, Express" بسیار بهتر از گفتن کلی "JavaScript" است.
- برای کارهای بزرگتر از یک تابع، ابتدا برنامه اجرایی را بخواهید و سپس خود کد را.
- توضیح هر تغییر را جداگانه بخواهید تا بتوانید علاوه بر تغییرات کد، منطق پشت آن را هم بررسی کنید.
- مدل Grok 4.7 را برای سختترین مشکلات نگه دارید؛ این مدل محدود به ۱۰ پیام در روز است.
-
01
رمزگشایی پیام خطا
من از [زبان یا فریمورک و نسخه] استفاده میکنم. این خطا را به زبان ساده توضیح دهید، سه دلیل محتمل آن را به ترتیب اولویت فهرست کنید و بگویید برای هرکدام اول باید چه چیزی را بررسی کنم: [متن کامل خطا و stack trace را بچسبانید]
-
02
ردیابی خط به خط نتیجه اشتباه
این تابع با ورودی [ورودی]، خروجی [نتیجه فعلی] را برمیگرداند در حالی که انتظار دارم [نتیجه مورد انتظار] باشد. اجرای کد را با این ورودی خط به خط دنبال کنید، همه متغیرها را زیر نظر بگیرید و در اولین خطی که وضعیت متغیرها از مقدار درست منحرف میشود متوقف شوید: [کد را بچسبانید]
-
03
ردیابی Race Condition
این کد [زبان] گاهی زیر بار ترافیکی [نشانه/رفتار غیرعادی] را نشان میدهد، اما وقتی تکی تست میکنم هیچ مشکلی ندارد: [کد را بچسبانید]. به دنبال Race Condition، وضعیتهای مشترک (shared state) و فرضیات مربوط به ترتیب اجرا باشید. برای هر مورد مشکوک، ترتیب همپوشانی دقیق رشتهها که باعث باگ میشود و نحوه رفع آن را توضیح دهید.
-
04
بررسی پول ریکوئست (PR)
این diff را مثل یک توسعهدهنده ارشد سختگیر در یک پروژه [زبان] بازبینی کنید. نظرات را در دستههای باگها، ریسکها، خوانایی و تستها گروهبندی کنید، شماره خطوط را ذکر کنید و در پایان نظر نهاییتان را بنویسید: تأیید (approve)، تأیید با اعمال تغییرات، یا درخواست تغییرات، بههمراه یک جمله دلیل: [diff را بچسبانید]
-
05
فهرست حالتهای حدی و نوشتن تست
برای تابع زیر، تمام حالتهای حدی (edge case) که باید تست شوند را همراه با دلیل فهرست کنید، سپس تستها را در [فریمورک تست] بنویسید. حداقل یک تست قرار دهید که انتظار دارید با کد فعلی fail شود و مشخص کنید کدام است: [تابع را بچسبانید]
-
06
تولید دادههای تست پیچیده و خاص
دادههای تست (fixtures) واقعگرایانهای برای این مدل داده در قالب [فرمت، مثلاً JSON یا یک factory function] بنویسید: [مدل را بچسبانید]. شامل ده رکورد معمولی و پنج رکورد خاص و چالشبرانگیز (مثل رشتههای خالی، نامهای بسیار طولانی، کاراکترهای غیرلاتین و تاریخهای مرزی) باشد و مشخص کنید هرکدام جزو کدام دستهاند.
-
07
تبدیل سؤال متنی به کوئری SQL
با استفاده از این ساختار جدول (schema): [اسکیما را بچسبانید]، یک کوئری [پایگاهداده] بنویسید که [دادههای مورد نظر] را برگرداند. کوئری را بخشبهبخش توضیح دهید و سپس نسخهای از آن را ارائه دهید که [حالت خاص، مثلاً مشتریان بدون سفارش] را هم مدیریت کند.
-
08
دیباگ رجکس با رفتار نادرست
این عبارت منظم (regex) قرار است [رفتار مورد انتظار] را در [زبان یا ابزار] انجام دهد، اما [مشکل فعلی]: [رجکس را بچسبانید]. آن را به بخشهای مجزا بشکنید و هر بخش را توضیح دهید، ورودیای ارائه دهید که مشکل را نشان دهد، و نسخه اصلاحشده را بههمراه سه رشته متنی که باید حتماً رد (reject) شوند بنویسید.
-
09
اسکریپتنویسی ایمن کارهای روزمره
یک اسکریپت [bash یا PowerShell] بنویسید که [وظیفه، مثلاً فایلهای لاگ قدیمیتر از ۳۰ روز را زیپ و آرشیو کند]. اسکریپت را ایمن طراحی کنید: حالت dry-run داشته باشد که فقط کارهای در شرف انجام را نمایش دهد، پیامهای خطای واضح بدهد و برای هر خطی که فایلی را حذف یا بازنویسی میکند کامنت توضیحی بگذارید.
-
10
مستندسازی اندپوینت API
یک مستند مرجع برای این اندپوینت بنویسید: [کد هندلر یا روت را قرار دهید]. متد و مسیر، پارامترها با نوع داده و اجباری یا اختیاری بودن آنها، یک نمونه درخواست، نمونه پاسخهای موفق و خطا، و تمام کدهای وضعیتی که ممکن است بازگرداند را مشخص کنید.
-
11
حل مشکل بههمریختگی در Git
مخزن Git من در این وضعیت است: [خروجی git status و چند خط آخر git log را قرار دهید]. هدف من این بود: [هدف]. به زبان ساده توضیح دهید چه اتفاقی افتاده و دستورات دقیق برای رفع آن را ارائه دهید؛ با دستوری شروع کنید که از کار فعلی من نسخه پشتیبان بگیرد. قبل از اجرای هر دستوری که تاریخچه را بازنویسی میکند، هشدار دهید.
-
12
بازنویسی کد به شیوه اصولی و بومی زبان
من به [زبان مبدأ] مسلط هستم و در حال یادگیری [زبان جدید] میباشم. این قطعهکد را که به سبک معمول من نوشته شده بررسی کنید: [کد را قرار دهید] و آن را همانطور که یک توسعهدهنده باتجربه [زبان جدید] مینویسد بازنویسی کنید. سپس الگوها و اصطلاحاتی (idioms) که استفاده کردهاید و در زبان قبلی من معادل مستقیمی ندارند را توضیح دهید.
-
13
رفع مشکل چیدمان (Layout) از روی اسکرینشات
من اسکرینشات صفحهام را پیوست کردهام. مشکل: [ایرادی که دیده میشود]. این هم HTML و CSS آن بخش: [کد را قرار دهید]. علت را پیدا کنید، کمترین تغییر لازم در CSS را ارائه دهید و توضیح دهید چرا این اتفاق افتاد تا دوباره تکرارش نکنم.
-
14
تبدیل طرح وایتبرد به جداول دیتابیس
تصویری از طرح وایتبرد مدل داده برای [نام برنامه] را پیوست کردهام. آن را به تعاریف جداول [نوع دیتابیس] همراه با کلیدهای اصلی (PK)، کلیدهای خارجی (FK) و نوع دادههای منطقی تبدیل کنید. هر رابطهای که در طرح مبهم است را فهرست کنید و پیش از فرضیهسازی، از من دربارهاش سؤال بپرسید.
-
15
محاسبه پیچیدگی و ارائه روش سریعتر
پیچیدگی زمانی و حافظهای این تابع چیست و چرا؟ [کد را قرار دهید]. اگر برای ورودیهایی با اندازه حدود [اندازه] روش سریعتری وجود دارد، آن را نشان دهید و بگویید چقدر خوانایی کد را تحت تأثیر قرار میدهد.
-
16
ریفکتور کد بدون تغییر در رفتار آن
این تابع را برای خوانایی بهتر بازنویسی (ریفکتور) کنید، بدون اینکه عملکرد آن تغییر کند: [کد را قرار دهید]. در مراحل کوچک و مشخص پیش بروید، هر تغییر را در یک خط توضیح دهید و هر رفتاری را که در موردش مطمئن نبودید فهرست کنید تا قبل از ادغام تأیید کنم.
-
17
نوشتن فایل README از ابتدا
یک فایل README برای پروژه من بنویسید: [نام پروژه] که [کارکرد آن]. بخشها: معرفی پروژه، راهنمای شروع سریع با دستورات آماده کپیپیست، گزینههای پیکربندی در یک جدول، خطاهای رایج، و نحوه مشارکت. این هم فایلها و دستورات کلیدی: [جزئیات را قرار دهید]
-
18
توضیح کدی که خودم ننوشتهام
عملکرد این کد [زبان برنامهنویسی] را برای کسی که برنامهنویسی بلد است اما با این پروژه آشنایی ندارد توضیح دهید. با یک خلاصه دوجملهای شروع کنید، بلوکبهبلوک پیش بروید و هر کدی را که شبیه باگ یا راهحل موقت و شلخته است مشخص کنید: [کد را قرار دهید]
-
19
یافتن نقاط ضعف و ایرادات طراحی
قصد دارم قابلیت [ویژگی] را به این شکل پیادهسازی کنم: [روش کار را توضیح دهید]. نقش وکیلمدافع شیطان را بازی کنید. سه روش اصلی که ممکن است این طراحی در پروداکشن شکست بخورد، علائم بروز آن، و در صورت وجود یک جایگزین کمهزینهتر را نام ببرید. کاملاً رک باشید؛ ترجیح میدهم الان بشنوم تا ساعت ۳ نصفهشب.
-
20
تبدیل کد به یک زبان دیگر
این کد [زبان مبدأ] را به کد تمیز و اصولی در [زبان مقصد] تبدیل کنید، نه یک ترجمه خطبهخط ساده: [کد را قرار دهید]. تا حد امکان از کتابخانه استاندارد زبان مقصد استفاده کنید، رفتار یکسان را حفظ کنید و مواردی را که این دو زبان در آنها رفتار متفاوتی دارند (مانند تقسیم اعداد صحیح یا انکودینگ رشتهها) فهرست کنید.
آمادهاید از Grok سوال بپرسید؟
بدون نیاز به حساب کاربری، دانلود یا کارت بانکی. چت را باز کنید، سوال خود را بنویسید و پاسخ زنده Grok را ببینید.
شروع چت