mBedLab Learning – Telegram
mBedLab Learning
779 subscribers
58 photos
5 videos
4 files
39 links
بحث و گفتگو در:
.
@mBedLab_Discussion
Download Telegram
سلام خدمت همراهان گرامی

به درخواست شما عزیزان، به‌زودی نسخه جدید کتابخانه آلتیوم مجموعه رو با قطعات جدید و بهبود یافته منتشر می‌کنیم!

اگر قطعه خاصی مدنظرتونه که تو کتابخانه باشه یا پیشنهادی برای بهبودش دارید، حتماً با ما در میون بذارید.

نظرات و پیشنهادات شما، راهنمای ما برای ارائه یه کتابخانه بی‌نقص و کاربردیه.

شما می‌تونید از طریق آی دی @mBedLab_Admin با ما در ارتباط باشید.

منتظر نظراتتون هستیم!

#الکترونیک #کتابخانه #قطعات_کاربردی #آلتیوم_دیزاینر

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
6
آیا با #استاندارد MISRA C آشنا هستید؟

استاندارد MISRA C مجموعه‌ای از دستورالعمل‌ها برای برنامه‌نویسی به زبان C، به‌ویژه در سیستم‌های حیاتی و حساس است. این استاندارد به ما کمک می‌کند کدی بنویسیم که:

ایمن‌تر باشد (جلوگیری از باگ‌ها و خطاهای خطرناک)
قابل‌اطمینان‌تر باشد (کاهش احتمال خرابی و عملکرد نامناسب)
قابل‌حمل‌تر باشد (اجرا بر روی سیستم‌های مختلف)
خواناتر و قابل‌نگهداری‌تر باشد (درک و تغییر آسان‌تر کد)

چرا MISRA C مهم است؟
در سیستم‌هایی که ایمنی و پایداری بسیار مهم است (مانند خودروها، تجهیزات پزشکی، سیستم‌های هوافضا و...) استفاده از این استاندارد تقریباً ضروری است. MISRA C با ارائه قوانین و راهنماها، از بروز خطاهای رایج برنامه‌نویسی جلوگیری می‌کند و کیفیت نرم‌افزار را بهبود می‌بخشد.

کجا بیشتر بدانیم؟
اگر دوست دارید بیشتر درباره MISRA C بدانید، می‌توانید عضو ما شوید.

#برنامه_نویسی #استاندارد_MISRA

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍10🤩3
#قانون 1.1 MISRA C - یک محیط استاندارد C

○ گروه: #محیط_استاندارد_C
○ دسته‌بندی: #الزامی
○ اعمال برای: C90, C99, C11

امروز می‌خوایم در مورد یکی از مهم‌ترین قوانین MISRA C صحبت کنیم: قانون 1.1. این قانون به طور خلاصه میگه که کدی که می‌نویسیم باید کاملاً با قواعد و محدودیت‌های تعریف شده در استاندارد C (نسخه انتخابی) سازگار باشه.

چرا این قانون مهمه؟

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

قانون 1.1 چی میگه؟
این قانون سه نکته اصلی رو شامل میشه:

1. عدم تخطی از قواعد نحوی و معنایی C
کد نباید هیچگونه تخطی از قواعد نگارشی (syntax) و محدودیت‌های (constraints) تعریف شده در استاندارد C داشته باشه.

2. عدم تجاوز از محدودیت‌های پیاده‌سازی
کامپایلرها محدودیت‌هایی برای ترجمه کد دارن (مثل طول نام متغیرها یا عمق توابع). کد نباید از این محدودیت‌ها تجاوز کنه.

3. مجاز بودن افزونه‌های زبان
استفاده از افزونه‌های خاص کامپایلرها (language extensions) مجازه، به شرطی که مستند شده باشن و در طراحی پروژه توجیه شده باشن. برای مثال، کلماتی مثل inline یا مشخص‌کننده‌های مکان حافظه مثل zpage، near و far__ که در سیستم‌های embedded رایج هستند، از این دسته‌اند.

