Raspberry Pi, RASPBERRY PI رسپبری, توصیه شده

آموزش رزبری پای با پایتون – قسمت صفرم – زبان جاوا اسکریپت یا پایتون؟

سلام به همه.

توی نوشته قبل دیدین که چطور میشه توی رزبری پای یه LED رو خاموش و روشن کرد.

توی این مقاله مقایسه ای بین زبان های pyhton ،java script (nodejs) و c برای برای اینکه ببینیم کدوم سرعت بیشتری رو کنترل ورودی و خروجی I/O داره انجام میدیم (به کمک زئوس). 

اولین زبان که میخوایم بررسی کنیم پایتون هست. این که این زبان رو چه کسی ساخت و اصلا چیشد که پایتون درست شد قضیه مفصلی داره که توی این مقاله ما در مورد اون صحبت نمیکنیم. 

زبان برنامه نویسی پایتون روی سیستم عامل raspbian به صورت پیش فرض نصبه. خب اولین قدم اینه که LED blink رو با زبان برنامه نویسی پایتون پیاده سازی کنیم. اینجا میتونید ببینید که چطور توی پایتون یه LED blink بنویسیم. تنها تفاوتی که داره اینه که ما نمیخوایم مدتی رو برای خاموش یا روشن بودن LED صبر کنیم. پس باید کد ما به این صورت باشه:

 

 

خب همون طور که میبینید کدش خیلی کم و راحته. حالا بیاید این برنامه رو اجرا کنیم و ببینیم که با چه سرعتی دستور برای خاموش و روشن شدن LED میده.

من وقتی دفه اول کد رو اجرا کردم سرعت ۱مگاهرتز رو دیدم اما دفعه های بعد با سرعت تقریبا ۹۲۰ کیلوهرتر دستور برای خاموش و روشن شدن LED داد.

 

زبان برنامه نویسی JavaScript

درسته زبان برنامه نویسی جاوا اسکریپت! درسته که فقط توی مرورگر اجرا میشه اما چندسال پیش یه Platform (چهارچوب) به اسم Nodejs ارائه شد تا کد های جاوا اسکریپت رو خارج از مرورگر اجرا کنید. اگه میخواید بیشتر در مورد Nodejs بخونید میتونید به این لینک که داکیومنت Nodejs هست مراجعه کنید. Nodejs به صورت پیش‌فرض روی سیستم عامل Raspbian نصب نیست و شما باید اون رو نصب کنید روی سیستم عامل خودتون. (توجه کنید که من نسخه ۱۰ رو نصب کردم و هنگام اجرا بهم خطا داد که باید نسخه Nodejs رو به روز رسانی کنم. منم به نسخه ۱۴ آپدیت کردم).

 

اینجا ما از کتابخونه onoff استفاده کردیم که بر خلاف پایتون این کتابخونه به صورت پیشفرض نصب نیست و باید خودمون نصب کنیم. ما این کتابخونه رو با دستور npm install onoff نصب کردیم. همون طور که میشه توی کد ها دید این کتابخونه رو توی برنامه فراخانی کردیم و کد های خودمون رو نوشتیم.

نتیجه افتضاح بود. به خاطر اینکه با این کتابخونه به سرعت ۱۳۴ کیلوهرتز رسیدیم.

خیلی افتضاح بود. رفتیم یه جست و جوی کوچیک دیگه کردیم و به کتابخونه rpio رسیدیم. اون رو با دستور زیر نصب کردیم:

بعدش هم این کد ها رو نوشتیم تو یه فایل با پسوند .js :

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

 

زبان برنامه نویسی C

تا اینجا دوتا زبان اسکریپتی رو با هم مقایسه کردیم. من به زئوس گفتم بیا تا زبان برنامه نویسی C رو هم تست کنیم.

همون طور که میبینید زبان C کد هاش خیلی بیشتره نسبت به Python و Nodejs. اما وقتی اجرا کردیم نتیجه به صورت وحشتناکی خوب بود. دفعه اول که ران کردیم سرعت ۶ مگاهرتز رو دیدم. اما توی دفعه های بعد سرعت ۲ مگاهرتز رو دیدیم.

 

