"Rust آینده برنامه نویسی سیستم است، C مونتاژ کننده جدید است" - سخنرانی یکی از مهندسان برجسته اینتل

در کنفرانس اخیر فناوری منبع باز (OSTS) جاش تریپلتمهندس ارشد اینتل، گفت که شرکت او علاقه مند است که Rust با زبان C که همچنان در آینده نزدیک بر سیستم ها و توسعه سطح پایین تسلط دارد، به "تعادل" برسد. در سخنرانی خود او همچنین تحت عنوان "Intel and Rust: The Future of Systems Programming" در مورد تاریخچه برنامه نویسی سیستم ها، چگونگی تبدیل شدن C به زبان برنامه نویسی سیستم های پیش فرض، چه ویژگی هایی از Rust نسبت به C به آن برتری می دهد و چگونه می تواند به طور کامل صحبت کند. در این زمینه برنامه نویسی جایگزین C شود.

"Rust آینده برنامه نویسی سیستم است، C مونتاژ کننده جدید است" - سخنرانی یکی از مهندسان برجسته اینتل

برنامه نویسی سیستم توسعه و مدیریت نرم افزاری است که به عنوان بستری برای ایجاد برنامه های کاربردی عمل می کند و اطمینان حاصل می کند که برنامه دوم با پردازنده، رم، دستگاه های ورودی/خروجی و تجهیزات شبکه تعامل دارد. نرم افزار سیستم یک انتزاع خاص را در قالب رابط هایی ایجاد می کند که به ایجاد نرم افزار کاربردی بدون پرداختن به جزئیات نحوه عملکرد خود سخت افزار کمک می کند.

خود تریپلت برنامه نویسی سیستم را به عنوان "هر چیزی که یک برنامه کاربردی نیست" تعریف می کند. این شامل مواردی مانند بایوس، سیستم عامل، بوت لودرها و هسته های سیستم عامل، انواع مختلف کدهای تعبیه شده سطح پایین و پیاده سازی ماشین مجازی است. جالب اینجاست که تریپلت معتقد است که یک مرورگر وب نیز یک نرم افزار سیستمی است، زیرا مرورگر مدت ها پیش به چیزی فراتر از یک برنامه تبدیل شده است و به یک پلت فرم مستقل برای وب سایت ها و برنامه های کاربردی وب تبدیل شده است.

در گذشته، اکثر برنامه های سیستمی، از جمله بایوس، بوت لودر و سیستم عامل، به زبان اسمبلی نوشته می شدند. در دهه 1960، آزمایش‌هایی برای ارائه پشتیبانی سخت‌افزاری برای زبان‌های سطح بالا آغاز شد که منجر به ایجاد زبان‌هایی مانند PL/S، BLISS، BCPL و ALGOL 68 شد.

سپس در دهه 1970، دنیس ریچی زبان برنامه نویسی C را برای سیستم عامل یونیکس ایجاد کرد. C ایجاد شده در زبان برنامه نویسی B، که حتی از تایپ کردن نیز پشتیبانی نمی کرد، پر از توابع قدرتمند سطح بالا بود که برای نوشتن سیستم عامل ها و درایورها مناسب بودند. چندین مؤلفه یونیکس، از جمله هسته آن، در نهایت به زبان C بازنویسی شدند. متعاقباً، بسیاری از برنامه های دیگر سیستم، از جمله پایگاه داده Oracle، بسیاری از کد منبع ویندوز و سیستم عامل لینوکس نیز به زبان C نوشته شدند.

C در این راستا حمایت فوق العاده ای دریافت کرده است. اما دقیقا چه چیزی باعث شد که توسعه دهندگان به آن روی بیاورند؟ تریپلت معتقد است که برای ایجاد انگیزه در توسعه دهندگان برای تغییر از یک زبان برنامه نویسی به زبان دیگر، زبان دوم باید ابتدا ویژگی های جدیدی را بدون از دست دادن ویژگی های قدیمی ارائه دهد.