نکات مهم:
○ کامپایلرها موظفند برای تخطی از قواعد و محدودیت‌ها، پیام خطا یا هشدار (warning) تولید کنن. اما این به معنی توقف حتمی کامپایل نیست.
○ تجاوز از محدودیت‌های پیاده‌سازی ممکنه باعث تولید خروجی اجرایی بشه، اما اجرای صحیح اون تضمین‌شده نیست.

#برنامه_نویسی #استاندارد_MISRA

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍11🤩2🔥1👏1
#قانون 1.2 MISRA C - از افزونه‌های زبان C استفاده نکنیم!

○ گروه: #محیط_استاندارد_C
○ دسته‌بندی: #توصیه_شده
○ اعمال برای: C90, C99, C11

یکی از نکات مهم در برنامه‌نویسی به زبان C، پرهیز از استفاده از افزونه‌های (Extensions) خاص کامپایلرهاست. چرا؟

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

راه حل:
○ تا حد امکان از افزونه‌ها استفاده نکنید.
○ اگر مجبور به استفاده از افزونه‌ای هستید، دلیل آن را در مستندات پروژه خود ذکر کنید.
○ نحوه اطمینان از استفاده صحیح افزونه (مثلاً بررسی کامپایلر و پیام‌های خطا) را نیز مستند کنید.


نکته مهم: در سیستم‌های #Embedded (نهفته)، استفاده از افزونه‌ها گاهی ضروری است. اما دقت کنید که افزونه نباید رفتار برنامه‌های استاندارد C را تغییر دهد. برای مثال، اگر کامپایلری، ارزیابی کامل عملگرهای منطقی (مثل && و ||) را به عنوان یک افزونه پیاده‌سازی کند (در حالی که استاندارد C می‌گوید ارزیابی به محض مشخص شدن نتیجه متوقف شود)، این افزونه با استاندارد سازگار نیست، زیرا ممکن است باعث بروز اثر جانبی (Side Effect) های ناخواسته شود.

#برنامه_نویسی#استاندارد_MISRA
#Embedded

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍8👌1
Media is too big
VIEW IN TELEGRAM
#یادگیری_ماشین چیست؟

یادگیری ماشین (ML) به برخی از مهم‌ترین فناوری‌هایی که ما استفاده می‌کنیم، از برنامه‌های ترجمه گرفته تا وسایل نقلیه خودران، قدرت می‌دهد. آموزش‌های ما در این کانال مفاهیم اصلی ML را توضیح و #آموزش می دهد.

‏ML راه جدیدی برای حل مشکلات، پاسخ به سوالات پیچیده و ایجاد محتوای جدید ارائه می دهد. ML می‌تواند آب و هوا را پیش‌بینی کند، زمان سفر را تخمین بزند، آهنگ‌ها را توصیه کند، جملات را به‌طور خودکار تکمیل کند، مقالات را خلاصه کند و تصاویری که قبلاً دیده نشده‌اند تولید کند.

در اصطلاح اولیه، ML فرآیند آموزش یک نرم‌افزار است که مدل نامیده می‌شود تا پیش‌بینی‌های مفید یا تولید محتوا از داده‌ها را انجام دهد.

به عنوان مثال، فرض کنید می‌خواهیم اپلیکیشنی برای پیش‌بینی بارندگی ایجاد کنیم، در اینصورت ما می توانیم از یک رویکرد سنتی یا یک رویکرد ML استفاده کنیم:

1. با استفاده از یک رویکرد سنتی، ما یک نمایش مبتنی بر فیزیک از جو و سطح زمین ایجاد می‌کنیم و مقادیر زیادی معادلات دینامیک سیالات را محاسبه می‌کنیم که کار بسیار دشواری است.

2. با استفاده از رویکرد ML، ما به مدل ML مقادیر زیادی داده آب و هوا می دهیم تا زمانی که مدل ML در نهایت رابطه ریاضی بین الگوهای آب و هوایی را که مقادیر متفاوتی از باران تولید می کنند را یاد بگیرد . سپس داده های آب و هوای فعلی را به مدل می دهیم و مقدار باران را پیش بینی می کند.

