2023년 C++ 에코시스템: C++20의 성장, Clang 기반 도구의 채택 확대, 개발자의 신뢰를 얻고 있는 AI
참고: 이 글은 Anastasia Kazakova가 작성한 글을 번역한 것으로 아래의 글에서 저자를 지칭하는 말은 원문 작성자인 Anastasia Kazakova를 뜻합니다.
JetBrains는 매년 개발자 커뮤니티의 현황을 파악하기 위해 개발자 에코시스템 설문조사를 실시합니다. 그리고 드디어 올해 결과가 나왔습니다! 2023년 가장 큰 트렌드 중 하나는 소프트웨어 개발자들 사이에서 AI 사용이 폭넓게 수용되고 있다는 것입니다. 이들 중 무려 77%가 다양한 업무 관련 작업에 ChatGPT를 사용하는 것으로 나타났습니다. 프로그래밍 언어 측면에서 Objective-C는 수명이 다해가고 있으며 Rust는 올해 새로운 인기 기록을 세웠으며 C++와 C는 언어 순위에서 각각 8위와 10위를 차지했습니다. 보고서에 더 많은 인사이트가 있으니 자세히 살펴보겠습니다! 2023년에는 전 세계 34,493명의 소프트웨어 개발자가 조사에 참여했습니다. 이들 중 2,627명이 C++를 3대 주요 언어 중 하나로 꼽았습니다. 귀중한 인사이트를 도출하기 위해 원시 데이터를 면밀히 조사했으며, 결과를 여러분과 공유하고자 합니다. 또한 언어 위원회를 대표하는 유명한 전문가와 C++ 발전에 중요한 역할을 하는 기업을 포함하여 여러 커뮤니티 구성원에게 의견을 제시해 줄 것을 요청했습니다. 당사 데이터와 결과에 소중한 의견을 제시해주신 분들께 감사드립니다.
- Inbal Levi, MPGC Services Ltd(Millennium) 수석 소프트웨어 엔지니어, WG21 위원회 회원
- Bryce Adelstein Lelbach, NVIDIA 수석 아키텍트
- Diego Rodriguez-Losada Gonzalez, Conan 팀인 JFrog의 수석 아키텍트
C++ 표준: 기본 파생 언어인 C++20
C++11 및 C++14의 하향 추세가 계속되고 있으며 사람들이 C++20 및 C++23으로 마이그레이션함에 따라 C++17은 미미한 성장만 보여주고 있습니다. 내년에는 C++20과 C++23의 합산 점유율이 C++17을 넘어서는 것이 현실적으로 나타날 수 있습니다. 이러한 추세를 이끄는 원동력 중 하나는 C++ 컨퍼런스에서 C++20 및 C++23에 대해 논의하려는 경향이 있다는 것입니다.
새로운 C++ 표준을 채택하는 데 있어서는 게임 개발 업계가 앞서가는 것 같습니다. 객체 직렬화 알고리즘에 대한 중요성이 높다는 점에서 게임 개발자가 가장 애타게 기다려온 언어 기능 중 하나인 리플렉션이 언어에 추가된다면 이러한 추세가 한층 더 우세해질 가능성이 높습니다. 그런데, Unreal Engine이 매크로를 통해 리플렉션을 에뮬레이션 처리한다는 사실을 알고 계셨나요?
또한 최근 언어 표준을 되돌아보고 출시 첫 해와 1년 후의 채택률을 비교했습니다.
- C++17은 2017년 12%로 시작하여 2018년 18%에 도달했습니다.
- C++20은 2020년 12%로 시작하여 2021년 18%에 도달했습니다.
- C++23은 올해 10%로 시작했으므로 이제 모든 관건은 2024년 어느 정도 점유율에 다다를지에 달려 있습니다.
새로운 표준으로 마이그레이션할 계획이 없는 사람들의 비율은 약 50%에 달하며, 여전히 C++98/C++03을 사용하는 사람들이 가장 높은 수치(57%)를 보였습니다. 이 현상은 새로운 것이 아니며, 특히 일부 임베디드 프로젝트에서 이전 컴파일러 버전을 사용해야 하는 필요성과 관련이 깊습니다.
C++를 넘어
재미있는 사실: 작년에 저는 Python이 C++ 다음으로 C++ 개발자에게 최고의 동반자임을 밝혀 Jason Turner를 놀라게 했습니다. 2023년에도 Python은 여전히 C보다 확실한 우위를 점하고 있습니다.
제가 C++ 개발자여서 알고 있지만, Python은 프로젝트 모델 래핑에도 널리 사용되었으며, 많은 게임 개발 스튜디오가 여전히 Python으로 .sln 파일을 처리하고 있습니다.
Rust와 관련해서는 현재 JetBrains RustRover 팀과 함께 조사 중인 흥미로운 질문이 있습니다. 바로 현재 얼마나 많은 Rust 프로젝트에서 C++가 활용되고 있는지, 또 그 반대의 경우는 어떤지에 관한 것입니다. 대부분의 설문조사와 GitHub 검사에서는 5%~10%를 넘지 않는 것으로 나타났지만, Google과 같은 대기업들은 보안과 안전상의 이유로 거대 코드 기반의 일부를 Rust로 마이그레이션하는 것으로 알려져 있습니다. 이에 대한 여러분의 생각은 어떤가요?
C++ 도구: 경쟁 구도는 그대로
C++용으로 선택되는 IDE와 에디터
대부분의 C++ 개발자는 몇 안 되는 동일한 IDE와 에디터만 사용하는 것으로 보입니다.
완전한 기능을 갖춘 IDE로, CLion과 Visual Studio가 시장에서 비슷한 위치를 차지하고 있으며 Visual Studio Code는 스마트 에디터로 이들과 경쟁하고 있습니다. JetBrains도 발전을 이루고 사용자에게 최고의 경험을 제공하기 위한 이러한 경쟁에 합류하게 되어 기쁩니다. (그런데, Android Studio가 CLion의 C++ 지원을 사용한다는 사실을 알고 계셨나요? Android Studio만의 독점적 구성 요소가 당사의 소스 코드를 기반으로 합니다.)
타사 라이브러리 관리
35년의 역사에도 불구하고 타사 라이브러리를 관리하는 일은 C++에서 가장 큰 과제 중 하나입니다. C++ Foundation 연례 C++ 개발자 설문조사 ‘Lite’에서는 이 문제가 1위를 차지했으며 응답자의 47%가 “주된 고충”으로 꼽았습니다. 이는 C++ 라이브러리를 정의하기 어렵고 사전 빌드된 형식으로 사용하는 것이 까다롭다는 사실에서 비롯됩니다. 하지만 아직 희망은 있습니다! CppCon 2023에서 CMake의 Bill Hoffman과 Bloomberg의 Bret Brown은 C++에서 종속성 관리의 초기 표준으로, 사전 빌드된 라이브러리를 설명하는 메타데이터 파일에 대해 이야기했습니다. 이들의 Libraries: A First Step Toward Standard C++ Dependency Management(라이브러리: 표준 C++ 종속성 관리를 향한 첫걸음) 대담은 지금 바로 YouTube에서 시청할 수 있습니다.
2023년 개발자 에코시스템 설문조사에 따르면 소스에서 라이브러리를 구축하는 사람의 수가 더 적어진 것으로 나타났습니다.
프로젝트 모델 및 빌드 시스템
CMake는 (작년 이후 약간 하락하기는 했지만) 여전히 상위권을 유지한 반면, msbuild와 Makefiles는 계속해서 하락세를 보이고 있습니다.
Bryce가 예측한 대로 Ninja는 성장하고 있습니다. C++ Foundation 연례 C++ 개발자 설문조사 ‘Lite’의 데이터를 보면 성장세는 더욱 큽니다.
이 이유는 C++ Foundation 설문조사의 경우 응답자에게 더 자주 “해당하는 항목을 모두 선택”할 수 있게 했다는 사실로 설명될 수 있습니다. 또한, 빌드 도구에 초점을 맞춘 질문이 더 많고 Ninja를 선택한 응답자 중 일부는 이를 프로젝트 모델이 아닌 빌드 도구로 사용하고 있을 것입니다.
안전하고 깔끔한 C++ 코드
코드 분석 도구는 안전하고 깔끔한 C++ 코드를 작성하는 데 도움을 줍니다. 커뮤니티에서 가장 인기 있는 도구는 무엇일까요?
Clang 기반 도구의 인기가 높아지고 있는 것은 놀랄 일이 아닙니다.
코드 분석을 전혀 사용하지 않는 사람들의 비율은 30%로 같은 수준에 머물고 있는 반면, IDE에 번들로 포함된 코드 분석을 사용하는 사람들의 비율은 떨어졌습니다. 이유가 무엇일까요?
CI 파이프라인이 이유의 일부일 수 있습니다. 하지만 CI/CD 파이프라인에 통합된 코드 분석을 살펴보면 증가세가 26%에서 27%로 미미한 것으로 나타났습니다.
설문조사 데이터에 따르면 응답자의 절반이 컴파일링 단계에서 코드 분석을 실행합니다. 그러나 ‘코드 작성, 오류 발견, 오류 수정’ 루프에서 정적 코드 분석을 실행하면 상당한 시간이 절약되는 것으로 확인되므로 이는 기회비용의 손실입니다. 그리고 요즘 도구들은 환상적인 결과를 제공할 수 있습니다! 예를 들어, CLion의 최신 데이터 흐름 분석 기능은 불필요한 코드, null 포인터 역참조, 메모리 누수, 허상 포인터, 배열 인덱스 문제를 잡아낼 수 있습니다. 자세한 내용은 블로그 게시물 시리즈를 읽어보세요.
AI는 이미 우리 곁에 와있습니다!
2023년은 개발자 에코시스템 설문조사에서 AI에 관해 질문한 첫해였습니다. 저희는 얼마나 많은 개발자들이 업무에 이미 AI를 채택하고 있는지, 그리고 어떤 작업과 기능을 AI에 맡기고 있는지 매우 궁금했습니다. 발견한 주요 사실은 다음과 같습니다.
- 개발자의 84%는 어떤 방식으로든 생성형 AI 도구에 익숙합니다.
- 개발자의 43%는 가까운 미래에 AI 도구를 사용해 볼 계획이 있습니다. 가장 큰 우려 사항은 보안이었으며, 응답자의 20%가 그렇게 답했습니다.
- 대부분의 개발자는 새로운 것을 배우고, 브레인스토밍으로 아이디어를 얻고, 콘텐츠를 요약하는 데 AI를 사용합니다.
개발자들은 가장 시간이 많이 걸리는 활동으로 코드 작성(79%로 1위)과 코드 이해(47%로 2위)를 들었습니다. AI의 빠른 발전을 생각하면 AI가 이미 이 두 작업 모두에서 개발자에게 도움을 줄 수 있다는 것은 놀랄 일이 아닙니다.
JetBrains AI Assistant가 이제 JetBrains IDE에서 생산성을 높일 수 있는 여러 가지 새롭고 향상된 기능을 포함해 정식 출시되었습니다. CLion에서는 필요 시 AI Assistant가 언제든지 코드, CMake 및 런타임 오류를 설명해주고, 리팩터링을 제안하며, 문서와 커밋 메시지를 생성하고, 컨텍스트를 인식하는 AI 채팅에서 질문에 답합니다. 확장된 컨텍스트를 사용하여 보다 포괄적인 결과를 제공하는 프로젝트 인식 AI 액션도 사용할 수 있습니다.JetBrains AI Service 구독을 통해 CLion에서 AI Assistant를 추가 기능으로 이용해 보세요.
조사 대상 및 조사 방법에 관하여
JetBrains 개발자 에코시스템 설문조사의 C++ 결과를 C++ Foundation 연례 C++ 개발자 설문조사 ‘Lite’의 결과와 비교해 보면 여러 영역에서 유사한 추세를 발견할 수 있지만 몇 가지 중요한 차이점도 확인할 수 있습니다. 염두에 두어야 할 한 가지 중요한 사실은 C++ Foundation 설문조사 대상이 평균적으로 C++ 경험이 훨씬 더 많다는 것입니다.
JetBrains 연구원들은 다음을 포함하여 최대한 다양한 데이터를 수집하기 위해 매년 최선을 다하고 있습니다.
- 학생부터 전문 개발자까지 다양한 경험을 가진 응답자 모집
- 설문조사를 10개 언어로 번역하여 전 세계 더 많은 지역에 접근
- 17개국에서 충분히 큰 표본을 수집하여 지리적 다양성 보장
JetBrains의 설문조사 방법에 관한 정보는 설문조사 전용 섹션에서 알아볼 수 있습니다. 또한, 관심 있는 사람이면 누구나 보고서를 확인하거나 보고서에서 자신만의 인사이트를 도출할 수 있도록 설문조사의 익명화된 원시 데이터를 곧 게시할 예정입니다.
마지막으로, 유사한 설문조사를 진행하거나 커뮤니티에서 데이터 수집을 시작하고 싶다면 CppCon 2023에서 제가 진행한 강연인 Surveying the Community: What Could Possibly Go Wrong(커뮤니티 설문조사: 잘못된 결과를 도출하는 요인)을 시청해 보세요. 이 강연에서는 브랜딩, 타기팅 및 샘플링 편향을 없애는 방법을 포함하여 설문조사의 방법적 측면을 자세히 살펴보고, 적절하게 던져진 질문이 C++의 현실적 데이터를 어떻게 바꿀 수 있는지 알아봅니다.
여기서 논의한 데이터에 대해 질문이 있거나 최신 C++ 커뮤니티 동향에 대한 의견이 있으신가요? 그렇다면 댓글로 공유해주세요! 언제나 여러분의 생각을 환영합니다!