ویرگول
ورودثبت نام
Mohammad Shokoohi
Mohammad Shokoohiیک هنرمندِ عاشق تکنولوژی...
Mohammad Shokoohi
Mohammad Shokoohi
خواندن ۱۱ دقیقه·۲ ماه پیش

بررسی Zed AI: برنامه نویسی با کمک هوش مصنوعی

توسعه‌دهندگان در انتخاب و وفاداری به ویرایشگر کد خود بسیار ثابت‌قدم هستند. کافی‌ست از کسی که سال‌ها زمان و انرژی خود را صرف یادگیری vim کرده باشد، بخواهید که از یک ادیتور دیگر استفاده کند!، این مسیری‌ست که دیگر هرگز از آن باز نمی‌گردند.

برای توسعه‌دهندگان، تعویض ویرایشگر کد اتفاقی نادر — و تقریباً تاریخی — محسوب می‌شود. مسیر شخصی من از Dreamweaver (بله، واقعاً!) به Sublime Text و سپس به VS Code، سفری بود که در طول ۲۰ سال شکل گرفت. اما اخیراً، با تبدیل شدن هوش مصنوعی به بخش جدایی‌ناپذیر از جعبه‌ابزار بسیاری از توسعه‌دهندگان، نسل جدیدی از ویرایشگرهای کد در حال ظهور است که هوش مصنوعی را در مرکز تجربه‌ی توسعه‌دهنده قرار می‌دهند و وضعیت موجود را به چالش می‌کشند.

در حالی که Cursor تمام تیترها را به خود اختصاص داده، تنها بازیگر میدان نیست. ماه گذشته، Zed از Zed AI رونمایی کرد — مجموعه‌ای از ابزارهای کدنویسی با کمک هوش مصنوعی که در دل یک ویرایشگر کد چشمگیر قرار گرفته‌اند.

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

کد ادیتور Zed چیست؟

من برای اولین بار اوایل امسال با Zed آشنا شدم، زمانی که متوجه شدم چند نفر از توسعه‌دهندگان جامعه‌ی Elixir از آن بسیار تعریف می‌کنند. Zed در سال ۲۰۲۳ معرفی شد و توسط همان تیمی ساخته شده که ویرایشگر GitHub Atom را توسعه داده بودند. در Zed، آن‌ها یک ویرایشگر کد سریع و مدرن ساخته‌اند. این ابزار از موتور رندرینگ اختصاصی و بسیار قدرتمندی استفاده می‌کند که با زبان Rust نوشته شده، و با تمرکز بر تجربه‌ی توسعه‌دهنده و پرداختن درست به اصول پایه، به‌تدریج طرفداران زیادی پیدا کرده است.

افزودن قابلیت‌های هوش مصنوعی در کنار توجه قبلی توسعه‌دهندگان Zed به ویژگی‌های گفت‌وگوی گروهی و برنامه‌نویسی دونفره، توانایی‌های این کد ادیتور را افزوده است. مطمئن نیستم که این تغییر جهت کوچکی در مسیر توسعه‌ی آن باشد یا نه، اما در هر صورت Zed AI این ویرایشگر را از ابزاری جالب که چند ماه پیش هنوز نتوانسته بود مرا از VS Code جدا کند، به ابزاری تبدیل کرده که حالا واقعاً دوست دارم آن را امتحان کنم.

ویژگی‌های Zed AI

قابلیت‌های هوش مصنوعی Zed را می‌توان به‌طور کلی در سه ویژگی اصلی دسته‌بندی کرد:

  • پنل دستیار برای گفت‌وگو با هوش مصنوعی درباره‌ی کد شما

  • دستیار درون‌خطی برای اعمال مستقیم تغییرات در کد با کمک هوش مصنوعی

  • دستورات سبک اسلش (/) برای افزودن زمینه‌ی بیشتر به گفت‌وگوها و تعاملات شما

بیایید هرکدام را بررسی کنیم:

پنل دستیار

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

میان‌بر صفحه‌کلید (<-ctrl/cmd) برای وارد کردن متن انتخاب‌شده از ویرایشگر اصلی به پنل دستیار در قالب یک بلوک کد محصور وجود دارد. همچنین مجموعه‌ای از دستورات اسلش (که در ادامه بیشتر بررسی خواهیم کرد) برای تزریق کد به زمینه‌ی گفت‌وگو وجود دارد — مثلاً می‌توان یک فایل کامل یا حتی یک پوشه‌ی حاوی چند فایل را وارد کرد. این عناصر تزریق‌شده در پنل دستیار به‌صورت بخش‌هایی قابل باز و بسته شدن نمایش داده می‌شوند، تا تمرکز شما روی پرسش اصلی باقی بماند.

وقتی آماده باشید، با فشردن cmd/ctrl+Enter، زمینه‌ی گفت‌وگو ارسال می‌شود و دستیار هوش مصنوعی پاسخ را به‌صورت جریان‌وار در پایین همان زمینه نمایش می‌دهد.

