مایکروسافت شروع به صحبت در مورد زبان برنامه نویسی نسل بعدی خود، سی شارپ برای برنامه نویسی سیستمی می کند
3 دقیقه خواندن
منتشر شده در
صفحه افشای ما را بخوانید تا بدانید چگونه می توانید به MSPoweruser کمک کنید تا تیم تحریریه را حفظ کند ادامه مطلب
جو دافی، معمار و توسعهدهنده یک سیستم عامل تحقیقاتی در مایکروسافت، در مورد زبان برنامهنویسی نسل بعدی که در چند سال گذشته روی آن کار کردهاند، وبلاگنویسی کرده است. مایکروسافت اکنون این زبان آینده را به عنوان پسوندهای «برنامهنویسی سیستمی» برای C# توصیف میکند. مایکروسافت در تلاش است تا این زبان را بهعنوان متقابل بین C#، جاوا، و غیره با محوریت ایمنی و بهرهوری و C++ محور عملکرد، قرار دهد.
در اینجا 6 ویژگی مهم زبان وجود دارد،
) درک مادام العمر. C++ دارای RAII، تخریب قطعی و تخصیص کارآمد اشیا است. C# و Java هر دو توسعه دهندگان را وادار می کنند تا به شدت بر پشته GC تکیه کنند، و تنها پشتیبانی "سست" را برای تخریب قطعی از طریق IDisposable ارائه می دهند. بخشی از کاری که تیم من انجام می دهد این است که به طور منظم برنامه های C# را به این زبان جدید تبدیل می کند، و برای ما غیرعادی نیست که با 30 تا 50٪ زمان صرف شده در GC مواجه شویم. برای سرورها، این توان عملیاتی را از بین می برد. برای مشتریان، با تزریق تأخیر به تعامل، تجربه را کاهش میدهد. ما یک صفحه از C++ را دزدیدیم - در زمینههایی مانند ارجاعات rvalue، معناشناسی حرکت، تخریب، ارجاعات / قرض گرفتن - و با این حال عناصر ضروری ایمنی را حفظ کردهایم و آنها را با ایدههایی از زبانهای کاربردی ادغام کردیم. این به ما اجازه می دهد تا اشیاء تخصیصی را به طور تهاجمی روی هم قرار دهیم، به طور قطعی تخریب کنیم و موارد دیگر.
2) درک عوارض جانبی. این تکامل چیزی است که ما در OOPSLA 2012 منتشر کردیم، و عناصری از C++ const (اما دوباره با ایمنی)، همراه با تغییرناپذیری درجه یک و ایزوله را به شما می دهد.
3) برنامه نویسی همگام در مقیاس. جامعه در این مورد «دور و دور» بوده است، یعنی اینکه آیا از برنامههای بازدارنده ادامهدار یا سبک وزن استفاده شود. این شامل سی شارپ و همچنین تقریباً هر زبان دیگری در این سیاره است. نوآوری کلیدی در اینجا یک سیستم نوع قابل ترکیب است که نسبت به مدل اجرا آگنوستیک است و میتواند به طور کارآمد برای هر یک از آنها نقشهبرداری کند. متکبرانه است که ادعا کنیم ما یک راه درست برای افشای این موارد داریم، اما با داشتن تجربه در بسیاری از رویکردهای دیگر، من عاشق جایی هستم که به آن رسیدیم.
4) برنامه نویسی سیستم های ایمن از نوع. معمولاً ادعا می شود که با ایمنی نوع، عملکرد ذاتی از دست می رود. درست است که بررسی کرانه ها غیرقابل مذاکره است و ما به طور پیش فرض بررسی سرریز را ترجیح می دهیم. جای تعجب است که یک کامپایلر بهینه سازی خوب در اینجا در مقابل کامپایل JIT چه کاری می تواند انجام دهد. (و فقط باید به طور تصادفی برخی از بولتن های امنیتی اخیر را بررسی کرد تا ببیند چرا این ویژگی ها شایستگی دارند.) زمینه های دیگر شامل اجازه دادن به شما برای انجام کارهای بیشتر بدون تخصیص است. مانند داشتن API های مبتنی بر لامبدا که می توانند با تخصیص صفر فراخوانی شوند (به جای دو مورد معمول: یکی برای نماینده، یکی برای نمایش). و به راحتی می توانید آرایه های فرعی و رشته های فرعی را بدون تخصیص حک کنید.
5) مدل خطای مدرن. این یکی دیگر از مواردی است که جامعه درباره آن اختلاف نظر دارد. ما چیزی را انتخاب کردهایم که فکر میکنم نقطهی شیرین است: قراردادها در همه جا (پیششرطها، شرایط پسشرط، ثابتها، ادعاها، و غیره)، سریعتر شکست بهعنوان خطمشی پیشفرض، استثنائات برای شکست دینامیکی نادر (تجزیه، I/O و غیره)، و استثناها را فقط زمانی تایپ کنید که کاملاً به استثناهای غنی نیاز دارید. همه به روش درجه 1 در سیستم تایپ ادغام شده اند، به طوری که شما تمام رفتار زیرتایپ مناسب لازم برای ایمن و سالم بودن آن را دریافت کنید.
6) چارچوب های مدرن. این یک سطل جامع است که مواردی مانند async LINQ، پشتیبانی از شمارشگر بهبودیافته را پوشش میدهد که در عملکرد با تکرارکنندههای C++ رقابت میکند و نیازی به ارسال دو رابط برای استخراج عناصر و غیره ندارد. صادقانه بگوییم، این منطقهای است که ما داریم. بزرگترین فهرست «ویژگیهای طراحیشده اما هنوز اجرا نشده»، شامل مواردی مانند void-as-a-class-type، انواع غیر تهی، ویژگیها، تایپ افکت درجه 1 و موارد دیگر. من انتظار دارم که تعدادی از اینها را در ایست بازرسی اواسط سال 1 داشته باشیم، اما نه همه آنها.
ادامه مطلب را از لینک بخوانید اینجا کلیک نمایید.