انواع سیستم های ML
سیستم های ML بر اساس نحوه یادگیری پیش بینی یا تولید محتوا در یک یا چند دسته از دسته های زیر قرار می گیرند:
یادگیری تحت نظارت
○ یادگیری بدون نظارت
○ یادگیری تقویتی
○ هوش مصنوعی مولد

#برنامه_نویسی #یادگیری_ماشین

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
🤩2
#قانون 1.3 MISRA C - از رفتارهای تعریف‌نشده و نامشخص در C دوری کنیم!

○ گروه: #محیط_استاندارد_C
○ دسته‌بندی: #الزامی
○ اعمال برای: C90, C99, C11

یکی از مهم‌ترین قوانین در برنامه‌نویسی C، به‌خصوص در سیستم‌های حساس، پرهیز از رفتارهای «تعریف‌نشده» (Undefined Behavior) و «نامشخص» (Unspecified Behavior) است. استاندارد MISRA C هم بر این موضوع تأکید ویژه‌ای دارد.

رفتار تعریف‌نشده یعنی چی؟
رفتار تعریف‌نشده به وضعیتی در کد گفته می‌شه که استاندارد زبان C هیچ تضمینی برای نحوه عملکرد برنامه در اون حالت نمی‌ده. این یعنی کامپایلرها می‌تونن هر کاری انجام بدن، از کرش کردن برنامه گرفته تا تولید نتایج عجیب و غیرقابل پیش‌بینی. این اتفاقات ممکنه باعث بروز مشکلات جدی در سیستم‌های حیاتی بشه.


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


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

MISRA C چی میگه؟
قانون 1.3 استاندارد MISRA C به طور خاص از وقوع هرگونه رفتار تعریف‌نشده و رفتارهای نامشخص «بحرانی» جلوگیری می‌کنه. این استاندارد یه لیست از این رفتارها رو در ضمیمه H خودش آورده و مشخص کرده که کدوم قوانین MISRA C از بروز هر کدوم جلوگیری می‌کنن.

یه مثال ساده:
دسترسی به عنصری خارج از محدوده یک آرایه، یه نمونه از رفتار تعریف‌نشده است.

#برنامه_نویسی#استاندارد_MISRA
#Embedded

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍4
Media is too big
VIEW IN TELEGRAM
#هوش_مصنوعی #یادگیری_ماشین

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

این عمل مانند دانش آموزی است که با مطالعه امتحانات قدیمی که شامل سؤال و پاسخ است، مطالب جدیدی را یاد می گیرد. هنگامی که دانش آموز به اندازه کافی در امتحانات قدیمی آموزش دید، دانش آموز به خوبی برای شرکت در امتحان جدید آماده می شود. این سیستم‌های ML تحت نظارت هستند به این معنا که یک انسان داده‌های سیستم ML را با نتایج صحیح شناخته شده می‌دهد.

دو مورد از رایج ترین موارد استفاده برای یادگیری تحت نظارت، رگرسیون و طبقه بندی هستند.

1. رگرسیون
یک مدل رگرسیون یک مقدار عددی را پیش بینی می کند. به عنوان مثال، یک مدل آب و هوا که میزان بارندگی را بر حسب اینچ یا میلی متر پیش بینی می کند، یک مدل رگرسیونی است.

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

مدل های طبقه بندی به دو گروه تقسیم می شوند:
○ طبقه بندی باینری
مدل‌های طبقه‌بندی باینری مقداری را از کلاسی که فقط شامل دو مقدار است، خروجی می‌دهد، برای مثال، مدلی که خروجی rain یا no rain را دارد.


○ طبقه بندی چند طبقه
مدل‌های طبقه‌بندی چند کلاسه مقداری را از کلاسی که بیش از دو مقدار دارد، خروجی می‌دهد، برای مثال، مدلی که می‌تواند rain ، hail ، snow یا sleet را خروجی دهد.


#برنامه_نویسی #یادگیری_ماشین #هوش_مصنوعی

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
2
برنامه زمانبندی و دسته بندی مطالب:
#برنامه_نویسی
#الکترونیک
#مکاترونیک
#رباتیک
#یادگیری_ماشین (یکشنبه ها و سه شنبه ها)
#استاندارد_MISRA (یکشنبه ها و سه شنبه ها)

چند نکته مهم:
- مطالب کانال با #هشتگ مناسب منتشر خواهد شد
- استفاده از محتوای این کانال کاملا رایگان بوده و انتشار آن با ذکر منبع بلامانع است

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
8👍2
🔈 معرفی و دانلود نرم‌افزار STM32CubeIDE

- نسخه: 1.17.0
- سیستم عامل: ویندوز

همانطور که میدانید نرم‌افزار قدرتمند STM32CubeIDE، یه محیط توسعه یکپارچه و چندسکویی (Multi-OS) برای توسعه برنامه‌های میکروکنترلرها و میکروپروسسورهای STM32 هست که به صورت رایگان ارائه شده. این نرم‌افزار، بخشی از اکوسیستم نرم‌افزاری STM32Cube محسوب میشود.

امکانات کلیدی STM32CubeIDE:

⚙️ پیکربندی آسان پین‌ها، کلاک، محیط‌های جانبی و میان‌افزارها
تولید خودکار کد اولیه پروژه و صرفه‌جویی در زمان توسعه
💻 محیط توسعه C/C++ پیشرفته بر پایه Eclipse/CDT و GCC
🐞 امکانات دیباگ پیشرفته شامل نمایش رجیسترها، حافظه، و دیباگ RTOS
📊آنالیزورهای ساخت و پشته برای بررسی وضعیت پروژه و نیازمندی‌های حافظه
🔄 امکان ایمپورت پروژه‌ها از Atollic TrueSTUDIO و AC6 System Workbench
پشتیبانی از پلاگین‌های Eclipse
🐧 پشتیبانی از سیستم‌عامل‌های ویندوز، لینوکس و macOS (نسخه‌های ۶۴ بیتی)
✔️ ادغام با STM32CubeMX برای پیکربندی و ایجاد پروژه
✔️ پشتیبانی از دیباگرهای ST-LINK و J-Link

با استفاده از STM32CubeIDE، شما می‌توانید به راحتی پروژه‌های خودتان را برای میکروکنترلرهای STM32 ایجاد، کدنویسی، کامپایل و دیباگ کنید. این نرم‌افزار با ارائه امکانات پیشرفته، به شما کمک می‌کند تا پروژه‌های خودتان را سریع‌تر و کارآمدتر توسعه دهید.

برای دانلود مستقیم STM32CubeIDE به لینک زیر مراجعه نمایید:
https://news.1rj.ru/str/mBedLabLearning/48

‌‏#STM32 #STM32CubeIDE #میکروکنترلر #برنامه_نویسی #الکترونیک #EmbeddedSystems #نرم_افزار

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🤩1
en.st-stm32cubeide_1.17.0_23558_20241125_2245_x86_64.exe.zip
1 GB
فایل نرم افزار STM32CubeIDE نسخه 1.17.0

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
2🤩2👍1
#قانون 1.4 MISRA C - از ویژگی‌های جدید زبان C11 با احتیاط استفاده کنید!

○ گروه: #محیط_استاندارد_C
○ دسته‌بندی: #الزامی
○ اعمال برای: C11

در توسعه نرم‌افزارهای حساس به ایمنی و امنیت، رعایت استانداردها و پرهیز از رفتارهای غیرقابل پیش‌بینی بسیار حیاتی است. Rule 1.4 در استاندارد MISRA C به همین موضوع می‌پردازد و استفاده از ویژگی‌های "نوظهور" زبان را محدود می‌کند.

چرا این قانون مهم است؟
استفاده از این ویژگی‌ها می‌تواند منجر به رفتارهای undefined (تعریف‌نشده)، unspecified (نامشخص) یا implementation-defined (وابسته به پیاده‌سازی) شود. این یعنی کد شما ممکن است در کامپایلرها یا سیستم‌عامل‌های مختلف، رفتارهای متفاوتی داشته باشد و این امر می‌تواند خطرات جدی به همراه داشته باشد. حتی اگر رفتاری کاملاً تعریف‌شده باشد، ممکن است با انتظارات توسعه‌دهنده همخوانی نداشته باشد و منجر به باگ شود.

به طور خاص، این قانون استفاده از ویژگی‌های Annex K (رابط‌های بررسی مرزها) را به جز تعریف __STDC_WANT_LIB_EXT1__ به 0، ممنوع می‌کند.

راه حل چیست؟
اگر مجبور به استفاده از یک ویژگی نوظهور هستید، حتماً باید یک "انحراف" (deviation) ثبت کنید و رفتارهای نامطلوب احتمالی را شناسایی و اقدامات لازم برای جلوگیری از تأثیر آنها بر ایمنی و امنیت سیستم را مشخص کنید.

به عبارت دیگر، قبل از استفاده از هر ویژگی جدید، به دقت مستندات آن را بررسی کنید و از پیامدهای احتمالی آن آگاه باشید.


قوانین مرتبط:
قانون 1.3

#برنامه_نویسی#استاندارد_MISRA
#Embedded

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
🔥1🤩1
#هوش_مصنوعی #یادگیری_ماشین

یادگیری بدون نظارت

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

یک مدل یادگیری بدون نظارت متداول از تکنیکی به نام خوشه بندی استفاده می کند. مدل نقاط داده ای را پیدا می کند که گروه بندی های طبیعی را مشخص می کند (تصویر پیوست).

ادامه در پست بعد...

#برنامه_نویسی #یادگیری_ماشین #هوش_مصنوعی

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍2
#هوش_مصنوعی #یادگیری_ماشین

ادامه یادگیری بدون نظارت...
خوشه بندی با طبقه بندی متفاوت است زیرا دسته ها توسط شما تعریف نشده اند. به عنوان مثال، یک مدل بدون نظارت ممکن است مجموعه داده های آب و هوا را بر اساس دما دسته بندی کند و بخش بندی هایی را که فصل ها را تعریف می کنند، آشکار کند. در نهایت ممکن است سعی نیاز داشته باشید آن خوشه ها را بر اساس درک خود از مجموعه داده نام گذاری کنید (تصویر پیوست).

#برنامه_نویسی #یادگیری_ماشین #هوش_مصنوعی

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍1
#قانون 1.5 MISRA C - دوری از ویژگی‌های منسوخ شده در کدنویسی C

○ گروه: #محیط_استاندارد_C
○ دسته‌بندی: #الزامی
○ اعمال برای: C99, C11

تصور کنید در حال نوشتن یک برنامه به زبان C هستید. آیا از تمام ویژگی‌های زبان و به‌روزرسانی‌های استاندارد آن آگاهید؟ استفاده از ویژگی‌های منسوخ شده (Obsolescent) می‌تواند منجر به مشکلات جدی در کد شما شود. به همین دلیل استاندارد MISRA قانونی را تحت عنوان قانون ۱.۵ وضع کرده است.

قانون MISRA 1.5 چیست؟
این قانون به ما می‌گوید که نباید از ویژگی‌های منسوخ شده زبان C استفاده کنیم. این ویژگی‌ها در بخش "جهت‌گیری‌های آینده زبان" و "جهت‌گیری‌های آینده کتابخانه" در استاندارد C (مانند C99 و C11) و همچنین در ضمیمه F آن ذکر شده‌اند.

چرا باید از این قانون پیروی کنیم؟
استاندارد C ویژگی‌ها را زمانی منسوخ اعلام می‌کند که:
○ جایگزین‌های ایمن‌تر یا بهتری برای آن‌ها وجود داشته باشد.
○ رفتار نامطلوبی از خود نشان دهند.

