تصور کنید برنامهنویسی هستید که سالها از محیط سیاه و سفید ترمینال استفاده کرده چون ساخت یک پنجره ساده در مک یا ویندوز، کابوسی از کدهای تکراری و پیچیده بود. این فرآیند بسیار سختگیرانه، خستهکننده و وابسته به دانش عمیق از مفاهیم هر پلتفرم بود. امروز این سد فرو ریخته است و توسعهدهندگان میتوانند رابطهای گرافیکی پیچیده را بهجای کدنویسی دستی، از عاملهای هوش مصنوعی «احضار» کنند.
به نقل از یک برنامهنویس باسابقه سیستمها، مدلهایی مثل Claude و GPT-5 توسعه رابطهای گرافیکی بومی (Native GUI) را به امری بدیهی تبدیل کردهاند. این تغییر صرفاً درباره زیبایی نیست؛ بلکه به این معناست که عامل (Agent) — شبیه دستیاری که تمام دستورالعملهای سختگیرانه شرکت اپل را حفظ است — حالا کدهای تکراری و وابسته به پلتفرم را که پیشتر مانع ساخت اپلیکیشن میشد، بهطور کامل مدیریت میکند. در واقع، این رابطها اکنون توسط عاملهایی فراخوانده میشوند که قادرند تمام کدهای تکراری پلتفرم را که پیش از این سدی در برابر توسعه اپلیکیشنهای بومی بود، هندل کنند.
برای دههها، دنیای نرمافزار به دو نقش «فرانتاند» و «بکاند» تقسیم شد. برنامهنویسان سیستمها معمولاً به ترمینال پناه میبردند و رابطهای متنی یا TUI (Terminal User Interface) میساختند، چون حوصله یا مهارت لازم برای درگیری با چارچوبهای پیچیدهای مثل Motif یا نسخههای اولیه Cocoa را نداشتند. این وضعیت فرهنگی ایجاد کرد که در آن خط فرمان، تنها راه «قدرتمند» برای تعامل با ماشین تلقی میشد. نویسنده اشاره میکند که یک تجربه کوتاه و تلخ با Motif در اواسط دهه ۱۹۹۰، او را برای ۲۹ سال از دنیای توسعه رابطهای گرافیکی دور کرد.
همانطور که در تحلیلهای قبلی ما دربارهی کاهش اصطکاک در توسعه نرمافزار اشاره کردیم، مرز بین پیکربندی سیستم و برنامهنویسی در حال محو شدن است. طبق گزارش این برنامهنویس، تا ۲۱ اوت ۲۰۲۶، هزینه تولید یک رابط بومی صیقلخورده برای سازندگان انفرادی عملاً به صفر رسیده است. وقتی یک عامل میتواند چارچوب SwiftUI را دقیقاً طبق استانداردهای اپل پیاده کند، «یکسان بودن» اپلیکیشنهای بومی تبدیل به یک ویژگی میشود، نه یک محدودیت. اپلیکیشنهای بومی قرار است شبیه به سایر اپلیکیشنهای بومی به نظر برسند و عاملها با پیروی دقیق از دستورالعملهای پلتفرم، به این هدف دست مییابند.
سبد اپلیکیشنهای «احضار شده»
نویسنده این تحول را با ابزارهای شخصی خود نشان میدهد که بدون نوشتن حتی یک خط کد رابط کاربری بهصورت دستی ساخته شدهاند. هدف از این ابزارها توزیع عمومی نیست، بلکه آنها دستاوردهایی هستند از اینکه کامپیوتر را مجبور کرد دقیقاً همان کاری را انجام دهد که کاربر میخواهد:
- MDV.app: یک نمایشدهنده Markdown با کارایی بسیار بالا که نویسنده آن را «بهترین در جهان» توصیف میکند تا زمانی که یک رقیب جدی وارد شود. این برنامه از رندرینگ بومی macOS بهره میبرد و تقریباً بدون هیچ کد دستی در بخش UI ساخته شده است.

- SageMath Frontend: یک ماشینحساب بومی برای رمزنگاران. این اپلیکیشن پس از آن ساخته شد که نویسنده یک سال را در Math Academy (از مبانی ۱ تا یادگیری ماشین) گذراند. این برنامه سه مزیت کلیدی دارد:
- رندر خودکار خروجیهای Sage در قالب LaTeX، که برای حساب دیفرانسیل و انتگرال چندمتغیره ضروری است.
- دسترسی Point-and-click به متدهای Sage روی اشیایی مانند ماتریسها، بردارها و عبارتها، که نیاز به تایپ مکرر دستوراتی مثل
trig_simplifyرا از بین میبرد. - یک «زبان کوچک» از ورودیهای اختصاری برای عملیات سریع؛ مثلاً استفاده از
[1,2;3,4]برای تعریف یک ماتریس.

