چرا rust ساخته شد؟؟؟؟
برای خاطر اینکههههه : «داشتن سرعت و قدرت زبان C++، بدونِ دردسرها و خطاهای امنیتی آن.»
داستان چی بود اصن؟؟؟؟
*گریدون هور(سازنده rust) توی موزیلا کار میکرده ، از قضا یروز که میرفته خونه آسانسور ساختمونشون خراب میشه مجبور میشه ۲۱ طبقه با پله بره بالا 😂😂 بعدش میشینه فک میکنه وات د فاک آخه یی چیییییی؟؟؟
تو این حرص و جوش و فکر کردنش به یه سری نتایج میرسه(عین وقتی که سیبه خورد تو سر نیوتون) که
دلیلِ بیشترِ این خرابیها (و کرش کردن مرورگرها)، باگهای مربوط به مدیریت حافظه در زبان C++ است.
بعدش اومد rust رو ساخت تا ابزاری داشته باشه که:
مثل C++ سریع باشد.
مثل Python خوانا باشد.
و برخلاف هر دو، اجازه نده اشتباهِ مهلکی در حافظه رخ دهد.*
یکم عمیق تر rust رو باز کنیم بینیم اصن چه گلی به سرمون زده
*
۱. حل مشکل memory corruption
(Memory Safety)*
در زبانهای قدیمی مثل C و ++C، مدیریت حافظه دست خودِ برنامهنویسه بدبخته. اگر یادت بره حافظهای رو آزاد کنی، مالیدی و سیستم کرش میکند (Memory Leak). همینطور اگر زود آزاد کنی یا اشتباه استفاده کنی، بازم مالیدییی و هکرها میتونن از اون حفره امنیتی بسازن و بیلاخو بکشن بهت.
حالا rust چی میگه : میگه که باباااااا شاید برنامه نویس اصن شافتک باشه سیستم که نباید اجازه بده برنامهنویس اشتباه کنه. rust با مفهومی به اسم Ownership (مالکیت)، در همان زمانِ نوشتن کد (قبل از اجرا)، یقه ی برنامهنویس رو میگیره و نمیزاره کدِ ناامنی نوشته بشه که باعث کرش یا باگ امنیتی بشه و همه رو باهم به خاااااک بده.
*
۲. انتزاع بدون هزینه (Zero-cost Abstractions)*
در زبانهایی مثل پایتون یا جاوا، کار با زبان خیلی راحته «سطح بالا»، اما در عوض سرعت فدای این راحتی شده. ینی تو راحت میشنیی کد میزنی و فک میکنی داری آتیش میندازی تو برف (که خب شوخیه ممکنه واقعا آتیش بندازی تو برف) ولی درواقع سرعت رو قربانی کردن برای تو که بتونی راحت کد بزنی
حالا rust چی میگه : میگه که نباس بین «راحتیِ کدنویسی» و «سرعتِ اجرا» یکی رو انتخاب کرد اصن چه معنی میده؟؟؟ باید خر و خرمارو باهم داشته باشیم و تبعیض قائل نشیم به مولا
rust ابزارهای پیشرفتهای به تو میده که وقتی کد میزنی عشق کنیییییییییااااااااا ینی انگار از بچگی دوس داشتی با rust کد بزنی، اما وقتی کد رو کامپایل میکنی، خروجی آن به اندازه کد دستی نوشته شده در C سریعهه . یعنی «هزینهای» برای امکانات پیشرفتهاش پرداخت نمیکنی و مفتی مفتی در اختیارت گذاشتن.
*
۳. حذف race condition
(Safe Concurrency)*
امروزه همه پردازندهها چند هستهای ان. نوشتن برنامهای که همزمان از چند هسته استفاده کند (Concurrency) در زبانهای قدیمی کابوسه به ابلفضل؛ چون ممکنه دو بخش برنامه همزمان بخوان یه دیتا رو تغییر بدن و همه چیز مالیده بشه.
حالا Rust چی میگه : rust با همون قوانین مالکیت (Ownership)، تضمین میکنه که دیتاها در محیطهای چندرشتهای (Multi-threaded) با هم تداخل پیدا نکنن. اصن حدیث داره rust تو این بخش که میفرماید “Fearless Concurrency” یا «همزمانیِ بدون ترس».