2009-06-10 8 views
16

나는 간단한 2 차원 게임을 만들려고 생각하고 있지만 아직 언어를 선택하지 않았습니다. 많은 사람들이 SDL과 함께 C++ 또는 파이 게임과 함께 파이썬을 추천합니다. 나는 C++의 개발이 상당히 느리고, 파이썬의 개발 시간이 상당히 빠르다는 사실을 계속 듣고있다.C++ 속도가 느림, 파이썬이 빠름? (개발 시간면에서)

어쨌든 누구든지이 문제에 대해 자세히 설명 할 수 있습니까? 정확히 C++로 개발할 때 시간이 오래 걸립니다. 제가 작성한 프로그램은 프로젝트 오일러 스타일이었습니다. 프로젝트는 매우 짧고 수학적 이었기 때문에 더 큰 프로젝트에서 경험이 없었습니다.

+0

간단한 메모 - 파이 게임은 SDL 프레임 워크 위에 구축되었습니다. Python에 대한 다른 유명한 라이브러리는 www.pyglet.org에서 확인하실 수 있습니다. – Josip

답변

1

C++에서는 더 많은 저수준 작업을 처리해야하기 때문에 시간이 오래 걸립니다. 파이썬에서는 메모리 관리 등을 다루지 않고 실제 게임 개발에 집중할 수 있습니다.

1

C++을 개발하는 데는 많은 일들이 있습니다. 하위 레벨에는 포인터, 다른 라이브러리 시스템, 타입 시스템 등이 있습니다. 다른 것들은 제가 실종되었다고 확신합니다.

+0

하위 레벨의 내용과 원시 포인터를 건너 뛸 수 있습니다. 메모리 관리가 훨씬 쉬워졌습니다. 하나의 시스템을 고수하거나 크로스 플랫폼 라이브러리를 사용할 수 있습니다. 물론, 타입 시스템을 피할 수는 없으며, 전체적으로 C++은 파이썬보다 약합니다. 그러나 일부 사람들이 생각하는 것만 큼 나쁘지 않습니다. –

9

C++ 이전에 이러한 불만 사항을 들었지만 사실은 익숙하지 않은 언어로 프로그래밍하는 데 많은 시간이 걸립니다.

나는 훌륭한 C++ 프로그래머가 괜찮은 파이썬 프로그래머와 비자의 경우보다 훨씬 빨리 응용 프로그램을 만들 수 있습니다.

C++은 포인터, 메모리 관리 등 훨씬 낮은 레벨을 얻을 수 있기 때문에 종종 나쁜 지시를받는다고 생각합니다. 그런 것들을 생각하는 데 익숙하지 않다면, 약간의 시간이 걸릴 수 있습니다. 당신이 그 환경에서 일하는 데 익숙하다면, 그것은 제 2의 천성이 될 수 있습니다.

언어 선택이 귀하의 회사, 팀, 고객 등에 의해 부과 된 것이 아닌 한, 나는 사람들이 가장 익숙하거나 더 많은 것을 배우기에 가장 관심이있는 언어를 사용하는 것이 좋습니다. 속도와 관련된 문제라면 각 언어 및 과거 경험에 대한 학습 곡선을 살펴보십시오. C++는 학습 곡선이 커지는 경향이 있지만 사람에 따라 다릅니다.

답변이 없으면 알고 있습니다.

+4

메모리 관리가 부족한 C#이나 Java 및 많은 스크립팅 언어에서 가장 큰 생산성 향상은 표준 클래스 라이브러리입니다. 언어 자체는 그다지 다르지 않지만 표준 라이브러리의 기능은 밤낮으로 이루어집니다. 이전 C++ 프로그래머의 경우 C#으로 작업 할 때 대부분의 응용 프로그램에서 평균 2 ~ 3 배의 생산성 향상을 보았습니다. 물론, YMMV. 또한 사과와 사과를 비교할 때 (좋은 C++ 프로그래머와 훌륭한 Python 프로그래머) 대부분의 경우 Python 개발자는 C++ 프로그래머를 완료 속도로 빠져 나갈 것입니다. – Serapth

+1

언어 친숙성에 대한 초기 사항은 유효하지만 개발자의 생산성에 직접적인 영향을주는 근본적인 언어 차이가 있습니다. 이는 인식하지 못하거나 해결할 수 없습니다. –

+4

