اصل ماجرا
Orthodox C++ یک زیرمجموعهٔ حداقلی از زبان C++ است که سعی میکند با حذف ویژگیهای پیچیده و هزینهبر مدرن مثل استثناها، RTTI و STL، کدهای سادهتر و قابلفهمتری بنویسد. این رویکرد باعث میشود برنامهها روی کامپایلرهای قدیمیتر هم کار کنند و نگهداری آنها برای تیمهای مختلف آسانتر باشد. مقاله نکات عملی برای اجتناب از ویژگیهای جدید و استفاده از سبک C‑like را هم ارائه میدهد.
متن کامل ترجمهشده
این مقاله در ابتدا به عنوان یک کشتار در اینجا منتشر شد. چیست کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشتار کشت” – Bjarne Stroustrup پایه کد نوشته شده با محدودیت های C++ Ortodox به راحتی درک می شود، ساده تر، و آن را با سازندگان قدیمی تر ساخته خواهد شد. پروژه های نوشته شده در زیر مجموعه C++ Ortodox به راحتی توسط پروژه های C++ دیگر پذیرفته خواهد شد، زیرا زیر مجموعه ای که توسط C++ Ortodox مورد استفاده قرار می گیرد، احتمالاً نمی تواند از ترجیحات C++ زیر مجموعه ای استفاده کننده را نقض کند. سلام جهان در C++ Ortodox #include <stdio.h> int main() {printf(“hello, world\n”); return 0; } چه باید از آن استفاده کنم؟ - C-like C++ شروع خوبی است، اگر کد نیاز به پیچیدگی بیشتری ندارد، پیچیدگی های C++ غیر ضروری را اضافه نمی کند. به طور کلی کد باید برای هر کس که با زبان C آشنا باشدمدیریت استثنا تنها ویژگی زبان C++ است که نیاز به پشتیبانی قابل توجهی از یک سیستم زمان اجرا پیچیده دارد و این تنها ویژگی C++ است که هزینه زمان اجرا را دارد حتی اگر شما آن را استفاده نمی کنید – گاهی اوقات به عنوان کد مخفی اضافی در هر ساخت و ساز و نابودی اشیاء و سعی کنید وارد / خارج شوید، و همیشه با محدود کردن آنچه استثنا کننده سازنده می تواند انجام دهد، اغلب به طور قابل توجهی. با این حال مشخصات استثنا C++ در زمان ساخت و ساز هرچند اعمال نمی شود، بنابراین شما حتی نمی دانید که شما فراموش نکرده اید که برخی از موارد اشتباه را درمان کنید! و در یک یادآوری استالیستی، سبک استثنا از راه حل اشتباه با سبک C از کد های بازگشت خطا، که باعث می شود یک استثنا واقعی در سبک های برنامه نویسی زیرا بسیاری از کد C++ باید به طور دائم به) - از جریان استفاده نکنید (<iostream>,<stringstream>، و غیره)، از ویژگی های سبک printf استفاده نکنید. - از STL استفاده نکنید که حافظه را اختصاص می دهد، مگر اینکه به مدیریت حافظه اهمیت ندهید. ببینید CppCon 2015: Andrei Alexandrescu “std::allocator Is to Allocation what std::vector Is to Vexation” talk, and Why many AAA gamedev studios opt out of the STL thread for more info. - Metaprogramming not use excessively for academic masturbation. Use it in moderation, only where necessary, and where it reduces code complexity. - Wary of any features introduced in current standard C++, ideally wait for improvements of those features in next iteration of standard. Example constexpromfrom C11- فایل های باینری ماژول (به غیر از MSVC) قابل حمل نیستند، بنابراین شما در هر صورت نیاز به ارائه فایل های عنوان برای کتابخانه ها دارید. - نصب پروژه پیچیده تر می شود. - هر نسخه از زنجیره ابزار غیر از جدیدترین کار نمی کند (در زمان نوشتن پشتیبانی ماژول اپل به عنوان “قسمتی” لیست می شود) در عوض برای همه این شما، توسعه دهندگان معمولی در مورد شهر، مزایای زیر را دریافت کنید: - هیچ چیز. آیا استفاده از هر یک از ویژگی های مدرن C ++ هنوز امن است؟ به دلیل تاخیر در پذیرش استاندارد C ++ توسط سازنده ها، توزیع های سیستم عامل، و غیره، به طور معمول ممکن نیست که فورا از ویژگی های جدید زبان مفید استفاده کنید. دستورالعمل عمومی این است: اگر سال فعلی C++5+ باشد، پس مطمئن است که ازاگر شما این کار را برای پروژه منبع باز انجام می دهید، پس شما چیزی را ایجاد نمی کنید که دیگران می توانند از آن استفاده کنند. تاریخ تجدید نظر به روزرسانی از 14 ژانویه 2025, کمیته کلی C++ تصویب استفاده انتخابی از C++20. - 19 اکتبر 2025 - اطلاعات در مورد ماژول ها اضافه شده است. - 16 ژانویه 2019 - اطلاعات در مورد استفاده از استثنا اضافه شده است. - 1 فوریه 2018 - اطلاعات اضافه شده که چگونه constexpr نیاز به چندین تکرار برای مفید بودن دارد. - 16 ژانویه 2016 - مقاله اصلی. - هر ایده مشابه دیگری؟ - C++ https://en.wikipedia.org/wiki/Embedded_C%2B%2B - نامگذاری C++ �URL_1 � - Sane C++ �URL_2 � - چرا C++ شما باید ساده باشد URL_3 - C++، شما نیستید.html - “Keep It C-mple” Alexander Radchenko Sydney C++ Meetup https://www.youtube.com/watch?v=lTXHOOwfTAo - یک دیالوگ از C++ https://web.archive.org/web/20200521234043/https://satish.net.in/20180302/ - سبک کد موتور Defold https://web.archive.org/web/20241003193318/https://defold.com/2020/05/31/The-Defold-engine-code-style/ - ارسطوسی - پلتفرم برای کمپینر Clang، که به طور انتخابی ویژگی های خاصی از زبان C++ https://github.com/d-musique/orthodoxy?tab=readme-ov-file#orthodoxy مثال های کد را غیر فعال می کند - هر منبع C که با کمپینر C++ را کامپیوتری می کند. - DOOM 3 BFG ̋URL_4′′ - Qt ̋URL_5′′ (هنگامی که با no-rtti ساخته شده است، هیچ استثنا وجود ندارد - dear imgui ̋URL_6′′ - شبکه بعدی SDK ̋URL_7′′ - یک چیز دیگر…ماموریت من با bgfx این است که توسعه دهندگان بازی را از طریق ارائه یک کتابخانه انعطاف پذیر از API های گرافیکی فراتر از پلتفرم، که ساده تر می سازد بازی ها را در سراسر پلتفرم های مختلف، اطمینان از عملکرد کامل و سازگاری بدون قفل موتور.
چرا مهمه؟
این مقاله نشان میدهد که با حذف ویژگیهای سنگین و غیرضروری میتوان کدهای C++ را سادهتر، سریعتر و قابلپرتابتر کرد. تغییر اصلی در این است که به جای دنبال کردن همهٔ نوآوریهای استاندارد، فقط ابزارهای ضروری و کمهزینه استفاده میشود. توسعهدهندگان بازی، سیستمهای تعبیهشده و پروژههای طولانیمدت که نیاز به سازگاری با کامپایلرهای قدیمی دارند، بیشترین بهره را از این رویکرد میبرند. خواننده باید این رویکرد را جدی بگیرد چون میتواند هزینهٔ نگهداری، پیچیدگی و مشکلات سازگاری را بهطور چشمگیری کاهش دهد.
به درد کی میخوره؟
• توسعهدهندگان بازی • مهندسان سیستمهای تعبیهشده • تیمهای نگهداری کدهای قدیمی • برنامهنویسانی که به پایداری و سادگی کد اهمیت میدهند
تو عمل چی کار کنیم؟
با خواندن این مقاله میتوانید تصمیم بگیرید که کدام ویژگیهای C++ را در پروژهتان غیرفعال کنید و به جای آن از توابع C‑style و کتابخانههای کمحجم استفاده کنید. این کار باعث میشود زمان کامپایل کاهش یابد، خطاهای زمان اجرا کمتر شوند و کد شما روی پلتفرمهای مختلف بدون نیاز به ابزارهای جدید بهراحتی اجرا شود.
نظر Blue IT News
اگر به دنبال کاهش پیچیدگی و افزایش قابلیت حمل برنامههای C++ خود هستید، بهکارگیری اصول Orthodox C++ میتواند راهحلی عملی و کمهزینه باشد؛ بهخصوص در پروژههای طولانیمدت یا محیطهای محدود.
<div class=“disclosure”> این صفحه ترجمه و تفسیر کاملی از گزارش اصلی Bkaradzic است که توسط تیم تحریریه بلو آی تی نیوز به فارسی ترجمه و تحلیل شده. برای مشاهده نسخه اصلی، به منبع مراجعه کنید. </div>