ویژگی‌هایی که در یک نسخه از استاندارد منسوخ اعلام می‌شوند، ممکن است در نسخه‌های بعدی به طور کامل حذف شوند. این موضوع می‌تواند باعث بروز خطا در کدهایی شود که از این ویژگی‌ها استفاده می‌کنند.

مزایای رعایت قانون MISRA 1.5:
○ کد پایدارتر و سازگارتر با نسخه‌های مختلف استاندارد C
○ کاهش احتمال بروز خطا و مشکلات ناشی از ویژگی‌های منسوخ شده
○ افزایش خوانایی و نگهداری کد

به طور خلاصه: با پیروی از قانون MISRA 1.5، کد خود را در برابر مشکلات احتمالی ناشی از استفاده از ویژگی‌های منسوخ شده ایمن کنید و به نوشتن کد استاندارد و قابل اعتماد پایبند باشید.

قوانین مرتبط:
قانون 1.1

#برنامه_نویسی#استاندارد_MISRA
#Embedded

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍3
#هوش_مصنوعی #یادگیری_ماشین

یادگیری تقویتی
مدل های یادگیری تقویتی با دریافت پاداش یا جریمه بر اساس اقدامات انجام شده در یک محیط، پیش بینی می کنند.

یک سیستم یادگیری تقویتی سیاستی را ایجاد می کند که بهترین استراتژی را برای دریافت بیشترین پاداش تعریف می کند.

یادگیری تقویتی برای آموزش روبات‌ها برای انجام وظایفی مانند راه رفتن در اتاق و برنامه‌های نرم‌افزاری مانند AlphaGo برای انجام بازی Go استفاده می‌شود.

هوش مصنوعی مولد
هوش مصنوعی مولد کلاسی از مدل‌ها است که محتوا را از ورودی کاربر ایجاد می‌کند. برای مثال، هوش مصنوعی مولد می‌تواند تصاویر، ترکیب‌های موسیقی و جوک‌های منحصربه‌فردی ایجاد کند. می تواند مقالات را خلاصه کند، نحوه انجام یک کار را توضیح دهد، یا یک عکس را ویرایش کند.

هوش مصنوعی مولد می‌تواند ورودی‌های مختلفی را دریافت کند و خروجی‌های مختلفی مانند متن، تصویر، صدا و ویدئو ایجاد کند. همچنین می تواند ترکیبی از اینها را بگیرد و ایجاد کند. به عنوان مثال، یک مدل می تواند یک تصویر را به عنوان ورودی بگیرد و یک تصویر و متن را به عنوان خروجی ایجاد کند، یا یک تصویر و متن را به عنوان ورودی بگیرد و یک ویدیو را به عنوان خروجی ایجاد کند.

ما می‌توانیم مدل‌های مولد را با ورودی‌ها و خروجی‌هایشان، که معمولاً به صورت «نوع ورودی» تا «نوع خروجی» نوشته می‌شوند، مورد بحث قرار دهیم. به عنوان مثال، در زیر فهرستی جزئی از برخی ورودی ها و خروجی ها برای مدل های تولیدی آمده است:
○ متن به متن
○ متن به تصویر
○ متن به ویدئو
○ متن به کد
○ تبدیل متن به گفتار
○ تصویر و متن به تصویر


هوش مصنوعی مولد چگونه کار می کند؟
در سطح بالا، مدل‌های مولد الگوهایی را در داده‌ها با هدف تولید داده‌های جدید اما مشابه یاد می‌گیرند. مدل های مولد مانند زیر هستند:
○ کمدین هایی که با مشاهده رفتارها و سبک حرف زدن افراد یاد می گیرند که از دیگران تقلید کنند
○ هنرمندانی که با مطالعه تعداد زیادی نقاشی در آن سبک، نقاشی را در سبک خاصی یاد می گیرند


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

#برنامه_نویسی #یادگیری_ماشین #هوش_مصنوعی

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍6
#قانون 2.1 MISRA C - عدم وجود کد غیرقابل دسترس