@Serapth : C++ 회사에서 일하면서 제작 속도를 높이기 위해 많은 비표준 라이브러리를 보유하고 있습니다. 사과 비교를위한 사과를 원한다면 Python 개발자와 C++ 개발자를 적절한 라이브러리 세트와 비교해보십시오. 나는 도서관이 문제와 가장 가깝게 일치하는 도서관이 될 것이 더 빠를 것이라고 기대한다. 우리 도서관은 우리 지역에 매우 잘 어울리므로 MMDV (나의 마일리지는 다양합니다). – Patrick

23

C++과 Python 사이에는 게임을 포함한 프로젝트 개발에 영향을주는 두 가지 사항이 있습니다. 언어 자체와 도서관이 있습니다. 필자는 SDL과 어느 정도는 놀았으며 PyGame을 엿 보았고 특정 인스턴스에 대해 라이브러리가 많은 요소가 될 것이라고 생각하지 않습니다. 그래서 나는 언어 자체에 초점을 맞출 것이다.

파이썬은 동적 유형의 가비지 수집 언어입니다. C++은 정적 형식의 가비지 수집 언어입니다. 이것이 의미하는 바는 C++에서 많은 개발 시간이 메모리를 관리하고 유형 구조를 다루는 데 소비된다는 것입니다. 이것은 당신에게 많은 권력을 제공하지만, 질문은 당신이 정말로 그것을 필요로 하는가?

일부 기본 그래픽과 좋은 게임 플레이로 간단한 게임을 쓰고 싶다면 C++이 제공 할 모든 힘이 정말로 필요하다고 생각하지 않습니다. 만약 엔벨로프를 밀고, 다음 A-list 게임을하고, 다음 MMO가되고, 콘솔이나 핸드 헬드 장치에 맞도록 무언가를 쓰려고한다면, C++이 제공하는 힘이 필요할 것입니다.

+0

플러스 저는 오늘날 대부분의 콘솔 게임이 C++ (매우 효율적인) 엔진으로 개발되었지만 게임의 고기 (문자, 이벤트 등)가 스크립팅 된 것을 들었습니다. 사실입니까? –

+0

나는 "대부분의 게임"에 대해 말할 수는 없지만 데스크탑 게임의 경우, 말하는 것이 정확하다는 것을 이해합니다. 콘솔 게임의 경우에는 그렇지 않다고 생각합니다. 오늘날의 괴물 콘솔에서도 파이썬이나 루아와 같은 인터프리터 언어의 오버 헤드는 너무 비싸서 A-list 게임에는 적합하지 않습니다. 이제는 이러한 항목, 문자 등이 원시 코드보다 높은 수준의 도구에서 빌드 된 다음 이진 객체 모델로 컴파일되면 ... 그렇습니다. – Lee

+0

@Lee : (나는 매우 늦은 것을 알고있다.) 나는 Python이 콘솔에서 사용되는 것을 의심한다. 그러나 나는 Lua가 사용되는 것을 의심하지 않는다. 그것은 매우 빠르고, 메모리 사용량이 매우 적습니다. – orlp

0

언어를 고르는 것보다 게임을 만들기위한 프레임 워크를 선택하는 데 더 집중할 것입니다. 게임의 안과 밖 작동 방식을 배우는 것이 목표가 아니라면 프레임 워크를 사용하려고 할 것입니다. 한 쌍을 시험해보고, 당신의 요구 사항을 충족시키고 당신에게 좋은 느낌을주는 것을 선택하십시오.당신이 프레임 워크를 포착하면

는 언어 선택이 쉬워진다 - 프레임 워크가 작성되는 언어를 사용합니다.

C++의 게임 프레임 워크에는 많은 옵션이 있습니다. 파이 게임은 파이썬에서 작동합니다.

예 파이썬 개발 시간의 측면에서 빠른뿐만 아니라 다른 언어/도구 (포함 .NET, 루아, 등)

1

짧은 대답을 일이 많습니다. 실생활에서 이것을 보여주는 많은 사례 연구가 있습니다. 그러나 파이썬에서 3D 그래픽 엔진을 사용하고 싶지는 않습니다.

+1

효율적인 3D를 의미하는 것으로 받아 들여서는 안되는 것이 Python에서는 불가능합니다. 저는 파이썬에서 3D 엔진을 작성하는 사람은 없을 것이라고 생각합니다. 그러나 PyOpenGL과 같은 C/C++ 라이브러리에 몇 가지 바인딩이 있습니다. –

15

파이썬의 힘은 메모리 할당과 같은 테스트 낮은 수준의 문제를 처리하는 것보다 문제에 더 집중할 수 있도록하는 그것의 능력이다. C 또는 C++에서 메모리 누수를 추적하는 데 몇 일 간의 개발 기간이 낭비되었는지 계산할 수 없습니다. 모든 고수준 언어의 장점. 기본적인 프로그래밍 작업을 수행에 더 빨리 많은 속도까지 당신이 될 수 있도록

파이썬, C++에 비해 매우 쉽게 배울 수 있습니다. 따라서 고급 작업으로 더 빨리 이동할 수 있습니다. 전력을 많이 가지고 있지만, 파이썬에 비해 스스로 발을 쏠 수있는 많은 방법이있다 ++

C (즉, 파이썬에서 할 수없는 말을하지 않음).

컴파일/디버그주기가 수행하려고하는 작업에 따라 C++에서 가끔씩 오래 걸릴 수 있습니다. 기술적으로 말하자면, 파이썬 스크립트를 실행할 때마다 그 자체로 "컴파일"되고 있습니다. 단지 더 빠른 사이클 일뿐입니다. 좋은 IDE는 파이썬에서 코드 오류를 자동으로 체크하여 입력하는 동안이를 완화하는 데 도움이 될 수 있습니다. 당신은 당신이 큰 프로젝트 내에서 테스트 할 몇 가지 코드가있는 경우

, 그것은 테스트를 분리 때때로 번거 로움입니다. IPython과 같은 훌륭한 Python 인터프리터를 사용하면 작은 코드를 쉽게 테스트하고 언어가 어떻게 작동하는지보고 파일에 붙여 넣을 수 있습니다.

파이썬은 또한 많은 다양한 방법을 통해 기존 C/C++ 코드와 매우 잘 인터페이스합니다. 그런 식으로 작성한 새로운 whizbang Python 모듈이 실제로 느린 경우 C/C++로 압축 한 후 ctypes, Boost::Python 또는 SWIG을 통해 파이썬으로 마무리 할 수 ​​있습니다.

그리고 무엇보다도

는, 파이썬은 물건을 많이 당신을 위해 알아 냈가 큰 표준 라이브러리와 함께 제공됩니다. 조각을 모두 넣는 것입니다. 그 뒤에 큰 커뮤니티가 있으므로 표준 라이브러리에없는 경우 누군가가 문제를 해결했습니다 ( PyGame, Numpy, SciPy, Pyserial, PyWin 등). 당신은 그냥 구글로 그것을 잡을 수 있고 코드를 프로그램에 넣을 수 있습니다 ... 멀리 가세요!

+5

현대 C++의 메모리 관리는 종종 스마트 포인터를 사용하는 문제임을 명심하십시오. –

+0

사실, 쉽게 이해할 수 있지만 스마트 포인터로도 문제가 발생합니다. –

+0

파이썬이 얼마나 좋은지 모르지만 가비지 컬렉션에 문제가있었습니다. 맞기가 어렵습니다. 그래도 여기 부터만 개선 될 것이고 GC에 대한 C++에서 약간의 움직임이 있습니다 (이 표준 개정판은별로 없지만). –

0

프로그래밍 경험이 있습니까? 그렇지 않다면, 게임 개발을위한 더 나은 도구가 아니더라도, 배울 것이 더 쉬운 파이썬으로 시작할 것입니다. 생계를 위해 게임을 프로그래밍하고 싶다면 C++로 전환해야 할 수도 있습니다.

0

기본적으로 SDL은 하드웨어 가속을 사용하지 않기 때문에 현재 속도가 느립니다. SFML은 선택의 대안이며 파이썬에서도 사용 가능합니다.

+0

그렇지 않은 경우 : http://www.libsdl.org/faq.php?action=listentries&category=2#13 –

2

파이썬은 C++와 같은 프로그래밍 언어에 비해 몇 가지 큰 이점이 있습니다. 나는 C++, C 및 다른 프로그래밍 언어로 많은 것을 프로그래밍했다. 최근에 나는 파이썬으로 프로그래밍하고 있는데, 나는 그것을 아주 좋아하게되었다!

파이썬으로 빠른 시작을 할 수 있습니다. 배우기가 다소 쉽기 때문에 (적어도 프로그래밍 경험과 추상적 인 사고력으로는) 빠른 성공을 거둘 수 있습니다. 또한 스크립트와 비슷한 동작으로 시작이 쉬우 며 통합 셸에서 신속하게 테스트 할 수도 있습니다. 이것은 또한 디버깅에 유용 할 수 있습니다.

전체 언어는 강력한 기능으로 채워져 있으며, 라이브러리 집합이 훌륭하고 완벽합니다.

"올바른 라이브러리"를 사용하면 Python과 같이 C++로 빠르게 개발할 수 있다는 주장이있었습니다. 이것은 (부분적으로) 있을지 모르지만 그러한 라이브러리가 드물기 때문에 나는 경험하지 못했습니다. 저는 아직 큰 라이브러리를 가지고 있었지만 여전히 C++에서 많은 가치있는 기능이 부족했습니다. 소위 말하는 "표준 템플릿 라이브러리"STL은 일을 더욱 악화시킵니다. 정말 강력한 라이브러리입니다. 그러나 C++에 추가 프로그래밍 언어의 복잡성을 추가하는 것은 너무 복잡합니다. 컴파일러가 STL에서 오류가 발생했을 때 유용한 오류 출력을 제공 할 수 없었기 때문에 나는 그것을 정말로 싫어했고 내가 일한 회사에서 많은 작업 시간이 손실되었습니다.

파이썬이 다릅니다. C++과 특히 STL처럼 다른 모든 것을 희생시키는 "프로그램의 속도"를 왕좌에두기보다는 "개발 속도"를 우선으로 고려해야합니다. 언어는 강력한 툴킷을 제공하며 거대한 라이브러리가 함께 제공됩니다. 속도가 필요할 때 C 또는 C++에서 시간 중 중요한 것을 구현하고 파이썬에서 호출 할 수도 있습니다.

파이썬으로 구현 된 하나 이상의 빅 온라인 게임이 있습니다.

2

거의 모든 고급 언어에서 동일한 코드를 작성하는 데 거의 같은 시간이 걸립니다. 특정 언어에서는 다른 사람 코드를 사용하는 것이 더 쉽습니다. 많은 Python/Ruby/Perl 응용 프로그램에서는 코드의 10 %를 작성하고 나머지 90 %는 라이브러리를 가져옵니다. 라이브러리가 다른 인터페이스와 다른 비 호환성을 가지고 있기 때문에 C/C++에서 더 어렵습니다.

C++ 대 파이썬은 꽤 개인적인 선택입니다. 개인적으로 나는 C/Java 클래스 시스템 (더 많은 런타임 오류/디버깅 시간, 좋은 자동 완료만큼 가까운 곳이 없으며, 더 많은 문서화와 최적화가 필요함)을 가지지 않고서는 더 많은 시간을 잃는다 고 느낀다. 인터페이스/스텁 기능을 작성하고 메모리 관리에 대한 걱정을 덜어줍니다.) 다른 사람들은 정반대라고 느낍니다.

결국 게임 유형에 따라 다릅니다. 프로세서 집약적 인 C++ (어쩌면 스크립팅 언어를 사용하는 것이 좋습니다)로 이동하십시오. 그렇지 않으면 선호하는 언어를 사용하십시오

0

왜이 두 가지 옵션으로 제한합니까? C# 또는 Java를 사용하면 유용한 라이브러리 플러스 가비지 수집과 (C#의 경우) JIT 컴파일 링의 거대한 콜렉션에 액세스 할 수 있습니다.

또한 게임 개발을 원한다고 말하고 있지만 작업 설명을 통해 자신의 엔진을 코딩하는 것처럼 보입니다. 그 운동의 일부입니까? 그렇지 않으면 당신은 거기 밖으로 유효한 인디 엔진을 분명히 봐야한다 - 제비는 자유롭고 오픈 소스의 싸지 않다.

없이

기존 엔진에서 작업하는 것은 확실히 빨리 처음 :

0

어떤 사람들은 파이썬에 비해 그 개발 시간이 C++로 느린 주장에서가는 것보다, 말을.

파이썬에서 응용 프로그램 (또는 게임) 개발시 저장 한 시간이 개발 된 후에 성능을 향상시키는 데 사용할 시간이 아닐까요?나중에 옵션을 남겨 두었습니까?

주로 응용 프로그램을 개발할 목적에 따라 다릅니다.

수백만 (웹 응용 프로그램)이나 낮은 설치 공간, 빠른 메모리로드, 빠른 실행에 초점을 맞춘 응용 프로그램이 적용되는 엔터프라이즈 응용 프로그램을 생각하는 경우 선택은 다음과 같습니다. C++.

이 수준에서 사용하지 않기 위해 응용 프로그램을 투영하는 경우 반드시 파이썬을 선택해야합니다.

유지 관리 가능성은 상당하지만 징계 된 코드는이를 극복 할 수 있습니다.

크게 장기간 예측에 의존합니다. 응용 프로그램이 얼마나 심각하고 비판적인지.