لطفا جاواسکریپت مرورگر خود را فعال سازید!

نحوه فعال سازی در کروم
  1. ابتدا باید اینکارو بگنید
  2. بعدش اونکارو
نحوه فعال سازی در فایرفاکس
  1. ابتدا باید اینکارو بگنید
  2. بعدش اونکارو
MicroPython: نسخهٔ کاستومایز شده‌ای از زبان برنامه‌نویسی پایتون برای دیوایس‌های امبدد

MicroPython: نسخهٔ کاستومایز شده‌ای از زبان برنامه‌نویسی پایتون برای دیوایس‌های امبدد

گرچه Python زبانی همه‌منظوره است ولی مواردی وجود دارند که این زبان نمی‌تواند در آن‌ها به‌عنوان انتخاب اول محسوب شود؛ به‌عنوان‌مثال، اگر قصد طراحی بازی‌های پیچیده‌ای را دارید، ++C گزینهٔ بهتری خواهد بود و همچنین در دنیای نرم‌افزارهای Embedded نیز زبان C به سلطهٔ خود ادامه می‌دهد. به‌ همین دلیل، نسخه‌ای از این زبان محبوب تحت‌عنوان MicroPython عرضه شده تا این خلاء را پر سازد.

هدف از ارائهٔ MicroPython، استفاده از پایتون در ابزارهای Embedded بوده است؛ محصولی که برای استفاده در میکروکنترولرها و سیستم‌های کوچک و جاسازی شده مناسب است. به‌علاوه این‌که پیاده‌سازی خوبی از پایتون 3.4 در آن صورت گرفته که هرچند تکمیل نشده و تمامی ویژگی‌ها را دربر نمی‌گیرد، ولی کاملاً کاربردی است. این محصول تحت مجوز آزاد MIT منتشر شده، به همین دلیل می‌توانید هرطور که مایل هستید از آن استفاده نمایید.

درآمدی بر زبان برنامه‌نویسی MicroPython
در‌حال‌حاضر که پیاده‌سازی این پروژه در مرحلهٔ بتا قرار دارد، بهترین راه برای شروع به کار، پیروی از دستورالعمل‌های ویکی میکروپایتون است که در این صورت باید 4 لایبرری را نصب کنید، ریپازیتوری موردنظر را کلون کنید و سپس از دستور make استفاده نمایید (در کل، 5 تا 10 دقیقه برای دریافت تمامی اطلاعات و کمی هم برای نصب آن‌ها زمان می‌برد).

بعد از بیلد کردن پروژه، باید با دستور make test، تست‌های موردنظر را اجرا کنید (در فولدر tests، سورس‌کد مربوط به تمامی تست‌ها به زبان پایتون وجود دارند و قابل‌مشاهده هستند). به‌عنوان‌مثال، برای تست تقسیم عدد صحیح بر صفر داریم:

try:
    1 / 0
except ZeroDivisionError:
    print("ZeroDivisionError")

try:
    0 ** -1
except ZeroDivisionError:
    print("ZeroDivisionError")

تفاوت‌های میان Python و MicroPython
صفحه‌ای در گیت‌هاب وجود دارد که تمامی تفاوت‌های میان MicroPython و Cpython 3 را لیست کرده است (Cpython 3 پیاده‌سازی استاندارد پایتون نسخهٔ 3 محسوب می‌شود). به‌عنوان‌مثال، برای مدیریت حافظه در میکروپایتون، به‌جای Reference Counting، از روش Garbage Counting استفاده می‌شود؛ همچنین پشتیبانی حداقلی از Introspection و Reflection وجود دارد (که برای آزمایش و تغییر ساختار برنامه -توسط خود برنامه- درحین اجرا کاربرد دارند). بیشتر این تغییرات باعث می‌شوند تا حجم میکروپایتون کم باشد و برای استفاده به‌صورت امبدد و در بوردهای پورتابل مناسب شود.

میکروپایتون زیرمجموعهٔ کوچکی از پکیج‌ها را دربرمی‌گیرد؛ بسیاری از لایبرری‌های اصلی پایتون پورت شده‌اند و در فایل MicroPython-lib گیت‌هاب در دسترس هستند (همچنین از طریق PyPI که مخفف واژگان Python Package Index است به‌همراه پیشوند micropython- نیز می‌توانید به این فایل‌ها دسترسی داشته باشید).

علاوه‌بر این، ابزاری شبیه به pip موجود در پایتون، به نام upip وجود دارد که برای نصب پکیج‌های میکروپایتون مناسب است (همچنین نسخهٔ یونیکسی میکروپایتون نیز به‌ بازار عرضه شده است). دستور زیر، ابزاری به نام pystone که برای تهیهٔ بنچمارک مورد استفاده قرار می‌گیرد را دریافت می‌کند:

./micropython -m upip install micropython-pystone

مقایسهٔ Python با C
سی به‌عنوان زبان برنامه‌نویسی‌ای شبیه اسمبلی اما با قابلیت پرتابل بودن بیشتر ساخته شد که ارتباط خوبی نیز با سخت‌افزار برقرار می‌کند؛ برای دسترسی به سخت‌افزار از طریق پایتون، ماژولی با امکان تعامل با حافظه وجود دارد که اجازه می‌دهد تا برای دسترسی و تغییر رجیسترها و اجزای پیرامون GPIOA روی پای‌بورد اقدام نمایید (GPIOA مخفف General Purpose Input Output Address).

به‌عنوان یک زبان برنامه‌نویسی، سی در مقایسه با پایتون ویژگی‌های کمتری را دربرمی‌گیرد؛ در پایتون مواردی مانند دیکشنری، لیست و ساختارهای اطلاعاتی سطح‌بالا وجود دارند که جایشان در زبان سی خالی است. در زبان سی، باید خودتان بااستفاده از Pointerها یا اشاره‌گرها اقدام به ساخت این موارد کنید که این کار می‌تواند احتمال کرش کردن و به بن‌بست رسیدن پروژه‌ٔتان را بیشتر کند،‌ مگر این‌که از لایبرری‌های ساختهٔ دیگران (اصطلاحاً Third-Party) استفاده کنید که نیاز به شناخت آن‌ها نیز وجود دارد.

زبان C برای استفاده در برنامه‌نویسی سطح‌پایین عالی است اما در کارهای سطح‌بالا، استفاده از این زبان پیچیدگی‌های خاص خود را دارد و اینجا است که پایتون خودی نشان می‌دهد.

میکروپایتون دارای یک Inline Assembler کامل است که اگر نیاز به سطح پایین‌تری از C دارید، بااستفاده از زبان اسمبلی، قابلیت زیادی را برای‌تان به ارمغان می‌آورد. فراموش نکنید که MicroPython به زبان C نوشته شده و از طریق میکروپایتون می‌توانید به لایبرری‌های زبان سی نیز دسترسی داشته باشید.

البته باید خاطر نشان کنیم که به‌طورکلی، نمی‌توان هیچ زبانی را بهتر از دیگری دانست، بلکه هر کدام نقاط ضعف و قوت خاص خود را دارند؛ مثلاً استفاده از پیچ‌گوشتی برای محکم کردن یک میخ و استفاده از چکش برای باز کردن پیچ، فقط کارتان را سخت‌تر می‌کند! بنابراین باید از هر ابزاری در جای مناسب خود استفاده نمایید.

نتیجه‌گیری
Internet of Things (اینترنت اشیاء)، درحال رشد است و پایتون با سینتکس ساده و دلنشین خود، توسعهٔ ابزارهای Embedded را تسهیل می‌کند و عرضهٔ محصولات به بازار را سرعت می‌بخشد.

شاید بتوان گفت در‌حال‌حاضر تعداد دولوپرهای پایتون به‌خاطر محبوبیت و سادگی آن نسبت به سی بیشتر است (گرچه پایتون در رقابت با سرعت اجرای برنامه‌ها در زبان C کم می‌آورد)، بنابراین اگر قصد ساخت چیزهای جدید با استفاده از بوردهای IoT را دارید، MicroPython ارزش بررسی کردن را خواهد داشت.

همچنین اگر علاقمند به شروع یادگیری مقدماتی زبان برنامه‌نویسی Python هستید، می‌توانید به دورهٔ آموزش آنلاین و رایگان زبان برنامه‌نویسی پایتون در سکان آکادمی مراجعه نمایید.

منبع


مرتضی صمدی