رد شدن پیشنویس نهایی C++26؛ بحرانی بیسابقه در کمیته استانداردسازی — C++26 Disapproved
خلاصه
پیشنویس استاندارد C++26 در رأیگیری نهایی ISO رد شد که در تاریخ زبان C++ بیسابقه است. اختلاف نظر شدید روی قابلیت Contracts و نقض رویههای سنتی کمیته، آینده این زبان برنامهنویسی را در هالهای از ابهام قرار داده است.
مقدمه ای بر یک بحران تاریخی
برای اولین بار در تاریخ مدرن زبان برنامهنویسی C++، پیشنویس نهایی یک استاندارد جدید موفق به کسب آرای لازم در مرحله DIS (پیشنویس استاندارد بینالمللی) نشد. پس از یک دوره رأیگیری دوازدههفتهای توسط نمایندگان ملی سازمان بینالمللی استانداردسازی (ISO)، نسخه C++26 رد شد. این اتفاق، سیستم استانداردسازی این زبان را که از سال ۱۹۹۸ تاکنون بدون مشکل خاصی کار میکرد، با چالشی جدی روبهرو کرده است.
پسزمینه و ماجرای Contracts
ریشه اصلی این رد صلاحیت به ویژگی Contracts (قراردادها) برمیگردد. موضوع Contracts سالهاست که در کمیته استانداردسازی C++ (معروف به WG21) بحثبرانگیز بوده است. این قابلیت حتی در زمان C++20 نیز تا پای ورود به استاندارد پیش رفت اما در همان جلسه حذف شد. پس از آن، یک گروه مطالعه تشکیل شد و طی سالهای ۲۰۲۰ تا ۲۰۲۴ روی ابعاد مختلف آن کار کرد. سرانجام این پیشنهاد پس از بحثهای فراوان در گروه تکامل، با رأی اکثریت به پیشنویس C++26 راه یافت.
اما چرا نهادهای ملی (NBs) در مرحله DIS به آن رأی منفی دادند؟ گروهی از اعضا معتقدند این ویژگی هنوز به پختگی لازم نرسیده است. بر اساس قوانین ISO، برای تصویب یک DIS به حد نصاب دو سوم آرا نیاز است که این میزان به دست نیامد. این در حالی است که پیشتر رویه مرسوم این بود که نهادهای ملی تنها در صورت بروز خطاهای فرآیندی یا ظهور اطلاعات کاملاً جدید رأی منفی بدهند، اما مخالفان Contracts با این فرض که استدلالهای جدیدی دارند، روند را تغییر دادند.
مسیر پیش رو و آینده مبهم C++
کمیته WG21 اکنون گزینههای محدودی پیش رو دارد:
- ارائه مجدد پیشنویس اصلاحشده برای رأیگیری DIS
- بازگرداندن پیشنویس به مرحله CD (پیشنویس کمیته)
- انتشار پیشنویس به عنوان مشخصه فنی (Technical Specification)
- عقبگرد کامل و حذف این ویژگیها
هرکدام از این گزینهها به معنای تاخیر قابلتوجه در انتشار استاندارد بعدی خواهد بود. مشکل اصلی اینجاست که خروج از این بنبست به رأی اکثریت در داخل کمیته نیاز دارد؛ جایی که موافقان و مخالفان هر کدام ماهها و سالها روی مواضع خود انرژی گذاشتهاند و اعتماد متقابل به شدت آسیب دیده است.
نگاه جامعه توسعهدهندگان (هکرنیوز)
در بحثهای شکلگرفته پیرامون این رویداد در Hacker News، برخی توسعهدهندگان اشاره کردهاند که شاید بتوان از این فرصت و وقفه ایجادشده برای تمرکز جدیتر روی مسائل حیاتیتری مانند ایمنی حافظه (Memory Safety) استفاده کرد؛ موضوعی که امروزه در مهندسی نرمافزار اهمیت دوچندانی یافته است.
چرا این موضوع برای مهندسین نرمافزار اهمیت دارد؟
زبان C++ ستون فقرات بسیاری از سیستمهای حیاتی، موتورهای بازیسازی و نرمافزارهای با کارایی بالا است. فرآیند استانداردسازی آن مبتنی بر سازش، احترام متقابل و اعتماد است. شکست در این رأیگیری نشان میدهد که سازوکار تصمیمگیری کمیته دچار تنش عمیقی شده است. برای توسعهدهندگانی که چشمانتظار قابلیتهای جدید C++26 بودند، این به معنای تاخیر در دریافت ابزارهای مدرن و ابهام در برنامهریزی بلندمدت است.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل