چرا همه عاشق زبان Rust هستند ؟چه شرکت هایی از Rust استفاده می کنند؟ چرا زبان Rust را یاد بگیریم؟
اگر هنوز نشنیده اید(اگر یک برنامه نویس هستید پس تا به حال زیر سنگ زندگی می کرده اید!) ، Rust یکی از آینده دارترین و دوست داشتنی ترین زبان های برنامه نویسی است. اولین بار در موزیلا ایجاد شد و از آن زمان توسط شرکت هایی مانند Dropbox . مایکروسافت . فیس بوک و دیگر بزرگان بازی به کار گرفته شده. مزیت اصلی Rust این است که در عملکرد (سرعت) مانند زبان C عمل می کند . ودر عین حال ایمنی حافظه را که هنگام کار با زبان هایی مانند JavaScript و Python به آن عادت کرده ایم حفظ می کند.
در این مقاله ، من نه شرکت بزرگ را که از Rust استفاده می کنند ، بررسی می کنم و دلایل انتخاب آنها را به طور خلاصه بیان می کنم.
9 داستان موفقیت Rust
Dropbox
Dropbox برای بخش هایی از موتور همگام سازی فایلهای خود از Rust استفاده می کند. از آنجا که این موتور نقش همزمانی سنگینی بر دوش دارد ، نوشتن ، آزمایش و اشکال زدایی آن سخت است. بنابراین ، تیم دراپ باکس تصمیم گرفت تا آن را در Rust بازنویسی کند. تایپ های استاتیک Rust هنگام استفاده و کمپایل آن ، در مقایسه با زبان های پویا مانند Python ، زمانی که نیاز به بررسی پایگاه های کد پیچیده و کدهای همزمان دارید ، مزیت بزرگی به حساب می آید.
Rust برای تیم ما به مانند چند برابر کردن نیرو بوده است و استفاده از Rust یکی از بهترین تصمیماتی بود که ما گرفتیم.بیش از عملکرد, ارگونومی و تمرکز آن بر صحت داده ، به ما کمک می کند تا پیچیدگی همگام سازی را راحت تر مهار کنیم. ما می توانیم متغیرهای پیچیده ای را در سیستم داده رمزگذاری کنیم و از کامپایلر بخواهیم آنها را برای ما بررسی کند.
متن کامل مستندات را از اینجا مطالعه کنید
Coursera
Coursera از Rust برای تکالیف برنامه نویسی خود استفاده می کند . زمانی که دانش آموزان برای حل یک تکلیف نیاز به نوشتن و اجرای یک برنامه رایانه ای دارند. برنامه ها در ظروف Docker اجرا ، آزمایش و درجه بندی می شوند. به دلایل امنیتی ، تیم توسعه دهنده باید از زبان سطح پایینی مانند Rust برای برخی از کدها استفاده کند. و آنها تصمیم گرفتند که Rust از C امن تر است.
اگرچه زبان برنامه نویسی C زبان پیش فرض سطح پایین با کنترل کامل است . اما ما در عوض Rust ، یک زبان مدرن از موزیلا را انتخاب کرده ایم. یکی از نقاط قوت Rust ، مصونیت کامل در برابر برخی از آسیب پذیری های امنیتی است که به دلیل سیستم قدرتمند آن ، آن را به گزینه ای عالی برای عملکردهای مهم امنیتی تبدیل می کند.
فیگما
Figma یک ابزار طراحی مبتنی بر وب برای گرافیک برداری (vector) و نمونه سازی رابط کاربری است. آنها تصمیم گرفتند موتور همگام سازی چند نفره خود را در Rust (قبلاً در TypeScript) بازنویسی کنند تا عملکرد را بهبود بخشد زیرا سرور آنها نمی توانست با رشد کاربر مطابقت داشته باشد.
ما Rust را برای این بازنویسی انتخاب کردیم. زیرا بهترین سرعت در کلاس را با استفاده از منابع کم ارایه می کند. در حالی که هنوز ایمنی زبانهای استاندارد سمت سرور را ارائه می دهد. استفاده کم از منابع برای ما بسیار مهم بود. زیرا برخی از مشکلات عملکرد سرور قدیمی توسط جمع کننده زباله ایجاد شده بود.
متن کامل را از اینجا مطالعه کنید
npm
npm یک پکیج منیجر برای جاوا اسکریپت است. تیم مهندسی آن تصمیم گرفت سرویس اصلی خود را در Rust بازنویسی کند. زیرا دیدند که اگر این سرویس رشد کاربران را با همین سرعت ادامه دهد عملکرد آن به زودی به یک تنگنا خواهد رسید.
آنها فن آوری هایی مانند C و++C را رد کردند زیرا در خود نمی دیدند که بتوانند مدیریت حافظه را برای سرویس در معرض وب مدیریت کنند. جاوا نیز رد شد زیرا باعث استقرار JVM بر روی سرورهای آنها می شد.
چالش هایی که npm با آن روبروست ، راه حل های کارآمد و مقیاس پذیر را می طلبد. زمانی که یک سرویس وجود دارد که می تواند گماشته شود و بعد. از آن بابت خاطر جمع بود ،این مهم باعث صرفه جویی در وقت عملیات ارزشمند می شود و به ما اجازه می دهد تا روی مسائل دیگر تمرکز کنیم . کارکنان npm همچنین برای داشتن یک جامعه مفید در مورد هر فناوری که استفاده می کنند ، ارزش قائل هستند. Rust با تمام این معیارها مطابقت دارد و در حال حاضر به عنوان بخشی از stack npm استفاده می شود.
برای اطلاعات بیشتر به این لینک مراجعه کنید
مایکروسافت
مایکروسافت اخیراً در حال آزمایش ادغام Rust در پایگاه های کد بزرگ ++C/C خود است.
استدلال اصلی برای پذیرش Rust در مایکروسافت ایمنی حافظه ای است که Rust ارائه می دهد. در 12 سال گذشته . حدود 70 درصد از CVE های (Common Vulnerabilities and Exposures ) کشف شده در مایکروسافت به ایمنی حافظه مرتبط بوده است.
مایکروسافت گزینه های مختلفی را برای حل این مشکل مانند آموزش گسترده توسعه دهندگان و ابزارهای تجزیه و تحلیل استاتیک امتحان کرده است. با این حال ، به نظر می رسد تنها راه نجات این است که کاری کرد تا وجود این آسیب پذیری ها از پایه غیرممکن باشد.
Cloudflare
Cloudflare از Rust در لبه اصلی منطق خود و به عنوان جایگزینی برای C استفاده می کند ،چرا که از نظر حافظه نسبت به Rust ناامن است. GitHub آنها 18 مخزن منبع باز که از Rust استفاده می کنند را نشان می دهد . و در وبلاگ خود ، استفاده از آن را برای Firewall Rules . ابزار فایروال بسیار سفارشی ، توضیح می دهند.
با توجه به مجموعه ای متفاوت از الزامات عملکرد . ایمنی حافظه . استفاده کم از حافظه و قابلیت استفاده در سایر محصولاتی که روی آنها کار می کنیم مانندSpectrum ، راست به عنوان قوی ترین گزینه مطرح شد. (منبع)
فیس بوک
فیس بوک از Rust برای بازنویسی قسمت پشتی کنترل منبع خود ، که پیش از آن در پایتون نوشته شده بود ، استفاده کرد. آنها به دنبال یک زبان تدوین شده برای بازنویسی آن بودند و به دلیل مزایای ایمنی Rust جذب آن شدند. از آن زمان ، Rust توسط تیم کنترل منبع پذیرفته شده است. از جمله دلایل پذیرش این موضوع می توان به هزینه های هنگفت bug های پایتون برای فیس بوک و سهولت حلقه های تکرار کامپایلر بر خلاف تجزیه و تحلیل استاتیک و بررسی کد اشاره کرد .
Rust در زمان کامپایل کلاس های بزرگی از اشکالات جدی را تشخیص می دهد. هزینه کشف یک اشکال در زمان کامپایل بسیار کمتر از زمانی است که به عرضه عموم رسیده.
آمازون
AWS از Rust برای اجزای خدمات حساس به عملکرد مانند Lambda ، EC2 و S3 استفاده کرده است. علاوه بر این ، این شرکت به طور آشکار از توسعه این زبان و اکوسیستم آن حمایت می کند.
آمازون همچنین یک سرویس منبع باز دارد که کاملاً به زبان Rust نوشته شده است. Firecracker VMM یک ماشین مجازی برای مانیتور است که برای خدماتی مانند AWS Lambda و AWS Fargate ساخته شده است.
Discord
Discord از Rust در مکان های مختلف پایگاه کد خود استفاده می کند ، هم در سمت سرویس گیرنده و هم در سمت سرور.
به عنوان مثال ، این تیم از Rust و Elixir برای مقیاس 11 میلیون کاربر همزمان از طریق استفاده از Elixir NIFs .(Native Implemented Functions). استفاده کرد. در این مورد ، Rust آنها را قادر می سازد تا ضمن حفظ امنیت همه حافظه ، پایگاه داده موجود در Elixir را افزایش دهند.
آنها همچنین سرویس Read States خود را در Rust (قبلا در Go) بازنویسی کرده اند. در حالی که نسخه Go سرویس بیشتر اوقات از سرعت کافی برخوردار بود ، اما گاهی اوقات به دلیل مدل حافظه Go و جمع آوری زباله ، تاخیر زیادی داشت.
برای حل این مشکل ، Discord به Rust تغییر کرد. که یک سیستم اختصاص حافظه منحصر به فرد را ارائه می دهد. که جمع آوری زباله را غیر ضروری می کند.
در کنار عملکرد ، Rust دارای مزایای زیادی برای یک تیم مهندسی است. به عنوان مثال ، type safety و borrow checker ، تغییر کد.(refactor). را بسیار آسان می کند زیرا نیازهای محصول تغییر می کند و یا یادگیری های جدیدی در مورد زبان کشف می شود.
همچنین ، اکوسیستم و ابزار آن بسیار عالی هستند و میزان قابل توجهی حرکت رو به جلو را در آن می بینیم.
آینده Rust
در اکثر این شرکت ها ، Rust به عنوان یک جایگزین بهتر برای C عمل می کند . شما می توانید الگوی قابل مشاهده ای از بازنویسی های انجام شده در Rust را برای فرار از افت عملکرد مشاهده کنید. تیم ها زمانی از آن استفاده می کنند که نیاز به عملکرد بیشتری دارند اما می خواهند از مشکلات مربوط به حافظه ناشی از C اجتناب کنند.
اما Rust دارای مزایای بسیار بیشتری است: برنامه نویسی در سطوح پایین را در دسترس تر می کند. پشتیبانی عالی از WASM دارد و برای همزمانی فوق العاده است. و بهتر است درباره جامعه ای که از آن استفاده می کنند و آن را گسترش می دهند چیزی نگویم که نیازی به تعریف نیست.