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

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

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

سلام به همه.

توی نوشته قبل دیدین که چطور میشه توی رزبری پای یه 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 بوده و هستم، همون طور که خودتون هم اطلاع دارین این زبان به شدت پر طرفداره و یکی دو هفته قبل پر طرفدار ترین زبان برنامه نویسی دنیا شده که اون هم به خاطر ساده بودن این زبان و فراوانی کتابخانه های اون هست.

1 نفر

پــــســنــدیـده انـد

توجه

xander karimi
xander karimi

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

دیدگاه ها

22 دیدگاه

  • بهمن
    ۱۰ دی ۱۴۰۰

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

    • Xander Karimi
      xander karimi
      ۱۳ دی ۱۴۰۰

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

  • عرفان
    ۹ دی ۱۴۰۰

    من توی کد مربوط به پکیج onoff شما استفاده از clearInterval رو میبینم. البته این کد ناقص هست اما به نظر میرسه شما واسه این کد از تایمر ها استفاده کردید که تایمر ها خیلی کند تر از حلقه های ساده while(true) هستن که واسه کد های بعدی استفاده کردید. و طبیعی هست که این مثال شما خیلی کند تر از بقیه باشه.

    همچنین برای تغییر ورژن node.js من پیشنهاد میکنم از ابزار nvm استفاده کنید. با یه دستور میتونید ورژن های مختلف رو نصب کنید و بینشون سوییچ کنید.

  • اصغر
    ۶ آذر ۱۴۰۰

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

  • راوندی
    ۲ آذر ۱۴۰۰

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

    • Xander Karimi
      xander karimi
      ۲ آذر ۱۴۰۰

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

  • مهران
    ۱۷ آبان ۱۴۰۰

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

    • Zeus ‌
      Zeus
      ۱۷ آبان ۱۴۰۰

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

  • میلاد
    ۱۷ آبان ۱۴۰۰

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

    • Xander Karimi
      xander karimi
      ۱۷ آبان ۱۴۰۰

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

  • mKt
    ۱۷ آبان ۱۴۰۰

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

    • Zeus ‌
      Zeus
      ۱۷ آبان ۱۴۰۰

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

    • Xander Karimi
      xander karimi
      ۱۷ آبان ۱۴۰۰

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

  • محمد یوسفی
    ۱۷ آبان ۱۴۰۰

    مطلب جالبی بود دست شما درد نکنه. در مورد کدی که به زبان 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

    • Xander Karimi
      xander karimi
      ۱۷ آبان ۱۴۰۰

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

  • بهرام
    ۱۷ آبان ۱۴۰۰

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

    • Zeus ‌
      Zeus
      ۱۷ آبان ۱۴۰۰

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

      • داود
        ۲۳ آبان ۱۴۰۰

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

        • Zeus ‌
          Zeus
          ۲ آذر ۱۴۰۰

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

    • Xander Karimi
      xander karimi
      ۱۷ آبان ۱۴۰۰

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

      • بهرام
        ۲۴ آبان ۱۴۰۰

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

        • Xander Karimi
          xander karimi
          ۲ آذر ۱۴۰۰

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

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 3 سال پیش
راه اندازی LCD گرافیکی Nokia 1661

راه اندازی LCD گرافیکی Nokia 1661

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش
ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش
همه چیز درباره ریموت کنترل‌های هاپینگ

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش
مسابقه سوم: استخراج داده از رشته ها در زبان C

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش
مسابقه ششم: بزن میکروکنترلر را بسوزون!

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 1 سال پیش
آموزش قدم به قدم راه اندازی NRF24L01

آموزش قدم به قدم راه اندازی NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش
ساخت ماینر با FPGA و ARM

ساخت ماینر با FPGA و ARM

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

Zeus ‌ Zeus ‌
  • 3 سال پیش
کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش
مسابقه چهارم: کدام حلقه سریع‌تر است؟

مسابقه چهارم: کدام حلقه سریع‌تر است؟

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

Zeus ‌ Zeus ‌
  • 2 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک