게임 프로그래밍을 위해 C ++와 경쟁


21

C ++이 왜 게임 개발에 인기가 있고 다른 언어가 아닌지 궁금합니다. 나는 당신이 그것으로 매우 빠른 코드를 만들 수 있다는 것을 알고 있지만, 그것을 인기있게 만드는 것은 무엇입니까?

빠르기 때문입니까? OO 패러다임이나 이식성과 같은 언어의 다른 기능입니까? 시간이 지남에 따라 작성된 모든 라이브러리 때문입니까? 아니면 이러한 모든 이유와 다른 이유의 조합?

누군가가 나를 채워 줄 수 있다면 매우 기쁠 것입니다. :-)


7
언어에 대한 모든 사람들의 불만이 실제로 이해가되지 않기 때문에 속도는 나에게 충분한 이유입니다.
Benjamin Lindley

빠른 추측 : 대부분의 게임은 Windows 용으로 작성되었습니다. C 및 C ++ 언어는 Microsoft에서 많은 지원을 받았습니다. 마지막으로 OOP 및 템플릿 메타 프로그래밍 때문에 C ++이 선호됩니다.

@ Matt Thanks, 그것이 존재하는지 몰랐습니다. 주제를 거기로 이동시킬 수 있습니까, 아니면 주제를 삭제하고 다시 작성해야합니까?

이것은 이미 여러 번 요청되었습니다.
Zan Lynx

1
@ Benjamin : 그렇다면 C ++로 충분히 작성하지 않았거나 Python과 같은 표현력이 뛰어난 언어 (또는 LINQ가있는 C #)를 사용한 적이 없습니다. 그러나 어떤 까다로운 이유로 1에서 많은 다른 언어가 할 수있는 일에 20 줄 코드를 작성 하는 것을 선호 하더라도 C ++의 매우 문법이 좋지 않으면 프로그램이 컴파일하는훨씬 오래 걸리고 적절한 IDE 도구 (리팩토링 등)가 필요합니다 불가능하지는 않지만 만드는 것이 더 어렵습니다.
BlueRaja-대니 Pflughoeft

답변:


29

수많은 이유 :

  • 놓친 큰 것 : 휴대용으로 게임 엔진을 iOS, XBOX, PS3 등으로 간단하게 포팅
  • 빠르다
  • 모든 SDK는 기본적으로 지원합니다
  • 많은 도서관 이용 가능
  • 게임을 쓰는 사람은 누구나 알고 있으므로 팀을 위해 숙련 된 게임 개발자를 쉽게 고용 할 수 있습니다.
  • Lua와 같은 게임 엔진 스크립팅 언어를 포함시키는 것은 사소한 일입니다.

알겠습니다, 여러분의 답변에 감사합니다. 제가 생각하는 모든 것을 다 다루었습니다. :-)
KasMA1990

14

@Graham이 제기 한 것 외에도 언급하고 싶은 몇 가지 이유가 있습니다.

  • 레거시 코드-많은 스튜디오에는 많은 C ++ 코드가 있으며 라이브러리에 대해 언급합니다.
  • C ++은 실제로 고급 어셈블러이며 하드웨어에 직접 액세스 할 수 있으며 (최소한 운영 체제에서 실행할 수있는 것처럼) 매우 빠릅니다. 원하는 경우 C ++에서 명령어 레벨 제어를 위해 어셈블리 언어로 직접 드롭 다운 할 수 있습니다 (항상 현명하지는 않지만 Java, C #, Python 등으로는 불가능합니다)
  • DirectX와 OpenGL은 기본적으로 C ++를 지원하며 대부분의 다른 언어는 중간 계층을 통해 기본 라이브러리에 대한 "바인딩"을 가지고 있습니다. 즉, 빠르지 않거나 같은 작업을 많이 수행 할 수는 없지만 소프트웨어 계층을 게임과 하드웨어.
  • @Graham이 언급했듯이 많은 프로그래머가 알고 있으므로 숙련 된 개발자를 쉽게 찾을 수 있으며 .NET Framework에 붙어있는 C # (Mono가 있음)과 비교할 때 이식성이 뛰어납니다. .)

저수준을 의미하지 않습니까?
jhocking

5
C ++는 low-level언어입니다. 그러나 high-level어셈블러, IMO.
Nate

3
동의하지 않습니다. C ++는 고급 언어이며, C (저수준 언어)를 대체 할 수있는 내장 기능이 있습니다.
foo

7
C ++는 C와 마찬가지로 고급 언어입니다. 어셈블리는 수준이 낮습니다. 이제 C #이 C ++보다 높고 Ruby / Python이 C #보다 높은 것처럼 C ++가 C보다 더 높은 수준입니다.
AA Grapsas 2016

4
레거시 코드가 더 이상 사용되지 않아야하는 이유는 무엇입니까? "레거시 코드"는 오래된 것이지 나쁘지 않다는 것을 의미합니다.

8

원시 속도는 주된 이유이지만 실제로 많은 게임 회사가 게임의 일부로 다른 언어를 사용하기 시작하는 것은 하나의 결정이 아닙니다. 특정 작업은 컴퓨터가 가능한 한 빨리 작동해야하지만 (예 : 핵심 렌더링 루틴) 게임 플레이 코드의 많은 작업이 그렇게 빨리 실행될 필요는 없습니다 (예 : 플레이어가 클릭 할 때 문을 열어야 함). 이러한 부분에 대해 훨씬 더 간단한 언어를 사용하는 것이 현명합니다. 그렇기 때문에 많은 게임 엔진이 C ++로 작성되었지만 게임 플레이 코드 작성을 위해 Lua와 같은 스크립팅 언어가 내장되어 있습니다.

이해해야 할 까다로운 점은 프로그래밍 언어를 선택할 때 컴퓨터의 효율성과 프로그래머의 효율성간에 전반적인 상충 관계가 있다는 것입니다. 즉, 컴퓨터가 얼마나 빨리 코드를 실행하거나 프로그래머가 얼마나 빨리 코드를 작성 하는가?


3

C ++에서는 함수 종료 후 사라지는 로컬 변수를 할당 할 수 있습니다. 일반적으로 이들은 스택에 할당됩니다.

스택 변수는 조각화 및 오버 헤드의 동적 메모리 할당 문제에 영향을 미치지 않습니다. 스택에 공간을 할당하는 것은 빠르고 쉽습니다 (포인터를 조정하기 만하면됩니다). 동적 메모리 할당에는 일반적으로 컨테이너에서 적절한 메모리 블록을 검색하여 메모리를 표시 한 다음 점유 된 것으로 태그를 지정합니다. 할당 해제에는 메모리 블록을 컨테이너에 추가하고 기존 블록과 병합 할 수 있습니다. 포인터를 변경하는 것보다 훨씬 많은 오버 헤드가 있습니다.

Java 및 C #은 기본 유형을 제외하고 메모리를 동적으로 할당합니다. 이러한 언어는 런타임 환경에 의존하여 삭제할 변수를 표시 한 다음 가비지 수집기를 임의의 (예약되지 않은) 간격으로 실행하여 메모리를 회수합니다. 일반적으로 프로그래머는 변수가 언제 삭제 대상으로 태그 지정되는지 또는 언제 다시 확보되는지에 대해 제어 할 수 없습니다 (사용 된 메모리 교정은 대부분의 C ++ 및 Java 프로그래머가 경험하지 않는 고급 주제입니다).

C ++의 속도는 주로 실행 코드로 직접 변환되기 때문입니다. Java 및 C #은 중간 코드로 컴파일 된 다음 가상 머신에서 해석됩니다. 일반적으로 해석 언어는 직접 번역 된 언어보다 성능이 느립니다.


1
-1 (가능한 경우)-로컬 프리미티브는 Java 및 C #의 스택에 할당되며 C #에서는 스택 할당을 작성할 수 있습니다 structs. 더 많은 지점으로, 매우 매우 당신이 아닌 속도의 작은 증가는이 그물 거의 다른 통해 하나 개의 언어를 정당화하기에 충분. 실제 이유는 @Graham Perks에 의해 명시되어 있습니다. 이것이 게임 개발자가 알아야 할 것이기 때문에 새로운 게임 개발자가 배우는 것 및 새로운 SDK가 목표로하는 것입니다. 언어만큼 빠르거나 더 빨리, 그리고 (예. 이동)이 많이 있습니다 거의 불편 등을 위해 쓰기로는.
BlueRaja-대니 Pflughoeft

C ++은 스택 할당에 그리 좋지 않습니다. 실제로 스택에 STL 호환 객체를 할당하는 것은 매우 어렵습니다. 예를 들어, 내가 작업 한 마지막 대형 엔진은 C에 있었고, 고정 크기 (보통 1K)로 스택에서 시작할 수있는 문자열이있었습니다. 그것을 넘어 서면 투명하게 힙으로 이동합니다. C ++에서 std :: string 사용자 지정 할당 자로 비슷한 작업을 수행 할 수 있지만 코드가 너무 까다로워집니다.

1
@Joe Wreschnig : C ++은 스택 할당이 뛰어나며 어셈블리 언어 목록 만 덤프합니다. 그러나 대부분의 컴파일러 공급 업체는 스택에 많은 양의 메모리를 할당하지 않습니다. 숙련 된 C ++ 프로그래머에 대한 일반적인 이해는 거대한 객체가 로컬 스토리지 (스택)가 아니라 동적으로 할당 (힙)된다는 것입니다. 스택과 힙이 서로를 향해 성장함에 따라 스택의 거대한 객체가 일부 플랫폼에서 힙으로 오버런 될 수 있습니다.
Thomas Matthews

1
보다 숙련 된 C ++ 프로그래머, 특히 게임 콘솔에 대한 일반적인 이해는 스택을 오버플로하지 않는 모든 것이 스택 할당되거나 사전 할당된다는 것입니다. C는 할당자가 객체의 구조 유형의 일부가 아니기 때문에 이것을 쉽게 만듭니다. 이것은 또한 잘못된 것을 자유롭게 할 수있게하지만, 내 경험상 stdlib 호환 할당 기 구현 / 호환성을 망쳐 놓은 사람과 비교할 때 드문 문제입니다. 새로운 배치와 관련된 몇 가지 트릭도 있지만, C에 해당하는 것보다 더 복잡합니다.

2
C ++의 속도 이점은 할당에 사용자 정의 작성 메모리 관리자를 사용할 수 있기 때문 입니다. 모든 제정신 언어는 스택에 로컬을 할당합니다.
Nevermind

3

게임은 컴파일러가 없었던 이국적인 하드웨어를 가지고 있었기 때문에 기계어로 작성되었습니다. 또한 하드웨어에는 효율적인 16 비트 정수 수학과 같이 C 프로그래머가 당연하게 생각하는 기능이 부족했습니다.

게임이 익숙한 하드웨어에 정착하면 C 컴파일러를 사용할 수있게되었고 단시간에 모든 게임이 C로 작성되었습니다.

C ++은 한 번에 좋은 생각처럼 보였고 오늘날 대부분의 게임은 C ++이지만 엔지니어는 이제 C로 돌아 오는 것에 대해 불평하고 있으며 실제로 일어날 수 있습니다. 저는 C에서 게임을하고 싶어서 많은 동료들과 같이 일하고 싶습니다. 게임을 향상시키는 것으로 생각되는 C ++에는 새로운 기능이 없습니다.

컴퓨터가 몇 년 전보다 1000 배 빨라진 것처럼 보이며, 고급 언어는 개발 시간 ($)을 줄여 C를 쓸모 없게 만듭니다.

게임 구매자는 하드웨어가 1000 배 더 우수하다는 것을 알고 1000 배 더 좋아 보이고 들리는 게임을 위해 돈을 교환하기를 원하기 때문에 이런 일이 발생하지 않았습니다. 이것은 고급 언어가 사용하는 시스템의 여유를 제거합니다.

게임의 성능 요구 사항은 잔인합니다. 새로운 그래픽 프레임은 반드시 33ms (또는 16ms!) 이내에 렌더링되어야합니다. 이 예산이 충족 될 수 있도록 하드웨어가 수행하는 모든 사항을 고려해야합니다. 프로그래머가 이해하지 못하거나 기대하지 않는 하드웨어와 관련이있는 언어는이 예산을 맞추기가 매우 어려워 질 것입니다. 이것은 상위 레벨에 대한 자동 마이너스입니다.

게임 프로그래머는 낮은 수준의 언어로 작업 할뿐만 아니라 높은 수준의 데이터 구조와 알고리즘도 피합니다. 게임에는 일반적으로 연결된 목록이없고 나무가 거의 없습니다. 가능할 때마다 포인터를 피하는 움직임이 있습니다 *. O (N) 시간 또는 O (1) 공간을 초과하는 알고리즘은 널리 사용되지 않는 경향이 있습니다.

* 포인터가 캐시 미스를 유발하지 않는다면 왜 32 비트를 사용하여 저장합니까? 포인터로 인해 캐시 미스가 발생하면 해당 캐시 미스를 제거하는 것이 가장 좋습니다.


1
"게임을 향상시킬 것으로 생각되는 C ++에는 새로운 기능이 없습니다." 롤? OOP? 클래스 human유도체에 playerenemy?
orlp

2
@ nightcracker : 기본 is-a 상속은 C에서 잘 작동합니다. 설명하는 관계는 성능과 청결을 위해 has-a를 사용하여 더 잘 구현됩니다.

3
C ++의 OOP 기능이 게임에 적합하지 않다는 합의가 커지고 있습니다. 이러한 기능은 성능을 캐시하기에 적대적인 가정에 따라 작동하기 때문입니다.
bmcnett

C ++이 C에 비해 이점이 없다고 생각하더라도 C 로의 복귀는 C ++에 비해 이점이 없다는 것을 반드시 인식해야합니다.
Dan Olson

@Dan C 로의 리턴은 템플릿이나 OOP를 사용하지 않는 것과 같은 "모범 사례"가 주니어 프로그래머를 막대기로 쫓지 않고 컴파일 타임 오류에 의해 시행된다는 이점을 제공합니다. 또한 언어가 더 단순하기 때문에 컴파일러와 디버거 유지 관리도 저렴합니다.
bmcnett

3

모든 프로그래밍 언어에는 다양한 요소에 걸쳐 장단점이 있습니다. 이러한 요인의 예는 다음과 같습니다.

  • 특정 플랫폼에서의 속도
  • 특정 플랫폼에서의 메모리 사용량
  • 더 쉽게 노출되는 기능
  • 존재하는 플랫폼
  • 프로그래머가 고려해야 할 사항

게임 프로그래머가 관심을 갖는 가장 중요한 요소 중 하나는 성능입니다. 대화식 경험을 원합니다. 즉, 반응이 좋으며 최대한 유용한 (또는 흥미로운) 데이터를 출력 할 수 있어야합니다. 당신은 언제든지 당신이 얼마나 많은 건강을 알고 싶어하고 그것을 기다리지 않습니다. 그리고 버튼을 클릭하면, 총을 발사하거나 캐릭터가 말할 때 점프 할 것으로 예상됩니다. 약간의 지연은이 상호 작용을 방해 할 수 있으므로 성능이 필요합니다.

또 다른 중요한 요소는 문제의 언어보다는 구현의 언어로 프로그래밍하는 것을 선호하는 것입니다. 게임 프로그래머는 메모리 레지스터 ED0이 아니라 인간, 오크 및 경주 용 자동차를 다루려고합니다. 그들은 여전히 ​​성능이 필요한 경우 구현 세부 사항을 살펴볼 수있는 옵션을 원하지만 대부분의 경우 게임 세계의 엔티티 수준을 처리 할 수 ​​있다면 좋을 것입니다. 그들은 연결된 목록이 어떻게 작동하는지 항상 신경 쓰지 않고 게임 세계를 시뮬레이션하는 것에 대해 걱정할만큼 충분합니다.

C ++은이 두 가지 주요 요소에 매우 적합합니다. 객체의 표현성을 통해 어셈블리 또는 C 코드의 성능 이점을 얻을 수 있습니다. 이것이 왜 게임에 적합한 지 알아 보려면 다른 언어 옵션과 비교하십시오.

  • 조립 : 이것은 원자력입니다. 당신이 쓰는 것은 기본적으로 CPU가하는 일입니다. 그러나 모든 단계에서 레지스터에 무슨 일이 일어나고 있는지와 그 효과를 알아야하며 게임 세계의 실체처럼 보이지 않습니다. 프로그래머는 코드가하는 일과 게임에서 일어나는 일을 정신적으로 일치시켜야합니다. 이것은 상당히 정신적 인 오버 헤드 일 수 있습니다.
  • C : 여기에는 좋은 성능이 있지만 전문가의 경험을 활용하여 표준 작업을 수행 할 수 있습니다 (메모리 할당, 문자열 작업 및 표준 수학 함수 사용). 여기서는 표현력에 가까워 지지만 실제로는 일반 데이터 유형에서만 작동 할 수 있으므로 언어는 구현에 집중해야합니다. 모든 것은 실제로 char, int 등입니다. 구조체, 포인터 및 배열은 사물을 함께 보유 할 수 있지만 여전히 내부에 대해 생각해야합니다.
  • 자바 : 우리는 C ++을 뛰어 넘어 자바에 도달했다. Java는 구현 세부 사항에서 멀어지게합니다. 실제로 대부분의 경우 낮은 수준에 액세스 할 수 없습니다. Java는 크로스 플랫폼이되기 위해 많은 구현 세부 사항 (예 : 사용중인 CPU 또는 OS)을 추상화합니다. 세부 사항이 없기 때문에 세부 사항에 액세스 할 수 없습니다. 컴퓨터를 프로그래밍하지 않고 플랫폼 (대부분의 컴퓨터에 존재하는 Java 플랫폼)을 프로그래밍합니다. 또한 Java는 C ++보다 문제의 언어를 처리하기에 더 좋은 언어를 가지고 있습니다. 단점은 특정 컴퓨터에 대해 최적화 할 수 없다는 것입니다. 이것이 실제적인 차이를 만들지 여부는 프로그램과 컴퓨터의 특성에 달려 있습니다.
  • 게임 스크립팅 언어 : 이것은 UnrealScript 또는 게임 엔진에 부착 된 사용자 지정 스크립팅 언어 와 같은 것을 의미합니다 . 이것들에서 당신은 기본 엔진에 액세스 할 수 없습니다. 성능 고려 사항을 엔진에 위임하면 게임 제작에 대해 걱정할 필요가 없습니다. 게임을 작성하는 것이 더 쉽고 성능을 직접 최적화하기가 더 어렵습니다.
  • 하스켈 (또는 당신의 마음에 드는 모호한 언어) : 어떤 튜링 완전한 프로그래밍 언어가 다른 동일합니다. 따라서 어떤 언어로든 프로그램을 작성할 수 있지만 , 객관적이고 일부 주관적인 타협점을 만듭니다. Haskell과 같은 언어는 수학적 정신으로 일하는 데 더 중점을 둡니다. 그것이 직면 한 문제는 게임에서 직면 한 문제와 다소 다릅니다. 그렇다고 게임에 사용할 수 없거나 사용해서는 안된다는 의미는 아니며, 쉽게 적합하지 않습니다.

마지막 요점은이 중 일부는 역사적이고 정치적인 것입니다. 다른 프로그래밍 언어들 사이에서 많은 화염 전쟁이 벌어졌습니다. 예를 들어 C #은 게임 개발에 적합 할 수도 있지만 C ++ 이후에 나왔습니다. 또는 사람들은 Microsoft의 것이 마음에 들지 않습니다. 어떤 사람들은 C #으로 옮겨 갔지만 그렇지 않은 사람들도있었습니다. 어떤 사람들은 여전히 ​​베이직, 파스칼, C로 게임을 프로그래밍합니다. 게임 프로그래머는 C와 C ++로 자랐기 때문에 대부분 C ++에 익숙해졌으며 요구를 충족했습니다. 만약 컴퓨터 산업이 자바의 성능과 흡수가 충분한 사람들을 만족시키는 상태에 있다면, 아마도 자바는 사실상 표준 게임 개발 언어 일 것이다.


2

레거시와 운동량.

옛날에 타임 코드는 최고의 성능을 위해 어셈블러로 작성되었습니다. 컴퓨팅 성능이 향상됨에 따라 컴파일 된 언어는 더욱 실용화되었으며 C는 매크로 어셈블러에 불과한 매우 기본적인 수준에서 성능과 생산성 사이에서 최상의 절충안을 제공했습니다.

C ++은 C의 후계자 일뿐입니다. 이전 코드 나 지식은 버리지 않고 새로운 방법론으로 확장 할 가능성이 있습니다. C ++은 궁극적으로 매우 유연하며 성능에 대한 거의 완전한 제어를 유지할 수는 있지만 C ++에서는 시뮬레이션 할 수없는 디자인 패러다임을 아직 보지 못했습니다.


2

콘솔 용으로 개발하는 경우 선택의 여지가 없습니다. 전문 SDK는 C ++ 버전으로 만 제공됩니다. 일반적으로 그들은 또한 대부분의 것들에 C 액세스 할 수 있습니다.

많은 개발자가 Consoles + PC이므로 모든 PC 작업을 동일한 언어로 수행하고 기술을 직접 공유하는 것이 좋습니다.

그것이 바로 프로 산업이 살고있는 곳이고 대부분의 사람들이 그 일부가되기를 원하기 때문에 대부분의 게임 프로그래머는 C ++ 프로그래머입니다.

이 모든 것이 발생하기 때문에 대부분의 엔진 개발자는 C ++ 개발자이기도합니다. 따라서 전문가 급 엔진을 평가할 때는 거의 모든 선택이 C ++이됩니다.

그것은 모두 큰 자기 유지 엔진입니다. 이를 중단하려면 기술적 인 발전 이상의 것이 필요합니다.


2

FWIW : C #은 게임 개발에서 인기를 얻고 있습니다. Miguel de Icaza의 블로그 게시물을 참조하십시오 . IMHO.


2
평소와 같이, Miguel은 CNA가 XNA와 같은 업계에서 실제로 큰 역할을 수행하는 방식을 무시하면서 자신이 좋아하는 (보통 한계가있는) 기술을 추진합니다.

2

나는 상당히 C, C 및 C ++에 상당히 중점을두고 있지만, 다른 언어가 거의 없다는 것은 실행중인 플랫폼을 완전히 제어하는 ​​것입니다. 항상 무슨 일이 일어나고 있는지 정확히 알 수 있습니다. GC, 결함 없음.

요즘에는 중요하지 않지만 저전력 플랫폼에 적합 할 수 있습니다.

PC / Mac / Linux에서는 요즘 접할 수있는 언어가 가장 적을 것이며 속도 보너스는 더 이상 큰 차이가 아닙니다 .Minecraft (Java)는 매끄럽고 최소한의 플랫폼 (및 모든 OS)에서 작동합니다 단일 실행 파일로-저 기능이 많고 버그가 적은 저 인력 인디 C / C ++ 앱은 아직 세 가지 플랫폼에서 작동하는 것을 보지 못했습니다.

그래서이 시점에서 나는 그것이 대부분 관성이고 실제 게임은 항상 C / C ++에서 수행된다는 개념에 대해 말하고 싶습니다. 비록 iPhone과 콘솔로 "포팅"하는 능력은 중요합니다. 게임 UI는 Windows와 XBox를 제외하고 많은 노력을 기울입니다).


1
오, 나는 "저전력"플랫폼에서만 중요하다는 것에 대해 몰랐다. 이것을 보는 다른 방법은 모든 플랫폼에서 게임이 항상 성능의 최전선에 있다는 것입니다. 새로운 힘은 즉시 뭉개집니다. 우리가 전문적인 게임 개발에 관해 이야기한다면, 성능은 거의 주요 관심사입니다. 머신이 제공해야 할 마지막주기마다 최대화하지 않고 언리얼을 쓰지 마십시오. 마다; 단일; 주기. 그래픽 엔진 및 디스크 액세스에서 UI 루프까지 모든 수준에서.
Chris Subagio

@Chris : 게임 이외의 프로그래머에게 설명하는 가장 좋은 방법은 게임이 속도가 경쟁 우위의 영역이라는 것입니다. 워드 프로세서가 MS Word가 10 초 걸리는 5 초 안에 시작하거나 Word가 0.2가 걸리는 0.1 초 이내에 리플 로우되는 경우에는 그만한 가치가 없습니다. 그러나 게임에서 10 % 더 많은 조각을 퍼 내거나 더 자세한 캐릭터를 보여줄 수 있다면 경쟁 우위가 될 수 있습니다.

그렇다면 어셈블리 이외의 코드로 작성하는 것이 어리석지 않습니까? 확실히 10 % 이상 빨라질 것입니다. 유지 관리 성과 개발 속도를 위해 성능을 절충해야하는 시점이 있습니다. 일반적으로 요점은 C ++입니다. Minecraft와 같이 크로스 플랫폼으로 이동할 수있는 기능이 더 중요하다면 좋을 것입니다.
Bill K

아, 그러나 어셈블리 코딩이 빠르다는 것은 잘못된 일이다. 현재의 칩은 프로그래머가 컴파일러를 일관되게 능가하는 것이 어려울 정도로 복잡하다. PS3의 SPU와 같이보다 제한된 영역에서만 GPU의 내부 물리 루프 및 셰이더가 여전히 확실한 이점이 있습니다. C ++는 현재 OOP가 항상 최선의 선택이 아니라는 점에주의를 기울이는 것이 현명합니다. 진행중인 Struct of Arrays와 Array of Structs 토론은 정확히 언어 토론은 아니지만 C ++은 AoS를 자연스럽게 이끌어줍니다. 때때로 ... 당신은 정말로 C를 원합니다.
Chris Subagio

어셈블러와 C / C ++ 간의 프로그래머 효율성 단계는 C와 C ++ 또는 C ++와 C # / Java 간의 프로그래머 효율성 단계보다 훨씬 더 높습니다. Fred Brooks는 25 년 전에 이것을 지적했습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.