C++

공유하기:

이 질문은 사용하는 기본 프로그래밍 언어 3개 중 하나로 C++를 선택한 개발자에게만 표시되었습니다.

어떤 C++ 표준을 주로 사용하시나요?

8%

C++98 / C++03

31%

C++11

25%

C++14

41%

C++17

23%

C++20

14%

잘 모르겠음

12%

C++98 / C++03

33%

C++11

24%

C++14

41%

C++17

23%

C++20

12%

잘 모르겠음

9%

C++98 / C++03

31%

C++11

24%

C++14

45%

C++17

25%

C++20

12%

잘 모르겠음

꾸준히 마이그레이션이 진행되고 있어 다행입니다. 특히 게임 개발자 사이에서 C++20이 사용되는 것은 좋은 소식이며, 앞으로 모든 게임 플랫폼에서 지원되길 기대합니다. 공급업체가 구현하기엔 쉽지 않을 테지만, 콘셉트와 범위만으로도 가치가 있다고 확신합니다.

Guy Davidson

Creative Assembly 엔지니어링 관행 책임자

C++20 채택률은 매우 놀라운 수준입니다. 명백한 변화가 있으며, 새로운 표준은 이전보다 훨씬 더 빠르게 채택되고 있습니다.

Jason Turner

C++ 강사, 연사, 저자, 유튜버

대다수 사용자가 지난 5년간 출시된 릴리스를 사용하고 있어 다행입니다. 또한 C++11 이전 릴리스 사용 비율이 10% 아래로 감소한 것도 바람직합니다. 앞으로 몇 년 후면 이러한 유형의 설문조사에 해당 선택지가 포함되지 않을 겁니다

Titus Winters

Google 수석 엔지니어

C++ 표준 마이그레이션

42%

아니요. 다른 C++ 표준으로 바꿀 계획이 없습니다

15%

C++11로

11%

C++14로

18%

C++17로

16%

C++20으로

45%

아니요. 다른 C++ 표준으로 바꿀 계획이 없습니다

9%

C++14로

20%

C++17로

26%

C++20으로

41%

아니요. 다른 C++ 표준으로 바꿀 계획이 없습니다

30%

C++17로

29%

C++20으로

47%

아니요. 다른 C++ 표준으로 바꿀 계획이 없습니다

53%

C++20으로

표준 타임라인 전체에 사용자가 분산되어 있다는 점을 항상 기억하세요. 이와 같은 설문조사의 결과를 통해 최신 표준뿐 아니라 모든 곳에서 작동하는 코드를 작성해야 한다는 것을 알 수 있습니다.

Guy Davidson

Creative Assembly 엔지니어링 관행 책임자

아직 C++20 교육을 요청하는 회사가 많지 않다는 점을 고려할 때 매우 놀라운 결과입니다. C++17로의 마이그레이션도 행운이라고 생각하는 사용자가 여전히 많습니다.

Jason Turner

C++ 강사, 연사, 저자, 유튜버

현재 프로젝트에서 향후 12개월 이내에 다음의 C++20 기능 중 어느 것이든 사용할 계획이 있으신가요?

48%

콘셉트

43%

모듈

32%

코루틴

3%

기타

29%

없음

56%

콘셉트

46%

모듈

30%

코루틴

2%

기타

28%

없음

53%

콘셉트

53%

모듈

42%

코루틴

1%

기타

23%

없음

[Modules] 기능은 아직 개발이 더 필요한 것 같지만, 제 의견이 잘못된 것으로 판명되길 기대합니다.

Guy Davidson

Creative Assembly 엔지니어링 관행 책임자

향후 12개월 이내에 모듈을 쉽게 사용할 수 있도록 툴링이 개선되기를 바랍니다!

Jason Turner

C++ 강사, 연사, 저자, 유튜버

C++ 개발에 어떤 IDE/에디터를 가장 많이 사용하시나요?

28%

Visual Studio

28%

Visual Studio Code

24%

CLion

5%

Vi/Vim

3%

QtCreator

2%

Xcode

1%

Android Studio

23%

Visual Studio

33%

Visual Studio Code

25%

CLion

3%

Vi/Vim

3%

QtCreator

1%

Xcode

2%

Android Studio

43%

Visual Studio

17%

Visual Studio Code

18%

CLion

3%

Vi/Vim

2%

QtCreator

2%

Xcode

1%

Emacs

JetBrains는 C++ 코드 작성과 관련된 전형적인 문제를 피할 수 있도록 다양한 C++ IDE를 갖추고 있습니다. 크로스 플랫폼 및 임베디드 개발을 위한 CLion, Visual Studio 사용자를 위한 ReSharper C++ 및 Unreal Engine 및 C++ 게임 개발자를 위한 Rider가 그 예입니다.

어떤 유닛 테스트 프레임워크를 주로 사용하시나요?

35%

Google Test

26%

C++에 대한 유닛 테스트를 작성하지 않습니다

17%

유닛 테스트를 작성하지만 프레임워크를 사용하지 않습니다

12%

Catch

9%

CppUnit

7%

Boost.Test

3%

CppUTest

3%

doctest

4%

기타

34%

Google Test

17%

C++에 대한 유닛 테스트를 작성하지 않습니다

21%

유닛 테스트를 작성하지만 프레임워크를 사용하지 않습니다

14%

Catch

14%

CppUnit

7%

Boost.Test

5%

CppUTest

3%

doctest

4%

기타

21%

Google Test

27%

C++에 대한 유닛 테스트를 작성하지 않습니다

21%

유닛 테스트를 작성하지만 프레임워크를 사용하지 않습니다

17%

Catch

11%

CppUnit

7%

Boost.Test

3%

CppUTest

4%

doctest

6%

기타

엔지니어는 코드를 테스트하는 것보다 코드 작성을 훨씬 선호하며, 테스트 작성 소요 시간을 실제 장기적 이점보다 중요하게 생각합니다.

Guy Davidson

Creative Assembly 엔지니어링 관행 책임자

개발자의 4분의 1이 유닛 테스트를 작성하지 않는다는 통계는 충격적입니다. 유닛 테스트의 작성 방식이나 사용되는 프레임워크에는 개인차가 있을 수 있다고 생각하지만, 테스트는 모두 작성해야 합니다.

Titus Winters

Google 수석 엔지니어

타사 C++ 라이브러리를 어떻게 관리하시나요?

25%

라이브러리 소스 코드가 빌드에 포함되어 있음

24%

해당 라이브러리의 지침을 사용하여 라이브러리 코드를 별도로 컴파일

21%

시스템 패키지 관리자를 사용합니다

18%

사전 빌드된 라이브러리를 인터넷에서 다운로드합니다

14%

위에서 해당하는 항목 없음. 종속성이 전혀 없음

8%

vcpkg

6%

Conan

6%

Nuget

1%

build2

1%

Hunter

5%

기타

28%

라이브러리 소스 코드가 빌드에 포함되어 있음

26%

해당 라이브러리의 지침을 사용하여 라이브러리 코드를 별도로 컴파일

24%

시스템 패키지 관리자를 사용합니다

21%

사전 빌드된 라이브러리를 인터넷에서 다운로드합니다

9%

위에서 해당하는 항목 없음. 종속성이 전혀 없음

4%

vcpkg

5%

Conan

7%

Nuget

1%

build2

7%

기타

34%

라이브러리 소스 코드가 빌드에 포함되어 있음

25%

해당 라이브러리의 지침을 사용하여 라이브러리 코드를 별도로 컴파일

17%

시스템 패키지 관리자를 사용합니다

27%

사전 빌드된 라이브러리를 인터넷에서 다운로드합니다

12%

위에서 해당하는 항목 없음. 종속성이 전혀 없음

8%

vcpkg

4%

Conan

7%

Nuget

2%

build2

5%

기타

이 결과에는 타사 사용을 위해 C++ 코드를 패키징하는 현재 상황이 반영되었습니다. 저는 문제가 해결되기를 바라지만, 해결될 것이라는 낙관적 전망은 없습니다.

Guy Davidson

Creative Assembly 엔지니어링 관행 책임자

종속성 관리 및 패키지 관리 현황은 안타깝기 그지없습니다. 복제 가능한 빌드와 명확한 종속성 체인은 정말 중요합니다. 현재로서는 '어쩌다 보니 작동하는' 경우가 너무 많습니다.

Titus Winters

Google 수석 엔지니어

어떤 프로젝트 모델 또는 빌드 시스템을 주로 사용하시나요?

57%

CMake

33%

Makefile

33%

Visual Studio 프로젝트

11%

Ninja

9%

Gradle

7%

Xcode 프로젝트

6%

자체 제작 빌드 시스템

4%

Qmake

3%

Bazel

2%

Autotools

63%

CMake

43%

Makefile

29%

Visual Studio 프로젝트

15%

Ninja

12%

Gradle

4%

Xcode 프로젝트

4%

자체 제작 빌드 시스템

6%

Qmake

2%

Bazel

3%

Autotools

54%

CMake

33%

Makefile

49%

Visual Studio 프로젝트

8%

Ninja

10%

Gradle

9%

Xcode 프로젝트

8%

자체 제작 빌드 시스템

3%

Qmake

3%

Bazel

3%

Autotools

C++ 엔지니어에겐 CMake가 스톡홀름 신드롬과 같다고 말한 적이 있습니다. 개인적 선호와 무관하게 CMake는 사실상 표준으로 자리 잡았습니다. 즉, 경쟁 제품에 비해 확실한 우위를 점한 것입니다.

Guy Davidson

Creative Assembly 엔지니어링 관행 책임자

어떤 컴파일러를 주로 사용하시나요?

67%

GCC

36%

Clang

32%

MSVC

12%

Clang-cl

11%

Intel

7%

마이크로컨트롤러용 컴파일러

6%

IntelLLVM

3%

자체 제작

2%

기타

CLion에서는 GCC 기반, Clang, MSVC 및 IAR 컴파일러를 사용할 수 있습니다. 드문 경우 혹은 맞춤 설정이 필요한 경우 컴파일러 기능을 통해 CLion에서 임의의 컴파일러를 사용할 수도 있습니다.

프로젝트에서 C++와 함께 사용하는 다른 프로그래밍 언어는 무엇인가요?

44%

Python

30%

C

19%

셸 스크립트 언어

15%

Java

12%

SQL

11%

JavaScript

11%

C#

9%

HTML / CSS

5%

Assembly

5%

Go

AI 및 ML을 위한 프로그래밍 언어로서 Python의 유비쿼터스 특성을 고려할 때 당연한 결과입니다. numpy, pandas와 같은 우수한 라이브러리가 있으므로 Python은 더욱 선호됩니다. 표준 라이브러리에 아날로그가 필요하거나, 패키지 처리 문제를 해결해야 할 수도 있습니다.

Guy Davidson

Creative Assembly 엔지니어링 관행 책임자

다음 도구 중에서 귀하 또는 귀하의 팀이 가이드라인을 적용하거나 기타 코드 품질/분석을 위하여 사용하는 것은 무엇인가요?

37%

IDE에서 제공된 도구

24%

Clang-tidy

21%

ClangFormat

17%

Clang-analyzer/Clang Static Analyzer

10%

Cppcheck

7%

Cpplint

6%

SonarLint/SonarQube/SonarCloud

4%

Coverity

2%

PVS-Studio

2%

Parasoft C/C++test

정적 분석을 기피하는 응답자가 30%에 불과하므로, 오픈소스 코드의 안전 및 보안이 점차 개선될 것이라 확신합니다.

Guy Davidson

Creative Assembly 엔지니어링 관행 책임자

귀하 또는 귀하의 팀은 코드 분석을 어떻게 실행하시나요?

48%

필요한 컴파일러 검사를 활성화하여 컴파일할 때 수행함

26%

CI/CD 파이프라인에 통합되어 있음

24%

코드 분석을 수행하지 않음

20%

동적 분석을 사용

17%

개발자의 컴퓨터에서 실행되는 타사의 정적 코드 분석기를 통해

1%

기타

C++ 프로젝트 빌드 시간 최적화를 위해 어떤 도구나 기술을 사용하시나요?

42%

헤더 포함 요소 및 종속성 최적화

30%

사전 컴파일된 헤더

22%

소스 파일의 컴파일 병렬화

17%

컴파일러 캐시

15%

모듈

12%

증분 연결

5%

Unity 빌드

이 경우에는 작은 것이 더 좋습니다. 내년에는 사전 컴파일된 헤더, 모듈 및 Unity빌드가 어떻게 상호작용하는지 보고 싶습니다.

Guy Davidson

Creative Assembly 엔지니어링 관행 책임자

읽어주셔서 감사합니다!

이 보고서가 여러분에게 도움이 되었길 바랍니다. 이 보고서를 친구와 동료에게 공유하세요.

질문이나 제안이 있으면 surveys@jetbrains.com으로 연락해 주세요.