راهنمایی, عمومی

چطور برنامه نویسی را شروع کنیم!

چطور برنامه نویسی را شروع کنیم!

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

1 . هدف از برنامه نویسی

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

همین الان هدف خود را مشخص کنید! هدف شما از ورود به رشته برنامه نویسی چیست میخواهید اپلیکیشن های موبایل بسازید، یا وب سایت و برنامه های تحت وب، نرم افزار های ویندوز، لینوکس و یا سیستمی و درایورها، سیستم های مبتنی بر هوش مصنوعی و یادگیری ماشین، بازی های رایانه ای و موبایل،‌ اپلیکیشن ساعت و خودرو های هوشمند، نرم افزار برای سیستم عامل های موبایل از جمله Android و IOS و …

2. مهارت های تخصصی مورد نیاز

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

شی گرایی

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

الگوریتم و ساختمان داده

لزوما نیاز نیست شما جزئیات همه الگوریتم های مورد استفاده را یاد بگیرید چرا که کتابخانه های موجود شامل اغلب الگوریتم ها هستند و فقط کافیست شما آن ها را فراخوانی کنید. اما می بایست درک کلی از نحوه عملکرد الگوریتم ها (مانند الگوریتم های جستجو) و ساختمان داده های (مانند: آرایه، صف، پشته و …) داشته باشید.

پایگاه داده

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

سیستم کنترل نسخه GIT

ممکن است شما به عنوان عضوی از تیم توسعه یک نرم افزار باشید در اینصورت قطعا نیاز به یک سیستم کنترل نسخه مانند گیت خواهید داشت. ممکن است شما قصد تغییر و توسعه نسخه های مختلفی از نرم افزار را داشه باشید و نیاز به استفاده از گیت داشته باشید. در هر صورت تسلط به یک سیستم کنترل نسخه به هر برنامه نویسی توصیه می شود.

مبانی سیستم های کامپیوتری

برنامه نویس باید از نحوه اجرا (کامپیایل یا تفسیر) برنامه ها در سیستم های کامپیوتری اطلاع داشته باشد. تفاوت کامپایل و تفسیر و تفاوت زبان های کامپایلری و مفسری را بداند.

سیستم عامل

این سیستم عامل ها هستند که عاملیت حفظ و اجرای برنامه های شما را دارند بنابراین آشنایی در سطح متوسط به یکی از سه سیستم عامل محبوب لینوکس، ویندوز و مک توصیه می شود.

تحصیلات دانشگاهی

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

ریاضیات و آمار

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

3. مهارت های عمومی مورد نیاز

توسعه دهندگان میبایست دارای مهارت های زیر باشند و این توانایی ها را در خود تقویت نمایند.

آشنایی به زبان انگلیسی

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

توانایی جستجو

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

پشتکار

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

مستند سازی

مستند سازی یکی از مهم ترین مراحل توسعه نرم افزار است. یاد بگیرید و عادت کنید هر چیزی و هر اتفاقی در نرم افزار را باید مستند کنید. مستندات به توسعه و به روزرسانی نرم افزار ها را ساده تر میکنند.

یادگیری و تمرین مستمر

در حوزه توسعه نرم افزار به یادگیری و مطالعه مستمر برای به روز ماندن نیاز خواهید داشت. هر روز تمرین کنید و برنامه بنویسید که علاوه بر یادگیری به جزئیات جدید برخواهید خورد و به تجربه شما اضافه خواهد شد.

توانایی حل مساله

برنامه نویس باید توانایی این را داشته باشد تا مسائل را بخوبی تحلیل کند و راه حل های خلاقانه ارائه دهد.

تایپ نسبتا سریع

شما به عنوان یک برنامه نویس به زبان کد با کامپیوتر صحبت می کنید پس نیاز به مهارت تایپ نسبتا سریعی خواهید داشت.

4. پیش نیاز ها

برای شروع برنامه نویسی به یکسری ابزار های ضروری سخت افزاری و نرم افزاری نیاز خواهید داشت

کامپایلر یا مفسر

کامپیالر ها یا مفسر ها کد های برنامه را به زبان قابل درک برای سیستم و درنهایت اجرا، کامپایل یا تفسیر میکنند. برای اجرای برنامه هایی که به هر زبان نوشته شده اند نیاز به نصب کامپایلر آن زبان در سیستم عامل خواهید داشت.

محیط ویرایش کد

ویرایشگر کد شاید محیطی است برنامه نویسان اغلب اوقات خود را در آن سپری میکنند. یک ویرایشگر خوب امکانات و تجربه کاربری خوبی را به برنامه نویسان ارائه می دهد. از ویرایشگر های محبوب میتوان VS Code، Sublime، Vim را نام برد.

