چه کسی گوسفند مرا قورت داد؟ کاوه!؟

چرا یه زبان جامع برای GUI نداریم؟ والا!

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

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

چرا یه زبان جامع و استاندارد برای GUI نداریم؟ چرا هر کسی ساز خودشو میزنه؟ چرا یه زبان نداریم که هم مرورگرها بفهمن، هم سیستم‌عامل، هم من؟

این متن، بیشتر، یه سواله. دنبال جوابم.

<!-- HTML -->
<input type="text" style="text-align: left;"
  title="Title" value="TextBox with ToolTip" />

<!-- XAML -->
<TextBox HorizontalAlignment="Left"
  ToolTip="Title">TextBox with ToolTip</TextBox>

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

تا الآن، تجربه‌ی کار با زبان‌های کدنویسی HTML، XAML، و زبان‌های برنامه‌نویسی مثل سی‌شارپ و جاوا، رو داشتم و باهاشون GUI رو تعریف کردم. واقعا حس می‌کنم وجود یه زبان استاندارد، خیلی بهتر از این تنوع ظاهرا غیرضروریه. البته این رو هم اضافه کنم که زبان‌هایی مثل XAML و HTML، خودشون اساسا از یه زبان دیگه به اسم SGML مشتق شدن، و جالب اینجاس که SGML مخفف Standard Generalized Markup Language هست، ولی باز هم ازش استفاده نمیشه (من ندیدم) یا نیومدن همونو ارتقا بدن یا بهش بها بدن، حتی خود HTML هم بعد از HTML5، از اون زبان فاصله گرفته.

لازمه؟ استاندارد آره، تنوع نه

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

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

به نظرم تنوع توی این زمینه، ضروری به نظر نمیاد. چرا؟

چون GUI یه مفهومه که بر اساس المان میره جلو، حداقل تا الآن اینطور بوده. هر چیزی توی GUI رو میشه به صورت یه موجودیت دید که می‌تونه به صورت جدا برای خودش زندگی کنه. مفاهیم شی‌گرایی هم برای همین به وجود اومدن. نتیجه این شد که خیلی وقت پیش تونستیم المان‌ها رو با «نشانه‌گذاری» یا همون Markup مشخص کنیم؛ مثلا بگیم از فلان‌جا تا فلان‌جا میشه المان پاراگراف. اون که اونجاست، آره همون، اون عکسه.

پس کافیه یه زبان جامع داشته باشیم که بتونه المان‌ها رو مشخص کنه. مهم هم نیست اون GUI مربوط به وبسایت باشه یا اپلیکیشن موبایل یا یه نرم‌افزار ویندوز. در بدترین حالت ما یه مجموعه‌ی نه‌چندان کوچیک از المان‌های اولیه داریم که توی همه‌ی محیط‌ها به کار میرن؛ پاراگراف، دکمه، لینک، تصویر، لیست‌باکس، چک‌باکس، ویدئو و ... هر محیط هم اگه خواست می‌تونه اون زبان رو بر اساس نیاز خودش توسعه بده (در حال حاضر هم این کار توی توسعه‌ی وب با تعریف کامپوننت انجام میشه). مثلا اگه ویندوز توی پنجره‌هاش به منو نیاز داره می‌تونه یه المان مخصوص که فقط توی ویندوز تعریف شده‌س به زبان اضافه کنه، ولی باز بهتر اینه که این المان، برای تمام سیستم‌عامل‌ها به صورت استاندارد تعریف بشه. بهش فکر کنید، چند تا المان داریم که مخصوص یه محیط باشن؟

چیزی نیست که شاخ و دم داشته باشه. یه زبانه که همه می‌فهمن.

نظرات

جواب‌هایی که گرفتم رو میذارم که هم دید بهتری نسبت به قضیه داشته باشیم و هم این که ترجیحا نظر تکراری ثبت نشه.

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

نظرتو Tweet کن