○ گروه: #کدهای_استفاده_نشده
○ دسته‌بندی: #الزامی
○ اعمال برای: C90, C99, C11

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

دلایل اهمیت این قانون:
○ بهبود خوانایی و نگهداری کد
حذف کد غیرقابل دسترس، کد را تمیزتر و درک آن را آسان‌تر می‌کند.

○ بهینه‌سازی عملکرد
حذف کد غیرضروری باعث کاهش حجم کد و بهبود عملکرد برنامه می‌شود.

○ جلوگیری از خطاهای احتمالی
وجود کد غیرقابل دسترس می‌تواند نشانه‌ای از خطاهای منطقی باشد که ممکن است در آینده مشکل‌ساز شوند.


موارد خاص:
گاهی اوقات برای مدیریت موارد استثنایی، کدی درج می‌شود که به ظاهر غیرقابل دسترس است. به عنوان مثال، در دستور switch که تمام مقادیر ممکن عبارت کنترلی توسط case ها پوشش داده شده‌اند، طبق قانون 16.4 باید یک default وجود داشته باشد. هدف از default، گرفتن مقادیری است که به طور معمول نباید رخ دهند، اما ممکن است در نتیجه موارد زیر ایجاد شده باشند:
○ رفتار تعریف نشده در برنامه
○ خرابی سخت‌افزار پردازنده

اگر کامپایلر بتواند ثابت کند که یک default غیرقابل دسترس است، ممکن است آن را حذف کند. برای جلوگیری از این اتفاق و حفظ عملکرد دفاعی کد، می‌توان از دسترسی volatile استفاده کرد. با استفاده از volatile، کامپایلر مجبور می‌شود فرض کند که عبارت کنترلی می‌تواند هر مقداری را بگیرد.

مثال:
enum light { red, amber, red_amber, green };
enum light next_light ( enum light c )
{
enum light res;
switch ( c )
{
case red:
res = red_amber;
break;
case red_amber:
res = green;
break;
case green:
res = amber;
break;
case amber:
res = red;
break;
default:
{
error_handler ( );
break;
}
}
return res;
res = c; // غیر منطبق - این دستور قطعا غیرقابل دسترس است
}


در مثال بالا، دستور ;res = c بعد از ;return res قرار گرفته و هرگز اجرا نخواهد شد، بنابراین مصداق کد غیرقابل دسترس است و باید حذف شود.

نکته: کدی که توسط دستورات پیش‌پردازنده به صورت شرطی حذف شده است، مشمول این قانون نمی‌شود.


قوانین مرتبط:
○ قانون 14.3
○ قانون 16.4


#برنامه_نویسی#استاندارد_MISRA
#Embedded

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍1👌1
#هوش_مصنوعی #یادگیری_ماشین

یادگیری تحت نظارت (بخش اول)
وظایف یادگیری تحت نظارت به خوبی تعریف شده است و می تواند در بسیاری از سناریوها اعمال شود - مانند شناسایی هرزنامه یا پیش بینی بارش.

مفاهیم یادگیری با نظارت بنیادی
یادگیری ماشینی نظارت شده بر اساس مفاهیم اصلی زیر است:

○ داده ها
○ مدل
○ آموزش
○ ارزیابی کردن
○ استنتاج

داده ها
داده ها نیروی محرکه ML هستند. داده ها به شکل کلمات و اعداد ذخیره شده در جداول یا مقادیر پیکسل ها و شکل موج های ثبت شده در تصاویر و فایل های صوتی می آیند. ما داده های مرتبط را در مجموعه داده ها ذخیره می کنیم. به عنوان مثال، ممکن است مجموعه داده ای از موارد زیر داشته باشیم:

○ تصاویری از گربه ها
○ قیمت مسکن
○ اطلاعات آب و هوا

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

به نمونه هایی که دارای هر دو ویژگی و برچسب هستند ، نمونه های برچسب دار گفته می شود.

ادامه در پست بعد...

#برنامه_نویسی #یادگیری_ماشین #هوش_مصنوعی

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👌2
ادامه پست قبل...