- DJ Roomba: پخشکننده Apple Music با یک عامل LLM داخلی. این برنامه از Tool Callها برای خواندن کتابخانه موسیقی کاربر، لیست آخرین آهنگهای پخش شده و قطعات بعدی استفاده میکند. کاربر میتواند دستورات زبان طبیعی بدهد، مثلاً: «میخواهم برای ساخت یک قاب عکس به کارگاه زیرزمین بروم؛ یک پلیلیست بدون آهنگهای اضافی و متناسب با این حالوهوا بده»، که نتیجه آن یک میکس دقیق از آثار Kurt Vile و Tom Petty است. بکاند این برنامه یک پایگاهداده SQLite با شمای مناسب است.

- Self Driving Wiki.app: ابزاری که منابع اولیه را میبلعد و بهطور خودکار یک ویکی مینویسد. برخلاف سایر عاملها، این برنامه در لایههای زیرین از
claude -pاستفاده میکند. برای اینکه به عامل یک سیستم فایل بدهد تا در آن «جستجو» کند، نویسنده یک افزونه سیستم فایل مجازی macOS احضار کرد که نمای Read-only از پایگاهداده SQLite را بهصورت یک درایو متصل در محیط Sandbox اپلیکیشن نمایش میدهد. این کار مستلزم اجرای برنامه از مسیر/Applications/بود؛ نوعی «کار دشوار و جانبی» (Yak-shaving) که نویسنده آن را لذتبخش یافت.

- Food Macro Tracker: یک رابط ساده برای GPT-5 که توصیفات مبهم و کوتاه غذا (مثلاً «حدس بزن چقدر کالری در چشیدن خمیر کیک و خامه بود، اما من خود کیک را نخوردم») را به تخمینهای عددی کالری تبدیل میکند.

- Thermite: اپلیکیشنی در نوار منو (Menu-bar) که دمای خانه را از طریق سنسورهای ارزان TP-Link ردیابی میکند. نویسنده اشاره میکند که اگرچه این سنسورها احتمالاً دسترسی حزب کمونیست چین به Apple TV او را فراهم میکنند، اما اپلیکیشن با موفقیت دو مسیر مختلف احراز هویت را برای دریافت دادهها از هر دو منبع ابری و مستقیم از پادهای سنسور مدیریت میکند.

- Apple TV Remote: یک اپلیکیشن بومی Swift برای کنترل Apple TV، Roku TV و گیرندههای Denon. این برنامه بهعنوان یک ریموت جهانی برای آن «نرد»هایی عمل میکند که هنگام تماشای سریال House Of Ninjas یک مکبوک روی پاهایشان است. این اپلیکیشن با دستور به یک LLM برای ترجمه منطق کتابخانههای موجود پایتون به کد بومی Swift ساخته شده است.