یکی از مزایای جالب این‌که کل زمینه‌ی گفت‌وگو یک بافر متنی قابل ویرایش است که «بازنویسی تاریخچه» را بسیار ساده می‌کند — کافی‌ست بخش‌هایی از گفت‌وگو را حذف یا ویرایش کنید. حتی می‌توانید کل زمینه را کپی کرده و در یک زمینه‌ی جدید بچسبانید تا همان گفت‌وگو را در دو مسیر متفاوت ادامه دهید.

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

دستیار درون‌خطی (Inline Assistant)

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

وقتی دستیار درون‌خطی را با میان‌بر cmd/ctrl+Enter فعال می‌کنید، اگر پنل دستیار نیز باز باشد، آن پنل به‌عنوان زمینه‌ی اضافی در کنار دستور درون‌خطی شما در نظر گرفته می‌شود. این موضوع در ابتدا شاید خیلی واضح نباشد، اما وقتی متوجه شوید که سیستم به این شکل کار می‌کند، ترکیب یک دستور دقیق در پنل دستیار با یک فرمان ساده درون‌خطی، به ابزاری قدرتمند تبدیل می‌شود.

کدی که توسط دستیار درون‌خطی تغییر داده شده، به‌صورت یک تفاوت (diff) به شما نمایش داده می‌شود که می‌توانید آن را بپذیرید یا رد کنید. همچنین می‌توانید از چند مکان‌نما (cursor) و چند انتخاب هم‌زمان استفاده کنید تا دستیار درون‌خطی را در چند نقطه به‌طور هم‌زمان فعال کنید. من خودم از این قابلیت مرتب برای افزودن بلوک‌های توضیح (doc block) به توابع استفاده می‌کنم.

یکی از دستورالعمل‌های موجود در مستندات Zed برای رفع خطاها این است که یک زمینه‌ی جدید در پنل دستیار ایجاد کنید، با استفاده از دستورات diagnostics/ و terminal/ گزارش‌های خطا و اطلاعات تشخیصی را به زمینه وارد کنید، سپس کد مشکل‌دار را انتخاب کرده و با کمک دستیار درون‌خطی، اصلاح آن را تولید کنید. این روش فوق‌العاده خوب عمل می‌کند.

دستورات دستیار

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

برای مثال، دستور diagnostics/ خروجی‌ها و هشدارهای سرور زبان را وارد می‌کند؛ دستور file/ به شما اجازه می‌دهد یک فایل یا پوشه‌ای از فایل‌ها را انتخاب کرده و به زمینه اضافه کنید؛ و دستور fetch/ پاسخ یک درخواست HTTP را تزریق می‌کند. تمام دستورات داخلی در مستندات Zed فهرست شده‌اند.

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

یک دستور که شایسته‌ی اشاره‌ی ویژه است، workflow/ است. اگر آن را اجرا کرده و بخش مربوطه را باز کنید، یک پرامپت سیستمی بزرگ ظاهر می‌شود که به مدل زبانی (LLM) دستور می‌دهد تا کاربر را در مجموعه‌ای از تغییرات مرحله‌به‌مرحله راهنمایی کند و پاسخ‌ها را در قالبی بسیار خاص و ساختاریافته ارائه دهد. پنل دستیار این ساختار را تشخیص داده و «مراحل» را در قالب رابط کاربری‌ای نمایش می‌دهد که در آن می‌توانید تغییرات را گام‌به‌گام دنبال کنید.

می‌توان حدس زد که هدفشان چیست. این قابلیت Zed را به نمای Composer در Cursor نزدیک‌تر می‌کند، جایی که می‌توانید به‌صورت مرحله‌به‌مرحله با دستیار کار کنید تا یک ویژگی خاص را بسازید یا بازسازی کنید — صرفاً با استفاده از پرامپت‌ها. در آزمایش‌های من، نتوانستم دستور workflow/ را به‌طور قابل‌اعتماد اجرا کنم. این دستور یک جریان کاری چندمرحله‌ای تولید می‌کرد که دچار «خطاهای حل مرحله» می‌شد، یا برخی مراحل تکراری بودند یا با مراحل قبلی تضاد داشتند. این ویژگی ظاهراً امیدوارکننده است، اما در عمل طوری‌ست که انگار باید دعا کنید و قربانی بدهید تا واقعاً کار کند!

توسعه‌دهندگان واقعاً چه انتظاری از هوش مصنوعی در ویرایشگرهای کد دارند؟

من تعداد زیادی توسعه‌دهنده‌ی باتجربه را می‌شناسم که یا به‌طور غیرمنطقی مخالف هوش مصنوعی هستند، یا نسبت به آن بی‌تفاوت‌اند. در مقابل، بسیاری از توسعه‌دهندگان جوان جذب ایده‌ی توسعه‌ی نرم‌افزار بدون کدنویسی و صرفاً با پرامپت شده‌اند — فقط کافی‌ست نگاهی بیندازید به ویدیوهای «چطور با Cursor این [اپلیکیشن/بازی] را در چند دقیقه ساختم» که در شبکه‌های اجتماعی دست‌به‌دست می‌شوند.

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

من هر روز از هوش مصنوعی برای کارهایی مثل این استفاده می‌کنم:

  • فکر کردن درباره‌ی یک مسئله و مقایسه‌ی راه‌حل‌های سطح بالا

  • نوشتن مقدار کافی از کد برای «نشان دادن مسیر» تا بتوانم آن را به‌صورت خاص‌تر برای پروژه‌ی خودم استفاده کنم

  • رفع خطاها با اشتراک‌گذاری کد و پیام خطا و دریافت اصلاح از هوش مصنوعی

  • کارهای تکراری مثل نوشتن تست‌های واحد، مستندسازی کد و افزودن توضیحات

چیزی که انتظار ندارم — و نمی‌خواهم — این است که هوش مصنوعی تمام خطوط کد اپلیکیشن یا محصولم را بنویسد. نمی‌توانم تصور کنم چطور چنین چیزی ممکن است بدون این‌که خودم از فرآیند جدا شوم و دیگر احساس نکنم که می‌توانم بر کیفیت (یا بی‌کیفیتی) کد تأثیر بگذارم یا مسئول آن باشم. حتی اگر مدل‌ها در آینده بهتر شوند — که انتظارش را دارم — باز هم فکر می‌کنم این هدف اشتباهی‌ست که نتیجه‌اش توسعه‌دهندگان ضعیف‌تر، کدهای ضعیف‌تر و محصولات ضعیف‌تر خواهد بود.

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

کد ادیتور Zed با ویژگی‌های متعادل هوش مصنوعی، تجربه توسعه را بهبود می‌بخشد

و این ما را دوباره به Zed بازمی‌گرداند. واقعاً چقدر خوب عمل می‌کند؟

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

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

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

یکی از چیزهایی که Zed ندارد، تکمیل خودکار با کلید Tab توسط هوش مصنوعی است. می‌دانم بعضی‌ها عاشق این قابلیت هستند، اما همیشه احساس کرده‌ام که این نوع کدنویسی مثل بازی رولت روسی است.

و همین‌جاست که می‌گویم ویژگی‌های هوش مصنوعی Zed با فکر طراحی شده‌اند. آیا تکمیل خودکار با Tab حذف شده چون هنوز ساخته نشده، یا این‌که تیم Zed ابتدا بررسی کرده‌اند که چنین قابلیتی چقدر به تجربه‌ی توسعه‌دهنده ارزش می‌افزاید؟ حس من این است که گزینه‌ی دوم درست‌تر است.

مطمئنم که در آینده ویژگی‌های هوش مصنوعی بیشتری اضافه خواهند شد — دستور /workflow هنوز در حال توسعه به‌نظر می‌رسد، و احتمالاً سخت خواهد بود که در برابر وسوسه‌ی رقابت با رویکرد هوش‌محور Cursor مقاومت کنند. اما امیدوارم و اعتماد دارم که Zed تمرکز خود را بر توسعه‌دهندگان و تجربه‌ی توسعه‌دهنده حفظ کند. در حال حاضر، آن‌ها تعادل خوبی برقرار کرده‌اند.

ویژگی‌های هوش مصنوعی میزبانی‌شده‌ی Zed توسط Claude پشتیبانی می‌شوند و در حال حاضر رایگان هستند. حدس می‌زنم این وضعیت دائمی نباشد، اما فعلاً جزئیاتی درباره‌ی قیمت‌گذاری منتشر نشده. با این حال، امکان افزودن کلیدهای API شخصی برای هر ارائه‌دهنده‌ی هوش مصنوعی دلخواه — از جمله Anthropic — نیز وجود دارد. بنابراین اگر این خدمات در آینده پولی شوند، می‌توانید با کلیدهای خودتان ادامه دهید. همین موضوع، حداقل برای من، Zed را به گزینه‌ای جذاب‌تر از Cursor تبدیل می‌کند که تنها راه استفاده از آن، اشتراک پولی است.

جمع‌بندی

خب، بعد از یک ماه استفاده، آیا شاهد آغاز یک دوران جدید هستیم؟ آیا VS Code قرار است در گوشه‌ی داک خاک بخورد و تمام توجه‌ها به Zed معطوف شود؟ پاسخ این است: بله!

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

اما… یک نکته وجود دارد. من در این مقاله چند بار Zed را با Cursor مقایسه کرده‌ام، و کمی با دیده‌ی شک به جریان نگاه کرده‌ام… اما انصافاً باید بگویم که هنوز به اندازه‌ی Zed، Cursor را امتحان نکرده‌ام.

بنابراین، چالش من برای ماه اکتبر این است که Cursor را هم به‌طور جدی آزمایش کنم. خواهیم دید که آیا می‌تواند نظر من را تغییر دهد یا دیدگاهم نسبت به نوع ویژگی‌های هوش مصنوعی مورد نیازم را دگرگون کند یا نه.

منبع اصلی این مقاله: لینک

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

هوش مصنوعیبرنامه نویسیکد ادیتورai
۲
۱
Mohammad Shokoohi
Mohammad Shokoohi
یک هنرمندِ عاشق تکنولوژی...
شاید از این پست‌ها خوشتان بیاید