نتیجه گیری

زبان برنامه نویسی Python و JavaScript تقریبا با یه سرعت اجرا میشن. فقط با این تفاوت که زبان برنامه نویسی پایتون و کتابخونه های مرتبط به اون به صورت پیش‌فرض روی سیستم عامل رزبیان نصب هست و نیازی نداره که اون رو نصب کنیم اما Nodejs رو باید نصب کنیم (که چند ساعت از من وقت گرفت تا تونستم اون رو به نسخه ۱۴ به روز رسانی کنم). 

اما زبان برنامه نویسی C. این برنامه به خاطر سطح پایین بودن کد های بیشتری نسبت به پایتون و Nodejs داره اما سرعت خیلی بیشتری نسبت بهشون داره. البته ما تا ۴۰۰ مگاهرتز رو هم توی زبان برنامه نویسی C دیدیم که این بدون واسط سیستم عامل انجام شد.

در این که زبان های برنامه نویسی فقط یه ابزار هستند شکی نیست. اما من به شخصه طرفدار زبان برنامه نویسی python بوده و هستم، همون طور که خودتون هم اطلاع دارین این زبان به شدت پر طرفداره و یکی دو هفته قبل پر طرفدار ترین زبان برنامه نویسی دنیا شده که اون هم به خاطر ساده بودن این زبان و فراوانی کتابخانه های اون هست.

Xander Karimi

درباره xander karimi

گونه ای از برنامه نویس های نادر و کم یاب. در بر گیرنده انواع و اقسام باگ های ناشناخته. مدافع حقوق این روی سیستم من کار می‌کنه. ابداع کننده انواع روش های سامورایی در برنامه نویسی

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

