دیگر قسمتها:
– لینوکس ویندوز نیست (قسمت اول)
– لینوکس ویندوز نیست (قسمت سوم)
در قسمت اول از سه مشکل اولی گفته بودیم که برای مهاجرت کنندگان به لینوکس پیش مییاد. حالا میرویم سراغ دو نکته دیگر…
مشکل چهار: طراحی شده برای طراح
در صنعتی مثل صنعت اتوموبیل، تقریبا محال است ببینید همان کسی که موتور خودرو را طراحی کرده، بدنه را هم رنگآمیزی کند. همین مساله در دنیای نرمافزار هم صادق است؛ در اکثر موارد کسی که اصل برنامه را مینویسد با کسی که رابط گرافیکی را طراحی میکند متفاوت است.
اما در دنیای لینوکس، پروژهها معمولا توسط یک نفر شروع میشوند و به عنوان یک سرگرمی (: در ابتدای کار یک نفر همه کارها را میکند و به همین دلیل او بیشتر دنبال نوشتن برنامههای حرفهای است تا درست کردن رابطهای کاربر پسند: کاربر اول این برنامه خود برنامهنویس اس تو همه چیز در مورد برنامه را میداند. سادگی استفاده برای او اصلا مهم نیست. مثلا vi را در نظر بگیرید. این برنامه دقیقا برای کسی طراحی شده که کار با آن را بلد است. یک کاربر تازه وارد ممکن است برای خارج شدن از آن، مجبور شود کامپیوترش را بوت کند!
یک تفاوت مهم دیگر هم بین نرمافزارهای آزاد و بازمتن (FOSS) و نرمافزارهای تجاری هست: برنامه بازمتن معمولا به خاطر استفاده برنامهنویس توسعه پیدا میکند در حالی که برنامه تجاری برای استفاده شدن توسط مشتری نوشته میشود. این مساله تیغ دو لبه است: از یک طرف کاربر با برنامهای مواجه است که استفاده از آن چندان راحت نیست ولی در مقابل کاربر نهایی مطمئن است که این برنامه برای استفاده خود نویسنده طراحی شده و در نتیجه او تمام تلاش خود برای بالا بردن کیفیت برنامه را کرده است. در عین حال در این حالت کاربرنهایی دقیقا میداند که نویسنده برنامه درک میکند کاربرنهایی چه میخواهد چون خودش هم یکی از کاربران برنامه خواهد بود؛ درست برعکس یک برنامه تجاری.
بازهم به vi نگاه کنید؛ رابط کاربری آن بسیار برای یک کاربر تازه کار سخت است اما در عوض آنقدر قوی است که هنوز هم به عنوان اصلیترین ویرایشگر متن، استفاده میشود.
پس رابطهای کاربری لینوکس معمولا برای کاربر تازه کار کمی عجیب هستند و چیزی مثل vi اصولا برای تازه کاری که میخواهد چند تغییر در یک فایل ایجاد کند، اصولا چیز مناسبی نیست. در عین حال اگر در حال استفاده از نسخههای اولیه و در حال توسعه یک نرمافزار باشید، احتمالا رابط کاربری خوب و راحت و زیبا فقط در بخش ToDoی برنامه یافت خواهند شد. اولویت اول یک برنامه نویس، هسته اصلی برنامه است نه رابط گرافیکی آن. هیچ برنامه نویس بازمتنی اول یک رابط گرافیکی مکش مرگ من طراحی نمیکند تا بعدا سر فرصت سراغ نوشتن کارکرد اصلی برود. در این دنیا، اول کارکرد اصلی برنامه نوشته میشود و بعد قدم به قدم رابط گرافیکی بهبود مییابد.
پس برای جلوگیری از مشکل ۴: به سراغ برنامههایی بروید که برای راحتی کاربر طراحی شدهاند یا بپذیرید که در این دنیا روند یادگیری استفاده از برنامهها ممکن است کندتر باشد. ایراد گرفتن از این که چرا استفاده از vi راحت نیست، باعث خواهد شد همه باور کنند که شما اصولا نکته را نگرفته اید (:
مشکل ۵: افسانه کاربرپسندی
یک مساله جدی. عبارت کاربرپسند یا User Friendly آنقدر مهم است که یکی از سایتهای کاریکاتور بسیار مشهور هم اسمش را همین گذاشته (در ایران فیلتر است، چون در مورد برنامه نویسی است). اما این عبارت، عبارت ناجوری است.
ایده اصلی خوب است: نرمافزار باید بر اساس نیازهای کاربر نوشته شود. اما نمیشود به این مساله نگاهی تک بعدی داشت.
اگر در تمام طول زندگی مشغول تحلیل فایلهای متنی باشید، نرمافزار مورد پسند شما یک نرمافزار سریع و قدرتمند خواهد بود که به شما اجازه بدهد بیشترین حجم کار را در کمترین وقت انجام دهید. شما از داشتن چند کلید میانبر و عدم نیاز به استفاده از ماوس برای کنترل برنامه، لذت خواهید برد.
اما اگر خیلی کم با فایلهای متنی کار داشته باشید و فقط گاه گاهی بخواهید یک نامه تایپ کنید، بهتر است نیازی به یادگیری هیچ کلید میانبری نداشته باشید. در این حالت شما نیازمند منوهای خوب و شکلک/آیکنهای واضح خواهید بود. نوارابزارها هم در این حالت میتوانند حسابی مفید باشند.
شکی نیست که نرمافزاری که بر اساس نیازهای کاربر اول طراحی شده باشد، برای دومی مفید نیست. و البته برعکس. حالا به چه نرمافزار ویرایش متنی باید کاربرپسند بگوییم؟
جواب ساده: کاربرپسندی، لغت ناواضحی است که سعی میکند یک مفهوم پیچیده را ساده جا بزند.
کاربرپسند واقعا به چه معنا است؟ در واقع کاربرپسندی را باید به این معنی دانست: نرمافزاری که یک کاربر، بدون داشتن تجربه قبلی بتواند در حد معقولی از آن استفاده کند. توجه کنید که بنا بر این تعریف، برنامههایی که از منوهای بد ولی آشنا برای شما استفاده کنند، کاربرپسند به نظر خواهند رسید.
زیرمشکل ۵الف: آشنا، مورد پسند است
واقعیت این است که این روزها در اکثر ویرایشگرهای متن آشنا و کاربرپسند شما میتوانید با Ctrl+X و Ctrl-V متون را Cut و Paste کنید. این دو کلید واقعا بیربط به کاری میکنند که هستند اما چون آشنا هستند، کاربرپسند به نظر میرسند.
حالا اگر کسی سراغ vi بیاید و ببیند که d برای cut استفاده میشود و p برای paste، این به نظرش ناکاربرپسند خواهد رسید چون به آن عادت ندارد.
حالا کدام مفیدتر است؟ vi (:
با داشتن Ctrl+X، چطور میتوانید با کیبرد یک کلمه را cut کنید؟ اول باید به اول کلمه بروید و بعد Ctrl+Shift+Right را بزنید و بعد از اینکه انتخاب شد، Ctrl+X را فشار دهید.
در vi؟ dw یا در اصل delete word.
حالا اگر بخواهید پنج کلمه را Ctrl+X کنید چه؟ به اول کلمه بروید و بعد Ctrl+Shift+Right را فشار دهید و بعد
Ctrl+Shift+Right
Ctrl+Shift+Right
Ctrl+Shift+Right
Ctrl+Shift+Right
Ctrl+X
و در vi؟ d5w که در اصل همان Delete 5 words است.
میبینید که روش vi کاملا سریعتر و منطقیتر است. X و V هیچ ربطی به cut و paste ندارند اما d و w حروف اول delete و word هستند. اما… اما ما به x و v عادت کردهایم و vi به نظرمان غیردوستانه میآید و اگر ادیتوری ببینید که شبیه ویندوز باشد، به نظرتان دوستانه خواهد آمد. یادتان هست؟ مشکل شماره ۱ این بود که لینوکس عین ویندوز نیست؛ دقیقا به همین خاطر برای یک تازه وارد لینوکس در اوایل غیردوستانهتر میآید.
برای غلبه بر مشکل ۵الف، باید به یاد داشته باشید که «کاربر پسند» به معنی «چیزی که کاربر به آن عادت دارد» نیست.
زیرمشکل ۵ب: کاربرپسند، غیرکارا است
این یک واقعیت دوست نداشتنی است. متاسفانه هر چقدر راه دستیابی به کارکرد مورد نظر دورتر باشد، برنامه کاربرپسندتر به نظر خواهد رسید. چرا؟ چون اصولا کاربرپسندی، با اضافه کردن نشانههای تصویری به قابلیت اصلی اضافه میشود و هر چقدر این نشانهها بیشتر باشند، برنامه کاربرپسندتر میشود. فرض کنید یک تازه وارد کامل به دنیای دیجیتال، پشت یک ویرایشگر متن ویزیویگ بنشیند (ویزیویگ یعنی برنامهای که دقیقا چیزی را پرینت خواهد گرفت که شما روی صفحه میبینید، مثل برنامه ورد مایکروسافت یا رایتر اوپن آفیس) و بخواهد بخشی از یک متن را سیاهتر / بولد کند. احتمالا:
باید حدس بزند که فشردن Ctrl+B متن را سیاهتر میکند، که بعید است.
باید دنبال نشانهها بگردد. احتمالا از منوی Edit شروع میکند و وقتی موفق نمیشود به سراغ منوی Format خواهد رفت و از آنجا Font را انتخاب خواهد کرد و به گزینه Bold خواهد رسید!
دفعه بعد که ویرایشگر متن تان را باز کردید، سعی کنید همه کارها را از طریق منوها انجام دهید. نه از میانبرها استفاده کنید و نه از آیکونهای روی نوارابزار. وقتی با سرعت لاک پشت پیش رفتید کشف خواهید کرد که چرا کاربرپسند بودن، غیرکارامد است.
در این دیدگاه، «کاربر پسند بودن» مثل گذاشتن چرخهای تمرینی در کنار چرخهای اصلی دوچرخه است. با چنین دوچرخهای هر کسی با هر سطحی از توانایی می تواند سوار دوچرخه شود. این چرخها برای یک نوآموز فوق العاده اند اما هیچ کسی که دوچرخه سواری بلد باشد به آنها علاقهای نشان نمیدهد و هیچ کس هم مدعی نمیشود که همه دوچرخهها را باید به آنها مجهز کرد.
اکثر برنامههای لینوکس برای کسانی که هنوز نیازمند چرخهای آموزشی هستند، نوشته نشدهاند. تصور برنامهها این است که شما علاقهمند هستید پیشرفت کنید. هیچ کس برای همیشه نوآموز نمیماند و میدانید که اگر چیزی یاد بگیرید، برای همیشه آن را بلد خواهید بود. این استدلال به اینجا میرسد که اکثریت آدمها، در وضعیت صفر نیستند و کمتر کسی است که در دنیای کامپیوتر نیازمند چرخهای آموزشی باشد.
شاید این استدلال را علیه این بشنوید: به هرحال ورد مایکروسافت هم همه این منوها را دارد ولی آیکونهای نوارابزار و کلیدهای میانبر را هم دارد. در واقع این نرمافزار خوبیهای هر دو دنیا را یکجا جمع کرده؛ کاربرپسند و کارا.
اما این دیدگاه را هم اضافه کنید: اول اینکه منوها و نوارابزار و همه این چیزها نیازمند برنامهنویسی هستند. برنامهنویسان لینوکس برای کارشان حقوق نمیگیرند پس سعی میکنند کدی که به آن علاقه ندارند را ننویسند. دوم اینکه اصولا کاربران خیلی حرفهای از نرمافزارهایی مثل ورد مایکروسافت استفاده نمیکنند. آیا تا به حال برنامهنویسی فوق حرفهای را دیدهاید که از مایکروسافت ورد استفاده کند؟ نه. آنها از emacs و vi استفاده میکنند.
چرا اینطور است؟ اول اینکه بعضی از کاراییهای «کاربرپسند» مجبورند قدرت را پایین بیاورند: مانند مثال cut و paste که در بالا زدیم. مساله دوم این است که اکثر قابلیتهای نرمافزاری مثل ورد در منوهایی هستند که در هر صورت مجبور به استفاده از آن هستید. شما فقط تواناییهای عمومی را در میانبرها و تولبارها پیدا میکنید و هنوز باید برای کاربردهای حرفهای که معمولا حرفهای ها به آن نیاز دارند، به سراغ منوهای پر دردسر بروید.
راستی این را هم در نظر داشته باشید که چرخهای آموزشی، معمولا بخش اصلی نرمافزارهای لینوکس نیستند ولی در بسیاری از موارد، در صورت نیاز میتوانید آنها را نصب کنید.
مثلا برنامه پخش کننده mplayer را در نظر بگیرید. برای پخش یک فایل باید mplayer filename را در ترمینال وارد کنید. در حین پخش، کلیدهای چپ و راست و صفحه بالا و پایین، میتوانند پخش را سریع به جلو یا عقب بروند. این چیزی نیست که معمولا به آن عادت دارید. پس بهتر است از gmplayer filename استفاده کنید تا به همان رابط گرافیکی همیشگی که معمولا علاقمند به دیدنش هستید، برسید.
یا بگذارید سراغ تبدیل یک CD صوتی به MP3 (یا بهتر از آن Ogg) بروید: در خط فرمان باید از برنامه cdparanoia استفاده کنید تا فایلهای دیسک را بخوانید. بعد باید از یک کد کننده استفاده کنید که (حداقل به نظر من) کار پچیدهای است. پس اگر من باشم چیزی مثل Grip را نصب میکنم تا با یک رابط گرافیکی دوبرنامه قبلی را در پشت صحنه اجرا کند و تبدیل سی.دی. به فایل صوتی را به کاری ساده تبدیل کند.
نتیجه؟ برای پیشگیری از مشکل ۵ب: به یاد داشته باشید که چرخهای آموزشی در دنیای لینوکس یک ابزار قابل نصب هستند و نه بخشی اصلی از سیستم. گاهی هم پیش مییاد که برنامهای اصولا چیزی به اسم چرخ آموزشی ندارد.
دیگر قسمتها:
– لینوکس ویندوز نیست (قسمت اول)
– لینوکس ویندوز نیست (قسمت سوم)