اول، زبان باید ویژگی‌های جدید «به‌طور منطقی چشم‌گیر» را ارائه دهد. او نمی توانست بهتر از این باشد. او توضیح می‌دهد که برای توجیه تلاش و زمان مهندسی که برای انجام این انتقال نیاز است، باید بسیار بهتر باشد. در مقایسه با زبان اسمبلی، C چیزهای زیادی برای ارائه داشت. از رفتار تا حدودی ایمن پشتیبانی می‌کند، قابلیت حمل و کارایی بهتری را با ساختارهای سطح بالا ارائه می‌دهد و در کل کد بسیار خواناتری تولید می‌کند.

ثانیاً، این زبان باید از ویژگی‌های قدیمی پشتیبانی کند، به این معنی که در تاریخ انتقال به C، توسعه‌دهندگان باید مطمئن می‌شدند که عملکرد آن کمتر از زبان اسمبلی نیست. تریپلت توضیح می دهد: "یک زبان جدید نه تنها نمی تواند بهتر باشد، بلکه باید به همان اندازه نیز خوب باشد." C علاوه بر اینکه سریع‌تر بود و از هر نوع داده‌ای که زبان اسمبلی می‌توانست استفاده کند، پشتیبانی می‌کرد، همچنین دارای چیزی بود که تریپلت آن را «دریچه فرار» می‌نامید – یعنی از درج کد زبان اسمبلی در خودش پشتیبانی می‌کرد.

"Rust آینده برنامه نویسی سیستم است، C مونتاژ کننده جدید است" - سخنرانی یکی از مهندسان برجسته اینتل

تریپلت معتقد است که C اکنون به همان زبان اسمبلی سال ها پیش تبدیل شده است. او اعلام می‌کند: «C اسمبلر جدید است. اکنون توسعه دهندگان به دنبال یک زبان سطح بالا هستند که نه تنها مشکلات انباشته شده در C را که دیگر قابل رفع نیستند، حل کند، بلکه ویژگی های جدید و هیجان انگیزی را نیز ارائه دهد. چنین زبانی باید به اندازه کافی قانع کننده باشد تا توسعه دهندگان را به سمت آن سوق دهد، باید ایمن باشد، مدیریت حافظه خودکار را ارائه دهد، و خیلی چیزهای دیگر.

«هر زبانی که می‌خواهد بهتر از C باشد، اگر واقعاً می‌خواهد جایگزین قانع‌کننده‌ای باشد، باید خیلی بیشتر از حفاظت از سرریز بافر ارائه کند. توسعه دهندگان به قابلیت استفاده و عملکرد علاقه مند هستند، کدی را می نویسند که خود توضیحی باشد و کارهای بیشتری را در خطوط کمتر انجام دهد. مسائل امنیتی نیز باید مورد توجه قرار گیرد. سهولت استفاده و عملکرد دست به دست هم می دهند. تریپلت توضیح می دهد که هر چه کد کمتری برای نوشتن داشته باشید تا به چیزی برسید، فرصت کمتری برای انجام هر گونه اشتباهی، چه مربوط به امنیت و چه غیر از آن، خواهید داشت.

مقایسه زنگ و سی

در سال 2006، گریدون هور، کارمند موزیلا، شروع به نوشتن Rust به عنوان یک پروژه شخصی کرد. و در سال 2009، موزیلا شروع به حمایت از توسعه Rust برای نیازهای خود کرد و همچنین تیم را برای توسعه بیشتر زبان گسترش داد.

یکی از دلایل علاقه موزیلا به زبان جدید این است که فایرفاکس در بیش از 4 میلیون خط کد C++ نوشته شده بود و آسیب پذیری های بسیار کمی داشت. Rust با در نظر گرفتن امنیت و همزمانی ساخته شده است و آن را به انتخابی ایده آل برای بازنویسی بسیاری از اجزای فایرفاکس به عنوان بخشی از پروژه Quantum برای طراحی مجدد معماری مرورگر تبدیل می کند. موزیلا همچنین از Rust برای توسعه Servo، یک موتور رندر HTML استفاده می کند که در نهایت جایگزین موتور رندر فعلی فایرفاکس خواهد شد. بسیاری از شرکت های دیگر استفاده از Rust را برای پروژه های خود آغاز کرده اند، از جمله مایکروسافت، گوگل، فیس بوک، آمازون، دراپ باکس، فستلی، سرآشپز، بایدو و بسیاری دیگر.

