امکان توسعه اپلیکیشن ها و سرویس های مورد نیاز با زبان های برنامه نویسی مختلفی روی بردهای Embedded و مبتنی بر ARM وجود دارد. C/C++, Java, Python و … فقط نمونه ای از پر کاربرد ترین زبان های برنامه نویسی هستند. هرکدام از نقاط قوت – ضعف و خصوصیات خاص خود برخوردار هستند. اینکه شما از چه زبانی برای توسعه نرم افزار خود استفاده می کنید به موارد مختلفی وابسته خواهد بود :
- نوع نرم افزار
- بازدهی مورد نیاز
- کتابخانه های مورد نیاز و آماده در زبان برنامه نویسی
- سرعت توسعه
- میزان مهارت تیم توسعه نرم افزار
- امکان پشتیبانی در آینده و …
باید توجه داشت انتخاب یک زبان برنامه نویسی نامناسب در بهترین حالت باعث طولانی شدن زمان اجرای پروژه و در بدترین حالت موجب شکست آن خواهد شد. پس لازم است با دقت و صرف کمی وقت، جوانب کار را مورد ارزیابی قرار دهید. بهتر است با چند مثال ساده موضوع را بررسی کنیم.
فرض کنید هدف شما کنترل ابزارها و ارتباط با دستگاه های جانبی از طریق پروتکل های ارتباطی استاندارد است. Ethernet, RS232,SPI,GPIO مثال هایی از این دست هستند.
پروتکل ها و درگاه های ارتباطی فوق از خصوصیات متفاوتی برخوردارند. بطور مثال تمامی زبان های برنامه نویسی برای ارتباط از طریق Ethernet و RS232 از کتابخانه و توابع لازم برخوردار هستند. ولی در صورت نیاز به ارسال و دریافت اطلاعات با نرخ بالا در Ethernet ( شبکه ) ممکن است با توجه به سرعت و قدرت پردازنده نیاز به استفاده از زبان برنامه نویسی چون C/C++ باشد. در زبان پایتون برای ارتباط با I/O هایی نظیر SPI یا GPIO امکان استفاده از کتابخانه ها و توابع زبان C/C++ با استفاده از یک Wrapper فراهم شده است. بدین صورت تنها با کامپایل مجدد کتابخانه در سیستم مورد استفاده شما، امکان دسترسی شما به درگاه ها فراهم می شود.
در اکثر زبان های برنامه نویسی قدرتمند چون جاوا ( Java ) و پایتون ( Python ) امکان استفاده از کتابخانه های C وجود دارد. باید در نظر داشت که استفاده از یک یا چند کتابخانه مشکل را حل می کند یا اصرار استفاده از یک زبان برنامه نویسی فقط به دلیل راحتی کار اشتباه خواهد بود.
نمونه دیگری که می توان اشاره کرد نیاز به انجام محاسبات و پردازش بلادرنگ است. در برخی موارد نیاز است تا اطلاعات با الگوریتم های ریاضی مورد پردازش قرار بگیرد. در این موارد در صورتی که حجم پردازش اطلاعات زیاد باشد، نیاز به پیاده سازی الگوریتم های محاسباتی در زبان C/C++ است. حال می توان تصمیم گرفت این بخش از کدها بصورت کتابخانه ای مجزا پیاده سازی و مورد استفاده قرار گیرد یا در صورت نیاز، کل پروژه با استفاده از زبان C/C++ پیاده سازی بشود.
برخی از خصوصیات مهم زبان های برنامه نویسی فوق :
- C/C++
- امکان استفاده در تمامی کاربردها
- بهینه بودن فایل اجرایی خروجی به نسبت بقیه زبان های برنامه نویسی
- نیاز به مدیریت حافظه توسط برنامه نویس و عدم پشتیبانی از Garbage Collector
- بهترین زبان برای موارد پردازشی و کار با درگاه های ارتباطی مختلف ( Low Level Programming )
- عدم پشتیبانی مناسب از Exception Handling در محیط لینوکس
- جاوا ( Java )
- پشتیبانی کامل از شی گرایی
- امکان انتقال در سکوهای مختلف با کمترین تغییرات
- پشتیبانی از Exception Handling
- پایتون ( Python )
- بهره بردن از Syntax بسیار ساده
- یادگیری آسان
- قابلیت Rapid Programming ( توسعه سریع کدها )
- امکان انتقال با کمترین تغییرات به سکوهای مختلف
- پشتیبانی از شی گرایی
- امکان استفاده آسان از کتابخانه های C/C++
- پشتیبانی از Exception Handling
- پشتیبانی قوی از محاسبات ریاضی و آماری ( وجود کتابخانه های غنی )
از نظر بازدهی در انجام پردازش های ریاضی در صورتی که از هر زبان بدون استفاده از کتابخانه های بهینه شده C/C++ استفاده نشود، نتیجه به ترتیب زیر خواهد بود :
- C/C++
- جاوا ( Java )
- پایتون ( Python )
با اینکه در زبان برنامه نویسی پایتون امکان استفاده از کدهای C/C++ و کامپایل و لینک آن ها وجود دارد، اما اگر صرفا از کدهای پایتون استفاده بشود چندین برابر از کدهای نوشته شده با جاوا و C/C++ کندتر خواهد بود.
زبان برنامه نویسی پایتون ( Python ) گزینه ای مناسب جهت توسعه سریع کدها و ساخت نمونه اولیه Prototype پروژه خواهد بود. با توجه به اینکه در بردهای توسعه مبتنی بر ARM سیستم عامل معمول و مورد استفاده لینوکس ( Linux ) است، در صورت تغییر سکوی سخت افزاری و انتخاب یک برد جدید، به راحتی امکان استفاده از کدها وجود خواهد داشت.( در بیشتر موارد نیازی به تغییر خاصی در کد نخواهد بود )
سایت bestprogramminglanguagefor.me با پرسش هایی ساده، زبان مناسب کاربرد شما را پیشنهاد خواد داد.
سلام با سی شارپ هم میشه میکرو رو برنامه نویسی کرد.
سلام ممنونم عالی بود
اگر بخوام با پیتون شروع کنم نسخه خاصی هست یا پروگرام کردنش چطور انجام میشه
من هدفم کار با میکرو کنترلرهای آرم هست