نیرانما

چرا برنامه نویسی RUST یاد بگیریم؟

سوال بسیاری از مخاطبان حوزه برنامه نویسی در این روزها این است که Rust چیست؟ چرا انقدر خاص است و چه چیزی باعث محبوبیت آن در بین توسعه‌دهندگان شده است؟

RUST یک زبان برنامه نویسی سطح بالا، کامپایل شدنی، دارای راندمان بالا و ایمن در بحث حافظه (Memory) و نخ ها (Threads) می باشد. در وبینار آشنایی با برنامه نویسی RUST که برگزار شد؛  مهندس میرقاسمی زبان برنامه نویسی RUST را بصورت کامل نقد و بررسی کردند.

همانطور که میدانید زبان های برنامه نویسی را می توان به۳ گروه زبان های سطح بالا و سطح میانی و سطح پایین دسته بندی کرد. زبان های سطح بالا و میانی و پایین را میتوان براساس وابستگی آن ها به سخت افزار دسته بندی کرد.

زبان های سطح پایین به سخت افزار نزدیک و وابسته تر هستند مانند زبان اسمبلی.

زبان های سطح میانی به سخت افزار کمتر وابسته هستند و برای هر سخت افزار کامپایلر جداگانه دارند و مختص به همان سخت افزار کامپایل میشوند. برای مثال از زبان C در میکروکنترلرهای AVR، ARM میتوان استفاده کرد و هرکدام هم کامپایلر جداگانه دارند. همچنین از C و ++C می توان در Windows، Linux، Mac،… استفاده کرد و هرکدام کامپایلر جداگانه دارند.

زبان های سطح بالا وابستگی خیلی کمی به سخت افزار دارند مانند Java، Python، Java script،….این زبان ها وابستگی سخت افزاری ندارند و با یک ماشین مجازی در ارتباط هستند که در جاوا بوسیله java run time و در پایتون بوسیله engine اجرا می شوند.

زبان rust تمام قابلیت ها و ویژگی هایی که در زبان های سطح بالا داریم و همچنین قابلیت کامپایل شدنی که در زبان های سطح میانی موجود هست را باهم دارد. هدف اصلی زبان rust ایمن بودن آن می باشد.

یکی از دلایلی که زبان RUST این روزها محبوب شده است حذف خطای Null pointer expection است.

یکی از خطاهایی که در زبان C مرسوم هست خطای Null pointer expection هست. در زبان راست این خطا کاملا پوشش داده شده و دیگر این خطا وجود ندارد.

تاریخچه زبان RUST

این زبان برخواسته از یک پروژه شخصی است که در سال ۲۰۰۶ توسط Graydon Hoar کارمند موزیلا آغاز شد. Hoar بیان کرده است که احتمالا نام این پروژه از قارچ های زنگ زده گرفته شده است و این نام نیز زیر رشته ای از ” مقاوم” است. موزیلا حمایت مالی از پروژه را در سال ۲۰۰۹ آغاز کرد و آن را در سال ۲۰۱۰ اعلام  کرد. در همان سال کار از کامپایلر اولیه (نوشته شده به زبان Ocaml) به یک کامپایلر خود میزبان مبتنی بر LLVM به زبان RUST در سال ۲۰۱۱ با موفقیت توانست خود را کامپایل کند.

اولین نسخه پیش آلفا دارای شماره (version) کامپایلر RUST در ژانویه ۲۰۱۲ عرضه شد. RUST 1.0 نسخه پایدار در ۱۵ می ۲۰۱۵ منتشر شد.

پس از نسخه ۱.۰ نسخه های پایدار هر شش هفته ارائه می شوند. در حالی که ویژگی ها در نسخه شب (nightly) توسعه می یابند. RUST با نسخه های روزانه (Stable)، سپس با نسخه های بتا که شش هفته طول میکشد آزمایش شوند. هر ۲ تا ۳ سال یک “Edition” راست جدید تولید می شود. این به منظور ارائه یک نقطه مرجع آسان برای تغییرات به دلیل ماهیت مکرر برنامه انتشار Rusts Train و همچنین ارائه پنجره ای برای ایجاد تغییرات اساسی است. نسخه ها تا حد زیادی سازگار هستند.

حامیان زبان برنامه نویسی RUST

در ۸ فوریه ۲۰۲۱ بتیاد RUST توسط پنج شرکت موسس آن معرفی شد.

  • آمازون (AWS)
  • هوآوی (Huawei)
  • گوگل ( Google)
  • ماکروسافت (Microsoft)
  • موزیلا ( Mozilla)

همچنین در ۶ آپریل ۲۰۲۱، گوگل پشتیبانی از RUST به جای C/C++ در پروژه ی Android را اطلاع داد.

زبان برنامه نویسی RUST در چه مواردی کاربرد دارد؟

  • برنامه های سیستمی
  • میکروسرویس ها
  • وب
  • سیستم های نهفته
  • و…

یکی از ویژگی های مهم این زبان Cross platform بودن آن می باشد. به این منظور که می توان کد نوشته شده را در هر سخت افزاری build کرد و در تمام مواردی که از زبان های c و ++c استفاده شده است جایگزین کرد.

کامپایلرهای مورد استفاده در RUST:

  • VS code (Rust Extension)
  • VS code (Rust Analyzer)
  • Atom
  • Intelij IDEA
  • ECLIPS

ابزار CARGO در زبان RUST

یک نرم افزار مدیریت پروژه می باشد که بطور خودکار کتابخانه های موردنیاز را دانلود می نماید. همچنین بیلد و اجرا کردن پروژه با استفاده از آن انجام می شود. ابزار مشابه CARGO در JAVA script ابزار NPM می باشد.

RUST Doc چیست؟

ابزاری است که به شما اجازه می دهد برای پروژه ی خود یک داکیومنت به صورت وب سایت تهیه کنید. ( از ابزار Doxygen  استفاده می نماید)

Macro ها در RUST

در RUST شما می توانید با استفاده از Macro ها هر نوع کدی را در حین کامپایل ایجاد و به سورس کد خود اضافه نمایید.

ویژگی های مهم زبان برنامه نویسی RUST

۱. Memory safety

زبان RUST برای ایمن بودن حافظه طراحی شده است.

امکان استفاده از Null pointer و اشاره گرهای نامعلوم یا دسترسی چند متغیره به یک فضا وجود ندارد.

در RUST برای مقادیری که می توانند وجود نداشته باشند باید از oPTION استفاده کرد.

۲.Memory management

RUST از Garbage Collector استفاده نمی کند.

هر متغیر دارای یک life-cycle مشخص می باشد.

RUST از ارجاع دادن Reference به یک تابع پشتیبانی می کند اما چرخه ی متغیر در لحظه ی کامپایل شدن بررسی می شود.

۳. Ownership

RUST از سیستم Ownership برای جلوگیری از تداخل Read/Write بر روی یک مقدار در حافظه استفاده می کند.

هر مقدار فقط می تواند یک صاحب داشته باشد و اگر مقداری به صاحبی جدید داده شود متغیر قبلی دیگر نمی تواند به آن مقدار دسترسی داشته باشد و عملا بلا استفاده خواهد شد.

۴. Types and polymorphism

RUST از class و وراثت مشابه آنچه در java و ++C و… وجود دارد پشتیبانی نمی کند.

در RUST شما از struct برای تعریف یک object می توانید استفاده کنید.

RUST از trait برای ایجاد polymorphism  استفاده می کند.

RUST از تعریف توابع هم نام با ورودی های متفاوت پشتیبانی نمی کند.

در RUST سعی شده است که اکثر متغیرها در زمان کامپایل سایز مشخص داشته باشند.

 

در مرحله آخر این وبینار مهندس میرقاسمی زبان RUST را از تمامی جنبه ها با زبان های برنامه نویسی C، JAVA، ++C، Go،… مقایسه می کنند.

تماشای این وبینار میتواند اطلاعات تخصصی شما در زمینه برنامه نویسی RUST را افزایش دهد.

 


بطور خلاصه میتوان گفت مزایا و معایب زبان RUST به شرح زیر می باشد.

مزایا:

  • سریع تر یا برابر با زبان هایی مانند C و ++C عمل می کند
  • برای هر کاربرد و هدفی قابل استفاده می باشد
  • دارای یک Package Manager داخلی می باشد
  • ایمن تر است

معایب :

  • در RUST کد نویسی به نسبت زبان های دیگر طولانی تر میشود
  • یادگیری آن به نسبت بقیه زبان ها دشوارتر است
  • حجم پروژه می تواند بسیار زیاد شود

نوشته های مشابه

دیدگاهتان را بنویسید

دکمه بازگشت به بالا