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