محیط مجتمع (IDE)

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

  • Visual Studio
  • IntelliJ IDEA
  • Android Studio
  • PHP Storm
  • NetBeans
  • Eclipse

سخت افزار

حداقل سخت افزار لازم برای ساخت و تولید نرم افزار های مختلف متفاوت است. برای کسب اطلاع در مورد این موضوع می توانید به وب سایت رسمی زبان برنامه نویسی و یا محیط مجتمع مراجعه کنید.

انتخاب زبان برنامه نویسی

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

  • Python
  • php
  • Kotlin
  • JavaScript
  • #C
  • Swift
  • ++C

5. ساخت وب سایت

برای ساخت وب سایت نیاز به تخصص در دو حوزه مجزا به نام Frontend و Backend می باشد. به توسعه دهنده ای که تمام بخش های یک نرم افزار تحت وب از جمله فرانت اند و بک اند را توسعه می دهد توسعه دهنده فول استک (Fullstack Developer) گفته می شود اما پیشنهاد ما این است که اگر میخواهید توسعه نرم افزار های تحت وب را فرابگیرید ابتدا در یکی از این موضوعات شروع به یادگیری کنید. در ادامه به نیازمندی هر یک از این جوانب پرداخته می شود.

توسعه دهنده Backend تحت وب

بک اند یا بخش عقبی یک برنامه تحت وب به نرم افزار یا سرویسی گفته می شود که در سرور یا سرویس دهنده اجرا می شود. زبان های برنامه نویسی (به ترتیب محبوبیت) php، پایتون، #C، جاوا و … توانایی اجرا (کامپایل یا تفسیر) شدن بر روی سرور های لینوکس یا ویندوز را دارند. در ادامه به دو زبان پرطرفدار که برای ساخت برنامه های سمت سرور (Backend) استفاده می شود میپردازیم:

زبان برنامه نویسی php

بنابر گفته سایت رسمی ( php.net ) : یک زبان برنامه نویسی همه منظوره محبوب که مخصوصاً برای توسعه وب ساخته شده است. Php سریع، انعطاف‌پذیر و عمل‌گرایانه،است و همه چیز از وبلاگ شما گرفته تا محبوب‌ترین وب‌سایت‌های جهان توسط php قابل توسعه هستند. نرم افزار های محبوب زیادی در دنیا از جمله وردپرس با افزوونه ووکامرس آن، سیستم یادگیری مودل، فریم ورک لاراول و … توسط php نوشته شده اند فریم ورک های محبوبی مانند لاراول با کتابخانه های متنوع خود این امکان را ایجاد کرده تا در کمترین زمان بدون نیاز به نوشتن کد های طولانی برای کارهای ساده نرم افزار های تحت وب و وب سایت ها را ایجاد کنید. پس اگر قصد توسعه وردپرس و مودل (چه افزونه و تم) ، API و قصد ساخت وب سایت با لاراول را دارید میتوانید این زبان برنامه نویسی را یاد بگیرید.

زبان برنامه نویسی پایتون

زبان پایتون به دلیل الزاماتی که در نوشتن کد دارد به خوانایی خوب و سادگی در یادگیری شناخته می شود. کدهای پایتون زیبا و خوانا هستند و کتابخانه های قدرتمندی در پردازش تصویر و محاسبات داشته و به خوبی از پس نرم افزار هایی که دارای هوش مصنوعی و یادگیری ماشین هستند بر می آید. فریم ورک جنگو (Django) پایتون وب سایت و برنامه های تحت وب را به زبان پایتون توسعه دهید.

توسعه دهنده Frontend تحت وب

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

اپلیکیشن های تحت وب

اغلب مرورگر ها قابلیت اجرای اسکریپت های بزرگ و پیچیده را در سمت کاربر دارند .امروزه بخش کلاینت و سرور اغلب اپلیکیشن های تحت وب به صورت مجزا توسعه داده می شوند و بخش جلویی توسط API با نرم افزار سرور ارتباط برقرار می کند. زبان های برنامه نویسی جاوا اسکریپت و تایپ اسکریپت از محبوب ترین زبان های برنامه نویسی Frontend هستند. هم اکنون با استفاده از کتابخانه های React, Angular یا Vue که به زبان های جاوا اسکریپت و تایپ اسکریپت نوشته شده اند و رایگان و متن باز منتشر شده اند میتوان اسکریپت هایی نوشت که محتوای صفحات وب را پس از لود شدن به صورت پویا ایجاد کنند و یا تغییر دهند و یا محتوایی را از سرور دریافت کنند. در ساده ترین حالت صفحه ای را فرض کنید که وقتی در بخشی از صفحه کلیک می شود بدون اینکه صفحه مجددا بارگزاری شود محتوای قبلی حذف شده و متحوای جدید جایگزین می شود مانند یک نرم افزار یا اپلیکیشن نیتیو در موبایل یا کامپیوتر های شخصی.

6. اپلیکیشن اندروید

زبان پیشنهادی گوگل برای توسعه اپلیکیشن های اندروید زبان برنامه نویسی کاتلین است اگرچه پیش از این اغلب اپلیکیشن های محبوب به زبان جاوا نوشته شده اند. در حال حاضر هر دو این زبان ها برای توسعه برنامه های سیستم عامل اندروید به کار میروند. با فراگرفتن یکی از این دو زبان و نصب محیط مجتمع گوگل یعنی اندروید استدیو میتوانید شروع به ساخت اپلیکیشن برای این سیستم عامل نمایید. اگرچه می‌توان از زبان Dart در فریم‌ورک فلاتر (Flutter)، زبان جاوا اسکریپت در فریم‌ورک React Native و زبان C#‎ هم در فریم‌ورک Xamarin برای برنامه نویسی اندروید استفاده کرد.

  • زبان های برنامه نویسی: Java، Kotlin
  • محیط مجتمع: Android Studio، Eclipse

7. اپلیکیشن IOS

IOS سیستم عامل گوشی های آیفون شرکت اپل است. زبان پیشنهادی برای توسعه اپلیکیشن های اپل زبان برنامه نویسی Swift و محیط مجتمع پیشنهادی Xcode است. اما اینجا هم می‌توان از زبان Dart در فریم‌ورک فلاتر (Flutter)، زبان جاوا اسکریپت در فریم‌ورک React Native و زبان C#‎ هم در فریم‌ورک Xamarin برای برنامه نویسی iOS استفاده کرد. زبان Swift توسط اپل به طور خاص برای ساخت اپلیکیشن ساخته شده است. انحصار طلبی شرکت اپل، امکان ساخت برنامه های IOS را تنها بر روی سیستم عامل مک فراهم نموده است. چرا که Xcode تنها بر روی سیستم عامل مک قابل اجراست و سیستم عامل مک هم تنها بر روی سیستم های ساخت اپل. می‌توان با استفاده از Xcode اپلیکیشن‌هایی برای سیستم عامل‌های WatchOS ،iOS ،macOS و tvOS توسعه داد.

  • زبان برنامه نویسی: Swift
  • محیط مجتمع: XCode

8. هوش مصنوعی و یادگیری ماشین

هوش مصنوعی امروزه کاربرد زیادی در برنامه های کاربردی، بازی های رایانه ای، نرم افزار ها، ربات ها و … دارد. از تشخیص چهره و افکت های اینستاگرامی گرفته تا تشخیص پلاک خودرو توسط پلیس راهور، همه و همه نیازمند استفاده از هوش مصنوعی و یادگیری ماشین است. سیستم‌های خبره (Expert System)، پردازش زبان طبیعی (Natural Language Processing | NLP)، تشخیص یا بازشناسی گفتار (Speech Recognition) و بینایی ماشین (Machine Vision) از کاربرد های هوش مصنوعی هستند. فراگیری هوش مصنوعی نیازمند مطالعات زیادی در این زمینه می باشد اما اولین قدم در این رشته انتخاب زبان برنامه نویسی است. زبان پایتون یکی از قدرتمندترین زبان های برنامه نویسی هوش مصنوعی است. پایتون به واسطه وجود کتابخانه های سودمندی (مثل کتابخانه تنسورفلو برای طراحی شبکه های یادگیری عمیق) که دارند مناسبت ترین زبان برای یادگیری و توسعه نرم افزار های مبتنی بر هوش مصنوعی هستند . دومین زبان مناسب برای برنامه نویسی هوش مصنوعی زبان جاوا است. جاوا با کتابخانه های مثل weka و فریم ورک های محبوب آن برنامه نویسی هوش مصنوعی را تسهیل می کند.

9. برنامه نویسی ویندوز

اغلب زبان های برنامه نویسی قابلیت اجرا بر روی سیستم عامل ویندوز را دارند اما با توجه به نوع نرم افزار، زبان های مختلفی مورد استفاده قرار میگیرند. زبان های پرکاربردی برای برنامه نویسی نرم افزار های ویندوزی در لیست زیر وجود دارد که می توانید یادگیری آنها را شروع کنید:

  • Python
  • Java
  • #C
  • ++C
  • C

نتیجه گیری

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

دیدگاهتان را بنویسید