19 دیدگاه در “آموزش رزبری پای با پایتون – قسمت صفرم – زبان جاوا اسکریپت یا پایتون؟

  1. اصغر گفت:

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

  2. راوندی گفت:

    سلام.ممنون از مطلبتون.
    اینکه دفعۀ اول این مقدار و دفعه دوم این مقدار یعنی چی؟

    1. Xander Karimi Xander Karimi گفت:

      منظور از دفعه اول و دفعه دوم یعنی اینکه وقتی اولین بار برنامه رو اجرا کردیم و دومین بار که برنامه رو ران کردیم

  3. مهران گفت:

    این زئوس خودش کجا هست که هر بچه ای از راه میرسه باهاش فیت میده

    1. Zeus . گفت:

      المپ، تشریف بیارید در خدمت هستیم

  4. میلاد گفت:

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

    1. Xander Karimi Xander Karimi گفت:

      ممنونم از اینکه وقت گذاشتید و مطالعه کردید

  5. mKt گفت:

    اون کاری که کردی بهش میگن اندازه گیری فرکانس نه سرعت خاموش روشن شدن چراغ
    در کل مقاله خیلی چرند و غیر علمی بود

    1. Zeus . گفت:

      فکر می‌کنم اول باید مقداری دانش خودتون رو در زمینه ای که میخواید در موردش نظر بدید بیشتر کنید، بعد نظر بدید 😐
      خیلی ساده است اگر به ویکی پدیا مراجعه کنید نوشته
      فِرِکانس (به فرانسوی: Fréquence) برابر «تعداد رخداد یک رویداد تکراری» در «واحد زمان» است.
      یعنی اون چراغه چند بار در ثانیه روشن و خاموش می‌شه ! به همین سادگی
      در ضمن مقاله کاملا علمی است چون مقاله علمی مقاله ای است که نتایجش قابل تکرار باشند، من هم تست کردم نتیجه همین چیزی هست که در مقاله ذکر شده

    2. Xander Karimi Xander Karimi گفت:

      من به زبان شیرین فارسی در اول مقاله به این موضوع ذکر کردم که : میخوایم ببینیم کدوم زبان سرعت بیشتری رو کنترل ورودی و خروجی I/O داره انجام میدیم. یعنی میخوایم ببینیم فرکانس رورودی و خروجی توی کدوم زبان سرعت بیشتری داره. حالا سوال مطرح شده اینه که فرکانس چیه؟ به تعداد رویداد (معنی رویداد رو میتونید از ویکی‌پدیا و یا سایت واژه یاب ببینید) هایی که در یک بازه زمانی مشخص تکرار میشن میگن فرکانس یا بسامد. اینجا رویداد ما چیه؟ ۰ و ۱ شدن خرورجی. ۰ و ۱ شدن مگه همون روشن و خاموش شدن نیست؟
      در جواب اون جمله مقاله چرند و غیر علمی هم باید بگم که نظر شما بر روی چرند بودن مقاله ای که براش وقت گذاشته شده و زحمت کشیده شده محترمه. در غیر علمی; شما یا نمیدونید مقاله علمی و غیر علمی چیه یا کلا در مورد مقاله دارید اشتباه میزنید.(با نهایت احترام)

  6. محمد یوسفی گفت:

    مطلب جالبی بود دست شما درد نکنه. در مورد کدی که به زبان C نوشتین کتابخانه wiringPi از دسترسی به رجیسترهای پردازنده استفاده می کنه. بد نیست سرعت رو با استفاده از sysfs هم توی C تست کنید چون روش روش هم خیلی کاربردیه. متشکرم.
    https://elinux.org/RPi_GPIO_Code_Samples#:~:text=500)%20%3B%0A%20%20%7D%0A%20%20return%200%20%3B%0A%7D-,sysfs,-The%20following%20example

    1. Xander Karimi Xander Karimi گفت:

      ممنونم که وقت گذاشتید و مطالعه کردید. این نظر لطف شماست. بله حتما تست میکنم ممنون از پیشنهادتون

  7. بهرام گفت:

    چرند نگو باو جاواسکریپتو xxxx میدونه سریع تر پایتونه
    بلد نیستی باش کار کنی الکی نگو افتضاح!!!

    1. Zeus . گفت:

      داشتن ادب اولین چیزی هست که لازمه یک بحث سالمه
      من دقیقا آزمایش رو تکرار کردم نتایج همین چیزی است که در مقاله ذکر شده
      اگر به نظر شما فرق میکنه، خوشحال میشم نتایج آزمایش شما رو هم بررسی کنم

      1. داود گفت:

        کاری به ادب این آقا ندارم اما خب شما هم کاش به جای این حرفا یکم مفاهیم سیستم عامل رو میخوندید بعد شروع به نوشتن مقاله کنید
        اونجا که سرعت دوبار متفاوت شد حداقل یه سرنخی میتونست بهتون بده که یکم علمی به موضوع نگاه کنید تا شبیه یک تکنسین

        1. Zeus . گفت:

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

    2. Xander Karimi Xander Karimi گفت:

      در اینکه زبان های برنامه نویسی فقط یک ابزار هستند و ما نباید روی اون ها تعصبی بشیم هیچ شکی نیست. اما به نظرم شما برید و از اول این نوشته رو بخونید. “onoff” داشت با سرعت ۱۳۴ کیلو هرتز دستور برای ۰ و ۱ شدن خروجی میداد. من به نظرم اگه دستی یه سیم رو قطع و وصل کنیم سرعتش به ۱۵۰ کیلو هرتز میرسه. اگه این نتیجه افتضاح نیست پس چیه؟
      اما “rpio” با سرعت ۱ مگاهرتز دستور برای ۰ و ۱ شدن خروجی داد. پس مشکل از onoff بوده و نه از زبان جاوا اسکریپت. حالا در اینکه شما میگید بلد نیستی باش کار کنی باید بگم دقیقا باید باهاش چیکار کنم؟
      اگه احساس میکنید من بلد نیستم پس شما رو به چالش برنامه نویسی دعوت میکنم. چه با پایتون و چه با جاوا اسکریپت.

      1. بهرام گفت:

        آخه جوجه برنامه نویس تو خودت اول برنامه نویسی رو کامل یاد بگیر، 4 خط کد آماده نوشتی یه LED خاموش روشن کردی دعوت به مبارزه هم میکنی!!!

        1. Xander Karimi Xander Karimi گفت:

          هنر بیار و زبان آوری مکن سعدی
          چه حاجت است بگوید شکر که شیرینم