وبلاگ هاتف

هاتف اینجا می‌نویسد

چرا باید زبان ++C را بدانیم؟

 

بعد از یک غیبت طولانی از نوشتن ، دلم برای نوشتن تنگ شد و تصمیم گرفتم که یک پست وبلاگ بنویسم تا این وبلاگ برای خودش یک گوشه نیفته و خاک بخوره . دوستی اخیرا پرسیده بود که چرا باید زبان برنامه‌نویسی ++C را یاد بگیریم . این زبان مگر قدیمی نیست و منسوخ نشده است؟ پس چرا ما باید آن را یاد بگیریم و یا در دانشگاه تدریس شود. گفتم این رو یک پست وبلاگ بکنم تا هم لینک رو در اختیار اون دوستم بگذارم و هم اگر کسی این سوال براش پیش اومد که چرا ما باید سی پلاس پلاس یاد بگیریم ، من به این نوشته رفرنس بدم .

این سوال برای همه بصورت طبیعی پیش میاد . چرا وقتی زبان‌های ساده‌تر و سمت زبان انسان مثل پایتون هست، چرا ما باید برویم و درگیر زبان سی و فک و فامیل‌هایش مثل #C و ++C شویم ؟ وقتی زبان‌هایی مثل دارت و روبی و کاتلین هستن برای توسعه چرا اصلا باید رفت سمت سی پلاس پلاس. از آنجایی که در ایران هم داستان استارتاپ و ایده برنامه‌نویسی و این چیزها بازه و اکثرا هم سمت توسعه وب هستن (و بیشتر فرانت اند) با خود می‌گویند که چرا به جای سی‌پلاس پلاس با ساینتکس‌های وحشتناک و دستورات سخت ، نرویم و چیزی مثل React و یا NodeJS یاد نگیریم . از طرفی سر همین بحث استارتاپ‌ها و دیجی‌کالا و اسنپ فود و این چیز‌ها ، اکثر شرکت‌ها بیشتر برای فرانت و بک برنامه‌نویس می‌خواهند که خب این چیزهایی که نام بردم از پرطرفدارها هستن و برای بک‌اند هم معمولا از PHP و یا Python استفاده می‌شود . حال من برای شروع چرا باید با یک زبان سختی مثل سی‌پلاس پلاس خودم را سرگرم کنم؟ خب پاسخ شما عملا در این پست است.

خب اول باید بدانیم که زبان برنامه‌نویسی ++C چه هست؟

سی پلاس پلاس یک زبان برنامه نویسی همه منظوره شی‌گرا ست که می‌توان بوسیله آن بصورت ساخت‌یافته برنامه‌نویسی کرد. همانطور که گفتم زبان سی پلاس پلاس یک زبان سخت است چون یک زبان سطح میانی است ( برخلاف پایتون که یک زبان سطح بالا (نزدیک به زبان انسان) و مفسری است) و همین مساله باعث شده که فقط گیک‌ها و نرد‌های کامپیوتری به سمت آن بیایند و آن را یاد بگیرند و همچنین دانشجوهای رشته مهندسی کامپیوتر نیز این زبان را بعنوان یک زبان برنامه سازی در دانشگاه آموزش می‌بیننند.  ++C یکی از پرطرفدارترین زبان‌های برنامه‌نویسی (درست مانند پدربزرگش C ) است.  همچنین این زبان از این قابلیت برخوردار است که هم یک زبان سطح بالا باشد و هم یک زبان سطح پایین . بل لبز (Bell Labs) که معرف حضور همه‌تون هست که جناب آقای بل ( الکساندر گراهام بل مخترع تلفن) اون رو پایه گذاری کرد ( وبسایتشون اکنون ) بل لبز در کنار تولید سیستم عامل ، به توسعه زبان‌های برنامه‌نویسی نیز پرداخت و زبان افسانه‌ای C که برای سیستم‌های عامل استفاده می‌شود نیز از دستاورد‌های این آزمایشگاه می‌باشد . زبان سی از روی زبان B ساخته شد . بعد از مدتی بل لبز تلاش کرد که C را بهبود دهد و سپس نام ابتدایی آن را C classes که بعدها به نام ++C تغییر یافت . و درنهایت در سال ۱۹۹۸ استاندارد شد.

نمونه کد ++C

 

#include <iostream>
using namespace std;

int main() {
  cout << "Hello World!";
  return 0;
}

 

خب حال متوجه شدیم که ++C چه زبان برنامه‌نویسی است و از کجا آمده. چرا حالا باید آن را در سال ۲۰۲۱ یاد بگیریم (همون ۱۴۰۱ خودمون).

شاید فکر می‌کردید که زبان سی‌پلاس پلاس یک زبان فراموش شده و منسوخ شده است اما از این زبان امروزه براحتی در بسیاری از جاها استفاده می‌شود . هرجا که نام از عملکرد بالا ( های پرفورمنس یا High Performance ) شنیده می‌شود نام سی پلاس پلاس هم مطرح می‌شود. یعنی این زبان هنوز هم جزو زبان‌های مورد استفاده برای راه‌حل‌هایی هست که به عملکرد سریع ماشین نیاز دارند. در ساخت بازی‌های ویدیویی از این زبان استفاده می‌شود‌ ( چون عملکرد بالایی دارد و بازی نیز نیازمند این است ) . این زبان در IoT (بخوانید اینترنت اشیا) و همچنین سیستم‌های توکار، برنامه‌های‌کاربردی با منابع سنگین برای VR (بخوانید واقعیت مجازی) و AR (بخوانید واقعیت افزوده) نیز از C و ++C استفاده می‌شود . پس این ایده که این زبان به زودی منسوخ می‌شود و اصلا چرا وقت بگذاریم و آن را یاد بگیریم عملا منتفی است . حداقل تا ۱۵ سال دیگر منتفی است ( مگر زبانی بیاید که واقعا پرفورمنسی بهتر از سی پلاس پلاس بدهد و سطح بالا هم باشد و کلا بهتر از سی پلاس پلاس باشد که باز اگر بیاید تا این تغییرات حاصل شود و این زبان منسوخ شود باز پنج تا ده سالی زمان خواهد برد)

همچنین برنامه‌ها و نرم‌افزارهای زیادی نیز در صنعت تکنولوژی و آی‌تی مورد استفاده قرار می‌گیرند که با زبان ++C نوشته شده است .بطوریکه اگر نوشتم در نوشتن بازی‌ها بسیار پرکاربرد است، نباید تعجب کنید . از این برنامه‌ها باز می‌توان به مرورگرها ، موتور برخی از سیستم‌عامل‌ها ، هسته برخی از زبان‌های برنامه‌نویسی ( مثل نام‌پای (Numpy) پایتون که در سی پیاده سازی می‌شوند) ، برخی از سخت‌افزارها و درایورها ( مثل خودروها، گوشی‌های موبایل و کامپیوترها) ، برخی از مفسرها و کامپایلرها ، برخی از نرم‌افزارهای یادگیری ماشین و دیتاماینینگ، سیستم‌های معاملاتی کم تاخیر،‌ نرم‌ افزارهای ویرایش ویدیو و تصویر، در تحقیقات علمی، مدلسازی ریاضی و مدلسازی مالی و سایر برنامه‌های منابع نیازمند و سی‌پی یو ! و حالا چرا انقدر برنامه هستن که با سی و سی پلاس پلاس ( که در این پست تمرکز ما روی سی پلاس پلاس است که خیلی ها براین تفکر هستن که C و ++C از رده خارج شده و آنتیک شدن ) نوشته شدن ؟ چون سی پلاس پلاس واقعا همانطور که گفتم سریعه! (همون داستان های پرفورمنس) .در مقایسه با سایر زبان‌ها چون این زبان به سخت افزار نزدیکه ، بهش این اجازه رو می‌ده که سخت‌افزارها رو (مثل CPU و GPU ) را کارآمدتر تنظیم کند. برای همین سریع است . و اما چرا باید یادش بگیریم؟

 

۱. در مورد کامپیوترها و کامپایلرها یاد میگیرید

سی پلاس پلاس نزدیک و نزدیک به سخت‌افزار است . یعنی چند پله کوچیک تا اسمبلی فاصله دارد. در حالی که زبان‌های سطح‌بالایی چون جاوا‌اسکریپت یک زبان بازاری و حوزه کسب و کار شناخته می‌شود ، سی پلاس پلاس نزدیک به کامپیوتر است و به شما درک بسیار بیشتری از اجزای سازنده برنامه‌نویسی می‌دهد ( وقتی مفید است که شما شروع به کار کنید) . در تصویر زیر این زبان‌ها را مشاهده می‌کنید که کدام High level (همان سطح بالای ما) و یا Low Level (بخوانید سطح پایین) هستند.

سی پلاس پلاس به شما این امکان رو می‌دهد که برنامه‌نویسی را از پایه یاد بگیرید . شما باید هرکاری که انجام میدهید رو توضیح بدید و باید بتوانید کد را دستکاری کنید ، که به شما درک عمیق‌تری از نحوه‌کار همه قسمت‌ها می‌دهد . تسلط بر زبان CPP شما رو با موارد زیر آشنا می‌کند :