دو نمونه برچسب گذاری شده (تصویر پیوست)

ادامه در پست بعد...

#برنامه_نویسی #یادگیری_ماشین #هوش_مصنوعی

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👌2
ادامه پست قبل...

در مقابل، نمونه‌های بدون برچسب دارای ویژگی‌هایی هستند، اما فاقد برچسب هستند. پس از ایجاد یک مدل، مدل برچسب را از روی ویژگی ها پیش بینی می کند.

دو نمونه بدون برچسب (تصویر پیوست)

#برنامه_نویسی #یادگیری_ماشین #هوش_مصنوعی

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👌2
#قانون 2.2 MISRA C - اجتناب از کدهای مرده

○ گروه: #کدهای_استفاده_نشده
○ دسته‌بندی: #الزامی
○ اعمال برای: C90, C99, C11

قاعده 2.2 استاندارد MISRA بیان می‌کند که پروژه نباید حاوی کد مرده باشد. کد مرده به هر عملیاتی گفته می‌شود که اجرا می‌شود اما حذف آن تأثیری بر رفتار برنامه ندارد. وجود کد مرده می‌تواند نشان دهنده خطا در منطق برنامه باشد و باعث سردرگمی شود.

این قاعده در استانداردهای ایمنی مانند IEC 61508، ISO 26262 و DO-178C نیز مورد توجه قرار گرفته است.

نمونه‌های کد مرده:
○ استفاده از متغیری که مقدار آن بعداً خوانده نمی‌شود.
○ استفاده از عملگری که نتیجه آن استفاده نمی‌شود.
○ فراخوانی تابعی که هیچ تأثیری بر رفتار برنامه ندارد.

استثنائات:
○ تبدیل صریح به نوع void
این عمل نشان می‌دهد که مقدار مورد نظر عمداً استفاده نمی‌شود و خود به تنهایی کد مرده محسوب نمی‌شود.

○ عملگر تبدیل صریح (cast operator) که نتیجه آن استفاده می‌شود، کد مرده نیست.

اهمیت رعایت این قاعده
○ بهبود کیفیت کد
حذف کد مرده باعث کاهش حجم کد، بهبود خوانایی و نگهداری آن می‌شود.

○ کاهش خطاها
وجود کد مرده می‌تواند نشانه‌ای از خطاهای منطقی در برنامه باشد. حذف این کدها به بهبود پایداری و قابلیت اطمینان نرم‌افزار کمک می‌کند.

○ افزایش کارایی
حذف کد مرده می‌تواند به بهبود عملکرد برنامه کمک کند.


مثال:

extern volatile uint16_t v;
extern char *p; 

void f ( void )
{
uint16_t  x;
( void ) v;
( int32_t ) v;
v >> 3;
x = 3;
*p++;
( *p )++;
}


خطاهای موجود در مثال:
‏○ (int32_t) v: تبدیل نوع (cast) به int32_t انجام می‌شود اما نتیجه استفاده نمی‌شود.
‏○ v >> 3: عملگر شیفت راست (<<) اجرا می‌شود اما نتیجه استفاده نمی‌شود.
‏○ x = 3: مقداردهی به متغیر x انجام می‌شود اما مقدار آن در ادامه استفاده نمی‌شود.
‏○ p++*: عملگر اشاره‌گری (*) اجرا می‌شود اما نتیجه آن استفاده نمی‌شود.

نکات مهم
○ کد غیرقابل دسترس (Unreachable Code) کد مرده نیست، زیرا هرگز اجرا نمی‌شود.
○ عملیات مقداردهی اولیه (Initialization) متفاوت از عملیات انتساب (Assignment) است و کد مرده محسوب نمی‌شود.
○ برخی از عملیات‌های زبان (مانند دستورات اسمبلی) ممکن است همیشه تأثیر بر رفتار برنامه داشته باشند و کد مرده محسوب نشوند.

قوانین مرتبط:
○ قانون 17.7

#برنامه_نویسی#استاندارد_MISRA
#Embedded

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
2👍1🤩1