Vibe Coding؛ ترند موقت یا آغاز مسیری تازه؟ چطور در کمتر از 3 ساعت مگاسریال را توسعه دادم

vibe coding
141 بازدید
۱۴۰۵-۰۴-۲۸
8 دقیقه
  • نویسنده: MasoudHD
  • درباره نویسنده: توسعه دهنده‌ی امبدد و طراح سخت افزار

چه خوش‌مون بیاد چه نیاد، دنیا داره تغییر میکنه. هوش مصنوعی علیرغم تمام نظرهای مثبت و منفی که در موردش میشنویم، داره قواعد بازی رو عوض میکنه. مگاسریال حاصل همین تغییر قواعده؛ ابزاری که ساختنش با روش‌های سنتی شاید ماه‌ها زمان میبرد، ولی با ابزارهای جدید توی چند ساعت جمع شد.

Vibe Coding ترند این روز‌های دنیای برنامه‌نویسی

خب اول از همه بیایید در مورد معنی این اصطلاح شروع کنیم. طبق تعریفی که دیکشنری merriam webster ارائه داده معنی ‌‌Vibe Coding میشه:

Vibe coding (also written as vibecoding) is a recently coined term for the practice of writing code, making web pages, or creating apps, by just telling an AI program what you want, and letting it create the product for you. In vibe coding the coder does not need to understand how or why the code works, and often will have to accept that a certain number of bugs and glitches will be present. The verb form of the word is vibe code

ترجمه:

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

توی این مدل، لازم نیست کاربر بدونه کدی که نوشته شده چطوری یا چرا کار می‌کنه و اغلب هم باید با این کنار بیاد که محصول یک سری باگ و ایراد همراهش داره. فعل این کار هم می‌شه «وایب کد کردن».

این اصطلاح رو اولین بار Andrej Karpathy بنیان‌گذار OpenAI به کار برد:

There’s a new kind of coding I call “vibe coding“, where you fully give in to the vibes, embrace exponentials, and forget that the code even exists. 

ترجمه:

نوعی از برنامه‌نویسی به وجود اومده که من بهش vibe coding میگم، حالتی که تو تسلیم حس و حالت میشی و منطق و ساختار رو کنار میذاری، به سرعت جلو میری و فراموش میکنی چیزی به اسم کدنویسی اصلاً وجود داشته.

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

در این مقاله قصد دارم اولین تجربه‌ی خودم در این حوزه رو به اشتراک بذارم و با هم ببینیم چطور میشه با چند جمله‌ی ساده ابزار کاربردی و مفیدی توسعه داد.

داستان از کجا شروع شد؟

احتمالاً شما هم مثل من بارها به دنبال یک سریال مانیتور به درد بخور که امکانات و ظاهر خوبی داشته باشه بودید  و به در بسته خوردید و کلی نرم‌افزار رو تست کردید که هیچ‌کدوم اون چیزی نبودن که دنبالش بودید. ابزارهای موجود هر کدوم یک مشکلی دارن؛ یکی خیلی ساده‌ست و هیچ امکاناتی نداره، یکی امکاناتش خوبه ولی ظاهرش انگار برای زمانیه که مایکروسافت تازه ویندوز ۹۸ رو معرفی کرده (البته اگه ویندوز 98 رو دیده باشید 😁)! اون‌هایی هم که هم خوش‌دست بودن و هم امکانات خوبی داشتن پولی بودن (که خب برای ما توی ایران مشکل خریدش با کرک حل میشه، ولی سر و کله زدن با کرک و مشکلاتی که ممکنه پیش بیاد از طرفی و این که بالاخره کرک کردن حس خوبی نداره از طرف دیگه باعث میشه این راه رو هم بذاریم کنار).

بخاطر همین مسائل، خیلی وقت بود که میخواستم خودم دست‌به‌کار بشم و یک سریال مانیتور بنویسم؛ ابزاری که دقیقاً همون چیزی باشه که توی پروژه‌های خودم نیاز دارم و کارم رو راه بندازه. اما خب طبق معمول، هر بار که شروعش کردم وسط کار بخاطر درگیری‌های دیگه یا کمال‌گرایی بی مورد، رها شد و رفت توی فولدر بی‌انتهای پروژه‌های نیمه‌کاره (همه‌مون از این فولدرها داریم).

جرقه اول: چالش کار با AT Commandها

چند روز پیش، برای کاری مجبور بودم کلی AT Command رو برای یک ماژول GSM بفرستم و این کار قرار بود بارها و بارها تکرار بشه. هر کسی که با این ماژول‌ها کار کرده باشه میدونه این فرآیند چقدر فرسایشی و رو اعصابه.

قدیم‌ها برای ارتباط سریال و این‌جور کارها از DockLight استفاده میکردم. امکانات این برنامه در عین سادگی ظاهر خیلی خوب بود و به خاطر وجود قابلیت sequence برای نیاز من برای ارسال تکراری یک سری دیتا خیلی مفید بود. این برنامه علاوه بر اینکه پولی بود و داستان کرک داشت، فقط روی ویندوز کار میکرد و روی لینوکس (حتی با Wine) اجرا نمیشد. حالا دو راه داشتم: یا باید سیستم‌عامل رو سوییچ میکردم روی ویندوز و کار رو اونجا ادامه میدادم، یا اینکه با همون نرم افزارهای قدیمی و کم امکانات و بی روح سر میکردم.

شاید برای شما مفید باشد:
استفاده از DMA برای ارسال اطلاعات از حافظه توسط واحد USART در STM32 | قسمت شانزدهم آموزش STM32 با توابع LL

گفتم بذار یک بار دیگه بگردم ببینم ابزار به درد بخوری که روی لینوکس هم اجرا بشه پیدا میکنم یا نه که با یک برنامه به اسم serial tool آشنا شدم. این برنامه مولتی‌پلتفرم بود و نسخه‌ی پایه‌اش هم کار راه انداز بود، ولی برای امکانات پیشرفته‌ترش باید سابسکرایب میکردی. ظاهر و امکاناتش خوب بود ولی همون قضیه محدود بودن نسخه رایگانش و این که یکم کار باهاش سخت بود (البته من خیلی درگیرش نشدم و یک تست اولیه داشتم) باعث شد که اون رو هم کنار بذارم.

اینجا بود که تصمیم گرفتم راه سوم رو برم:

توسعه یک برنامه‌ی سریال مانیتور با هوش مصنوعی.

راستش اولش بیشتر برایم جنبه کنجکاوی داشت که ببینم چقدر میشه روی توسعه‌ی کامل یک اپلیکیشن دسکتاپ توسط هوش مصنوعی حساب کرد. برای شروع، فایل Readme گیت‌هاب برنامه serial tool رو به همراه توضیح امکانات اضافه‌تری که میخواستم به Claude دادم (لازم به ذکره که serial tool یک برنامه‌ی open source نبود و فقط یک readme در گیت‌هاب داشت که احتمال زیاد برای دیده شدن در نتایج سرچ گوگل بوده). یکی از مهم‌ترین ویژگی‌هایی که نیاز داشتم (مشابه DockLight)، امکان تعریف Sequence بود؛ یعنی بتونم یک سری دستور رو پشت سر هم با تاخیرهای مشخص تعریف کنم و با زدن یک دکمه، برنامه خودش اون‌ها رو به ترتیب بفرسته. این قابلیت موقع تست AT Commandها و سناریوهای تکراری به شدت کاربردیه.

پرامپتی که اول کار دادم این بود:

I need a serial monitor app like the one explained in this README file. This app, for now, only needs to work on Linux (no need to run on other OSs for now). I need this app for embedded usage where ASCII, hex, and binary data are sent from a microcontroller. This app should send and receive data and should have the ability to save the last multiple commands as shortcuts. It should also have the ability to define commands and the time between them, so I can run the app and have the commands sent sequentially based on time. Additionally, it should have an option to define a response to a command, so if that response is received, the next command runs. This means the sequential commands can run based on time, response, or both, for every command in the sequence. Check the README file, and if it does not include the extra features I explained to you, add those features as well. You can build the app using C++ or Python, but check what I have on my machine first and then create it for me. The app should have a modern look, and the UI/UX should be user-friendly. It should also have dark, light, and system modes.

گام اول: خروجی اولیه‌ای که شگفت‌زده‌ام کرد