مدیریت کارآمد حافظه و اشاره‌گرها : اینکه چرا مهم هستند و هرکدام چه کاری را انجام می‌دهند.

برنامه‌نویسی متا (Meta Programming) : چگونه یک برنامه می‌تواند اطلاعات مربوط به خود را بررسی کند

زمان کامپایل و زمان بارگذاری : و تفاوت بین آنها

بهینه‌سازی : به معنای واقعی آن و نحوه بهینه سازی (Optimize) هنگام برنامه‌نویسی و نوشتن کد

کتاب‌خانه‌های پویا : و اینکه چطور کار می‌کنند و باید چطور از آنها استفاده کرد

و برنامه‌نویسی‌های عمومی : و برنامه‌هایی که در زمان کامپایل بررسی و ارزیابی می‌شوند

 

۲. زبان‌های برنامه‌نویسی دیگر را سریعتر یاد میگیرید!

اکثر زبان‌های برنامه‌نویسی اصلی دیگر دارای شیوه مبتنی بر CPP هستند .اگر درک خوبی از یک زبان برنامه‌نویسی همه منظوره مثل ++C داشته باشید ، می‌توانید زبان‌های پرمخاطب دیگری مانند جاوا، PHP ، سی شارپ ، پرل ، پایتون و راست ( که خود همگی تاثیر گرفته از سی پلاس پلاس هستند)  را انتخاب کنید و یاد بگیرید . پایه شما در سی پلاس پلاس به نحوی جواب می‌دهد . زیرا سی پلاس پلاس به درک ساختار منطقی همه زبان‌های برنامه‌نویسی کمک می‌کند

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

 

۳. مهارت های قابل استخدام را توسعه دهید

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

و حالا دلیل‌های کمی گیکی و شیطونی بازی :

۳. دیگر دلایل

 این زبان به دلیل سرعت خود، غالبا در برترین چالش‌های برنامه‌نویسی رقابتی جهان قرار دارد . بطور مثال در Code Jam و kick start در رقابت فینال ۲۰۲۰ این زبان دیده شده و از آن در رقابت‌ها ( که منجر به قهرمانی هم شده) وجود داشته است . در ایران دقیق اطلاعات ندارم که بازار کار دارد یا نه چون مسلما شرکت‌های ایرانی دنیای تکنولوژی اکثرا بر بستر وب و موبایل فعالیت می‌کنند و خب زبان‌های جاوا و کاتلین و دارت و غیره برای اندروید و ساخت اپلیکیشن اندرویدی بلحاظ شغلی شانس بیشتری دارند و یا وب اپلیکیشن که باز زبان‌های PHP و سری‌های جاوا اسکریپت و ری اکت و نود و ... نیز در بازار کار ایران قوی‌ترند چون بازار کسب و کار آی تی ایران روی وب و موبایل می‌چرخد و مثلا زبان PHP و لاراول بیشترین درخواست را توسط شرکت‌ها دارند. اما در همین ایران هم شرکت‌های بازی‌ سازی هستند که نیازمند یک برنامه‌نویس خوب هستند که با CPP آشنایی کامل در حد سنیور داشته باشد . از طرفی شرکت‌های خارجی نیز بسیار استقبال می‌کنند و مثلا شرکتی مانند گوگل همیشه به یک توسغه دهنده سی پلاس پلاس نیاز دارد و آن را آگهی می‌کند . یا حتی شرکت‌هایی مثل آمازون و مایکروسافت و.. نیز به متخصصانی که این زبان را مسلط هستند نیاز دارد . ++C یک زبان سطح میانی و سطح پایین است که درک آن توسط انسان در مقایسه با زبان‌های دیگر مانند پایتون  سخت تر است . کلا زبان سختی نیز برای یادگیری است . اما در عوض مزایای ذکر شده در بالا را دارد . پس اگر می‌خواهید بصورت جدی وارد فناوری و کامپیوتر و تکنولوژی شن و یا می‌خواین بصورت جدی وارد مسابقات برنامه‌نویسی بشین، این زبان یکی از گزینه‌های مهم پیش رو است . از طرفی چون برای یادگیری توسط انسان بسیار سخت است ، پس افراد کمی برای یادگیری این زبان وقت می‌گذارند و مثل پایتون نیست که افراد زیادی به آن مسلط باشند ، پس شما بازار کار غیر رقابتی تر و خلوت‌تری را نسبت به یک توسعه دهنده پایتون تجربه می‌کنید. (شوخی)

 

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

به وبلاگ من خوش آمدید
منوی اصلی و پروژه‌ها
دسته‌بندی مطالب
کلمات کلیدی
اسپانسر


کریتیو کامنز و حق نشر
Designed By Erfan Edited by HAT3F