مباحث پیشرفته Rust
مباحث پیشرفتهٔ Rust
زبان Rust منحصر در دستور زبان نمیشود، بلکه همچون سایر زبانهای برنامهنویسی دارای ریزهکاریهای مختص به خود است. ما در این قسمت مطالبی راجع به این ظرافتها بیان خواهیم کرد.
موضوعات پیشرفته در راست
مباحث پیشرفتهٔ Rust تنها شامل امکانات و قابلیتهای پیشرفتهٔ این زبان نمیشود، بلکه مباحثی را شامل میشود که به خودی خود برای تولید یک نرمافزار مورد نیاز نیستند، اما پیادهسازی نرمافزارهای بزرگ و حرفهای نیازمند دانش نسبت به آنهاست. مثالهایی از این مباحث به شرح زیر است:
- الگوهای طراحی: ویژگیهای خاص زبان راست ایجاب میکند که الگوهای طراحی متداول قابل پیادهسازی باشند، اما با ملاحظاتی. به عنوان مثال نگهداری نشانگر (یا به عبارتی، ارجاع) از یک شیئ در درون یک شیئ دیگر عملی توصیهشده نیست، و به همین سبب برخی از الگوهای طراحی رایج در سایر زبانها منتفی میشوند، مگر آنکه اندکی پیچیدگی به کد بیفزاییم و آن الگو را با ظرافتهایی پیادهسازی کنیم. اما صبر کنید! چرا از الگوهای اختصاصی زبان راست استفاده نکنیم؟!
- باگها: این زبان بدون باگ نیست. برخی الگوهای کد وجود دارند که میتوانند عملکرد کامپایلر را دچار خدشه کنند. این باگها ممکن است عملکرد حتی امنیت نرمافزار را تحت تاثیر قرار دهند. این باگها چه هستند و چه راههایی برای رفع آنها وجود دارد؟
- راست زبانی است که اکثریت قابلیت آن، مربوط به کامپایلر آن است: فلسفهٔ راست چنین است که تا حد ممکن اجازهٔ خطا در زمان اجرا (Runtime) را ندهد و به جای آن، برنامهنویس را مجبور میکند تا در زمان کامپایل، کد خود را عاری از باگ بنویسد. حال کامپایلر چطور کار میکند و چگونه میتوان عملکرد آن را تنظیم نمود؟
- راست در بنیان خود، همراه است با Package Manager با نام Cargo: تنظیمات کارگو چگونه است و چطور میتوان از آن برای مدیریت پروژههای بزرگ استفاده کرد؟
- راست اجازهٔ استفاده از کدهای unsafe را میدهد: تا بتوانیم در هر جایی که اختیار منبع دادهای در دست ما نبود یا اینکه نیازمند پیادهسازی قابلیتهایی با کارایی بالا (High Performance) داشتیم و آن از طرق متداول قابل دستیابی نبود، بتوانیم به این هدف دست یابیم. این مسئله بسیار در پیادهسازی سیستمهای عامل حائز اهمیت است. البته بسیاری از نیازمندیهای اصلی به کدهای unsafe، در درون خود کتابخانهٔ استاندارد راست، کپسوله شده است.
- برخی سوء تفاهمها دربارهٔ بعضی از مسائل Rust وجود دارد: آشنایی با این موارد کمک میکند تا درک بهتری نسبت به زبان پیدا کنیم.
- تلفیق قابلیتهای مختلف راست یا یکدیگر، میتواند پیچیدگیهایی را تولید کند: کما اینکه در سایر زبانهای برنامهنویسی نیز چنین است. برای مثال استفادهٔ همزمان از اشارهگرهای هوشمند، جنریکها و نشانگر طول عمر!
- راست به صورت طبیعی کارایی بالایی دارد: اما چه میشود اگر بخواهیم Performance بیشتری از آن بگیریم؟
اینها و موارد دیگر، مسائلی هستند که جا دارند به عنوان مباحث پیشرفته در زبان برنامهنویسی Rust مطرح شوند.