سی پلاس پلاس آری یا خیر، مسئله این است - بخش اول

قطعه کدی در  C++
قطعه کدی در C++


* این مقاله یک ترجمه و خلاصه از مقاله در لینک مقابل به همراه یک سری افزودنی های مجاز است.

* این مقاله تا حدودی می تواند به دانشجویان انگیزه ای برای یادگیری زبان c++ بدهد از این رو پیشاپیش از تمامی دوستانی که این مقاله رو دوست ندارن عذرخواهی می کنیم.

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

زبان C++ یکی از سخت ترین زبان های برنامه نویسی برای یادگیری افراد محسوب میشه، قرار نیست بگیم زبان های دیگه سخت نیستن و ساده محسوب میشن ولی باید بگیم که ما قراره اینجا بیشتر از اینکه فقط مساله مقابلمون رو حل بکنیم باید فکر بکنیم، چه فکری؟ مدیریت حافظه، این چیزیه که شاید توی C# و Java باهاش مواجه نشدین و دستان پرتوان دوستان توسعه دهنده به یاریتان آمده و مدیریت خودکار حافظه رو بر عهده گرفته و نگرانی رو براتون تا حد زیادی برطرف کرده و گذاشته شما متمرکز بشید به حل مساله، توی JavaScript از معجزه ای به نام var استفاده می کنی و نه intی در کار هست و نه float یا double و حتی اشاره گر های مخوف هم خبری ازشون نیست. مخلص کلام اینکه فقط هرطوری شده و هرجایی شده مقادیر رو ذخیره سازی کن.

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

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

خب از به نظر شما یک دانشجو برای یادگیری یک زبان و با انتخاب JSکار درستی کرده است؟ ما معتقدیم که اون دانشجو بیشتر به یک کاربر ارشد یا به روایت دیگری اسمبل کن فطعات از جاهای مختلف بهم دیگه هستش.

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

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

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

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

پس رسیدیم به اینجایی که چرا یک دانشجوی کامپیوتر باید C++ رو به عنوان اولین زبان برنامه نویسیش یاد بگیره و زمان زیادی رو هم باهاش بگذرونه، چون با یادگیری C++میتونه:

· با مدیریت حافظه دستی دست و پنجه نرم کنه

· فرق بین Compiler، Linkerو Loader رو بدونه

· به این حد از درک برسه که کامپایلر ها بهینه تر عمل میکنن.

· با Meta Programming آشنا بشوند.

· بتواند Compile time رو از Run time تشخیص بدن.

· با چندریختی یا Polymorphism در پایین ترین سطح آشنا بشن.

· خو گرفتن با اشاره گر ها یا Pointer و عملیات های آن به عنوان پایه ای ترین مفاهیم در داده ساختار های مبتی بر گره مانند درخت، گراف و لیست پیوندی

· با ساختار کامپایلر ها و ساخت کد مخصوص هر پلتفرم توسط آن آشنا می شوید.

· با مفاهیم اساسی برنامه نویسی به صورت عمیق تری برخورد خواهید کرد.

· ...

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

این داستان اینجا تمام نمی شود و در ادامه به مواردی از جمله مقایسه میان زبان های متداول تر امروزی با C++ و همچنین معرفی ابرسازه های با C++خواهیم پرداخت.