آنچه در این مقاله میخوانید [پنهانسازی]
مدلهای زبان بزرگ (LLMs) خیلی سریع محبوبیت پیدا کردن، مخصوصاً از وقتی که OpenAI چتبات ChatGPT رو برای دسترسی عمومی منتشر کرد. از اون زمان، مردم از ChatGPT برای اهداف سرگرمکننده، خلاقانه، و مفید استفاده کردن. اگه همیشه آرزو داشتین که از ChatGPT بهعنوان مربی کدنویسی پایتون خودتون استفاده کنین، ادامه این متن رو بخونید.
استفاده از ChatGPT بهعنوان مربی کدنویسی
اینکه ChatGPT رو بهعنوان مربی خودتون انتخاب کنین، به این معنی نیست که بخواین بدون هیچ دانشی از برنامهنویسی یه نرمافزار بسازین. بلکه باید روی استفاده از ChatGPT بهعنوان یه ابزار آموزشی تمرکز کنین. این ابزار نمیتونه شما رو بهعنوان برنامهنویس جایگزین کنه، ولی میتونه توی بهبود کدهاتون و یادگیری در این مسیر کمک بزرگی باشه.
تو این آموزش چی یاد میگیرین؟
- چطور ChatGPT رو راهاندازی کنین.
- چطور با کمک ChatGPT خطاهای کدتون رو پیدا و رفع کنین.
- کیفیت و سبک کدنویسیتون رو بهتر کنین.
- با ChatGPT برنامهنویسی مشارکتی انجام بدین.
- راههای جایگزین برای پیادهسازی یه قطعه کد رو بررسی کنین.
- پاسخ سوالات برنامهنویسیتون رو بگیرین.
همچنین با مثالهایی از پاسخهای نادرست و نامرتبط ChatGPT آشنا میشین و یاد میگیرین چطور با طراحی پرامپتهای بهتر پاسخهای دقیقتری دریافت کنین.
نکته: میتونین کدهای نمونه و پرامپتهای آماده مربوط به این آموزش رو دانلود کنین تا مهارت کدنویسی پایتونتون رو با کمک ChatGPT تقویت کنین.
مرحله ۱: راهاندازی ChatGPT برای کدنویسی
برای دسترسی به ChatGPT، فقط کافیه یه حساب کاربری توی OpenAI بسازین. وقتی به chat.openai.com برین، یه صفحه ورود یا ثبتنام براتون ظاهر میشه.
اگه قبلاً با ChatGPT کار کردین و حساب فعالی دارین، وارد بشین و به مرحله بعد برید. اگه حساب ندارین، روی «ثبتنام» (Sign up) کلیک کنین.
صفحه ثبتنام به شما اجازه میده با ایمیل، حساب گوگل، یا مایکروسافت، ثبتنام کنین. اگه ایمیل رو انتخاب کنین، باید یه رمز عبور قوی وارد کنین و فرآیند ثبتنام رو کامل کنین.
بعد از ثبتنام، به صفحه اصلی ChatGPT هدایت میشین، جایی که میتونین از طریق یه رابط گفتگویی سوالاتتون رو وارد کنین و پاسخها رو دریافت کنین.
نکته: بعد از هر بار اتمام جلسه مرورگر، ممکنه مجبور بشین دوباره وارد حساب کاربریتون بشین.
مرحله ۲: مراقب اطلاعات نادرست باشید
حالا که وارد ChatGPT شدین، احتمالاً دوست دارین سریع شروع کنین! ولی قبل از اینکه وارد عمل بشین، باید بدونین ممکنه با چه مشکلاتی مواجه بشین.
در حالی که مدلهای زبان بزرگ امکانات جدیدی برای یادگیری ارائه میدن، باید اثرات منفی احتمالی استفاده از ChatGPT بهعنوان مربی کدنویسی رو هم در نظر داشته باشین:
- وابستگی بیشازحد: اگه خیلی به ChatGPT برای پاسخها تکیه کنین، ممکنه روند یادگیریتون کند بشه. شما باید با فکر کردن، تلاش کردن، و بررسی مفاهیم، مسیرهای مغزی برای یادگیری بسازین.
- دقت: پاسخهای ChatGPT ممکنه گاهی نادرست یا نامرتبط باشن. باید همه جوابها رو بررسی کنین تا مفاهیم اشتباه یا روشهای بد رو یاد نگیرین.
در این بخش و بقیه آموزش، با چند مثال از پاسخهای نادرست و نامرتبط ChatGPT آشنا میشین. این مثالها بهتون کمک میکنن تا به خاطر داشته باشین که حتی اگه پاسخهای ChatGPT منطقی به نظر برسن، همیشه درست نیستن.
مرحله ۳: بررسی پاسخها و دریافت اطلاعات
در فرآیند معمول کار با ChatGPT، شما یه سوال رو توی رابط کاربری وارد میکنین و مدل زبانی پشت ChatGPT (مثل GPT-3.5) یه پاسخ تولید میکنه که بهصورت گفتگویی ظاهر میشه. ChatGPT حتی پاسخها رو بهطور مفید قالببندی میکنه.
مثلاً اگه از ChatGPT بخواین یه جدول مرجع از سینتکس پایتون ایجاد کنه، این ابزار یه جدول Markdown تولید میکنه که توی رابط کاربری خیلی زیبا نمایش داده میشه.
ولی خروجی همیشه قطعی نیست و ممکنه گاهی حتی اشتباه باشه.
اگه نتایج رو دوست نداشتین، میتونین با کلیک روی دکمه «تولید مجدد پاسخ» (Regenerate Response) یه پاسخ جدید بگیرین. همچنین میتونین بین پاسخها با استفاده از کلیدهای کوچک (< و >) جابهجا بشین.
مرحله ۴: محدودیتها رو بشناسید
خروجی ChatGPT ممکنه اطلاعات درست و مفیدی ارائه بده، ولی همیشه کامل نیست. مثلاً اگه ازش بخواین یه جدول مرجع سینتکس پایتون بسازه، ممکنه برخی از موارد مهم رو جا بندازه، مثل:
- تورفتگیها (Indentation)
- نحوه نوشتن رشتهها (String Literals)
- کامنتها (Comments)
ChatGPT بر اساس احتمال وقوع یک قطعه اطلاعات، بعد از ورودی شما پاسخ میده. ولی این به این معنی نیست که پیشبینی همیشه درست یا مرتبطه. بنابراین همیشه باید خروجی رو بررسی کنین.
مرحله ۵: بهبود نتایج با مهندسی پرامپت
مهندسی پرامپت یه مهارت مهمه که میتونین با استفاده از اون نتایج بهتر و دقیقتری از ChatGPT دریافت کنین. این مهارت به طراحی متن پرسشها برای گرفتن پاسخهای موردنظر تمرکز داره.
نکات کلیدی در نوشتن پرامپتها:
- دقت و شفافیت: دستورالعملها واضح و دقیق باشن.
- جزئیات: پرامپتهای طولانیتر و جزئیتر معمولاً نتایج بهتری تولید میکنن.
- استفاده از نشانهگذاری: برای جدا کردن بخشهای مختلف پرامپت، از نشانهگذاریها مثل سهتایی بکتیکها (
```
) استفاده کنین. - زمینه: توضیح بدین که هدف شما چیه و چه چیزی میخواین.
- تدریجی بودن: از مدل بخواین قدمبهقدم مسائل پیچیده رو حل کنه.
نمونه پرامپت بهتر طراحیشده
وقتی یه سوال رو بهصورت دقیقتر و با جزئیات بیشتر مطرح کنین، خروجی ChatGPT خیلی بهتر میشه. مثال:
پرامپت:
«تو یه برنامهنویس حرفهای با سالها تجربه در نوشتن کد پایتون و آموزش به دیگران هستی. میخوام مربی من باشی. لطفاً یه جدول مرجع Markdown از سینتکس پایتون با توضیحات مختصر و مثالهای کوتاه ایجاد کن.»
پاسخ ChatGPT:
Syntax | Example | Description |
---|---|---|
Variables | x = 5 |
Assign a value to a variable |
Conditionals | if x == 5: |
Execute code only if a condition is met |
Loops | for i in range(5): |
Execute code repeatedly |
Functions | def my_func(x, y): return x + y |
Reusable block of code |
Classes | class MyClass: def __init__(self, x): self.x = x |
Blueprint for creating objects |
ChatGPT میتونه ابزار خوبی برای یادگیری پایتون باشه، حتی بدون مهندسی پرامپت خیلی پیچیده. ولی اگه وقت بذارین و پرامپتها رو بهتر طراحی کنین، نتایج دقیقتر و کاربردیتری دریافت میکنین.
اگه هر سوال یا مشکلی داشتین، میتونین دوباره به ChatGPT برگردین و با اصلاح پرامپتها جوابهای بهتری بگیرین. 😉
دیباگ کردن کد با کمک ChatGPT
برنامهنویسی بدون خطا امکانپذیر نیست! خطاها بخشی طبیعی از فرآیند یادگیری و توسعه کد هستند. پیامهای خطا به شما کمک میکنند تا بفهمید چه مشکلی وجود دارد و راهنماییهایی برای رفع آن ارائه میدهند.
اما گاهی فهمیدن پیامهای خطا دشوار میشود، مخصوصاً اگر تجربه کافی نداشته باشید. اینجاست که ChatGPT میتواند به شما کمک کند. شما میتوانید کد و پیام خطا را در محیط ChatGPT کپی کنید و از آن بپرسید که مشکل چیست و چگونه باید آن را رفع کنید.
مثال: رفع خطای TypeError
فرض کنید در حال نوشتن یک اسکریپت در پایتون هستید که سن کاربر را دریافت کرده و مقدار سال آینده را محاسبه میکند. اما با خطای زیر مواجه میشوید:
python
>>> current_age = input("Enter your current age: ")
Enter your current age: 36
>>> print("Next year you'll be:", current_age + 1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
اگر معنی پیام خطا را نمیدانید، کافی است کد و پیام خطا را در ChatGPT وارد کنید. ChatGPT مشکل را توضیح داده و راهحلی ارائه میدهد:
پاسخ ChatGPT:
scss
پیام خطایی که مشاهده میکنید به این دلیل است که متغیر `current_age` بهعنوان رشته (string) ذخیره شده، ولی شما تلاش میکنید یک عدد صحیح (integer) را به آن اضافه کنید. برای رفع این مشکل، باید مقدار `current_age` را با استفاده از تابع `int()` به عدد صحیح تبدیل کنید. کد اصلاحشده به این شکل خواهد بود:
current_age = input("Enter your current age: ")
next_year_age = int(current_age) + 1
print("Next year you'll be:", next_year_age)
این کد ابتدا سن کاربر را دریافت میکند، سپس مقدار ورودی را به عدد صحیح تبدیل میکند و در نهایت نتیجه را چاپ میکند.
بهبود بیشتر کد:
یک مربی باتجربه ممکن است پیشنهاد دهد که تبدیل مقدار ورودی به عدد صحیح از همان ابتدا انجام شود تا ایمنی کد افزایش یابد:
python
current_age = int(input("Enter your current age: "))
print("Next year you'll be:", current_age + 1)
این تغییر باعث میشود که متغیر current_age
همیشه بهصورت عدد صحیح ذخیره شود.
رفع خطاهای سینتکسی:
ChatGPT میتواند خطاهای سینتکسی را که پایتون نمیتواند آنها را اجرا کند، نیز تشخیص دهد. برای مثال:
فرض کنید قصد دارید از پایتون بهعنوان ماشین حساب استفاده کنید و تلاش میکنید عددی را تقسیم کنید:
python
>>> 3 : 4
File "<input>", line 1
3 : 4
^
SyntaxError: illegal target for annotation
این خطا نشان میدهد که سینتکس اشتباه است. اگر کد و پیام خطا را در ChatGPT وارد کنید، پاسخ زیر را دریافت خواهید کرد:
پاسخ ChatGPT:
xquery
پیام خطا نشان میدهد که شما تلاش کردید سینتکس علامت (:) را بهصورت نامعتبر استفاده کنید. در پایتون، علامت (:) برای کاربردهایی مثل تعریف امضاهای توابع یا کلاسها، ایجاد برشهای دنبالهها، یا ایجاد دیکشنریها استفاده میشود.
اما در کد شما، علامت (:) بین دو عدد استفاده شده که سینتکس درستی نیست. اگر میخواهید نسبت یا کسر دو عدد را بیان کنید، باید از اپراتور تقسیم (`/`) استفاده کنید. برای مثال:
ratio = 3 / 4
print(ratio) # خروجی: 0.75
این کد عدد ۳ را بر عدد ۴ تقسیم کرده و یک عدد اعشاری (float) تولید میکند.
رفع خطاهای منطقی با ChatGPT
خطاهای منطقی معمولاً به این شکل هستند که کد اجرا میشود ولی خروجی مورد انتظار را تولید نمیکند. این نوع خطاها پیدا کردنشان دشوار است. ChatGPT میتواند این خطاها را شناسایی کند.
مثال: چالش FizzBuzz
فرض کنید میخواهید یک تابع بنویسید که چالش FizzBuzz را حل کند:
- اگر عدد بر ۳ بخشپذیر باشد،
"fizz"
برگرداند. - اگر عدد بر ۵ بخشپذیر باشد،
"buzz"
برگرداند. - اگر عدد بر ۱۵ بخشپذیر باشد،
"fizz buzz"
برگرداند.
کدی نوشتهاید که به نظر خوب کار میکند:
python
def fizzbuzz(number):
if number % 3 == 0:
return "fizz"
elif number % 5 == 0:
return "buzz"
elif number % 15 == 0:
return "fizz buzz"
else:
return number
اما وقتی این تابع را با ورودی تست میکنید، خروجی مورد انتظار را دریافت نمیکنید:
python
>>> fizzbuzz(3)
"fizz"
>>> fizzbuzz(5)
"buzz"
>>> fizzbuzz(15)
"fizz"
چرا fizzbuzz(15)
به جای "fizz buzz"
مقدار "fizz"
را برمیگرداند؟ اگر این کد را در ChatGPT وارد کنید، پاسخ زیر را دریافت خواهید کرد:
پاسخ ChatGPT:
applescript
مشکل در این است که شرط بخشپذیری بر ۱۵ باید قبل از شرایط بخشپذیری بر ۳ و ۵ قرار گیرد. زیرا عددی که بر ۱۵ بخشپذیر باشد، بر ۳ و ۵ نیز بخشپذیر است و کد فعلی مقدار `"fizz"` یا `"buzz"` را قبل از رسیدن به شرط `"fizz buzz"` برمیگرداند.
کد اصلاحشده:
def fizzbuzz(number):
if number % 15 == 0:
return "fizz buzz"
elif number % 3 == 0:
return "fizz"
elif number % 5 == 0:
return "buzz"
else:
return number
برنامهنویسی مشارکتی با ChatGPT
فرض کنید در حال توسعه یک بازی حدس عدد هستید و کد زیر را نوشتهاید که به خوبی کار میکند:
python
import random
num = random.randint(1, 100)
i = None
while i != num:
i = int(input("Guess the number: "))
if i < num:
print("Too low")
elif i > num:
print("Too high")
else:
print("Correct!")
میتوانید کد را در ChatGPT وارد کنید و از آن بخواهید که پیشنهادهایی برای بهبود کد ارائه دهد.
بهبود نام متغیرها:
ChatGPT پیشنهاد میدهد که نام متغیرها توصیفیتر باشند:
python
import random
random_number = random.randint(1, 100)
user_guess = None
while user_guess != random_number:
user_guess = int(input("Guess the number: "))
if user_guess < random_number:
print("Too low")
elif user_guess > random_number:
print("Too high")
else:
print("Correct!")
بهبود پیامهای کاربر:
برای تعامل بهتر با کاربر، ChatGPT پیامها را به شکل زیر تغییر میدهد:
python
import random
random_number = random.randint(1, 100)
user_guess = None
while user_guess != random_number:
user_guess = int(input("Guess a number between 1 and 100: "))
if user_guess < random_number:
print("Your guess is too low. Try again!")
elif user_guess > random_number:
print("Your guess is too high. Try again!")
else:
print("Congratulations, you guessed the number correctly!")
ماژولار کردن کد با استفاده از توابع
ChatGPT میتواند کد شما را به صورت یک تابع بازنویسی کند تا قابلیت استفاده مجدد داشته باشد:
python
import random
def guess_the_number():
random_number = random.randint(1, 100)
user_guess = None
while user_guess != random_number:
user_guess = int(input("Guess a number between 1 and 100: "))
if user_guess < random_number:
print("Your guess is too low. Try again!")
elif user_guess > random_number:
print("Your guess is too high. Try again!")
else:
print("Congratulations, you guessed the number correctly!")
اضافه کردن آرگومانهای پیشفرض:
برای انعطاف بیشتر، ChatGPT پیشنهاد میدهد که بازه حدس عدد بهعنوان آرگومانهای پیشفرض اضافه شود:
python
import random
def guess_the_number(low=1, high=100):
random_number = random.randint(low, high)
user_guess = None
while user_guess != random_number:
user_guess = int(input(f"Guess a number between {low} and {high}: "))
if user_guess < random_number:
print("Your guess is too low. Try again!")
elif user_guess > random_number:
print("Your guess is too high. Try again!")
else:
print("Congratulations, you guessed the number correctly!")
اضافه کردن مستندسازی و تایپ هینت
برای خوانایی بهتر کد، ChatGPT مستندسازی و تایپ هینت اضافه میکند:
python
import random
def guess_the_number(low: int = 1, high: int = 100) -> int:
"""
Plays a guessing game where the user must guess a random number between
`low` and `high`. Returns the randomly generated number.
Args:
low (int): The lowest possible number in the range (default 1).
high (int): The highest possible number in the range (default 100).
Returns:
int: The randomly generated number.
"""
random_number = random.randint(low, high)
user_guess = None
while user_guess != random_number:
user_guess = int(input(f"Guess a number between {low} and {high}: "))
if user_guess < random_number:
print("Your guess is too low. Try again!")
elif user_guess > random_number:
print("Your guess is too high. Try again!")
else:
print("Congratulations, you guessed the number correctly!")
return random_number
پاسخ به سوالات برنامهنویسی با کمک ChatGPT
یکی از کاربردهای عالی ChatGPT اینه که میتونید سوالاتتون در مورد مفاهیم عمومی برنامهنویسی یا پایتون رو ازش بپرسید. این ابزار میتونه به شما توضیحات سادهای بده و درک شما از مفاهیم رو ارتقا بده.
مثال: تفاوت بین لیست و تاپل در پایتون
فرض کنید میخواهید تفاوت بین دو نوع داده پرکاربرد در پایتون، یعنی لیستها و تاپلها، رو یاد بگیرید. سوالتون رو میتونید اینطور مطرح کنید:
پرسش:
“تفاوت لیست و تاپل در پایتون چیه؟”
پاسخ ChatGPT:
markdown
در پایتون، لیستها و تاپلها هر دو برای ذخیره مجموعهای از دادهها استفاده میشن، اما تفاوتهای کلیدی بین اونها وجود داره:
1. **تغییرپذیری (Mutability):**
- لیستها قابل تغییر هستن (میتونید مقدارهاشون رو تغییر بدید، اضافه کنید یا حذف کنید).
- تاپلها غیرقابل تغییر هستن (بعد از ایجاد نمیتونید مقدارهاشون رو تغییر بدید).
2. **سینتکس:**
- لیستها با براکتهای مربعی `[]` تعریف میشن.
- تاپلها با پرانتز `()` تعریف میشن.
مثال:
```python
my_list = [1, 2, 3]
my_tuple = (1, 2, 3)
-
کاربرد:
- لیستها زمانی استفاده میشن که نیاز دارید مجموعهای از آیتمها رو که ممکنه بعداً تغییر کنن ذخیره کنید.
- تاپلها زمانی استفاده میشن که نیاز دارید مجموعهای از آیتمها رو که ثابت باقی میمونن ذخیره کنید، مثل مختصات یا تاریخ و زمان.
-
عملکرد (Performance):
- دسترسی به عناصر در تاپلها معمولاً سریعتر از لیستهاست، چون تاپلها بهصورت بلوکهای پیوسته در حافظه ذخیره میشن.
- لیستها ممکنه نیاز به تخصیص حافظه جدید و کپی کردن عناصر داشته باشن اگر اندازهشون بزرگتر از ظرفیت اولیه بشه.
خلاصه:
- لیستها قابل تغییر هستن، با براکت مربعی تعریف میشن، و برای ذخیره آیتمهایی که ممکنه تغییر کنن مناسبن.
- تاپلها غیرقابل تغییر هستن، با پرانتز تعریف میشن، و برای ذخیره آیتمهایی که ثابت باقی میمونن مناسبن.
yaml
---
### **پرسشهای تکمیلی**
اگر پاسخ بالا برای شما کمی پیچیده بود، میتونید سوالات بیشتری بپرسید تا پاسخ رو بهتر درک کنید. برای مثال:
- تفاوت "قابل تغییر" و "غیرقابل تغییر" چیه؟
- میتونی یه مثال واقعی از استفاده لیست و تاپل بزنی؟
- چه موقع بهتره از تاپل استفاده کنیم؟
ChatGPT به این سوالات پاسخهای مفید و تکمیلی میده که میتونید ازش برای یادگیری بهتر استفاده کنید.
---
### **بررسی منابع و لینکها**
همیشه باید پاسخهای ChatGPT رو بررسی کنید. چون این ابزار بر اساس احتمال کلمات رو کنار هم میچینه و ممکنه اطلاعات نادرست یا ناقص بده. برای بررسی بیشتر، میتونید ازش بخواهید منابعی ارائه بده.
**پرسش:**
> "لطفاً چند لینک برای توضیح این موضوع بده."
ChatGPT معمولاً لینکهایی ارائه میده که میتونید بررسی کنید. البته باید مطمئن بشید که این لینکها معتبر هستن و اطلاعات ارائهشده درست هستن. همیشه به دنبال سایتهای معتبر مثل مستندات رسمی پایتون باشید.
---
### **جستجوی مستندات پایتون با کمک ChatGPT**
فرض کنید در مورد فایل `__init__.py` در پایتون سوال دارید. وقتی در مستندات پایتون جستجو میکنید، ممکنه به نتایج نامرتبط برسید که باعث سردرگمی بشه. در این مواقع، میتونید از ChatGPT بخواهید لینک مستقیم به مستندات مرتبط رو ارائه بده.
**پرسش:**
> "لطفاً لینک مستندات پایتون که فایل `__init__.py` رو توضیح میده ارائه بده."
**پاسخ ChatGPT:**
البته! اینجا لینک مستندات پایتون که فایل __init__.py
رو توضیح میده آورده شده:
https://docs.python.org/3/tutorial/modules.html#packages
این صفحه توضیحی کلی در مورد پکیجها در پایتون و نحوه ایجاد اونها، از جمله هدف و استفاده از فایل __init__.py
ارائه میده.
yaml
ChatGPT نمیتونه مثل موتور جستجوی کلاسیک عمل کنه، اما میتونه متنهایی تولید کنه که به پیدا کردن اطلاعات مرتبط کمک کنه.
---
### **گامهای بعدی**
حالا که یاد گرفتید چطور از ChatGPT برای یادگیری پایتون استفاده کنید، میتونید این کارها رو انجام بدید:
1. از ChatGPT برای پیشنهاد پروژهها و راهنمایی در مورد نحوه اجراشون استفاده کنید.
2. پروژهای که پیشنهاد شده رو با همکاری ChatGPT اجرا کنید و مطمئن بشید که کار میکنه.
3. یکی از پروژههای موجودتون رو بهبود بدید و کیفیت کد رو افزایش بدید.
4. از ChatGPT بخواهید تستهایی برای کد پروژهتون بنویسه.
5. مستندات پروژهتون رو با کمک ChatGPT تولید کنید.
اگه در دریافت پاسخهای مفید مشکل دارید، میتونید مهارتهای طراحی پرامپت رو یاد بگیرید تا نتایج بهتری بگیرید.
نتیجهگیری
ChatGPT یه ابزار آموزشی فوقالعاده برای یادگیری پایتون و بهبود مهارتهای برنامهنویسی شماست. این ابزار همیشه در دسترسه، خلاقیت بالایی داره، و میتونه به شما کمک کنه تا مشکلات رو از زاویههای جدیدی ببینید. اما به یاد داشته باشید که موفقیت شما به میزان تلاش و بررسیهای دقیق شما بستگی داره. ChatGPT یه ابزار کمکیه، ولی در نهایت، یادگیری عمیق و پیشرفت شما کاملاً به خودتون وابسته است.
پس از این ابزار بهعنوان یک همراه در مسیر یادگیری استفاده کنید و مهارتهای برنامهنویسی خودتون رو ارتقا بدید! 😊