آشنایی با زبان اینترنت اشیا Lua The IoT programming language
اینترنت اشیاء این روزها به واقعیتی فراتر از باور تبدیل شده است و سرعت رشد آن هم بسیار فراتر از تصور ماست. بوجود آمدن زیرساختهای سخت افزاری مانند انواع ماژولها و بردهای امبدد از جمله آردوینو Arduino و رزبری پای Raspberry Pi در کنار افزایش پهنای باند اینترنت و سرعت برق و باد آن، همگی باعث شده تا شرایط برای رشد اینترنت چیزها یا اینترنت اشیاء IOT محیا شود. البته در رشد این نوزاد نوپا IOT مسایل دیگری از جمله زبانهای برنامه نویسی سطح بالا مانند Lua و Node Red بسیار سهیم بودهاند.
زبان برنامه نویسی Lua چیست؟
زبان Lua یک زبان برنامهنویسی سبک و قابل توسعه است که در سال ۱۹۹۳ توسط گروهی از برنامهنویسان در دانشگاه پارانا در برزیل طراحی شد. Lua به معنای "روشنایی" در زبان پرتغالی است. این زبان برای کاربردهای گوناگونی مانند توسعه بازیهای ویدیویی، برنامهنویسی اسکریپت در نرمافزارها، توسعه وب، بردهای امبدد و بسیاری دیگر استفاده میشود. Lua یک زبان اسکریپت شبه-پایه است که دارای یک نحو ساده و خوانا است. طراحی کامپکت و سبک آن، سبب شده تا در اجراهایی با منابع محدود مانند بردهای امبدد و مواردی که نیاز به سرعت اجرا دارند، مورد استفاده قرار گیرد. همچنین Lua از نظر معماری به عنوان یک زبان اسکریپت توسعهپذیر و قابل توسعه طراحی شده است. این زبان توسط ماشین مجازی (Interpreter) اجرا میشود و قادر به تعامل با زبانهای دیگر نظیر C و C++ است. یکی از ویژگیهای برجسته Lua قابلیت امکانات متعددی است که از طریق کتابخانههای استاندارد آن در دسترس قرار دارد. این کتابخانهها شامل ماژولهایی برای مدیریت رشتهها، عملیات ریاضی، ورود و خروج داده، شبکه و بسیاری از سایر عملیات است. علاوه بر این، Lua اجازه میدهد کتابخانههای شخص ثالث را نیز به سادگی وارد کنید و استفاده کنید.
واژه Lua به چه معناست؟
شیوه تلفظ این کلمه به صورت لوو آآآ Loo-ah میباشد. در زبان پرتغالی به معنی ماه میشود. از آنجایی که Lua یک اسم تلقی میشود پس همیشه با حرف اول بزرگ نوشته خواهد شد. اسم ماه زمین و اسم زبان برنامه نویسی! تیم محقیقن در دانشگاه PUC-Rio در برزیل که ابداع کننده این زبان برنامه نویسی برای اینترنت اشیاء IOT بودهاند بر این نکته تاکید کرده اند که شیوه نوشتاری آن به صورت Lua باشد نه به صورت LUA چرا که خودشون دوست نداشته اند! پس لطفا شما هم Lua بنویسید.
زبان برنامه نویسی Lua پایدار و تنومند است
زبان برنامه نویسی Lua که امروزه در اینترنت اشیاء یا IOT و باز یا اینترنت اشیاء استفاده میشود؛ در بسیاری از رابطهای صنعتی هم استفاده شده است. البته نه این که صرفا مصرف صنعتی داشته باشد چرا که در برخی از قسمتهای نرم افزار معروف Adobe Photoshop هم استفاده شده است. در کل تاکید زبان برنامه نویس Lua تاکید بر امبدد سیستمها Embedded Systems دارد. زبان برنامه نویسی Lua از بازیهای رایانهای هم سر در آورده، کدام بازی؟ همون انگری برد معروف از این زبان استفاده کرده است. نکته جالب راجع به Lua اینه که تازه در سال ۱۹۹۳ متولد شده است و تا به امروز بسیار پیشرفت کرده و نسخههای زیادی از آن منتشر شده است. در سال ۲۰۰۱ این زبان برنامه نویسی جایزه Front Line Award 2011 را از مجله توسعه دهندگان بازی دریافت کرد.
کاربردهای زبان Lua
زبان Lua در مجموعهای از پروژههای کاربردی مورد استفاده قرار میگیرد. در ادامه به برخی از موارد استفاده این زبان اشاره میکنیم.
بازیهای ویدیویی: Lua بسیار محبوب در صنعت بازیسازی است. بسیاری از موتورهای بازی مانند Unity و Corona SDK از Lua به عنوان زبان اسکریپت استفاده میکنند. توسعهدهندگان با استفاده از Lua میتوانند قسمتهای مختلف بازیها را برنامهنویسی کنند و قابلیتهای متنوعی مانند کنترل روند بازی، هندسه، صدا و تصویر را به بازی اضافه کنند.
توسعه نرمافزارهای دیگر: Lua به عنوان زبان اسکریپت در نرمافزارهای دسکتاپ و موبایل مورد استفاده قرار میگیرد. برای مثال، نرمافزارهایی که نیاز به افزونهها و اسکریپتهای کاربردی دارند مانند Adobe Photoshop و World of Warcraft از Lua استفاده میکنند.
توسعه وب: Lua نیز در توسعه وب به کار میرود. نمونههایی از این استفاده شامل فریمورکهای وبی مانند OpenResty و Lapis است که از Lua برای توسعه سریع و بازده بالا در برنامهنویسی وب استفاده میکنند.
بردهای امبدد: Lua به عنوان یک زبان کوچک و سبک، در سیستمهای تعبیه شده مانند راوترها، دستگاههای شبکه و سیستمهای کنترل صنعتی مورد استفاده قرار میگیرد. از آنجا که Lua به زبان C و C++ قابل ادغام است، میتوان به راحتی کدهای C/C++ را به Lua ارتباط داد و آنها را در سیستمهای تعبیه شده استفاده کرد.
به طور کلی، Lua به دلیل سبکی، سرعت اجرا، قابلیت ادغام با زبانهای دیگر و توسعهپذیری، در زمینههای مختلفی از جمله بازیسازی، نرمافزارهای دیگر و توسعه وب استفاده میشود.
زبان Lua به اندازه کافی سریع هم هست
مهمترین علت شهرت زبان Lua بخاطر کارایی آن است. آنطور که گفته شده است، سرعت دیگر زبانهای برنامه نویسی را با سرعت Lua میسنجند. بنچ مارکهای بسیاری درباره زبان Lua وجود دارد که معمولا به عنوان سریع ترین در حوزه اسکریپت امبددها ذکر شده است. یک کامپایر سریعتر برای Lua توسعه داده شده است به نام LuaJIT که یک کامپایلر just-in-time میباشد. زبان Lua از سینتکس بسیار ساده و در عین حال ساختار توصیف داده بسیار ساده بهره میبرد که بر اساس آرایههای داینامیک و زبان توصیفی است.
Lua قابلیت ترابرد پذیری دارد
از آنجایی که از یک کامپایر استاندارد C استفاده میکند، قابلیت تبدیل و یا ترابرد پذیری به کلیه Unix ها و Windows و حتی موبایلها از جمله اندروید، IOS, BREW, Symbian و Windows Phone را دارد. زبان برنامه نویسی Lua در امبددها Embedded از جمله پردازندههای ARM و یا Rabbit قابل اجراست و اپلیکیشنهای مبتنی بر امبدد سیستمها را میتواند راه اندازی کند. از آنجایی که هسته Lua از کمترین دیتا استاتیک استفاده میکند، برای امبددها و خصوصا اینترنت اشیاء IOT مناسب است. چرا که اینترنت اشیاء IOT بر بستر امبدد سیستمها به سادگی قابل اجراست. زبان Lua بسیار سریع و دارای حجم کم است و اینها در کنار وجود داشتن API های متنوع و کتابخانههای متنوع برای تبادل کد با دیگر زبانها باعث شده که انتخاب مناسبی در امبدد سیستمها باشد. اینترنت اشیاء IOT همانطور که پیشتر گفتم بر بستر امبدد سیستمها از جمله آردوینو Arduino، رزبری پای Raspberry Pi و دیگر بردها از جمله اورنج پای و اودروید و … به سادگی قابل اجراست.
Node MCU راهکاری مدرن و روبه پیشرفت
از جمله ماژولهای پر کاربرد در زمینه اینترنت اشیاء IOT ماژولهای ارسال و دریافت داده است که میتوان به ESP8266 اشاره کرد. به تازگی ماژول Node MCU که بر پایه ESP8266 طراحی شده است بسیار مورد استقبال قرار گرفته است. این ماژول توانایی کامپایل کردن کدهای آردوینو را دارد. همچنین زبان Lua یک انتخاب مناسب برای استفاده در این ماژول است. Node MCU دارای مدلهای مختلفی است که معمولا بر اساس حافظه داخلی متفاوت میباشند. دو مدل با ۴ مگابایت و ۵۱۲ کیلوبایت حافظه داخلی در بازار ایران موجود میباشند و قیمتی بین ۱۸ تا ۲۹ هزار تومان میباشد.
ماژول Node MCU دارای ۳۰ پایه است و به طور کلی از ارتباط UART و SPI و I2C بهره میبرد. از طریق یک کابل USB با همان نرم افزار آردوینو قابل برنامه ریزی و اجرا کردن کدهای آردوینو Arduino میباشد.