
إذا كنت تعمل في عالم الإلكترونيات والروبوتات، فستواجه عاجلاً أم آجلاً معضلة الاختيار بين البرمجة باستخدام أردوينو أو الانتقال إلى سيركت بايثونكلا النظامين البيئيين يسمحان لك بإنشاء مشاريع مذهلة باستخدام وحدات التحكم الدقيقة، لكنهما يفعلان ذلك بفلسفات مختلفة تمامًا، وهذا يؤثر على كل من طريقة عملك ونوع الأجهزة التي يمكنك استخدامها.
سنقارن بالتفصيل في هذا المقال CircuitPython مقابل Arduino (Arduino C)يشرح هذا الدليل ماهية كل منها، وكيفية عملها داخليًا، ومزايا وعيوب كل نهج، وفي أي الحالات يكون أحدهما أنسب من الآخر. ستتعرف أيضًا على سبب إقبال المزيد من مستخدمي أردوينو على استخدام سيركت بايثون، والعكس صحيح: عندما لا يكون هناك خيار آخر سوى استخدام لغة أردوينو سي لأن متطلبات الجهاز تفرض ذلك.
ما هما بالضبط Arduino و CircuitPython؟
عندما نتحدث عن أردوينو، يفكر الكثيرون فقط في لوحات مثل أونو، أو نانو، أو ميجا، ولكن في الواقع يمكن أن يشير المصطلح إلى كليهما لوحات تطوير متوافقة بالإضافة إلى لغة البرمجة نفسها وبيئتها. عادةً ما تتم برمجتها باستخدام نسخة مبسطة من لغة C/C++ تُعرف باسم Arduino C، وذلك باستخدام بيئة التطوير المتكاملة الرسمية أو بيئات أخرى متوافقة. بعض عائلات اللوحات الحديثة، مثل عائلة شياو من استوديو سيدكما أنها توسع الخيارات المتاحة.
أما في حالة CircuitPython، فالفكرة مختلفة: إنها تطبيق بايثون مصمم خصيصًا لوحدات التحكم الدقيقةتُعدّ CircuitPython، المشتقة مباشرةً من مشروع MicroPython، موجهةً بشكلٍ كبير نحو التعليم والمبتدئين والراغبين في إنشاء نماذج أولية بسرعة. وتركز على تسهيل تجربة المستخدم، بحيث تُشبه إلى حدٍ كبير توصيل ذاكرة USB بجهاز كمبيوتر والبدء في كتابة التعليمات البرمجية.
على الرغم من توسع بيئة أردوينو على مر السنين لتشمل عددًا هائلاً من اللوحات والمكتبات والوثائق، فقد طُوِّرت لغة سيركت بايثون وفق فلسفة مفتوحة ومجتمعية للغاية، مع مساهمات مستمرة في اللغة نفسها ومكتباتها ووثائقها. وقد أتاح هذا التعاون لها التطور تدريجيًا. يتوافق CircuitPython مع عدد كبير من لوحات ومجموعات المتحكمات الدقيقة الحديثة.على الرغم من أنه لا يزال يحتاج إلى موارد أكثر من Arduino C لكي يعمل.
من التفاصيل المهمة أنه على الرغم من أننا سنتحدث بشكل أساسي عن لغة Arduino C و CircuitPython كلغات وبيئات، فمن المهم أيضًا أن نضع في اعتبارنا أن لا تدعم جميع اللوحات الأم كلا الخيارينهناك وحدات تحكم دقيقة لا يمكنك استخدام لغة Arduino C فيها إلا، وهناك وحدات أخرى تتألق فيها لغة CircuitPython بشكل خاص بفضل قوتها وذاكرتها.
التجميع مقابل التنفيذ: الفرق الكبير
يكمن مفتاح فهم الفرق بين لغة Arduino C ولغة CircuitPython في معرفة كيفية تنفيذ الكود في كل حالة. تعتمد لغة Arduino C على سير عمل كلاسيكي لـ اللغة المترجمةتكتب البرنامج في بيئة التطوير المتكاملة (أو المحرر الذي تستخدمه)، ثم تنقر للتجميع والتحميل، ويقوم النظام بترجمة كود C/C++ الخاص بك إلى كود آلة خاص بوحدة التحكم الدقيقة الموجودة على اللوحة.
تُنتج عملية التجميع هذه الكود الناتج نظام ثنائي خالص مُكيَّف تمامًا مع المتحكم الدقيقينتج عن ذلك تنفيذ سريع وفعال للغاية. لكن ثمن ذلك هو أن كل تغيير، مهما كان بسيطًا، يتطلب إعادة تجميع البرنامج الثابت وإعادة تحميله إلى اللوحة. إذا كنت تقوم بتعديل القيم، أو تصحيح أخطاء في بناء الجملة، أو اختبار اختلافات طفيفة، فقد تصبح دورة التجميع والتحميل هذه مرهقة للغاية.
في CircuitPython، يختلف النهج تمامًا: اللغة هي تفسيريتم تخزين الكود المصدري في بايثون كما هو (عادةً في ملف يسمى code.py) في ذاكرة اللوحة. عند بدء تشغيل المتحكم الدقيق، يقرأ مترجم CircuitPython هذا الملف وينفذ التعليمات في الوقت الفعلي، ويترجمها إلى إجراءات على الأجهزة عند مواجهتها.
لهذه الطريقة في العمل نتيجة مباشرة: لا تتم ترجمة الكود إلى لغة الآلة إلا عند الحاجة إليه، لذلك يتم استهلاك الكثير من الموارد. كمية كبيرة من موارد ذاكرة الوصول العشوائي (RAM) وذاكرة الفلاش لاستضافة المترجم وإدارة التنفيذ. ومع ذلك، في المقابل، تحصل على مرونة هائلة: يمكنك تعديل الملف وحفظه، ثم إعادة تشغيل اللوحة وتشغيل البرنامج الجديد على الفور تقريبًا، دون خطوات تجميع وسيطة.
يؤثر هذا الاختلاف بين الكود المُترجم والمُفسَّر أيضًا على معالجة الأخطاء. ففي لغة Arduino C، عند ترجمتها، تُنبِّهك إلى العديد من أخطاء بناء الجملة قبل تحميل البرنامج، ولكن قد يكون تصحيح أي مشاكل أثناء التشغيل أكثر صعوبة بدون إعداد متقدم لتصحيح الأخطاء. أما في CircuitPython، قد تحدث الأخطاء مباشرة أثناء التشغيل وفي كثير من الحالات، يتم عرض رسائل واضحة تساعد في تحديد ما يحدث.
السرعة وموارد الأجهزة
أحد المجالات التي يظهر فيها الفرق بين لغة Arduino C ولغة CircuitPython بشكل واضح هو في سرعة تنفيذ خالصة وبسيطةعند العمل مع لغة C الخاصة بـ Arduino، يكون رمز الآلة مُجهزًا مسبقًا في المتحكم الدقيق، لذا لا حاجة لتفسير أي شيء في الوقت الفعلي. وهذا يُترجم إلى أوقات تنفيذ قصيرة جدًا واستجابة عالية جدًا، وهو أمر بالغ الأهمية في المشاريع التي يكون فيها لكل دورة ساعة أهمية.
في المقابل، يتعين على CircuitPython تفسير كل سطر، مما يُضيف عبئًا إضافيًا. وقد أظهرت الاختبارات العملية أن قد تستغرق نفس العملية وقتًا أطول بعدة مرات في CircuitPython مقارنةً بـ Arduino Cفي بعض الحالات المحددة، قد يتضاعف وقت الحساب ثلاث مرات. بالنسبة للعديد من المشاريع، لا يمثل هذا مشكلة كبيرة، ولكن عندما يكون المعالج الدقيق مثقلاً بالأعباء أو تكون المهام مكثفة للغاية، فقد يصبح ذلك عائقاً.
يوجد أيضًا فرق كبير من حيث الذاكرة. قد لا يكون المتحكم الدقيق الذي يُعدّ أكثر من كافٍ لمشروع Arduino C كافيًا إذا حاولت تشغيل CircuitPython، لأن يحتاج المترجم إلى قدر كبير من ذاكرة الفلاش وذاكرة الوصول العشوائي (RAM). يقتصر دورها على تشغيل بيئة التشغيل وإدارتها. وهذا يعني أن استخدام CircuitPython لا يناسب جميع اللوحات، وخاصة اللوحات القديمة أو ذات المواصفات المنخفضة جدًا.
ومع ذلك، فإن واقع السوق هو أن أصبحت وحدات التحكم الدقيقة الحديثة أسرع بشكل متزايد، ولديها ذاكرة أكبر، وتوفر أداءً أفضل.غالبًا ما تكون أسعارها مماثلة أو أقل من أسعار الأجيال السابقة، مما يقلل بشكل كبير من تأثير انخفاض أداء بايثون على العديد من المشاريع. بالنسبة لعدد كبير من التطبيقات، لا يمثل بطء الكود الطفيف مشكلة حقيقية، بينما تُعد سرعة التطوير باستخدام CircuitPython ميزة واضحة.
مع ذلك، توجد حالات محددة للغاية لا يكون فيها استخدام CircuitPython مجديًا: على سبيل المثال، عندما تريد استغلال كل مللي أمبير ساعة من بطارية صغيرة جدًا، أو عندما تكون ذاكرة المتحكم الدقيق المختار محدودة للغاية. في هذه الحالات، يبقى Arduino C الخيار الطبيعي لتحقيق الكفاءة والتوافر.
خبرة التطوير وسير العمل
تُعدّ تجربة التطوير مجالًا آخر تبرز فيه الاختلافات بين العالمين منذ اللحظة الأولى. فمع لغة C الخاصة بـ Arduino، تبدأ عملية التطوير النموذجية من بيئة تطوير Arduino المتكاملة أو أي بيئة أخرى متوافقةعليك تحديد اللوحة المحددة والمنفذ والتأكد من تثبيت المكتبات اللازمة، وفي كثير من الحالات، إضافة حزم إضافية لدعم عائلات المتحكمات الدقيقة بخلاف AVR الكلاسيكية.
لا يُعد هذا الإعداد الأولي معقدًا بشكل خاص بالنسبة لشخص لديه خبرة، ولكنه قد يمثل تحديًا لشخص يبدأ من الصفر. منحنى تعليمي كبيرعلاوة على ذلك، بمجرد تحميل البرنامج، يبقى الملف الثنائي المُجمَّع فقط على اللوحة؛ إذا فقدت ملف المصدر على جهاز الكمبيوتر الخاص بك، فلن تتمكن من استعادته من اللوحة لتعديله، لأن النص الأصلي لم يعد موجودًا، بل رمز الآلة فقط.
في لغة CircuitPython، يتمحور كل شيء حول جعل العملية بسيطة قدر الإمكان. بعد تحميل البرنامج الثابت المناسب على اللوحة (عادةً ما يكون ملف UF2 خاصًا بالطراز)، يتم تثبيته على الكمبيوتر كما لو كان... محرك تخزين USBستجد بالداخل ملفات مثل code.pyوالتي يمكنك فتحها باستخدام برامج تحرير النصوص مثل Mu أو حتى برامج تحرير النصوص الأساسية.
لتغيير سلوك المشروع، ما عليك سوى فتح الملف، وتعديل بضعة أسطر، ثم حفظه. في كثير من الحالات، ستُعاد تشغيل اللوحة تلقائيًا وتُشغّل الإصدار الجديد من البرنامج فورًا. لن تحتاج إلى إعادة تجميع البرنامج أو التعامل مع أدوات معقدة. الأمر أشبه تمامًا بتحرير مستند نصي على محرك أقراص USB.
علاوة على ذلك، إذا كان مشروعك يتطلب مكتبات إضافية أو ملفات أخرى، فيمكنك إضافتها بسهولة عن طريق سحبها وإفلاتها على وحدة CircuitPython. هذه البساطة تجعل التطوير التكراري أسرع وأكثر متعة، خاصةً عند ضبط التفاصيل الدقيقة، أو الاختبار، أو تعليم شخص لم يسبق له برمجة متحكم دقيق من قبل.
سهولة التعلم والتواصل المجتمعي
من الجوانب الرئيسية الأخرى التي يجب مراعاتها عند الاختيار بين CircuitPython و Arduino C هو سهولة التعلم من الصفرأصبحت لغة بايثون، بشكل عام، إحدى اللغات الرائدة في التعليم والجامعات والتعلم الذاتي، وذلك تحديداً بفضل قواعدها النحوية الواضحة وسهولة قراءة وكتابة التعليمات البرمجية. وترث CircuitPython هذه الفلسفة نفسها.
بالنسبة لشخص لم يسبق له البرمجة من قبل، قد يكون البدء باستخدام لغة C في أردوينو أكثر صعوبة بعض الشيء. على الرغم من أن طبقة التجريد في أردوينو تُبسط لغة C/C++ بشكل كبير، لا تزال مفاهيم الأنواع والمؤشرات الضمنية والهياكل والقواعد النحوية الأكثر صرامة موجودة. قد يكون ذلك مربكًا في البداية. في المقابل، تميل لغة بايثون إلى أن تكون أقرب إلى اللغة الطبيعية وأكثر مرونة في جوانب عديدة، مما يساعد على التركيز على منطق البرنامج بدلاً من التفاصيل التقنية.
مع ذلك، يجب الاعتراف بأن نظام أردوينو البيئي يتمتع بميزة كبيرة في البداية ويتباهى بـ كمية هائلة من الوثائق والأمثلة والدروس والمشاريع جاهزة لإعادة الاستخدام. إذا كنت تبحث عن أي مستشعر أو وحدة أو درع، فستجد على الأرجح أمثلة موثقة جيدًا بلغة Arduino C أولًا، بينما قد لا يكون المكافئ في CircuitPython منتشرًا على نطاق واسع أو قد يكون أحدث. على سبيل المثال، هناك أدلة إرشادية للمستشعرات مثل مستشعر AS7341.
أما فيما يخص CircuitPython، فيعتمد المجتمع بشكل كبير على روح المصادر المفتوحة. وهناك جهد مستمر لـ تحسين اللغة والمكتبات والوثائق استنادًا إلى ملاحظات المستخدمين، يُكرّس العديد من أعضاء المجتمع جهودهم لاختبار الإصدارات الجديدة، والإبلاغ عن الأخطاء، وتحسين الأمثلة، وتوسيع نطاق الدعم للوحات الجديدة. كل هذا يعني أنه على الرغم من حداثة النظام البيئي نسبيًا، إلا أنه يتطور بوتيرة جيدة جدًا.
علاوة على ذلك، يستفيد CircuitPython بشكل مباشر من العمل السابق لـ MicroPython. ويعود الفضل في إدخال لغة بايثون إلى المتحكمات الدقيقة إلى حد كبير إلى المشروع الأصلي، الذي وضع الأسس التقنية والمفاهيمية التي أضاف إليها CircuitPython منهجًا تعليميًا أكثر سهولة للمبتدئين.
سهولة الحمل ودعم اللوحة
تُعد قابلية نقل الكود عاملاً آخر جديرًا بالاعتبار. في لغة CircuitPython، يكمن جزء كبير من جاذبيتها في حقيقة أن يمكن تشغيل البرنامج نفسه على لوحات مختلفة مع تغييرات طفيفة، شريطة أن تدعم هذه اللوحات النظام البيئي وأن تتوفر لها موارد كافية. إن التجريد الذي توفره اللغة على مستوى الأجهزة يُسهّل بشكل كبير الانتقال من لوحة إلى أخرى.
إلا أن زيادة استهلاك ذاكرة الوصول العشوائي (RAM) وذاكرة الفلاش تعني أن لا تدعم جميع وحدات التحكم الدقيقة المتوفرة في السوق تشغيل لغة CircuitPythonهناك لوحات صغيرة جدًا أو قديمة لا ترقى ببساطة إلى مستوى الذاكرة، لذا فإن الخيار الواقعي الوحيد هو الاستمرار في استخدام Arduino C (أو C/C++ مباشرة بدون طبقة Arduino).
أما مع لغة أردوينو سي، فالأمر معكوس: فهي أخف وزناً وتعتمد على تصميم محدد لكل متحكم دقيق. يمكن تشغيله على نطاق أوسع بكثير من الأجهزةطالما أن هناك نواة أو حزمة متوافقة مع وحدة التحكم الدقيقة هذه ضمن نظام Arduino البيئي، ويتم صيانة الأدوات بشكل جيد، فمن الممكن برمجتها باستخدام نفس بناء جملة Arduino C الأساسي.
لهذا الأمر آثار عملية: فإذا كان مشروعٌ ما يتطلب لوحةً محددةً للغاية، مثلاً بسبب الحجم أو استهلاك الطاقة أو متطلبات الأجهزة الطرفية، فقد لا تكون تلك اللوحة قابلةً للبرمجة إلا باستخدام لغة Arduino C، وقد لا تتوفر أي نسخة من CircuitPython. في هذه الحالة، يُملي الجهاز نفسه الاختيار.
من ناحية أخرى، توجد لوحات حديثة مجهزة بشكل جيد للغاية لـ CircuitPython، مع ذاكرة كافية ودعم رسمي، مما يسمح الاستفادة الكاملة من قدرات المترجم دون التأثير بشكل كبير على الأداء. تُعد هذه اللوحات خيارًا مناسبًا للغاية للمشاريع التعليمية، أو النماذج الأولية السريعة، أو التطبيقات التي لا تُعد فيها السرعة أمرًا بالغ الأهمية.
أمثلة استخدام واقعية ودراسات حالة
لفهم أفضل متى يميل التوازن في اتجاه أو آخر، من المفيد النظر إلى بعض أمثلة لمشاريع واقعية حيث تم اختيار لغة Arduino C أو CircuitPython حسب الاحتياجات.
تخيل، على سبيل المثال، آلة موسيقية تجريبية تعمل بتقنية MIDI تعتمد على لوحة مثل Raspberry Pi Pico. في هذا السياق، اختار البعض استخدام CircuitPython لوجود مشاريع موجودة مسبقًا وشفرة برمجية مشتركة من المجتمع يمكن تكييفها. إعادة الاستخدام كما هي تقريبًاكان تثبيت البرنامج الثابت المناسب ونسخ الملفات الصحيحة إلى محرك الأقراص الخاص باللوحة كافيًا لتشغيل المشروع، ولم يتطلب الأمر سوى تعديلات طفيفة على الأجهزة؛ بل توجد بدائل أخرى مثل FlexiPi، وهو نسخة طبق الأصل من Raspberry Pi Picoمما يوسع نطاق الاحتمالات.
في مثل هذه الحالات، حيث تتوفر الموارد وتكون الأجهزة قوية بما يكفي، يوفر CircuitPython وقتًا هائلاً في التطوير. يمكنك التركيز على الجوانب الإبداعية، والتعديلات الموسيقية، والتفاعل مع المستشعرات، دون الانشغال بالتفاصيل التقنية المعقدة أو عمليات التجميع.
وعلى النقيض تماماً، فكّر في مشروع صغير جداً، مثل وحدة تحكم MIDI صغيرة تعتمد على متحكم دقيق ATtiny85 ويعمل ببطارية صغيرة على شكل خلية زر. هنا، تكون قيود الموارد قاسية للغاية: ذاكرة صغيرة جدًا، واستهلاك طاقة يجب أن يكون في حده الأقصى، والحاجة إلى أوضاع طاقة منخفضة للغاية باستخدام مكتبات مثل TinySnore لوضع وحدة التحكم الدقيقة في وضع السكون.
في هذا السياق، لا يُعد استخدام CircuitPython خيارًا عمليًا. فالمفسر ببساطة لا يتناسب مع متطلبات المشروع، أو أنه سيترك موارد قليلة جدًا متاحة تجعل المشروع غير قابل للتنفيذ. يكمن الحل في كتابة الكود بعناية بلغة C أو Arduino C، مع الاستفادة من المكتبات عالية الكفاءة وتعظيم قدرات المتحكم الدقيق في استهلاك الطاقة المنخفض.
يوضح هذان المثالان الفكرة العامة بشكل جيد: عندما تكون سرعة التطوير والمرونة وسهولة التعديل من الأولويات وإذا سمحت إمكانيات الجهاز بذلك، فإن CircuitPython أداة ملائمة للغاية. أما عندما يكون العامل الحاسم هو الأداء الأمثل أو محدودية الموارد الشديدة، فإن لغة Arduino C والحلول المُجمّعة تظل الخيار الأمثل.
المزايا الرئيسية للغة برمجة أردوينو سي
باختصار، من أبرز نقاط قوة لغة Arduino C أنها الكفاءة في وقت التنفيذ واستخدام الذاكرةمن خلال الترجمة المباشرة إلى لغة الآلة، يقوم المتحكم الدقيق بتنفيذ التعليمات بأقل قدر من النفقات العامة، مما يؤدي إلى سرعة أعلى واستهلاك طاقة أقل محتمل.
النقطة الثانية التي تصب في مصلحتها هي كمية هائلة من الأجهزة المتوافقةبفضل توسع بيئة أردوينو على مر السنين، تتوفر الآن نوى وحزم برمجية للعديد من المتحكمات الدقيقة، بدءًا من متحكمات AVR الكلاسيكية وصولًا إلى متحكمات ARM وESP وغيرها. هذا يعني أنه إذا كنت تمتلك بالفعل لوحة نادرة أو ذات مواصفات خاصة، فمن المرجح أن تدعم لغة أردوينو C أكثر من دعمها للغة CircuitPython.
ومن الجوانب الإيجابية الأخرى نضج النظام البيئي: فهناك وفرة من أمثلة برمجية، ومكتبات أجهزة الاستشعار، ووحدات نمطيةوتتوفر وثائق على جميع المستويات، بدءًا من أدلة المبتدئين وصولًا إلى النصائح والحيل المتقدمة. بالنسبة للعديد من المطورين الذين يعملون في هذا المجال منذ سنوات، أصبحت لغة Arduino C معيارًا فعليًا؛ على سبيل المثال، ستجد أدلة عملية للعمل مع مستشعر الضغط DPS310 مع أردوينو.
بالطبع، له عيوب أيضًا: الحاجة إلى تجميع كل تغيير وتحميله، والاعتماد على تكوين معلومات اللوحة والمكتبة بشكل صحيح في بيئة التطوير المتكاملة، وحقيقة أن اللوحة لا تخزن شفرة المصدر كنص، مما يعني أن تعديل برنامج مثبت بالفعل يتطلب البحث عن الملفات الأصلية مرة أخرى أو إعادة جزء من العمل.
المزايا الرئيسية لـ CircuitPython
أما بالنسبة لـ CircuitPython، فإن الخطاف الرئيسي هو سهولة الاستخدام وسرعة التكرارإن حقيقة أن اللوحة تظهر كقرص USB حيث يمكنك سحب الملفات وإفلاتها، وتعديل ملف code.py ورؤية التغييرات على الفور، تقلل بشكل كبير من الاحتكاك عند التجربة والتعلم.
بالإضافة إلى ذلك، غالبًا ما تُعتبر لغة بايثون أكثر سهولة في الاستخدام لمن يخطون خطواتهم الأولى في البرمجة، يساعد بناء الجملة النظيف، وغياب تفاصيل إدارة الذاكرة المعقدة، وقابلية قراءة الكود الأشخاص الذين ليس لديهم خبرة سابقة على إنشاء مشاريع وظيفية في وقت أقل.
ومن المزايا الواضحة الأخرى أن الكود يُخزَّن على اللوحة نفسها بصيغة نصية. وهذا يسمح استعادة وتعديل مشروع حتى لو لم يكن لديك الملف الأصلي على جهاز الكمبيوتر الخاص بكما عليك سوى توصيل اللوحة، وفتح الملف، والبدء في التحرير. يُعد هذا مفيدًا بشكل خاص في البيئات التعليمية أو لإجراء تجارب سريعة حيث تميل البيانات إلى الضياع أو الكتابة فوقها.
وأخيرًا، فإن اعتماد CircuitPython على نموذج تطوير مفتوح ومتطور باستمرار، مع تلقي ملاحظات متواصلة من المجتمع، يجعله تصل التحسينات بانتظامتُعدّ الميزات الجديدة والتحسينات ودعم اللوحات المحسّن والمكتبات المحدثة جزءًا من الروتين اليومي للمشروع، مما يجعله حيويًا للغاية.
من ناحية أخرى، فإن استهلاكه للموارد وبطء سرعته يجعلان منه ليس حلاً سحرياً. في المشاريع التي يكون فيها لكل دورة ساعة أهمية بالغة، أو حيث لا تتوفر إلا وحدات تحكم دقيقة للغاية، فهو ببساطة ليس الأداة المناسبة. ولكن في كثير من السياقات، فإن سهولة استخدامه تعوض بشكل كبير عن انخفاض الأداء.
في النهاية، لا يُعد الاختيار بين لغة أردوينو سي ولغة سيركت بايثون مسألة اختيار بين الأبيض والأسود، بل هو مسألة تقييم... احتياجات المشروع، وقيود الأجهزة، وخبرة الشخص الذي سيقوم بالبرمجةإذا كنت قادمًا من عالم أردوينو وتبحث عن شيء أكثر مرونة وسرعة، فإن CircuitPython خيار مثالي للبدء. أما إذا كنت تتقن لغة C وتجيد التعامل مع المتحكمات الدقيقة الصغيرة أو المتخصصة، فربما ستشعر براحة أكبر مع لغة C الخاصة بأردوينو، ولكن هذا لا يمنعك من استخدام كلا الطريقتين حسب الحاجة.