چرا ترمینال دیگر کافی نیست؟
نویسنده استدلال میکند که TUIها محصول محدودیتهای دهه ۱۹۷۰ هستند—بهویژه رابطهای Teletype و ترمینالهای احمق (Dumb Terminals). در حالی که رابطهای خط فرمان (CLI) برای اتوماسیون جایگزینناپذیرند و ساخت آنها تقریباً همیشه ایده خوبی است، اما TUIها اغلب منسوخ و کاربر-ستیز هستند.
محدودیتهای فنی TUIها
حتی چارچوبهای مدرن TUI مانند Ratatui، Textual یا Bubbletea در برابر دسترسیپذیری و ترکیببندی ویجتهای بومی ناتواناند. نویسنده چندین مورد را برجسته میکند که TUIها در آنها شکست میخورند:
- کنترلهای استاندارد: انتخابگرهای تاریخ (Date pickers)، فیلدهای متنی امن، نوار پیشرفت و ویرایشگرهای متن در TUIها بهندرت به کیفیت نسخههای سیستمی میرسند و بهخوبی با هم ترکیب نمیشوند.
- الگوهای تعامل: اسکرول کردن، تعیین هدف اسکرول، کشیدن و رها کردن (Drag-and-drop) و پنجرههای شناور متعدد در محیط ترمینال بسیار دشوار هستند.
- آثار بصری: انتخاب متن (Text selection) زمانی که از سیگنالهای In-band برای رسم حاشیه پنجرهها استفاده میشود، پیچیده و دشوار میشود.
- مدیریت تصویر: چارچوبهای بومی تصاویر را بهطور یکپارچه مدیریت میکنند، در حالی که TUIها در این زمینه با مشکل مواجهاند.
نگرانیهای دسترسیپذیری
در حالی که برخی استدلال میکنند TUIها در دسترستر هستند، نویسنده عکس این موضوع را میگوید. او به تجربههایی اشاره میکند که در آن صفحهخوانها، «بدنه» TUI را خط به خط بهعنوان مجموعهای از کاراکترها میخوانند (مثلاً: «علامت هشتگ، علامت هشتگ، علامت هشتگ، خط تیره، خط تیره»). در مقابل، SwiftUI دو درخت مجزا را حفظ میکند: یک درخت بصری و یک درخت معنایی برای دسترسیپذیری، که تضمین میکند دسترسیپذیری از همان ابتدا در ساختار برنامه نهادینه شده است.
پاسخ به استدلالهای «نردی»
دفاعات رایج از TUIها بهصورت زیر رد میشوند:
۱. تراکم اطلاعات: نردها از انجام کارهای پیچیده با چند فشار کلید لذت میبرند. اما نویسنده استدلال میکند که تراکم بالا یک انتخاب طراحی است، نه یک محدودیت پلتفرم. میتوان یک GUI متراکم و کیبورد-محور طراحی کرد که کارایی ابزارهایی مثل Magit یا Lazygit را داشته باشد.
۲. دسترسی SSH/تولید: این استدلال که TUIها برای سرورهای عملیاتی (Production) لازم هستند، با این واقعیت رد میشود که شما در سرور فقط به CLI نیاز دارید، و یک GUI محلی میتواند آن CLI را هدایت کند. او به Emacs TRAMP بهعنوان یک نمونه اشاره میکند که اتصالات SSH را مخفی میکند تا تجربه یک ویرایشگر بومی را برای فایلهای راه دور، همراه با LSPها، فراهم کند.
۳. سازگاری بینپلتفرمی: اگرچه TUIها در لینوکس و ویندوز قابلحملتر هستند، اما نویسنده بین «Vibe-coding» و «Vibe-shipping» تفاوت قائل میشود. چون او ابزارها را برای خودش میسازد، مزیت سازگاری با لینوکس بر دستاوردهای بومی macOS برتری ندارد.
گردش کار جدید: کدنویسی بر اساس حس (Vibe Coding)
برای رسیدن به این نتایج، نویسنده از روش Vibe Coding استفاده میکند که اصطکاکهای سنتی توسعه را دور میزند. او با استفاده از مجموعهای از مهارتهای تولید شده توسط AI، از «کشیشگری» کدنویسی دستی UI فاصله میگیرد. البته برای تبدیل این رویکرد سریع به یک محصول تجاری و پایدار، نیاز به ساختاری نظاممندتر است؛ موضوعی که در تحلیل ما درباره ۵ لایهٔ ضروری برای تبدیل دموهای Vibecoding به محصول عملیاتی بهطور مفصل بررسی شده است.
- کسب مهارت: او از عاملها برای کسب مهارتهای طراحی macOS، اصول پایه تایپوگرافی، مهارتهای SwiftUI (بر اساس آموزشهای Paul Hudson) و مهارتهای زبان Swift (بر اساس استانداردهای Airbnb) استفاده کرد تا مطمئن شود کد تولید شده، اصطلاحاً Idiomatic و استاندارد است.
- ابزارها: او از یک دایرکتوری قالب اپلیکیشن و یک فرآیند ساخت مبتنی بر Makefile (که توسط دوستش جاش ساخته شده) استفاده میکند تا بهطور کامل از باز کردن Xcode اجتناب کند.
- یکپارچگی عامل: با فعال کردن قابلیت «استفاده از کامپیوتر» (Computer-use) یا معادل آن در Codex، هوش مصنوعی میتواند اپلیکیشنی را که میسازد ببیند و آن را هدایت کند. این به توسعهدهنده اجازه میدهد یک درخواست بفرستد، ناهار بخورد و هنگام بازگشت، یک اپلیکیشن آماده و فعال داشته باشد.
این فرآیند عملاً مرز بین «پیکربندی کامپیوتر» و «توسعه نرمافزار» را از بین میبرد. نویسنده پیشنهاد میکند هر توسعهدهندهای که مجموعهای از اسکریپتهای CLI یکبارمصرف دارد، سعی کند آنها را به اپلیکیشنهای بومی تبدیل کند تا نحوه تفکرش درباره تعامل انسان و کامپیوتر تغییر کند.
این تحول نشان میدهد که «کشیشگری» ترمینال—که زمانی در مقاله سال ۱۹۹۹ نیل استیونسون با عنوان «در ابتدا خط فرمان بود» رمانتیک شده بود—دیگر با قدرت فنی تعریف نمیشود، بلکه صرفاً ترجیحی برای زیباییشناسی دهه ۱۹۷۰ است. در دنیای مدلهای پیشرو (Frontier Models)، توانایی «اراده کردن» یک رابط بومی برای خلق، آخرین بهانه برای اجتناب از GUI را از بین میبرد. اگر مجموعهای از اسکریپتهای داخلی یا یک ابزار CLI پیچیده دارید، منطق آن را به یک عامل بدهید و یک Wrapper بومی با SwiftUI، GTK 4 یا WinUI 3 بخواهید. شاید متوجه شوید که «اصطکاک» GUI در واقع فقط اصطکاکِ نوشتن کد بود.
گام بعدی شما
- اگر اسکریپتهای پایتون یا Bash دارید که هر روز استفاده میکنید، منطق آنها را به یک مدل زبانی بدهید و بخواهید یک Wrapper بومی با SwiftUI یا GTK 4 برایش بسازد.
- به جای یادگیری تمام جزئیات APIهای رابط کاربری، روی «مهندسی پرامپت» برای توصیف دقیق رفتار ویجتها تمرکز کنید.
- ابزارهای مدیریت پروژه را با مدلهای استدلالی ترکیب کنید تا مستقیماً کد رابط کاربری را در محیط توسعه تزریق کنند.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو