Backend Developer | .Net
آموزش Rust-قسمت اول (Rust چیست؟)
تاریخچه کوتاه
در سال 2010 برای اولین بار توسط فردی(Graydon Hoare) از طرف بنیاد موزیلا به صورت منبع باز عرضه شد.
ویژگی ها
- یک زبان Multi-paradigm(چند پارادایمی) : به شیوه های برنامه نویسی که این زبان پشتیبانی میکنه میگن.مثلا اگر ++c کار کرده باشین می دونین که این زبان هم برنامه نویسی به صورت رویه ای(Procedural) رو قبول میکنه هم شیء گرا(Object Oriented).حالا زبان Rust تقریبا از همه ی این موارد پشتیبانی میکنه.(object-oriented,concurrent, functional, generic, imperative, structured) بیشتر
- بیشترین تمرکز بر روی امنیت حافظه : عدم استفاده از اشاره گرهای Null،عدم استفاده از Dangling Pointer ها (اشاره گرهایی که به نوع قابل پذیرشی اشاره نمی کنند مثل اشاره به محل های ممنوعه در حافظه).عدم اجازه Data Race در حافظه(وضعیت رقابتی زمانی اتفاق میفته که پردازش های مختلف به یک منبع اشتراک گذاری شده در یه لحظه دسترسی پیدا می کنن).بیشتر
- مدیریت حافظه : Rust مثل بقیه زبان های برنامه نویسی مثل GO،Java،.Net Languages از مفهوم automated garbage collection یا همون آشغال جمع کن به صورت کامل استفاده نمی کنه،البته میشه یه جورایی خودمون استفادش کنیم ولی به جاش از مفهومی به نام RAII که به زبون ساده وقتی یه متغیر یا یک شیء از محدوده یا Scope خودش خارج میشه به طور خودکار مخرب (Destruction) فراخونی میشه و تمامی منابع رو ازش میگیره.بیشتر
- قواعد دستوری (Syntax) شبیه به ++C
- سرعت بالا Benchmark
چرا Rust ؟
برنامه ای که درستی اون با تست چک شده با برنامه ای که درستیش به صورت منطقی اثبات شده فرق زیادی داره.
متاسفانه خیلی از موارد وجود داره که هر چقدر هم ما برنامه را خط به خط تست کنیم بازم پیش میاد مواردی که از حیطه دانش ما یا هر چیز دیگه ای خارج هست.اینجاست که استفاده از یک زبان حساس به این موارد شما را خیلی جلو میندازه.Rust برای هر متغیری که می نویسید و هر آدرس حافظه ای که استفاده می کنید بسیار سخت گیر و موشکافانه است.
در Rust سخت ترین کار نوشتن یک برنامه خطرناکه و راحت ترین کار نوشتن یک برنامه ایمن.
تا چه حد؟
همین قدر کافی هست که به شرکت ها و اسم های زیر که از Rust در اون ها استفاده میشه نگاهی بندازید تا قدرت بالای اون درک کنید:
مطلبی دیگر از این انتشارات
10 راه برتر برای خودآموزی کدنویسی
مطلبی دیگر از این انتشارات
جاوا اف ایکس چیست؟
مطلبی دیگر از این انتشارات
برنامه نویسی همگام و ناهمگام چیست