حسام کاوه

روز نوشته های یک توسعه دهنده

ویندوز یا لینوکس؟ عمیق بیندیشیم

date 22 شهریور 1397   

اول از هرچی از روز برنامه نویس بگم چون امروز 22 شهریوره و روز برنامه نویسه! تقریبا به هرکی تبریک گفتم جاخورد ازینکه روز برنامه نویس هم داریم. احتمالا دلیلش اینه که هنوز تو تقویم شمسی ثبت نشده و یادمه داشتند امضا جمع میکردند که ثبت شه(الان که چک میکنم سایتش ساسپند شده! ولی خب قبلا من امضامو ثبت کرده بودم). امیدوارم الان که این مطلبو میخونید programmerday.ir براتون باز بشه:( . بریم سر اصل مطلب!

حق و باطل

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

ویندوز برای چه کسی مناسبه؟ لینوکس چطور؟

خیلی سعی کردم افراد و کار هارو دسته بندی کنم و با توجه به اونا پیشنهاد بدم که چه سیستم عاملی مناسبشونه، اما واقعا سخته. برای مثال اگه شما گیمرید احتمالا ویندوز واستون مناسبه چون دامنه بازی های لینوکسی کمتره. اما بازی هایی که هم ویندوز و هم لینوکس ساپورت میکنن(مثل Dota) تو لینوکس بهتر و روون تر اجرا میشن. دیدید؟ کلی پارامتر هست که حتی یه گیمر بخواد سیستم عاملشو انتخاب کنه. تصمیم گیری اینکه کدوم سیستم عامل واستون مناسبه رو خودتون باید انجام بدید. چند سالیه من کاربر لینوکسم و بذارید تجربیاتمو از ویندوز و لینوکس واستون بگم:

تجربیاتم از ویندوز

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

چطور لینوکسی شدم؟

اسم لینوکسو شنیده بودم و با اوبونتو فروم آشنا شدم. دیدم چقدر کاربر فعال داره! کنجکاو شدم نصبش کنم و بله! اولین تجربه و اولین شکست… هاردم فرمت شد. (تو پرانتز بگم که هنوزم خیلیا این مشکلو دارن. انتظار دارن نصب لینوکس مثل ویندوز یه next next ساده باشه. سادست اما به شرطی که گزینه هارو با دقت انتخاب کنی!). چند روزی مشغول ریکاوریشون بودم و دوباره شروع کردم به نصب لینوکس ولی اینبار از روی یه آموزش. انتظار نداشتم رابط گرافیکی لینوکس اینقدر خوشگل باشه( آخه اسم لینوکس یکم خشن بود! ) و واسم جالب بود که میشه حتی شکل و شمایلشو به کل عوض کرد. طریقه نصب برنامه واسم کمی عجیب بود اما یکم که بیشتر آشنا شدم دیدم چقد کاراتر و ساده‌تر از نصب برنامه بصورت ویندوزیه و آپدیت کردنشون چقدر راحته. اوایل زیاد ارتباط خوبی با ترمینال نداشتم ولی اینطور که تو اینترنت میدیدم کارای زیادی میشه باهاش کرد ولی حوصله و دانش میخواد. این شد که هی بین لینوکس و ویندوز سوییچ میکردم و یجورایی بینشون بلاتکلیف بودم.

اصل شماره ۱ – هر چیزی طرز تفکر خاص خودشو داره. باید فکرتون لینوکسی باشه

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

لینوکس رابط گرافیکی خیلی خوبی داره و به شدت هم شخصی سازی میشه کردش اما این رابط گرافیکی به تنهایی جوابگو همه کار نیست. همه کاری که میگم منظورم چیزی فراتر از یه وبگردی ساده یا حتی فیلم دیدنه.

اصل شماره ۲ – شما باید خوره کامپیوتر باشید تا بتونید با طرز فکر لینوکسی انس بگیرید

با VLC آشنایی دارید؟ یه نرم افزار خیلی معروف برای دیدن فیلمه! امروزه سرعت اینترنت بالا رفته و لازم نیست فیلمو دانلود کنید و بعد ببینید. کافیه VLC رو باز کنید و لینک فیلم رو بهش بدید تا استریمش کنه و آنلاین ببینیدش. اینو هم تو لینوکس و هم تو ویندوز میشه با رابط گرافیکی انجام داد. اما یه خوره کامپیوتر احتمالا ترجیهش اینه که بجای اینکه VLC رو باز کنه و بین منو ها بگرده و گزینه ی استریم از اینترنت رو پیدا کنه، تو ترمینال همجین چیزی بنویسه:

vlc http://x.com/my_movie.mkv

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

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

اصل شماره ۳ – اگه میخوای لینوکسی حرفه‌ای شی باید تو چیز ها عمیق شی

همه چیز تو لینوکس دست خودتونه و همه چیز قابل تغییره! تو ویندوز سرور خیلی راحت میتونید یه سایت بالا بیارید اما تو سرور لینوکسی باید دانشی از apache و bind server داشته باشید. البته تو لول های حرفه ای تر ویندوزی ها هم باید این دانش رو بدست بیارن اما تو لینوکس شما شیرجه میزنید تو دل داستان و باید بدونید چی کار می‌کنید! البته جای ترسی نداره چون اینترنت پره از داکیومنت و آموزش و میتونید با اونا شروع کنید! و البته نیازی نیست همه چیز از مثلا apache رو بلد باشید اما حداعقلاتی نیازه. به مرور حرفه ای میشید:). دفعات اول با کپی پیست دستورات روی سرور لینوکس سایت بالا میاوردم. اما تکرار در انجام دادنشون به مرور مفاهیم اولیه رو بهم یاد داد.

اصل شماره ۴ – این تویی که تصمیم گیرنده ای. احترام متقابله

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

اعتقاد بر اینه که انتشار سورس میتونه برنامه رو قوی‌تر کنه و واقعا هم جواب داده.  شرکت هایی مثل مایکروسافت که قدیم به هیچ وجه سورس منتشر نمیکردن دارند محصولاتشونو اوپن سورس میکنن که اولا مشکلاتش رو بقیه هم رفع کنند، دوما بقیه هم بتوانند توسعش بدن و سوما بشه بهشون اعتماد کرد!

اصل شماره ۵ – نیازی نیست برنامه نویس باشید

اشتباه نکنید، لینوکس فقط برا برنامه نویس‌ها مناسب نیست! من لینوکسو برا چهار دسته آدم مناسب میدونم:

  • خوره ها
  • کسایی که دنبال یک سیستم عامل پایدار برای کار های روتین مثل وبگردی هستن و نمیخوان هی عوضش کنن.
  • برنامه نویس ها
  • sysAdmin ها

نتیجه گیری:

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