===> برای گرایشهای برق : C بهتر است یا ++C ؟؟ <===
.
سلام / اساتید محترم یه سوال دوستان :
برای رشته های برقی و آینده میکرو و کار با سخت افزار : زبان C بهتر است یا ++C ؟ آخه میگن ++C همه مشخصات C رو داره و چه بسا ورژن کاملتر C است !!! آیا برای گرایشهای برق و سخت افزار و میکرو هم همینطوره ؟؟؟؟؟؟؟
.
پاسخ : ===> برای گرایشهای برق : C بهتر است یا ++C ؟؟ <===
نوشته اصلی توسط elahe80
.
سلام / اساتید محترم یه سوال دوستان :
برای رشته های برقی و آینده میکرو و کار با سخت افزار : زبان C بهتر است یا ++C ؟ آخه میگن ++C همه مشخصات C رو داره و چه بسا ورژن کاملتر C است !!! آیا برای گرایشهای برق و سخت افزار و میکرو هم همینطوره ؟؟؟؟؟؟؟
.
برای برنامه نویسی میکروکنترلرها بیشتر از C استفاده میشه و در PC، برای برنامه نویسی سطح پایین از VC++ یا MFC.
There is nothing so practical as a good theory. — Kurt Lewin, 1951
پاسخ : ===> برای گرایشهای برق : C بهتر است یا ++C ؟؟ <===
خیلی نمیشه روش حساب کرد ولی یه جورائی میشه گفت فرق C و C++ درست فرق یه مهندس برق هست با یه مهندس کامپیوتر :mrgreen:
البته اینکه C با C++ فرقی نداره در کاربردها و شرایط مختلف حرف درستی نیست به خصوص اگه فقط به سینتکس توجه نکنیم و مسئلهٰ کامپایلرها و ابزارها رو هم در نظر بگیریم...
پاسخ : ===> برای گرایشهای برق : C بهتر است یا ++C ؟؟ <===
من میگم C++. چون حیفه که وقت بذارید و در آخر نتونید یه برنامه تو PC بنویسید. کسی که فقط برنامه میکرو بلده با کسی که PC و میکرو بلده خیلی فرقشونه. مخصوصا اگه برید حرفه ای دنبالش و بتونید از MFC استفاده کنید(البته من از MFC متنفرم و خودم ترجیح دادم برم دنبال #C) .
مزیت دومش اینه که شما اگه بخواید مفهومی برنامه نویسی رو یاد بگیرید، باید چند ماهی رو با کتابهای حرفه ای مثل "دیتل" سر کنید و اینجا مشکل کامپایلرهای زیرخاکی C در PC به وجود میاد. در صورتی که اگه ++C شروع کنید با کامپایلرهای قدرتمندی مثل VS میتونید کار کنید که خدای debugging هستش و تو عیب یابی برنامه خیلی کمک میکنه.
حرف آخر اینه که C و ++C دقیقا مثل همن. فقط در ++C ماجرای شی گرایی و Class ها اضافه شده که میتونید بدون اطلاع داشتن ازش برنامه های ساده رو در حدی که در C مینویسند ، بنویسید.
اصلا رو خودش که هست. ++C یعنی C که بهش یه واحد اضافه شده.
بت در بغل و به سجده پیشانی ما کافر زده خنده بر مسلمانی ما
اسلام به ذات خود ندارد عیبی هر عیب که هست در این مسلمانی ماست
پاسخ : ===> برای گرایشهای برق : C بهتر است یا ++C ؟؟ <===
من موافق مثل هم بودن این زبانها نیستم در واقع اینا دقیقا مثل هم نیستن فقط پوستهٰ ظاهریشون یا همون سینتکس مثل هم هست....
ولی زیر این پوسته دو دنیای مختلف هست هرچند تاریخ این قضیه به اینجا رسیده که C++ که اولش سی بعلاوه کلاس بود در نهایت منجر به این شده که: C++ یک زبان متفاوت با خاصیتهای..... و کاملا سازگار با C است.
مثل فرق C# با C++ میمونه ولی میتونیم بگیم اینا همه ش جز خانوادهٰ زبانهای شبیه C هستند.
ممکنه که تصور بشه واسه کاربر چندان فرقی نمیکنه تا حدی درسته ولی در واقع پارادایم و اصول برنامه نویسی این دو زبان متفاوت هستند مثلا یه برنامه در هردو زبان با دو دیدگاه متفاوت نوشته میشه و این به خاطر ذات هر کدوم ازین زبانهاست
توی بحث embeded که اینجا مطرح شد C++ حرفی واسه گفتن نداره....یه تلاشی هم شد که یه زبان مینیمال شده از C++ واسه سیستمهای درونه ای :mrgreen: توسعه داده بشه ولی فکر کنم الان توسعه اش یا خیلی کنده یا کلا متوقف شده...فکر کنم EC++ ....کلا توی بحث embeded به نظر میاد به خاطر ذات اپلیکیشن ها فعلا C++ نمیتونه چندان حرفی واسه گفتن داشته باشه ...
پاسخ : ===> برای گرایشهای برق : C بهتر است یا ++C ؟؟ <===
نوشته اصلی توسط mostafahk
مزیت دومش اینه که شما اگه بخواید مفهومی برنامه نویسی رو یاد بگیرید، باید چند ماهی رو با کتابهای حرفه ای مثل "دیتل" سر کنید و اینجا مشکل کامپایلرهای زیرخاکی C در PC به وجود میاد. در صورتی که اگه ++C شروع کنید با کامپایلرهای قدرتمندی مثل VS میتونید کار کنید که خدای debugging هستش و تو عیب یابی برنامه خیلی کمک میکنه.
با VS میتونید C رو هم کامپایل کنید و ابزارهای IDE استفاده کنید. در واقع کامپایلر به طور خودکار تشخیص میده که برنامه ی شما رو باید با کامپایلر C کامپایل کنه یا ++C.
There is nothing so practical as a good theory. — Kurt Lewin, 1951
پاسخ : ===> برای گرایشهای برق : C بهتر است یا ++C ؟؟ <===
نوشته اصلی توسط sadid
توی بحث embeded که اینجا مطرح شد C++ حرفی واسه گفتن نداره....یه تلاشی هم شد که یه زبان مینیمال شده از C++ واسه سیستمهای درونه ای :mrgreen: توسعه داده بشه ولی فکر کنم الان توسعه اش یا خیلی کنده یا کلا متوقف شده...فکر کنم EC++ ....کلا توی بحث embeded به نظر میاد به خاطر ذات اپلیکیشن ها فعلا C++ نمیتونه چندان حرفی واسه گفتن داشته باشه ...
اینطور نیست، کامپایلرهای IAR و avr-gcc از شی گرایی و ++C پشتیبانی میکنند و بسیار هم موفق هستند. درسته که Overhead کد ایجاد شده با ++C حدود 25 درصد بیشتر از C است اما در برخی میکروکنترلرهای 8 بیتی که حافظه ی داده ی و برنامه ی کافی دارند (مثل ATmega64 به بعد) به راحتی می تونید از شی گرایی استفاده کنید. البته IAR ادعا میکنه که کامپایلر ++EC بدون سربار نرافزاری امکانات کافی رو به شما میده: http://iar.com/website1/1.0.1.0/50/1
There is nothing so practical as a good theory. — Kurt Lewin, 1951
پاسخ : ===> برای گرایشهای برق : C بهتر است یا ++C ؟؟ <===
نوشته اصلی توسط رضا سپاس یار
اینطور نیست، کامپایلرهای IAR و avr-gcc از شی گرایی و ++C پشتیبانی میکنند و بسیار هم موفق هستند. درسته که Overhead کد ایجاد شده با ++C حدود 25 درصد بیشتر از C است اما در برخی میکروکنترلرهای 8 بیتی که حافظه ی داده ی و برنامه ی کافی دارند (مثل ATmega64 به بعد) به راحتی می تونید از شی گرایی استفاده کنید. البته IAR ادعا میکنه که کامپایلر ++EC بدون سربار نرافزاری امکانات کافی رو به شما میده: http://iar.com/website1/1.0.1.0/50/1
اول اینو میگم که درسته که زبان C++ شامل تمامی کدهای C هم میشه ولی ایندو زبان متفاوت هستند در واقع منظورم من هم ازون پاراگراف همین نکته بود که C++ درسته که به لحاظ تاریخی ادامهٰ C هست ولی به لحاظ ساختاری اینگونه نیست در واقع شما میتونین یه برنامه سی رو با کامپایلر C++ کامپایل کنین و برخی مزایای OOP رو هم با همون کد سی بگیرین و بازم میگم C++ در عرصهٰ embeded چندان حرفی واسه گفتن نداره..حداقل فعلا..
میدونم که اینارو میدونین اما مسئلهٰ عدم موفقیت C++ فقط به ۲.۵ درصد سربار اضافی ختم نمیشه مثلا میام یه سیستم embeded رو هم با C++ و هم با C طراحی میکنیم نتیجه فقط سربار ۲.۵ درصدی بیشتر نیست اون عدد یه نشانه است از مسائلی که در پشت قضیه داره اتفاق میافته:
*کامپایلر C تقریبا برای هر بخش کد میتونیم بگیم یه روتین مشابه اسمبلی رو ارائه میکنه ولی کامپایلر پیچیدهٰ C++ واسه یه فانکشن ساده چندنی روتین رو ایجاد میکنه و درسته این باعث ۲.۵ درصد سربار اضافی میشه ولی این سربار در واقع به شکل فانتزی سایز یه کلاف سردرگم هست برای انجام دادن کاری که مستقیم تر هم میشه انجام داد..
بهمین خاطر هم شما بهتر میتونین کد بهینه بنویسین نسبت به وقتی که با C++ کد بزنین
*کلاس ها و وراثت و چندریختی و ... در صورت استفاده اغلب سبب ساده تر شدن برنامه نویسی و الگوریتم ولی پیچیده تر شدن کامپایل و کد ماشین غیر بهینه میشن...
*کار کردن با مفهوم شی گرائی و استفاده از کامپایلرهای موفق در کامپایلش ولی پیچیده باعث باگهای زیادتری (فکر میکنم در مواردی به شدت زیادتر) در سیستم نهائی میشه و یکی از دلایلی که کرنل اصلی اغلب سیستم عاملها رو (که به بحث embeded نزدیک هست) با C مینویسن همین هست.
و مطالب دیگه مثلا خیلی از امکانات C++ به درد ساختارهای ROM base نمیخوره به خصوص وقتی کامپایلر نیاز به دادهٰ متغیر در حین اجرا پیدا میکنه .... یا مثلا همین جریان EC++ به نظر من یه مسامحه است بین C و C++ در واقع کاربر رو محدود میکنه تا افسار گسیخته از امکانات C++ استفاده نکنه به اضافه یکسری بهینه سازیهای جزئی با در نظر گرفتن کاربرد.....من با EC++ کار نکردم ولی به نظر میاد نیومده..رفته...
نظر خود من اینه که C رو باید درین عرصه بلد باشیم و البته در اولویت بعدی یادگرفتن C++ برای هرکسی که بخواد راجع درک کاملتر و البته توانائی بیشتری رو در برنامه نویسی داشته باشه واجب هست ولی توی این عرصه تا اونجائی که میتونیم باید از C استفاده کنیم یعنی وشتن سخت و هوشمندانه یه عملکرد در C بر نوشتن اون با استفاده از توانائی های C++ در عرصهٰ embeded ارحجیت داره
پاسخ : ===> برای گرایشهای برق : C بهتر است یا ++C ؟؟ <===
سلام، به هر حال ما نمیتونیم منکر این مسئله بشیم که در حال حاضر خیلی از شرکت های معتبر، برای توسعه ی Firmware میکروکنترلرهای 8، 16 و 32 بیتی از سبک برنامه نویسی شی گرا (حتی جاوا) استفاده می کنند.
یه مسئله جالب دیگه هم اینه که شما می تونید در ANSI C به صورت شی گرا برنامه بنویسد. :agree:
There is nothing so practical as a good theory. — Kurt Lewin, 1951
پاسخ : ===> برای گرایشهای برق : C بهتر است یا ++C ؟؟ <===
من منکر این مسئلهٰ مربوط به توسعهٰ میان افزارها نشدم
جاوا واسه embeded که فکر نمیکنم چندان در دسترس باشه و همون شرکتهای بزرگ میتونن ازش استفاده کنند.
مسئلهٰ دیگه در بین شرکتهای بزرگ و همینطور طراحان بزرگ اینه که اونا به یه زبان و یا تکنولوژی خاص وابسته نیستند بلکه این پروژه مورد نظرشون هست که تعیین میکنه که از چه زبانها و تکنولوژیهائی استفاده کنند.....حتی زبانهائی مثل پایتون یا Tcl (توی FPGA) یا Lua و حتی PHP :mrgreen: رو دیدم که توی سیستمهای embeded به کار بردند حالا در چه سطحی مسئلهٰ دیگه س. (مدتی که درگیر کار با یه روتر بودم یه طرح مشابه رو دیدم)
امروزه به طور وسیعی از سیستم عامل توی طرحهای embeded استفاه میشه و این جا رو برای زبانهی دیگه هم باز میکنه مثلا این گوشی OpenMoko که پروژهٰ باز و جالبی هم هست و کدباز هم هست:
http://wiki.openmoko.org/wiki/Main_Page/fa
خوب هرکدوم کاربرد خودشو داره نوشتن یه کد معمول با پایتون عوض C توی embeded بسیار کند خواهد بود (به احتمال زیاد)
یه مسئله جالب دیگه هم اینه که شما می تونید در ANSI C به صورت شی گرا برنامه بنویسد. agree
این جریانش به هک OOP در سی استاندارد مربوط میشه و کلا یه فاز دیگه س. :agree:
دیدگاه