سلام، سیسوگ امروز با قسمت اول از دوره آموزشی، آموزش PIC در خدمت شما عزیزان می باشد. با ما همراه باشید.
تفاوت بین زبان C و امبدد C. اول از همه، معرفی مختصری درباره تاریخچه زبان C و امبدد C خواهیم داشت.
ما همیشه از زبان C، در پردازندههایی که روی آن سیستمعامل نصب شده، استفاده میکنیم. این بدان معنی است که زبان C برای اجرای بر روی سیستمهایی که حافظه بالایی دارند طراحی شده است. اما امبدد C منحصراً برای اجرای برنامههای مبتنی بر میکروکنترلر طراحی شده است. بنابراین میتوانیم تصور کنیم که زبان C بر روی سیستمی اجرا میشود که دارای منابع بالایی است. اما برخلاف آن، امبدد C در میکروکنترلرها که دارای منابع محدودی مانند RAM،ROM و حافظه برنامه است، اجرا میشود. هنگامی که ما برنامه C را کامپایل میکنیم، کامپایلر یک فایل وابسته به سیستم عامل تولید میکند، اما کد امبدد C فقط روی میکروکنترلرها اجرا میشود. برای مثال، PIC16F877A میکروکنترلر اصلی شرکت میکروچیپ است که با امبدد C برنامه ریزی میشود.
معرفی زبان C و تاریخچه آن
C اساساً یک زبان برنامهنویسی همهمنظوره سطح بالا و مهم است، که هم برای توسعه فریمور استفاده میشود و هم برای نوشتن برنامه کاربردی قابل حمل. این زبان به بهبود کیفیت برنامهنویسی و حل مشکلات رایانهای در زمان کوتاه، کمک بسیار زیادی میکند. این یک زبان فرآیند محور است و با استفاده از یک کامپایلر قدرتمند، میتواند برای حافظههای سطح پایین نیز مفید باشد. زبان C با استفاده از کامپایلر به زبان سطح ماشین تبدیل میشود. این موضوع برای بسیاری از برنامهها مفید است، از جمله برنامههایی که نوشتن کد آن بسیار دشوار است، با استفاده از C به راحتی قابل توسعه است. زبان C از کلمات کلیدی مانند for, if/else, while, switch and do/while و تعداد زیادی از عملگرهای حساب و منطق مانند +، + = و ++ استفاده میشود. توسط دنیس ریچی در سالهای 1969 تا 1973 در آزمایشگاههای بِل برای سیستم عامل یونیکس ساخته شد.
معرفی امبدد C و تاریخچه آن
امبدد C در واقع افزونهای از زبان C است. این افزونه شامل مجموعههای زبان C است که میتواند برای اهداف مختلف مورد استفاده قرار گیرد. این افزونه در سال 2008 توسط کمیته استاندارد C برای حل مسائل مختلف زبان C توسعه یافت و بیشتر از سینتکس و استاندارد زبان C در آن استفاده شده است. این زبان دارای ویژگیهای بسیاری در مقایسه با زبان C است مانند استفاده از محاسبات fixed point، فاصله بین آدرس ورودی و خروجی سختافزار و… همانطور که به اطراف خود نگاه میکنیم، تعداد زیادی سیستم امبدد مانند ماشین لباسشویی، دوربین دیجیتال و تلفنهای همراه داریم که همه اینها نمونههایی از سیستم امبدد هستند، در همه این موارد از زبان امبدد C استفاده میشود. ویژگیهای بسیاری مانند ثباتهای عملکرد یا mapping register، تعداد فضای حافظه و نمایش fixed point به امبدد C اضافه شده است.
تفاوتهای عمده بین زبان C و امبدد C
ویژگیهای زبان C
- C زبان بسیار سطح بالایی است.
- دارای فرمت رایگان برای برنامه نویسی است.
- برای عملکرد سیستم عامل لازم است.
- برای کاربردهای رایانه رومیزی استفاده می شود.
- به منابع حافظه اهمیتی نمیدهد، زیرا کل حافظه در CPU موجود است.
- برنامه زبان C در کنسول اجرا میشود اما خروجی این برنامه از طریق دسکتاپ LCD و غیره قابل مشاهده است.
- در حین اجرای برنامه همچنین از انواع مختلف زبانهای برنامهنویسی به طور غیر مستقیم یا مستقیم پشتیبانی میکند.
- هنگامی که برنامه در حال اجرا است ورودی میتواند به برنامه داده شود.
- برنامههای سیستم نرمافزاری و برنامههای منطقی، چند نمونه از زبان C هستند.
مزایای C
- زبان C در واقع یک عنصر حیاتی و سازنده در انواع مختلف زبانهای فعلی است و دارای عملگر قدرمتد و پشتیبانی از انواع داده است.
- خروجی این زبان، برنامه قابل حمل است، به این معنی که اگر برنامه در هر کامپیوتری نوشته شود، میتواند به راحتی بدون هیچ تغییری روی سیستم های دیگر اجرا شود.
- این زبان توابع مختلفی دارد که میتواند برای توسعه برنامهها مورد استفاده قرار گیرد.
- دارای انعطافپذیری است، به این معنی که برنامههای آن میتوانند به راحتی توسعه یابند.
- در این زبان، ساخت، اشکال زدایی و تست برنامه ها بسیار آسان است.
معایب C
- زبان C برنامه نویسی خاصیت شیگرایی ندارد، بنابراین ++C توسعه یافته است.
- زمان اجرا را در زبان C نمیتوانیم بررسی کنیم.
- زبان C نوع داده را دقیق چک نمیکند، به عنوان مثال ممکنم است ما بتوانیم مقدار صحیح (integer) را به یک متغیر نوع دیگر واریز کنیم.
- در زبان C هیچ مفهومی به نام namespace وجود ندارد.
- مفهوم تخریب کننده یا destructor وجود ندارد.
ویژگیهای امبدد C
- فقط افزونهای از زبان C است، و قابلیت های بیشتری نیز به آن اضافه شده است.
- بسته به نوع میکروکنترلر یا ریزپردازنده، فرمت برنامه نویسی دارد.
- از طریق امبدد C بهینهسازی سطح بالا انجام میشود.
- در کاربردهای ریزپردازنده یا میکروکنترلر استفاده میشود.
- منابع محدودی استفاده می کند.
- در امبدد C محدودیتها در اجرای واقعی پیدا میشوند و خروجی در سیستم عامل قابل دسترسی نیست.
- فقط از پردازنده یا کنترلر مناسب پشتیبانی میکند.
- در امبدد C فقط برنامه از پیش تعریفشده میتواند اجرا شود.
- نیاز به یک کامپایلر از امبدد C، که با تمام منابع امبدد C سازگاری داشته باشد، دارد.
- برخی از نمونههای برنامه امبدد سیستم C دوربین دیجیتال، DVD، تلویزیون دیجیتال و غیره است.
- مزیت عمده امبدد C، سرعت اجرای زیاد، اندازه کم کد آن و ساده و قابل فهم بودن آن است.
مزایای امبدد C
- درک آن آسانتر است.
- همیشه یک کار به خصوص را انجام میدهد، بنابراین نیازی به تغییر سختافزار مانند حافظه اضافی یا فضای ذخیرهسازی نیست.
- دریک زمان، فقط یک کار را انجام میدهد، بنابراین می توان کار های اختصاصی را به آن سپرد.
- هزینه سختافزار سیستمهای امبدد C معمولاً بسیار پایین است.
- برنامههای امبدد برای اهداف صنعتی بسیار مناسب هستند.
معایب امبدد C
- فقط یک کار را همزمان انجام میدهد بنابراین نمیتوانند همزمان چند کار را انجام دهند.
- اگر برنامه را تغییر دهیم، نیاز به تغییر سختافزار است.
- فقط از سیستم سختافزاری پشتیبانی میکند.
- دارای مشکل مقیاس پذیری است، به این معنی که با تغییر یک ویژگی سخت افزاری، نمیتواند خود را سریع تغییر دهد.
- یک محدودیت مانند حافظه محدود یا سازگاری رایانهای دارد.
بنابراین اگر فقط در مورد برنامهنویسی صحبت کنیم، برنامهنویسی زبان C و امبدد C تقریباً یکسان است و تنها تفاوت این دو منبع در استفاده از آن و نوعی کد به طور موثر است.
سلام
وقتی این پست رو دیدم یاد روزایی افتادم که با pic کار می کردم و حالا به خاطر کنکور دیگه نمی تونم 🙁
خیلی دلم تنگ شده!
سلام. زندگی چیزی نیست به جز جبر در تصمیمگیری و انتخاب یک یا چند گزینه از بین گزینههای موجود.
با آرزوی موفقیت در کنکور پیش رو. ☺️
سلام یه سوال داشتم. الان با این اوصاف، برنامه هایی که ما در کدویژن یا اتمل استودیو یا حتی برای stm32 مینویسیم، زبان C حساب میشن یا امبدد C ؟؟
سلام امیر محمد جان مشخص دیگه امبدد C محسوب میشه. C و امبدد C اگرچه یه سری تفاوت بسیار مهم و اساسی با هم دارن اما اینا دو زبان جدا از هم نیستن، یعنی اگه گفتی از زبان C برای برنامهنویسی میکروکنترلر استفاده میکنم اشتباه نگفتید، اگرچه بهتر است که بگویید امبدد C. اگر هم توجه کنید غالبا اکثریت ما در جواب این سوال که از چه زبانی برای برنامهنویسی میکروکنترلر استفاده میکنید، میگوییم زبان C.
ممنون اقای جلیلی متوجه شدم
???
تا اونجا که توی کتاب ها خوندیم C یک زبان سطح میانه هست نه سطح بالا …
ممنون از آموزش.
امیر عزیز اول اینو بگم که مقاله ترجمه هست و نه تالیفی و دوستان زحمت ترجمش رو کشیدند.
ببینید حرف شما کاملا درست و زبان C در همه منابع به عنوان یک زبان سطح میانی معرفی شده است. اما چرا نویسنده این مقاله، این زبان رو سطح بالا و حتی در یه پاراگراف زبان C رو “خیلی سطح بالا” معرفی کرده؟
خب همونطور که خودتون ذکر کردید زبان C یک زبان سطح میانی است که هم دارای ویژگیهای سطح پایین و هم دارای ویژگیهای سطح بالا است. نویسنده اومده و ویژگیهای سطح پایین رو جدا کرده و به امبدد C نسبت داده، و ویژگیهای سطح بالا رو به خود زبان C نسبت داده. اگر مقاله رو با دقت بخونید، متوجه خواهید شد که نویسنده تلویحا با جدا کردن ویژگیهای زبان C به سطح پایین و سطح بالا میخواهد به همین سطح میانی بودن زبان اشاره کند.
امیدوارم که توضیحاتم کافی و مناسب بوده باشد.
سلام
ممنون بابت مقاله مفیدتون.
سلام رضا عزیز. سپاس از نظر مثبتتان.