دسته‌بندی‌ها: مفاهیم برنامه‌نویسی

درانکلین

21 Dec 2025
#برنامه‌نویسی#راست#مدیریت-خطا، راست-غیرامن

unsafe Rust از جایی شروع می‌شود که Rust دیگر امنیت را تضمین نمی‌کند

این مقاله توضیح می‌دهد که unsafe در Rust واقعاً چه معنایی دارد و چرا اصلاً وجود دارد. unsafe امنیت را خاموش نمی‌کند، بلکه مسئولیت را از کامپایلر به برنامه‌نویس منتقل می‌کند. با مثال‌های واقعی می‌بینیم raw pointerها چطور کار می‌کنند، Undefined Behavior چیست و چرا از panic بسیار خطرناک‌تر است. در نهایت، مقاله نشان می‌دهد که استفاده‌ درست از unsafe چگونه است: محدود، کنترل‌شده و پنهان پشت یک API امن، با invariantهای مشخص که بقیه‌ کد را امن نگه می‌دارند.

10 Dec 2025
#لینوکس#برنامه‌نویسی

ساختن کوچک‌ترین لینوکس شخصی من (از کرنل تا Lua)

توی این پروژه از صفر یک لینوکس ۶۴ بیتی خیلی مینیمال می‌سازم: اول با tinyconfig و چند تنظیم دستی، یک کرنل کوچک برای x86_64 می‌سازم و توی QEMU بوت می‌کنم تا به خطای no working init found برسم. بعد، یک init فوق‌ساده با Rust + اسمبلی می‌نویسم (بدون std و libc) که مستقیماً با system callها کار می‌کند و نقش PID 1 را می‌گیرد. در آخر، Lua را استاتیک کامپایل می‌کنم، همراه با init داخل یک initramfs می‌گذارم، و با ابزارهای خود کرنل یک ISO قابل بوت می‌سازم که می‌تواند Lua را روی این دنیای خیلی کوچک لینوکسی اجرا کند. هدف، ساخت یک دیستروی روزمره نیست؛ هدف این است که کوچک‌ترین لینوکسی را بسازم که واقعاً می‌فهمم از درون چطور کار می‌کند.

03 Dec 2025
#غیرهمزمانی#برنامه‌نویسی#راست#مدیریت-خطا

مدیریت خطا در Rust غیرهمزمان — از سطح تجربه تا عمق معماری

یک پروژه کوچک در Rust نشان می‌دهد چطور چند درخواست را هم‌زمان اجرا کنیم، برای هرکدام timeout بگذاریم، panic را جدا کنیم و خطاها را شفاف دسته‌بندی کنیم. هدف فقط سرعت نیست؛ ساختن هم‌زمانی قابل‌پیش‌بینی و معنادار در دنیای واقعی است. فهم async یعنی ساختار دادن به کارهای هم‌زمان، نه فقط نوشتن کد.

29 Nov 2025
#فیبوناچی#راست#پایتون#الگوریتم#پیچیدگی#برنامه‌نویسی

بازگشت به ساده‌ترین مسئله‌ی پیچیده: نگاهی عمیق به Fibonacci و دو مسیر نوشتن آن در Rust و Python

این پست دو رویکرد متفاوت برای محاسبهٔ دنبالهٔ فیبوناچی را بررسی می‌کند؛ روش سادهٔ بازگشتی و نسخهٔ بهینه‌شده با memoization. روش ساده رشد نمایی و محاسبات تکراری را نشان می‌دهد، در حالی‌که memoization با استفاده از حافظه، بازگشت را به یک ابزار قدرتمند و سریع تبدیل می‌کند. در نهایت، فیبوناچی تبدیل می‌شود به یک استعاره از جوهرهٔ برنامه‌نویسی: انتخاب درست در مسیر پیچیدگی.