Rust یکی از مهمترین مشکلات زبان C را حل می کند. این برنامه مدیریت خودکار حافظه را ارائه می دهد تا توسعه دهندگان مجبور نباشند آن را به صورت دستی برای هر شیء در برنامه تخصیص داده و سپس آزاد کنند. چیزی که Rust را از دیگر زبان‌های مدرن متمایز می‌کند این است که جمع‌آوری زباله ندارد که به طور خودکار اشیاء استفاده نشده را از حافظه حذف می‌کند، و همچنین محیط زمان اجرا مورد نیاز برای کارکرد آن را ندارد، مانند Java Runtime Environment برای جاوا. در عوض، Rust دارای مفاهیم مالکیت، قرض گرفتن، مراجع و طول عمر است. Rust سیستمی برای اعلام تماس با یک شی دارد تا مشخص کند که مالک از آن استفاده می کند یا فقط آن را قرض گرفته است. اگر به سادگی یک شی را قرض بگیرید، کامپایلر آن را پیگیری می کند و اطمینان حاصل می کند که تا زمانی که به آن ارجاع می دهید، اصل در جای خود باقی می ماند. تریپلت می‌گوید، Rust همچنین اطمینان حاصل می‌کند که به محض اتمام استفاده، شیء از حافظه حذف می‌شود، و یک فراخوانی مربوطه را در زمان کامپایل بدون زمان اضافی وارد کد می‌کند.

عدم وجود زمان اجرا بومی را نیز می توان از ویژگی های مثبت Rust در نظر گرفت. تریپلت معتقد است که استفاده از زبان هایی که روی آن ها اجرا می شود به عنوان ابزار برنامه نویسی سیستمی دشوار است. همانطور که او توضیح می دهد: "شما باید قبل از اینکه بتوانید هر کدی را فراخوانی کنید این زمان اجرا را مقداردهی اولیه کنید، باید از این زمان اجرا برای فراخوانی توابع استفاده کنید و زمان اجرا ممکن است در زمان های غیر منتظره کدهای اضافی را پشت سر شما اجرا کند."

Rust همچنین تلاش می کند تا برنامه نویسی موازی ایمن را ارائه دهد. همان ویژگی‌هایی که حافظه آن را ایمن می‌کنند، مواردی مانند اینکه کدام رشته دارای کدام شی است و کدام اشیاء را می‌توان بین رشته‌ها منتقل کرد و کدام یک به قفل نیاز دارد را ردیابی می‌کند.

همه این ویژگی ها Rust را به اندازه کافی قانع کننده می کند تا توسعه دهندگان آن را به عنوان یک ابزار جدید برای برنامه نویسی سیستم انتخاب کنند. با این حال، از نظر محاسبات موازی، Rust هنوز کمی از C عقب است.

Triplett قصد دارد یک کارگروه ویژه ایجاد کند که بر روی معرفی ویژگی های لازم به Rust تمرکز کند تا بتواند به طور کامل برابر، پیشی گرفته و جایگزین C در زمینه برنامه نویسی سیستم شود. که در موضوع در Redditوی با بیان اینکه "گروه برابری FFI/C در مرحله ایجاد است و هنوز شروع به کار نکرده است"، گفت: در حال حاضر آماده پاسخگویی به هر سوالی است و در آینده قطعا برنامه های فوری را منتشر خواهد کرد. برای توسعه Rust به عنوان بخشی از ابتکار عمل او برای همه طرف های علاقه مند.

می توان فرض کرد که گروه FFI/C Parity اول از همه بر بهبود پشتیبانی چند رشته ای در Rust، معرفی پشتیبانی از BFLOAT16، یک فرمت ممیز شناور که در پردازنده های جدید Intel Xeon Scalable ظاهر شده است، و همچنین مونتاژ تثبیت کننده تمرکز خواهد کرد. درج کد



منبع: 3dnews.ru

اضافه کردن نظر