نقشه‌ی راه برای شروع در دنیای برنامه نویسی

اگر قصد داشتید که چندین سال پیش به دنیای برنامه نویسی وارد شوید؛ احتمالا کار سختی برای انتخاب کردن زبان برنامه نویسی مورد نطرتان نداشتید و انتخاب های شما محدود به چند زبان موجود میشد: اما امروزه انتخاب کردن زبان برنامه نویسی و شاخه‌ی دلخواهتان برای شروع کردن و ادامه دادن در این حوزه از بین حدود ۲۵۶ زبان موجود کار بسیار سختی خواهد بود .من هم تجربه‌ی شخصیِ این چنینی راجع به شروع در این حوزه داشتم و از همان ابتدا احساس نیاز به یک نقشه راه یا مقاله‌ای مفید در این باره میکردم؛ حالا بعد از ۳ سال فعالیت در این حوزه و تحقیق راجع به دنیای برنامه نویسی و شاخه های موجود در آن؛ نتیجه‌ی این تحقیقات در قالب یک مقاله و یک رودمپ ارایه شده تا برای کسانی که به تازگی در پی ورود به دنیای برنامه نویسی هستند یک راهنمای مفید باشد .من مجید قاسمی؛ برنامه نویس فرانت اند هستم و خیلی خوشحالم که اینجا، در ویرگول ، میتونم شما رو راهنمایی کنم .قبل از اینکه دقیق تر بخواهیم اجزای رودمپ رو بررسی کنیم؛ باید به این نکته اشاره کرد که در این رودمپ به بررسی جزییات هر کدام از شاخه ها پرداخته نشده است و فقظ یک تصویر کلی از دنیای برنامه نویسی ارایه شده است.شِمای کلی از رودمپخب، وقت این است که نگاه عمیق تری به هر یک از اجزای این رودمپ داشته باشیم . نکته قابل توجه در این رودمپ این است که به بررسی تفصیلی بخش های آن پرداخته نشده و هدف آن معرفی کردن کلیت دنیای برنامه نویسی است و از توضیح دادن هر یک از بخش ها به صورت جزیی خودداری شده است. (ستون های سمت راست زبان(تکنولوژی) های معرفی شده برای هر تخصص است)شاخه های مختلف برنامه نویسی وب و تکنولوژی های هر کدامبرنامه نویسی وِب (Web Development)خب، در بخش اول بررسی شاخه های برنامه نویسی سراغ پرطرفدارترین بخش آن یعنی برنامه نویسی تحت وب رفتیم . اگر به رودمپ دقت کنید خواهید دید که ما برنامه نویسی تحت وب را به 3 بخش عمده تقسیم کردیم که هدف از اینکار دادن نظم فکری به بیننده است . چیزی که در کل جامعه برنامه نویسی و علم کامپیوتر مرسوم است دو دسته‌ی برنامه نویسی Front-end و Back-end می‌باشد اما ما در این رودمپ دسته‌ی سومی به نام CMS Development نیز ارایه کرده ایم که تکنولوژی های خاص آن نیز در مقابلش ذکر شده اما این به آن معنی نیست که طراحی سایت های CMS فقظ با این تکنولوژی ها امکان پذیر است (شما با استفاده از تکنولوژی های Front-end هم میتوانید این سایت ها را طراحی کنید ولی استفاده کردن از این تکنولوژی ها امتیازاتی دارد که بیان آن در این مقاله نمیگنجد).شاخه های مختلف برنامه نویسی موبایل و دسکتاپ و معرفی تکنولوژی های هر کدامبرنامه نویسی موبایل و دسکتاپ (Mobile & Desktop Development)در بخش بعدی، نوبت به بررسی تکنولوژی های مورد استفاده برای برنامه نویسی موبایل و دسکتاپ می‌رسد .برنامه نویسی موبایل : در گذشته شما برای هر یک از سیستم عامل های Android و IOS نیاز به یادگیری زبان های مخصوص این سیستم عامل ها داشتید (که هنوز هم این زبان ها کاربرد خود را دارند) ولی امروزه به لطف وجود framework های مختلف و به اصطلاح Cross Platform شما نیازی به این یادگیری های جداگانه نخواهید داشت و با نوشتن فقط یک کُد، می‌توانید خروجی های مختلف برای هر یک از سیستم عامل ها داشته باشد.برنامه نویسی دسکتاپ : شما به عنوان یک برنامه نویس دسکتاپ موظفید که برنامه هایی بنویسید که در محیط windows, mac,linux اجرا شوند. این حوزه یکی از قدیمی ترین حوزه های برنامه نویسی است و به اصطلاح "مرگ" ندارد.اگر بخواهیم یک جمع بندی کلی از سه شاخه‌ی وب، موبایل و دسکتاپ داشته باشیم می‌بینیم که زبان javascript بسیار موفق عمل کرده و تقریبا پرطرفدارترین زبان این حوزه به شمار می‌آید.هوش مصنوعی و یادگیری ماشینهوش مصنوعی و یادگیری ماشین (AI, Ml & Data Science)به گفته متخصصان علوم کامپیوتر این حوزه در آینده ای نه چندان دور به پرکاربرد ترین و پردرآمد ترین حوزه برنامه نویسی تبدیل خواهد شد کما اینکه در همین سال ها نیز حوزه ای با درآمد بالا و دارای فرصت های شغلی بسیاری است. علت گنجاندن علوم داده در بین این حوزه اشتراک های زیاد این تخصص با یادگیری ماشین و هوش مصنوعی است به طوری که از یادگیری ماشین استفاده بسیار زیادی در حوزه علوم داده می‌شود . به طور خلاصه می‌توان گفت که بهترین زبان برای این حوزه Python و بعد زبان R می‌باشد اما از پیشرفت Javascript در این حوزه نیز نباید اصلا غافل شد!برنامه نویسی علمیبرنامه نویسی علمی (Scientific Development )این حوزه بیشتر مختص کسانی است که در علوم مختلفی غیر از کامپیوتر مثل ریاضی و فیزیک تحقیق میکنند. اینگونه از زبان ها به کاربران اجازی می‌دهند که خواسته های مختلف خود را به راحتی با استفاده از این زبان ها پیاده سازی کنند. تقریبا پرطرفدارترین زبان این حوزه MATLAB است که امکانات فوق‌العاده‌ای در اختیار کاربران میگذارد.برنامه نویسی سیستمبرنامه نویسی سیستم ها (Systems and Embedded Systems Development)این دو شاخه جزو شاخه های کمتر شناخته شده ولی بسیار پرکاربرد در حوزه کامپیوتر هستند. منظور از برنامه نویسی سیستم این است که برنامه نویس برنامه ای برای محیط مشخصی مثل windows طراحی کند؛ مانند برنامه های قابل استفاده در خود windows . یکی از بهترین زبان ها برای این حوزه زبان پرسرعتِ C می‌باشد ولی Python نیز انتخاب خوبی میتواند باشد.برنامه نویسی (تعبیه شده) Embed یعنی طراحی یک سیستم رایانه ای که ترکیبی از پردازنده رایانه ای ، حافظه رایانه و دستگاه های جانبی ورودی / خروجی می‌باشد.از زبان های پرکاربرد و قدرتمند این حوزه می‌توان به زبان C و ++C اشاره کرد.برنامه نویسی برای کامپایلر هاطراحی کامپایلر (Language / Compiler Development)شاید بهتر است قبل از توضیح دادن این حوزه، توضیح مختصری از کامپایلر داشته باشیم؛ به بیان ساده، کامپایلر برنامه‌ای است که یک برنامه نوشته شده در یک زبان خاص ساخت‌یافته را خوانده و آن را به یک برنامه مقصد (Target Language) تبدیل می‌نماید. در یکی از مهم‌ترین پروسه‌های این تبدیل، کامپایلر وجود خطا را در برنامه مبدأ اعلام می‌نماید [ویکی پدیا].برنامه نویس کامپایلر موظف است که با استفاده از زبان (تکنولوژی) های مشخص شده، کامپایلری یا زبان برنامه نویسی را طراحی کند که بتواند قطعه کدی را به اصطلاح کامپایل کند. از زبان های ++C ، C و Go برای این امر می‌توان استفاده کرد.برنامه نویسی رقابتیبرنامه نویسی رقابتی (Competitive Programming)شاید این تیتر کمی برای شما عجیب باشد اما این حوزه، یکی از حوزه های جانبی دنیای برنامه نویسی می‌باشد که مخصوص شرکت در مسابقاتی مانند ACM می‌باشد. در این حوزه تمرکز بیشتر بر روی ساختمان داده‌ی برنامه نویسی می‌باشد و Python و ++C یکی از بهترین انتخاب ها می‌تواند باشد.شایان ذکر می‌باشد که شاخه های دیگری در برنامه نویسی ممکن است وجود داشته باشد مثل برنامه نویسی Quantum و برنامه نویسی شبکه؛ اما دلایل انتخاب نکردن و وارد نکردن آنها به این رودمپ را می‌توان به جدید بودن آن حوزه مانند Quantum و یا نداشتن وجه اشتراکی با دیگر حوزه های این رودمپ اشاره کرد.امیدوارم که این مقاله‌ راهنمای افرادی باشد که به تازگی قصد ورود به حوزه کامپیوتر را دارند و یا سردرگم برای انتخاب حوزه مورد نظر خود هستند .رودمپ در گیت‌هاب