بعد از حدود ۱۵ دقیقه ایجاد زحمت برای سرورهای آنتروپیک، Claude با پایتون و PyQt یک اپلیکیشن برایم نوشت که شاید از نظر ظاهر و امکانات فقط ۱۰٪ به serial tool شبیه بود، ولی تمام امکاناتی که خواسته بودم رو به شکل خوبی پیاده کرده بود: اتصال به پورت سریال، ارسال و دریافت بدون مشکل دیتا، حالت Dark Mode و از همه مهم‌تر ویژگی Sequence که کاملاً درست کار میکرد.

درسته که برنامه خیلی شبیه اون برنامه‌ی رفرنس نبود، اما همین که توی اولین تلاش یک اپلیکیشن کاملاً کاربردی تحویل گرفتم که کارم رو راه مینداخت، اون‌قدر برایم جالب بود که تصمیم گرفتم پروژه رو ادامه بدم و ببینم چقدر میتونم حرفه‌ای‌ترش کنم. در ادامه،  لیستی از فیچرهای فنی‌تر آماده کردم و به Claude دادم؛ چیزهایی مثل اضافه کردن کاراکترهای CRLF در انتهای رشته‌های ارسالی با قابلیت تغییر، پنجره تاریخچه دستوراتی که دستی ارسال کرده بودم، امکان ذخیره و لود کردن Sequenceها در قالب فایل CSV، پخش صدای نوتیفیکیشن در صورت دریافت جواب موفق (مثلاً اگر در جواب دستور، OK فرستاده شد یک صدای نوتیفیکیشن از کامپیوتر پخش بشه)، امکان دو تکه کردن صفحه لاگ به صورت عمودی برای نمایش همزمان دو فرمت مختلف (مثلاً سمت چپ ASCII و سمت راست HEX) و در نهایت قابلیت اتصال مجدد خودکار (Auto-Reconnect) در صورتی که کابل USB به هر دلیلی لحظه‌ای قطع شد.

پرامپت این بخش رو میتونید اینجا ببینید:

Ok, now I want to add these features:

Default line ending should be CRLF.
Add a history window so I can see the last commands I sent manually (not via sequence).
I should be able to save and open sequences. It should save to CSV and be able to load that file too. It should have headers so I can create a CSV file manually and import it into the app.
It should have an option for sequences where, if an expected response is received, a sound plays on the computer (checkbox).
It should have an option to show data in other views. For example, I can split the main window (the window that shows data) into two vertical windows and set a different view for every window (e.g., left ASCII, right hex), and then both windows show the same data in their respective views.
For hex and binary, it should have an option to select how many characters to show in a row (8, 16, 32, 64).
Add an auto-reconnect feature so that if the USB port closes suddenly, it tries to open it again.

شاید برای شما مفید باشد:
آشنایی با مفاهیم بنیادین در ارتباطات شبکه و ذخیره‌سازی داده

توی بعضی از مراحل این گپ و گفت‌ها، برنامه با مشکل مواجه میشد؛ مثلاً با کلیک روی یک دکمه برنامه کرش میکرد و بسته میشد یا یک فیچر درست کار نمیکرد. اما هر بار با فرستادن متن خطا یا توضیح دادن رفتار اشتباه برنامه برای هوش مصنوعی، سریع مشکل رو حل میکرد. برای اینکه طولانی نشه، از جزییات این رفت و برگشت‌ها میگذرم.

گام دوم: اضافه کردن Sequence Group

در مرحله بعد، نیاز به ابزاری داشتم که بتونم سناریوهای پیچیده‌تری رو مدیریت کنم؛ مثلاً یک sequence برای راه‌اندازی ماژول، یکی برای ارسال دیتا و یکی برای چک کردن شارژ سیم‌کارت. برای همین قابلیت Sequence Group رو اضافه کردم تا بشه چند گروه مختلف از دستورات رو با نام‌های مشخص ساخت، ویرایش کرد، جابه‌جا کرد و همه رو پشت سر هم اجرا کرد. همچنین قابلیت ذخیره کل تنظیمات پروژه و نمایش تاخیر زمانی دقیق بین دستورات ارسالی و دریافتی (برای سنجش سرعت پاسخ‌دهی) رو هم خواستم که اضافه کنه.

پرامپتش به این صورت بود:

