بهترین زبان های برنامه نویسی سال 1402


همیشه انتخاب یک زبان برنامه نویسی برای شروع سخته بوده و هست و باوجود شمار زیادی از زبان ها ممکنه به عنوان یک مبتدی گیج بشین(اما من که نمیزارم) ، به همین منظور این پست زیبارو براتون درست میکنم که امیدوارم به کارتون بیاد .


برترین زبان

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

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

موبایل

اگر دوست دارید اپلیکیشن های موبایل بسازید (اگر ماشین حساب نوشتید پابلیشش نکنید خواهشا!) سه گزینه پیش رو دارید اینکه برای سیستم عامل ios و یا android و یا هردو برنامه بسازید . در هر صورت شما باید زبان های برنامه نویسی زیر را یاد بگیرید.

سیستم عامل ios: زبان برنامه نویسی سویفت(swift) زبانیست که شرکت اپل برای توسعه اپلیکیشن های سیستم عامل های مک و آی او اس ارائه کرده و بهترین و سازگارترین برای این سیستم است .

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

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

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


وب

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


بازی سازی

شاید همین الان در حال بازی کردن باشینو بگین ایکاش منم ی بازی می ساختم عشق می کردم با بازیه خودم (اینا توهماتی بیش نیست بیخیالش بشین) ، اگر علاقه شدیدی به بازی سازی داشتید باید بگم راه طولانی در راه دارید با زبان های زیادی میشه بازی ساخت اما اگر به دنبال ساخت یک بازی سه بعدی سطح بالا هستید( به اصطلاح AAA) باید زبان زیبای c++ را یاد بگیرید .این زبان به خاطر انعطاف پذیری بسیار زیادی که در کنترل حافظه و همچنین سرعت بالایی که داره مرسوم ترین زبان در توسعه موتورهای بازی سازی شرکت های بزرگ جهان همچون یوبی سافت ، اکتیویژن ،سی دی پروجکت ، (بقیشونو حضور ذهن ندارم) استفاده شده است . یادگیری این زبان بهترین نقطه شروع برای برنامه نویسی بازی است(گرافیک و بقیه چیزارو بسپرین به متخصصش همه کاره نشین و یک تیم تشکیل بدین ترجیحا) اما اگر یک جایگزین قوی دیگر بخواهیم معرفی کنیم سی شارپ است که با موتور بازی سازی یونیتی(Unity) توانسته در سال های گذشته در دنیای بازی سازی خوش بدرخشد.


هوش مصنوعی

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

پایتون : یکی از اصلی ترین زبان های مرتبط با هوش مصنوعی پایتونه دوست داشتنیه که با کتابخانه های بسیار قوی که داره و اکثرا تو زبان سی توسعه داده شدن تونسته این بازارو قبضه کنه اما ایا تنها یادگیریه پایتون کافیه ؟!(ادامه میگیم)

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

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

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


سیستم های تعبیه شده(embedded system)

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


شبکه و امنیت

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


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