5 Matching Annotations
  1. Oct 2025
    1. RISC-V

      RISC-V چیه؟

      RISC-V (ریسک فایو) یک معماری مجموعه دستورالعمل (Instruction Set Architecture – ISA) برای پردازنده‌هاست. یعنی همون چیزی که مشخص می‌کنه یک CPU چه دستوراتی رو می‌تونه اجرا کنه (مثل جمع، ضرب، پرش، load/store و …).


      نکات مهم:

      1. RISC = Reduced Instruction Set Computer

      2. یعنی مجموعه دستورالعمل‌هاش ساده و بهینه طراحی شده تا اجرای دستورات سریع‌تر باشه.

      3. V = Version 5

      4. عدد ۵ به نسل طراحی RISC برمی‌گرده، نه اینکه فقط ۵ دستور داشته باشه 🙂.

      5. Open Source بودن

      6. بزرگ‌ترین فرقش با معماری‌های معروف مثل x86 (اینتل/AMD) یا ARM (پردازنده‌های موبایل) اینه که RISC-V متن‌بازه.

      7. یعنی هر کسی می‌تونه بدون پرداخت لایسنس، پردازنده بر اساس RISC-V طراحی کنه.

      8. کاربردها

      9. از میکروکنترلرهای خیلی کوچک (مثل Arduino)

      10. تا سرورها و حتی سوپرکامپیوترها
      11. چون انعطاف‌پذیره و می‌شه دستورالعمل‌های خاص رو بهش اضافه کرد.

      مقایسه خیلی ساده:

      • x86 (Intel/AMD): بسته، پیچیده، ولی خیلی قدرتمند.
      • ARM: کم‌مصرف و محبوب در موبایل و تبلت، ولی نیاز به لایسنس داره.
      • RISC-V: ساده، متن‌باز، قابل توسعه، و در حال رشد سریع در دنیا.
  2. Sep 2025
    1. Jumping from call to call to read along and figure out what goes wrong and what is missing is a vital requirement to quickly solve a problem

      جمله‌ی “Jumping from call to call to read along and figure out what goes wrong and what is missing is a vital requirement to quickly solve a problem” به زبان ساده یعنی:


      ترجمه ساده:

      «پریدن بین فراخوانی‌ها (call) و دنبال کردن جریان اجرای برنامه برای فهمیدن اینکه چه چیزی اشتباه است یا چه چیزی کم است، یک مهارت ضروری برای حل سریع مشکل است.»


      توضیح بیشتر:

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

      مثال ساده:

      فرض کن یک تابع A() فراخوانی می‌کند B() و B() فراخوانی می‌کند C(). اگر خروجی درست نباشد:

      1. باید به A() نگاه کنیم → مشکلی پیدا نمی‌کنیم
      2. برویم به B() → شاید ورودی اشتباه است
      3. سپس به C() → متوجه می‌شویم مشکل از محاسبه‌ای در C() است

      ✅ این همان jumping from call to call است که جمله به آن اشاره می‌کند.

    2. Too many small methods, classes or modules

      Deep module - simple interface, complex functionality Shallow module - interface is relatively complex compared to the small functionality it provides

    3. Cognitive load Cognitive load is how much a developer needs to think in order to complete a task.

      جمله‌ای که دادی میگه:

      “Cognitive load is how much a developer needs to think in order to complete a task.”

      به زبان ساده: «بار شناختی (Cognitive load) یعنی میزان فکری که یک توسعه‌دهنده باید صرف کند تا یک کار را انجام دهد.»

      به عبارت دیگر، هر چه Cognitive load بالاتر باشد، کار پیچیده‌تر است و ذهن برنامه‌نویس باید بیشتر تلاش کند تا بفهمد چه کاری انجام دهد یا چطور انجام دهد.

      مثال:

      • نوشتن یک تابع ساده با ۵ خط کد → بار شناختی کم
      • فهمیدن یک سیستم بزرگ با چندین وابستگی و قواعد پیچیده → بار شناختی زیاد