Okay, now I want to add another tab named ‘Sequence Groups’ (or any other name you think is better). In this tab, I can add multiple sequences, and each sequence will have these buttons:
Send: To run the commands in the sequence.
New: Defines a new sequence. Clicking this opens a pop-up window where the user can add/remove/duplicate commands (similar to what we have in the current sequence tab). It should also have a ‘Name’ field so the user can label the sequence.
Edit: To edit the sequence commands.
Remove: To delete the sequence (the app should ask for confirmation).
Duplicate: To duplicate the sequence.
The order of the sequences should be user-adjustable.
In the ‘Sequence Groups’ tab, there should also be additional buttons like:
Send All: Runs all sequences from top to bottom.
Delay Between Sequences: An edit box to define the time delay.
Loop Sequences: To toggle looping.
The app should also have a Save button. Pressing this will save the sequences, sequence groups, logs, and connection settings. There should also be a text box for the ‘Project Name,’ and the app should support importing saved files.
Another feature:
An option (similar to timestamps) that, when selected, displays the delay between commands.

خروجی این پرامپت هم همون چیزی شد که نیاز داشتم.

فاز آخر: روتوش نهایی و انتشار

تا اینجا بدنه اصلی برنامه کامل شده بود، ولی تصمیم گرفتم اپلیکیشن رو یک پله جلوتر ببرم. قابلیت‌هایی مثل رسم نمودار زنده از ورودی‌ها و امکان جستجو و فیلتر پیشرفته لاگ‌ها با Regex رو هم بهش اضافه کردم.

در نهایت با مدل Nano Banana یک لوگو برای برنامه ساختم و به Claude دادم. ازش خواستم فایل اجرایی برای لینوکس و ویندوز بهم بده و پروژه رو برای انتشار روی گیت‌هاب آماده کنه و یک Readme مرتب هم آماده کنه. کاری که در نهایت Claude انجام داد فراتر از انتظارم بود؛ اون حتی یک Workflow برای GitHub Actions ساخت تا با هر ریلیز جدیدی که میدم، خروجی‌های ویندوز و لینوکس به طور خودکار بیلد و ضمیمه بشن و به این شکل بود که پروژه مگاسریال (MegaSerial) متولد و منتشر شد.

دنیا داره تغییر میکنه

واقعیت اینه که انحصار نرم‌افزارهای پولی و سنگین داره تموم میشه و داریم وارد دورانی میشیم که هر کسی میتونه ایده خودش رو با کمک هوش مصنوعی خیلی سریع بسازه و ازش استفاده کنه. شاید روزی برسه که یک دانش‌آموز بتونه برنامه‌ای در حد فتوشاپی که امروز میشناسیم رو با هوش مصنوعی بسازه (البته که اون موقع کار فتوشاپ رو هوش مصنوعی داره انجام میده).

قواعد بازی عوض شده و ما هم باید خودمون رو با این روند وفق بدیم. به جای اینکه نگران باشیم آیا هوش مصنوعی جامون رو میگیره یا نه، بهتره سوار این موج بشیم و ازش برای بالا بردن سرعت و کیفیت کارمون استفاده کنیم.

پروژه مگاسریال تحت لایسنس MIT منتشر شده؛ یعنی هر کسی میتونه رایگان ازش استفاده کنه، شخصی‌سازیش کنه یا کدهای خودش رو بهش اضافه کنه. اگر باهاش کار کردید و نظری داشتید خوشحال میشم بهم بگید. اگر هم خواستید باگی رو حل کنید یا قابلیت جدیدی اضافه کنید، میتونید توی گیت‌هاب پروژه Issue بزنید یا Merge Request بفرستید.

توی یک مقاله‌ی جدا به خود نرم‌افزار MegaSerial میپردازم و امکانات و روش کار با اون رو توضیح میدم. 

تا قبل انتشار قسمت بعدی اگر نرم افزار رو دانلود کردید میتونید از این ویدیو در یوتیوب جهت آشنایی و کار با نرم افزار استفاده کنید:

اطلاعات
141
0
2
اشتراک و حمایت
profile نویسنده: MasoudHD متخصص الکترونیک

وبسایت: https://masoud-heidari.com

توسعه دهنده‌ی امبدد و طراح سخت افزار


ویراستار: حسین زنجانی زاده
مقالات بیشتر

slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
family

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله

خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله