مقدمه
هیچ دلیلی وجود ندارد که نتوان زبان برنامه نویسی پلتفرم های اینترنت اشیا را همانند برنامه ها و پلتفرم های نرم افزاری دسکتاپ انتخاب کرد. در واقع مثلاً یک Raspberry Pi تحت لینوکس باشد، میتواند درست مانند یک دسکتاپ با سیستم عامل لینوکس عمل کند.
هر روز دستگاه های بیشتری به اینترنت متصل میشوند و در انتظار دستورات ما جهت اجرای عملکرد مطلوب هستند اما این دستگاه ها واقعاً با چه زبانی صحبت میکنند؟ پاسخ ساده این است که اشیا هوشمند از پلتفرم های کامپیوتری مشابه با رایانه های رومیزی استفاده میکنند. ایان اسکرت معاون بازاریابی بنیاد Eclipse میگوید: “Raspberry Pi اکنون یک کامپیوتر واقعی به شمار میرود.”
جای تعجب نیست که آنچه او کامپیوتر واقعی مینامد از بسیاری زبان های پلتفرم های مختلف استفاده میکند. در نظرسنجی که از توسعه دهندگان کدها برای پروژه های اینترنت اشیا (IoT) در آوریل 2016 از سوی بنیاد Eclipse صورت گرفته مشخص شد، زبان های جاوا، سی، جاوا اسکریپت و پایتون چهار زبان برتر برای توسعه دهندگان راهکارهای IoT هستند. این زبان ها تفاوت چندانی با زبان های برتر که برای نوشتن اپلیکیشن ها و سرورهای قدیمی استفاده میشوند، ندارند.
Skerrett محیط معماری IoT را به سه بخش عمده تقسیم میکند: سنسور هایی که داده را ایجاد میکنند، هاب ها یا دروازه های محلی که آن را سازماندهی میکنند و سرور های متمرکز جغرافیایی از راه دور که داده ها را جمع میکنند.
Skerrett میگوید: “اگر شما بخواهید برای یک سنسور فشار کد بنویسید، احتمالاً از زبان C استفاده میکنید. زیرا این زبان امکان کار مستقیم با رم تراشه ها و سنسور ها را فراهم میکند و این زبان را به یکی از اولین انتخاب های توسعه دهندگان سخت افزار تبدیل میکند.
هاب ها ممکن است یک تلفن هوشمند یا یک کنسول کوچک باشند که فقط داخل دستگاه های عمومی قرار دارند. یک سیستم عامل استاندارد را اجرا میکنند و معمولاً هنگام برقراری ارتباط از طریق خط فرمان، هیچ تفاوتی با سیستم عامل ها یا سرور های بزرگ ندارند.
انتخاب یک زبان برنامه نویسی برای پروژه IoT
هیچ دلیلی وجود ندارد که نتوان زبان برنامه نویسی پلتفرم های اینترنت اشیا را همانند برنامه ها و پلتفرم های نرم افزاری دسکتاپ انتخاب کرد. در واقع مثلاً یک Raspberry Pi تحت لینوکس باشد، میتواند درست مانند یک دسکتاپ با سیستم عامل لینوکس عمل کند.
تا زمانی که بحث در مورد زبان ها روی سرور ها باشد هیچ تفاوتی بین آنها وجود نخواهد داشت. آنها با هاب ها و سنسور ها که معمولاً با نوعی معماری میکرو سرویس است صحبت میکنند. سپس داده ها به پایگاه داده های استاندارد منتقل میشوند.
در بررسی های انجام شده توسط Eclipse حداقل 14 زبان مختلف پیدا شده که توسط 5 درصد توسعه دهندگان مورد استفاده قرار میگیرد. در اینجا به بررسی برخی زبان های برنامه نویسی منبع باز برتر که زبان پایه و اساس نسل های بعدی اینترنت اشیا هستند، پرداخته میشود.
جاوا
انتخاب برتر نظرسنجی Eclipse و نظرسنجی دیگری که توسط embedded-computing.com انجام شده است، زبان برنامه نویسی جاوا است. این زبان قابلیت اجرا بر هر سیستم و در هر کاربردی را دارد. مزایای جاوا به خوبی شناخته شده است و توسعه دهندگان میتوانند کد را روی دسکتاپ خود ایجاد و اشکال زدایی کنند و سپس با یک ماشین مجازی جاوا آن را به هر تراشهای منتقل کنند. این بدان معناست که کد نه تنها در مکان هایی که JVM ها معمول هستند (سرور ها و تلفن های هوشمند) بلکه در کوچکترین دستگاه ها نیز کار میکنند.
Java ME از زمان تأیید مشخصات در سال 2000، روی گوشی های ک بسیار وچک تلفن و سایر دستگاه های تعبیه شده در دسترس قرار گرفته است. این مجموعه با مجموعهای محدود از کتابخانه های کلاس و سایر ابزارها موجب صرفه جویی در فضای مصرفی میشود. امروزه بیشترین تمرکز روی Java SE Embedded است که از نظر قابلیت بسیار نزدیک به نسخه استاندارد است. توسعه دهندگان میتوانند از آخرین ویژگی های پلتفرم جاوا 8 استفاده کرده. و سپس کد خود را به دستگاه کوچک تر و جاسازی شده منتقل کنند.
بیشتر صرفه جویی در منابع محاسباتی با Java SE Embedded ناشی از بین بردن کلاس های مورد نیاز برای نمایش اطلاعات در هنگام تنظیم ماشین ها، بدون مانیتور یا صفحه کلید است. تمام ارتباطات از طریق شبکه انجام میشود.
چندین پروژه منبع باز مانند Pi4J و BlueJ وجود دارد که نشان میدهد. چگونه نسخه جا سازی شده جاوا به خوبی اجرا میشود، حتی روی تراشه هایی که به نظر محدود هستند.
زبان C
این زبان هنوز انتخاب اول برای بسیاری از برنامه نویسان است. که برای پایین ترین لایه ها نرم افزار مینویسند و یکی از نزدیک ترینها به سخت افزار. این زبان چیزی را از شما پنهان نمیکند. و این بدان معناست که میتوانید با هر قسمت از کد همراه شوید تا بهترین عملکرد را از یک دستگاه داشته باشید. هر بیت قابل جابجایی است. هر مقدار در دیتا بیس موجود است.
ویکتور بریوس مدیر ارشد فنی در Zigbee Alliance است که از استاندارد ZigBee پشتیبانی میکند و دستگاه های کوچک را به هم پیوند میدهد. وی گفت: “زبان C برای وسایل محدودی قابل اجرا است و معمولاً یک سیستم عامل تجاری را شامل نمیشود.”
وی افزود دستگاه های پیشرفتهتر یا بزرگتر با سیستم عامل های کامل هنوز از کد C استفاده میکنند. اما وی گفت که زبان های دیگر مانند جاوا نیز به همین سادگی میتوانند جای این زبان را پر کنند. در تلفن هوشمند اپل بخش اعظم برنامه نویسی هنوز در Objective C انجام میشود. اما احتمالاً به تدریج توسط Swift جایگزین میشود.
پایتون
این زبان به عنوان یک زبان برنامه نویسی بسیار واقعی و نزدیک به عملکرد حقیقی به شمار میرود. و به طور گستردهای به عنوان زبان اصلی برای بسیاری از توسعه دهندگان مورد استفاده قرار میگیرد. هنگامی که دستگاه های کوچک از حافظه و توان محاسباتی کافی برخوردار هستند، توسعه دهندگان آزاد هستند که زبانی را انتخاب کنند که روند پروژه آن ها را آسانتر میکند.
Kinman Covey یک توسعه دهنده میکرو کنترلر میگوید که پایتون به راحتی قابل یادگیری است و در بسیاری از کاربرد ها پشتیبانی میشود. نحو کد زنی آن تمیز و ساده است و طیف بیشتری از برنامه نویسان را به خود جذب میکند. به عنوان مثال این زبان برای دانشمندان علوم اجتماعی و زیست شناسان اولین انتخاب است. وقتی در آزمایشگاه به یک دستگاه هوشمند احتیاج دارند، خوشحال میشوند از زبانی که میشناسند و میتوانند آن را درک کنند، استفاده کنند.
او در ادامه گفت: پایتون زبان برنامه نویسی یکی از محبوبترین میکرو کنترلرهای موجود در بازار یعنی Raspberry Pi است. بخش عمدهای از دستورات این کنترلر در پایتون نوشته شده است و بسیاری از مدارس از این پلتفرم برای آموزش برنامه نویسی کامپیوتر استفاده میکنند.
نسخه هایی دیگری نیز وجود دارند که برای اجرای برنامه های تحت پایتون طراحی شدهاند. به عنوان مثال بسته نرم افزاری MicroPython یک میکرو کنترلر کوچک است. که برای اجرای Python روی یک تراشه کوچک چند اینچ مربعی استفاده میشود.
جاوا اسکریپت
در حالی که هنوز هم بسیاری از JavaScript به عنوان زبان مورد استفاده در طراحی صفحات وب میپندارند. محبوبیت نسبتاً جدید این زبان در سرور، آن را به یک انتخاب شگفت آور محبوب برای برنامه های IoT تبدیل میکند. 41.8 درصد کامل از توسعه دهندگان در نظرسنجی Eclipse جاوا اسکریپت را انتخاب کردند و 5/31 درصد آنها از Node.js در پروژه های خوب استفاده میکنند.
بخش عمدهای از این کار روی سرورها و دروازه ها یا هاب هایی که اطلاعات را جمع میکنند. متمرکز شده و سپس آن را ذخیره میکند. هاب ها و سنسورهای هوشمند کوچکتر که لینوکس را اجرا میکنند معمولاً میتوانند Node.js. را اجرا کنند.
اما حتی اگر اکثر کدهای Node.js روی ماشین های بزرگتر اجرا شود، تلاش هایی برای طراحی اجرایی آن روی کنترلرهای کوچکتر وجود دارد. Espruino و Tessel دو نمونه از میکرو کنترلرها هستند که JavaScript را اجرا میکنند. به عنوان مثال Tessel در Node.js ساخته شده است و این امر باعث میشود که توسعه دهندگان وب بدون یادگیری یک زبان جدید در بستر IoT حرکت کنند.
Swift
Swift هنوز به طور عمده برای ساخت برنامه های کاربردی دستگاه های iOS و MacOS اپل مورد استفاده قرار میگیرد. این دستگاه ها اغلب میتوانند از پلتفرم های IoT پشتیبانی کنند. اگر میخواهید همه چیز شما با iPhone یا iPad تعامل داشته باشد میتوانید از Swift در کاربرد خود استفاده کنید.
اپل قصد دارد دستگاه های iOS خود را به عنوان مرکز شبکه خانگی سنسورها تبدیل کند، بنابراین کتابخانهها و زیرساخت هایی را ایجاد میکند که بخش عمدهای از کارها را بر عهده دارد. این کتابخانهها پایه و اساس پلتفرم HomeKit آن هستند که از ادغام دادههای شبکه در دستگاههای سازگار پشتیبانی میکند. این بدان معناست که میتوانید روی جزئیات وظیفه خود متمرکز شوید و بخش عمدهای از ادغام را به HomeKit واگذار کنید.
PHP
این زبان ممکن است اولین انتخاب وبلاگ نویسان و نمونه های اولیه وب سایت باشد. اما در اینترنت اشیا IoT نیز به طرز شگفت آوری محبوب است. پس از زبان های بزرگ و توابع آنها مانندC # ، PHP همان زبانی است که بیشترین استفاده توسط توسعه دهندگان در بررسی Eclipse داشته است. 11.2 درصد اظهار داشتند که از کدهای PHP را در سرورهای خود بهره میبرند.
برخی توسعه دهندگان Raspberry Pi در مورد راه اندازی یک سیستم سرور کامل LAMP با Apache ، MySQL و PHP تحت لینوکس صحبت میکنند. یعنی با صرف امکانات سخت افزاری و نرم افزاری کم میتوان یک سرور کامل تشکیل داد.
مطالب پیشنهادی