گزارش JetBrains Developer Ecosystem 2023 نشان میدهد که توسعهدهندگان C++ در نسخههای زبان C++، IDEها، مدیران بستهها، ابزارهای ساخت، ابزارهای تجزیه و تحلیل کد و توسعه به کمک هوش مصنوعی قرار دارند. شیرجه بزنیم
هر سال، JetBrains نظرسنجی اکوسیستم توسعه دهندگان را انجام می دهد تا چشم انداز جامعه توسعه دهندگان را به تصویر بکشد، و نتایج امسال بالاخره مشخص شد. یکی از بزرگترین روندهایی که در سال گذشته مشاهده کردیم، استفاده گسترده تر از هوش مصنوعی در بین توسعه دهندگان نرم افزار است. ۷۷٪ از آنها از ChatGPT برای کارهای مختلف مرتبط با کار استفاده می کنند. در یافتههای دیگر، Objective-C در آخرین مراحل خود قرار دارد، Rust محبوبتر از همیشه است، و C++ و C به ترتیب در رتبههای هشتم و دهم در فهرست زبانهای برتر قرار دارند. اطلاعات بیشتر در گزارش ۲۰۲۳ ما یافت میشود، پس بیایید وارد آن شویم.< /p>
در سال ۲۰۲۳، ما ۳۴۴۹۳ پاسخ از توسعه دهندگان نرم افزار در سراسر جهان جمع آوری کردیم. در میان آنها، ۲۶۲۷ نفر C++ را به عنوان یکی از سه زبان اصلی خود شناسایی کردند. ما داده های خام را برای استخراج بینش های ارزشمند و به اشتراک گذاشتن آنها با شما بررسی کردیم. ما همچنین از چندین عضو انجمن C++ خواستیم تا نظرات خود را به صدا درآورند. اینها شامل کارشناسان مشهوری هستند که نماینده کمیته زبان C++ و شرکت هایی هستند که نقش مهمی در تکامل C++ دارند.
از اعضای انجمن زیر به خاطر نظراتشان در مورد دادهها و یافتههای ما تشکر میکنیم:
- Inbal Levi، مهندس ارشد نرم افزار در MPGC Services Ltd. (Millennium)، عضو کمیته WG21؛
- Bryce Adelstein Lelbach، معمار اصلی در Nvidia؛
- دیگو رودریگز-لوسادا گونزالس، معمار اصلی در JFrog، تیم پشتیبان Conan.
میتوانید سؤالها و پاسخهای C++ را در اینجا مشاهده کنید. در زیر این یافتهها را خلاصه کردهام و نظرات اینبال، برایس و دیگو را درج کردهام.
استانداردهای C++ در استفاده رایج
روند نزولی برای C++11 و C++14 ادامه دارد، و C++17 با مهاجرت افراد به C++20 و C++23 رشد اندکی نشان میدهد. در سال آینده، ما میتوانیم بهطور واقع بینانه شاهد باشیم که ترکیب C++20 و C++23 از C++17 پیشی بگیرد. بخشی از نیروی محرکه این تغییر این است که کنفرانس های C++ تمایل به گفتگو در مورد C++20 و C++23 دارند.
Inbal: خیلی خوب است که میبینیم چنین بخش قابل توجهی از توسعهدهندگان تعبیهشده (۳۷%) و بازیها (۳۹%) در حال حاضر با C++20 کار میکنند. من از این حرکت حمایت کردهام، زیرا این نسخه تواناییهای زمان کامپایل را افزایش میدهد، که برای صنایعی که تاکید زیادی بر عملکرد زمان اجرا دارند بسیار سودمند است. امیدوارم در سالهای آینده شاهد نرخ پذیرش مشابه برای C++23 باشم.
بسیار جالب است که ببینید در اینجا چگونه C++98 و C++03 دارای پایگاه نسبتاً ثابتی از کاربران هستند، اما با شروع از C++11، پذیرش قابل توجهی از نسخههای جدیدتر (~۴٪) وجود دارد. ). همچنین جالب است که چگونه نسخه های جدیدتر، C++20 و C++23، بیشترین درصد پذیرش را دارند. این نشانه خوبی است که حداقل ۲۰ درصد از توسعه دهندگانی وجود دارند که قصد دارند در لبه فناوری قرار بگیرند.
Bryce: جهش بزرگ در پذیرش C++20 منطقی است، زیرا پیادهسازیها بالغتر و کاملتر شدهاند. من فکر میکنم طی چند سال آینده شاهد تغییر بزرگی از C++17 به C++20 بهعنوان گویش «پایه» برای بسیاری از افراد جامعه خواهیم بود.
به نظر می رسد که توسعه دهندگان بازی در اتخاذ استانداردهای جدیدتر C++ از بازی جلوتر هستند. این روند احتمالاً زمانی تقویت میشود که زبان بازتاب را اضافه کند – یکی از ویژگیهای زبان مورد انتظار برای توسعهدهندگان بازی با توجه به اهمیت بالای آن برای الگوریتمهای سریالسازی اشیا. به هر حال، آیا میدانستید که Unreal Engine بازتاب را از طریق ماکروها شبیهسازی میکند؟
ما همچنین به گذشته نگاه کردیم و سهم پذیرش استانداردهای زبان اخیر را در سال اول انتشار در مقایسه با یک سال بعد مقایسه کردیم:
- C++17 با ۱۲% پذیرش در سال ۲۰۱۷ شروع شد و در سال ۲۰۱۸ به ۱۸% رسید.
- C++20 با ۱۲% پذیرش در سال ۲۰۲۰ آغاز شد و در سال ۲۰۲۱ به ۱۸% رسید.
- C++23 با پذیرش ۱۰٪ در سال ۲۰۲۳ آغاز شد. در سال ۲۰۲۴ چه سهمی خواهد داشت؟ یک سال دیگر تنظیم کنید.
Diego: C++23 10% پذیرش را در سال ۲۰۲۳ نشان میدهد، کمی کمتر از پذیرش C++20 در سال ۲۰۲۰ (۱۲%). این احتمالاً به تعداد ویژگیهای جدید C++20 در مقایسه با C++23 مربوط میشود.
سهم افرادی که قصد مهاجرت به استانداردهای جدیدتر را ندارند حدود ۵۰ درصد است و بالاترین رقم (۵۷ درصد) مربوط به کسانی است که هنوز از C++98/C++03 استفاده میکنند. این پدیده جدید نیست و ارتباط زیادی با نیاز به استفاده از نسخه های کامپایلر قدیمی به خصوص در برخی پروژه های تعبیه شده دارد.
دیگو: یافتهها مبنی بر اینکه ۵۷ درصد از کاربران C++98/03 قصد ندارند به استاندارد دیگری از C++ بروند، میتواند ناامیدکننده خوانده شود، اما با توجه به اینکه تنها ۸ درصد از پاسخ دهندگان هنوز از C++98/03 استفاده می کنند، به این معنی که تنها حدود ۴ درصد از کد C++ جهان در آن استاندارد قدیمی راکد است. این بد نیست و رکود مشابهی در سایر زبان های برنامه نویسی نیز دیده می شود.
زبان های برنامه نویسی مورد استفاده با C++
واقعیت جالب: سال گذشته، من توانستم جیسون ترنر را با فاش کردن شگفت زده کنم Python همراه شماره یک C++ برای توسعه دهندگان C++ است. در سال ۲۰۲۳، پایتون همچنان این موقعیت را با برتری واضح نسبت به C حفظ کرده است.
در تجربه توسعه ++C من، Python به طور گسترده برای بسته بندی مدل پروژه استفاده شده است، و می دانم که بسیاری از استودیوهای بازی سازی هنوز فایل های .sln خود را با Python پردازش می کنند.
دیگو: من پایتون را به عنوان یک زبان ابزارسازی دوست دارم و شرکت های زیادی را دیده ام که با خوشحالی از آن در پروژه های ++C خود برای انواع اتوماسیون، تست، مدیریت پروژه، پردازش داده ها استفاده می کنند. ، خدمات، CI (ادغام مداوم)، و غیره، لزوما همیشه برای کد محصول نیست. Python یکی دیگر از ابزارهای بسیار مفید برای جعبه ابزار برنامه نویس C++ است.
در مورد Rust، یک سوال جالب وجود دارد که ما اکنون با JetBrains RustRover. ما دوست داریم بدانیم که در حال حاضر چند پروژه Rust از C++ و بالعکس استفاده می کنند. اکثر نظرسنجیها و اسکنهای GitHub بیش از ۵ تا ۱۰ درصد را نشان نمیدهند، حتی اگر شرکتهای بزرگی مانند گوگل به دلایل امنیتی و ایمنی بخشی از پایگاههای کد عظیم خود را به Rust منتقل میکنند. نظر شما در مورد آن چیست؟
Bryce: بیشتر JavaScript و Rust که در ترکیب با C++ استفاده میشوند، به نظر میرسد در اینجا روند استفاده میشود. با توجه به افزایش محبوبیت Rust، جای تعجب است که رشد سریع تری از Rust در C++ وجود ندارد. این نشان میدهد که ممکن است استفاده از Rust در پروژههای موجود سختتر باشد (در مقایسه با پروژههای جدید).
ابزارهای پیشرو C++
C++ IDE و ویرایشگرهای انتخابی
بیشتر توسعه دهندگان ++C از همان چند IDE و ویرایشگر استفاده کرده اند. محبوبترین IDEهای با ویژگیهای کامل، CLion و Visual Studio، موقعیتهای مشابهی را در بازار اشغال میکنند، در حالی که Visual Studio Code به عنوان یک ویرایشگر هوشمند با آنها رقابت میکند. ما خوشحالیم که بخشی از این رقابت هستیم و سخت تلاش می کنیم تا تکامل پیدا کنیم و بهترین تجربه را به کاربران خود ارائه دهیم.
به هر حال، آیا می دانستید Android Studio از پشتیبانی C++ CLion استفاده می کند؟ این یک جزء اختصاصی در بالای کد منبع ما ایجاد می کند.
Diego: بازار به وضوح تحت تسلط IDEهای Microsoft و JetBrains است. به نظر می رسد رشد سریع VS Code در نهایت کند می شود (حداقل در بین مخاطبان ++C) و شروع به تثبیت در بخش های مساوی برای سه بازیکن اصلی – CLion، Visual Studio و Visual Studio Code کرده است. p>
مدیریت کتابخانه های شخص ثالث
مدیریت کتابخانه های شخص ثالث یکی از بزرگترین چالش های C++ است، حتی پس از گذشت ۳۵ سال از وجود آن. در گزارش C++ Foundation Annual C++ Developer Survey “Lite”، مقام اول را به خود اختصاص داد و ۴۷ درصد از پاسخ دهندگان به عنوان “نقطه درد اصلی” نام بردند. این چالش از این واقعیت ناشی میشود که تعریف کتابخانههای C++ دشوار است و استفاده از آنها در یک فرم از پیش ساخته شده دشوار است.
اما هنوز امیدی وجود دارد. در CppCon 2023، بیل هافمن از CMake و برت براون از بلومبرگ در مورد استاندارد اولیه برای مدیریت وابستگی در C++ با استفاده از فایلهای ابرداده برای توصیف کتابخانههای از پیش ساخته شده صحبت کردند. سخنرانی آنها، کتابخانهها: قدم اول به سوی مدیریت وابستگی استاندارد C++، در YouTube در دسترس است.
طبق نظرسنجی اکوسیستم توسعهدهنده ۲۰۲۳، تعداد افراد کمتری را میبینیم که از منابع، کتابخانه میسازند.
Inbal: من فکر میکنم این نشانه بزرگی است که پشتیبانی گسترده مدیران بسته در سراسر جامعه C++ ضروری است. همانطور که اشاره کردم، یکی از راهها (اما نه تنها راه) برای ترویج چنین حمایتی، ترویج استانداردسازی الزامات این ابزارها است که در کمیته مورد بحث قرار گرفته است. البته، ممکن است همیشه نیاز به راهحلهای دیگری وجود داشته باشد، اما جالب است که ببینیم اگر چنین مدیران بستهای که معمولاً مورد استفاده قرار میگیرند، استاندارد شوند، چگونه بر اعداد تأثیر میگذارند.
مدل های پروژه و ساخت سیستم
نتایج سال ۲۰۲۳ ما نشان میدهد که CMake رایجترین ابزار ساخت است (علیرغم کاهش جزئی از سال گذشته) در حالی که msbuild و Makefiles همچنان جایگاه خود را از دست میدهند.
Bryce: بسیار جالب است که شاهد کاهش سهم بازار CMake و افزایش سهم نینجا در بازار باشیم. این روندی نیست که من از آن آگاه بودم. شاید این فقط نویز باشد، اما با توجه به رشد سریع CMake تا کنون، این داده ها نشان می دهد که به حداکثر اشباع رسیده است. این ناراحت کننده است. اگر ما یک سیستم ساخت استاندارد واقعی داشتیم (۷۰% تا ۹۰% پذیرش) برای C++ بهتر بود. من نمی دانم چگونه رشد “هیچ” را به عنوان یک سیستم ساخت تفسیر کنم، اما فکر نمی کنم معنای عمیقی داشته باشد. هیچ کس از یک سیستم ساخت برای پروژه های تولیدی بزرگ استفاده نمی کند.
همانطور که برایس اشاره می کند، استفاده از نینجا در حال رشد است. داده های C++ Foundation Annual C++ Developer Survey “Lite” حتی بزرگتر نشان می دهد دستاوردها.
رشد بیشتر استفاده از نینجا نشان داده شده در نظرسنجی بنیاد ++C را میتوان با این واقعیت توضیح داد که این نظرسنجی به پاسخدهندگان اجازه میدهد «همه گزینههای کاربردی را بررسی کنند». همچنین سؤالات بیشتری می پرسد که به طور خاص بر ابزارهای ساخت تمرکز دارند، و برخی از پاسخ دهندگانی که نینجا را انتخاب می کنند باید از آن به عنوان یک ابزار ساخت و نه مدل پروژه استفاده کنند.
اینبال: به نظر من این داده ها جذاب هستند. این نشان میدهد که اولویتهای قابل توجهی در هر حوزه وجود دارد، که به من نشان میدهد که اگر میخواهیم به یکنواختی در ابزارها با استانداردسازی دست یابیم (مثلاً با استانداردسازی APIهای سیستمهای ساخت)، باید مطمئن شویم که فضای کافی برای انعطافپذیری باقی میگذاریم. تا بتوانیم از تمام نیازهای کاربران در جامعه خود پشتیبانی کنیم.
کد C++ ایمن و تمیز
ابزارهای تجزیه و تحلیل کد به ما کمک میکنند کد C++ ایمن و تمیز بنویسیم. کدام یک از آنها در جامعه محبوب ترین هستند؟
واضح است که ابزارهای مبتنی بر Clang در حال افزایش محبوبیت هستند. سهم توسعه دهندگان ++C که به هیچ وجه از تجزیه و تحلیل کد استفاده نمی کنند در همان سطح باقی می ماند، ۳۰٪، در حالی که سهم کسانی که از تجزیه و تحلیل کد به همراه IDE استفاده می کنند، کاهش یافته است. دلیلش چی میتونه باشه؟
Bryce: من فکر میکنم کاهش ابزارهای تحلیل ارائهشده توسط IDE در اینجا نشاندهنده این است که افرادی که تجزیه و تحلیل استاتیک را در CI خود وارد میکنند، به عنوان مثال. در GitHub Actions، clang-format، یا Clang Static Analyzer را اجرا کنید.
خطوط لوله یکپارچه سازی مداوم ممکن است بخشی از دلیل باشد. با این حال، با نگاهی به تجزیه و تحلیل کد ادغام شده در خطوط لوله CI/CD، شاهد رشد بسیار اندکی از ۲۶% به ۲۷% هستیم.
طبق دادههای نظرسنجی ما، نیمی از پاسخدهندگان آنالیز کد را در مرحله کامپایل اجرا میکنند. این یک فرصت از دست رفته است، زیرا نشان داده شده است که اجرای تجزیه و تحلیل کد استاتیک در حلقه “نوشتن کد، تشخیص خطا، رفع خطا” منجر به صرفه جویی در زمان می شود. و ابزارهای امروزی می توانند به نتایج فوق العاده ای دست یابند.
به عنوان مثال، آخرین تجزیه و تحلیل جریان داده در CLion می تواند کد مرده، ارجاعات اشاره گر تهی، نشت حافظه، نشانگرهای آویزان و مشکلات شاخص آرایه را بگیرد. برای کسب اطلاعات بیشتر، مجموعه پست های وبلاگ ما را بخوانید:
- تلاش برای کد C++ بهتر، بخش اول: مبانی تجزیه و تحلیل جریان داده
- تلاش برای کدهای C++ بهتر، بخش دوم: خلاصه عملکرد برای تسریع تجزیه و تحلیل جریان داده
توسعه به کمک هوش مصنوعی در حال حاضر اینجاست
۲۰۲۳ اولین سالی بود که سوالاتی درباره هوش مصنوعی در برنامهنویس پرسیدیم. بررسی اکوسیستم. ما کنجکاو بودیم که بدانیم چه تعداد از توسعه دهندگان در حال حاضر از هوش مصنوعی مولد در کار خود استفاده می کنند و چه وظایف و عملکردهایی را به آن واگذار می کنند. یافته های کلیدی:
- ۸۴% از توسعه دهندگان به هر طریقی با ابزارهای هوش مصنوعی مولد آشنا هستند.
- ۴۳ درصد از توسعه دهندگان در حال برنامه ریزی برای آزمایش ابزارهای هوش مصنوعی در آینده نزدیک هستند. بزرگترین نگرانی امنیت است که توسط ۲۰٪ از پاسخ دهندگان گزارش شده است.
- بیشتر توسعه دهندگان از هوش مصنوعی برای یادگیری چیزهای جدید، ایده پردازی و خلاصه کردن محتوا استفاده می کنند.
توسعه دهندگان نوشتن کد (۷۹%) و درک کد (۴۷%) را به عنوان وقت گیرترین فعالیت های خود ذکر کردند. با تکامل سریع هوش مصنوعی، جای تعجب نیست که در حال حاضر می تواند به توسعه دهندگان در انجام هر دوی این وظایف کمک کند.
برای کاربران JetBrains IDE، JetBrains AI Assistant اکنون موجود است به طور کلی با تعدادی ویژگی جدید و بهبود یافته برای افزایش بهره وری در دسترس است. در CLion، AI Assistant همیشه در حالت آماده به کار است تا کد را توضیح دهد، خطاهای CMake و زمان اجرا را توضیح دهد، اصلاحات مجدد را پیشنهاد کند، مستندات ایجاد کند، پیامهای commit ایجاد کند و به سؤالات در یک چت هوش مصنوعی پاسخ دهد. اقدامات هوش مصنوعی آگاه از پروژه نیز برای ارائه نتایج جامع تر با استفاده از زمینه گسترده در دسترس هستند. میتوانید با اشتراک سرویس هوش مصنوعی JetBrains از دستیار هوش مصنوعی در CLion به عنوان یک افزونه استفاده کنید.
درباره مخاطبان نظرسنجی و روش شناسی
اگر یافتههای C++ در بررسی اکوسیستم توسعهدهنده JetBrains را با یافتههای مقایسه کنید. گزارش سالانه C++ Developer Survey Foundation C++ “Lite”، احتمالاً روندهای مشابهی را در بسیاری از زمینه ها مشاهده خواهید کرد، اما تفاوت های قابل توجهی نیز دارند. یک نکته مهم که باید در نظر داشت این است که مخاطبان نظرسنجی بنیاد C++ به طور متوسط تجربه بسیار بیشتری در C++ دارند.
محققان JetBrains هر سال تمام تلاش خود را برای جمع آوری متنوع ترین داده ها انجام می دهند. ما در تلاشیم:
- پاسخ دهندگان را با تجربه های متفاوت، از دانش آموزان گرفته تا توسعه دهندگان حرفه ای، جذب کنید.
- با ترجمه آن به ۱۰ زبان، نظرسنجی را در مناطق بیشتری در جهان در دسترس قرار دهید.
- از تنوع جغرافیایی با جمع آوری نمونه های به اندازه کافی بزرگ از ۱۷ کشور اطمینان حاصل کنید.
پست های مرتبط
وضعیت اکوسیستم توسعه دهندگان ++C
وضعیت اکوسیستم توسعه دهندگان ++C
وضعیت اکوسیستم توسعه دهندگان ++C