چهار سالی میشود که Rust تبدیل به محبوبترین زبان Stack Overflow شده. معمولا هرکسی که توانسته با این زبان برنامهنویسی کار کند، دیگر نمیتواند از آن دل بکند. همینها باعث شده که باقی کسانی که فرصت امتحان آن را نداشتند، با خودشان بگویند «ماجرای این Rust چیست؟»
مختصر و مفید اینکه Rust نقاط ضعف باقی زبانها را برطرف کرده و با کمترین جنبههای منفی گامی محکم رو به جلو برداشته. قرار است در این مقاله آنچه راست به کاربران سایر زبانهای برنامهنویسی ارائه میکند و اکوسیستم فعلی آن را معرفی کنیم. البته اوضاع همیشه در دنیای راست گل و بلبل نیست، پس درباره جنبههای منفی آن هم صحبت خواهیم کرد.

Rust یک زبان پویا
احتمالا برنامهنویسانی که مدافع داینامیک تایپ هستند تا ابد با آنهایی که استاتیک تایپ را ترجیح میدهند سر جنگ داشته باشند. با این حال بحث درباره مزایای استاتیک تایپ کمی سخت است. فقط به رشد زبانهایی مثل TypeScript یا ویژگیهای Python توجه کنید. مردم از وضعیت فعلی داینامیک تایپ در کدبیسهای گستردهتر ناراضیاند. برعکس زبانهای استاتیک تایپ محدودیتهای بررسیشده توسط کامپایلر را بر روی دادهها و رفتار آنها امکانپذیر میسازند، که سوء تفاهمها را کاهش میدهد.
این بدان معنا نیست که همه استاتیک تایپها یکی هستند. بسیاری از زبانهای استاتیک تایپ یک نشان بزرگ در کنار خود دارند: آنها مفهوم NULL را مجاز میکنند. مانند Haskell و برخی دیگر از زبانهای برنامهنویسی مدرن، Rust این امکان را با استفاده از یک optional type رمزگذاری میکند و کامپایلر از شما میخواهد که مورد None را مدیریت کنید. این کار از بروز خطای مخوف TypeError: Cannot read property 'foo' of null
جلوگیری میکند. در عوض آن را به یک خطای زمان کامپایل ارتقا میدهد که میتوانید قبل از دیدن کاربر آن را برطرف کنید.
استاتیک تایپ Rust تمام تلاش خود را میکند تا از سر راه برنامهنویس کنار برود و در عین حال در بلندمدت هم پایدار بماند. برخی از زبانهای استاتیک تایپ بار زیادی بر دوش برنامهنویس میگذارند و از او میخواهند که نوع یک متغیر را چندین بار تکرار کند، کاری که مانع از خوانایی و refactoring میشود. سایر زبانهای استاتیک تایپ اجازه استنتاج نوع کل برنامه را میدهند. راست از هر دوی این سبکها یاد میگیرد و از آنها فراتر هم میرود.

برآمده از جمعآوری زباله
یکی از بزرگترین مزایای استفاده از زبان برنامهنویسی سیستمی، توانایی کنترل جزئیات سطح پایین است. راست به شما این امکان را می دهد که دادهها را یک جا ذخیره کنید و در زمان کامپایل تعیین میکند که دیگر به حافظه نیازی نیست و میتوان آن را پاک کرد. این کار امکان استفاده و دسترسی کارآمد از حافظه را فراهم میکند. پروژههای Rust بدون نیاز به داشتن زبالهجمعکن میتوانند از طریق رابطهای با عملکرد خارجی مناسب، کتابخانههای خوبی برای سایر زبانهای برنامهنویسی باشند. اینطوری پروژههای موجود میتوانند تا قطعات مهم را بدون خطرات ایمنی حافظه که در زبانهای برنامهنویسی دیگر هست، با کد Rust جایگزین کنند. حتی برخی از پروژهها با استفاده از این تکنیکها به صورت تدریجی در راست بازنویسی شدهاند.
راست برآمده از دیگر زبانهای برنامهنویسی سیستمها
برای بسیاری از مردم، Rust تا حد زیادی به عنوان جایگزینی برای سایر زبانهای برنامه نویسی، مانند C یا ++ C در نظر گرفته میشود. بزرگترین مزیتی که راست میتواند در مقایسه با این زبان ها ارائه دهد، borrow checker است. بخشی از کامپایلر که به حذف کل کلاسهای باگ ناشی از ناامنی حافظه کمک میکند. برخلاف بسیاری از زبانهای برنامهنویسی موجود، با این زبان نیازی نیست که تمام وقت خود را صرف جزئیات کنید.
وقتی safe Rust قادر به بیان مفهومی نیست، می توانید از unsafe Rust استفاده کنید. این قابلیت چند قدرت اضافی را باز میکند، اما در عوض، برنامهنویس مسئول ایمن بودن کد است. این کد ناامن را میتوان در انتزاعات سطح بالاتری قرار داد که تضمین میکند همه موارد استفاده از انتزاع ایمن هستند. استفاده از کد ناامن باید یک تصمیم حساب شده باشد، زیرا استفاده صحیح از آن به اندازه هر زبان دیگری که در آن شما مسئول اجتناب از رفتار نامشخص هستید نیاز به تفکر و دقت دارد. به حداقل رساندن کد ناامن بهترین راه برای به حداقل رساندن احتمال خطاها و آسیبپذیریهای ناشی از ناامنی حافظه است.
معمولا از زبانهای برنامهنویسی سیستمها انتظار میرود که عمر طولانی و مفید داشته باشند. بسیاری از کسبوکارها میخواهند بدانند که code base اصلی آنها تا مدتها قابل استفاده خواهد بود. Rust به این مسئله توجه دارد و در طراحیاش به سازگاری و پایداری معکوس دقت کافی کرده. خیالتان را راحت کنیم. راست زبانی است که برای 40 سال آینده طراحی شده است.

اکوسیستم Rust
تجربه Rust بزرگتر از مشخصات زبان و کامپایلر است. چندین زنجیره ابزار راست را می توان از طریق Rustup نصب و مدیریت کرد. وبسایت crates.io فضایی برای اشتراکگذاری و کشف اندوختههای راست است. هر منبعی که در این سایت منتشر شود، اسنادش در docs.rs هست.
علاوه بر ابزارهای داخلی، جامعه راست تعداد زیادی ابزار توسعه ایجاد کرده است. محک زدن، فازبندی و تست ویژگیها همگی به راحتی در دسترس هستند و در پروژهها به خوبی استفاده میشوند. از نکات فنی که بگذریم، Rust فضای گرم و پویایی دارد. چندین راه رسمی و غیررسمی برای کمک گرفتن از افراد وجود دارد. مانند چت، فوروم، Rust subreddit، و البته پرسش و پاسخ و چتروم در Stack Overflow . در فضای آفلاین هم راست کنفرانسهای متعددی در سراسر جهان دارد. مانند RustConf , Rust Belt Rust , RustFest, Rust Latam , RustCon Asia و بسیاری دیگر. دو کامیونیتی مطرح راست دیسکورد و Rust-Lang هم در ایران شهرت زیادی دارند.
همهچیز هم گلوبلبل نیست
نوع سیستم قوی Rust و تاکید بر ایمنی حافظه – که همگی در زمان کامپایل اعمال میشوند – به این معنی است که هنگام کامپایل کردن کد احتمال دریافت خطا بالا است. این مسئله میتواند برای برنامهنویسانی که به چنین زبان برنامهنویسیای عادت ندارند، آزاردهنده باشد. با این حال، توسعهدهندگان راست زمان زیادی را صرف بهبود پیامهای خطا کردهاند تا مطمئن شوند که واضح و قابل اجرا هستند.
مخصوصاً احتمالاً زیاد میشنوید که برخی از «مبارزه با borrow checker» مینالند. با اینکه این خطاها میتوانند دلسردکننده باشند، مهم است بدانیم هریک از قسمتهای شناسایی شده، پتانسیل اشکالات و آسیبپذیری احتمالی را در زبانهایی که این بررسیها را انجام نمیدهند دارند.
خبر خوب برای علاقمندان به Rust
Rust هنوز نسبتا جدید است، به این معنی که شاید بعضی منابع لازم هنوز در دسترس نباشند. نکته مثبت این است که زمینه برای ایجاد منابع و رشد در این حوزه فراهم است. صرف نظر از اینکه اکنون به کدام زبان برنامهنویسی علاقه دارید، احتمالا چیزی در راست هست که شما را مجذوب خودش میکند.
همین عوامل ما و همکارانمان را در پلی پاد هم شیفته خودش کرده. اگر دوست دارید کدهای سریعتر، ایمنتر و کارآمدتر بزنید، وقت آن است که ببینید آیا Rust محبوب ترین زبان بعدی شما خواهد بود یا خیر! ما در پلی پاد از علاقمندان به این زبان برنامهنویسی، مشتاقان یادگیری و متخصصین این حوزه دعوت میکنیم تا به ما بپیوندند تا باهم در تحولی بزرگ در زبان برنامهنویسی پیشگام شویم. برای اطلاعات بیشتر به پلی پاد سر بزنید.
منبع: stackoverflow
2 دیدگاه
شما تو پلی پاد Rust آموزش هم می دید؟
بله