34
㈜㈜㈜㈜ ㈜㈜㈜ ㈜㈜㈜ [email protected] msn: [email protected] Nateon : [email protected]

Technical Report 1 C++Builder 2009 vs Visual C++ 2008 SP1

Embed Size (px)

DESCRIPTION

Technical Report 1 C++Builder 2009 vs Visual C++ 2008 SP1. ㈜보이드 소프트 김호광 [email protected] msn: [email protected] Nateon : [email protected]. Rock Man X5 를 이식할 때입니다. 때는 바야흐로 2002 년. Play Station 소스가 윈도우로 이식될까요 ? ( 그래픽 라이브러리 제외 ). 예. 아니요. - PowerPoint PPT Presentation

Citation preview

Page 1: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

㈜보이드 소프트 김호광[email protected]

msn: [email protected] : [email protected]

Page 2: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

Rock Man X5 를 이식할 때입니다

때는 바야흐로 2002 년

Page 3: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

Play Station 소스가 윈도우로 이식될까요 ? ( 그래픽 라이브러리 제외 )

예 아니요

Page 4: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

Visual C++ 문법의 비표준으로‘바로’ 이식이 안되었습니다

아니요

Page 5: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

그러면 왜 Visual C++ 은 표준에 인색할까요 ?

Page 6: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

Visual C++ 은 윈도우의 표준 (defecto)! ‘ 비표준 문법’으로 소프트웨어의 다양한 OS 이식을 막아야 합니다

음모론

Page 7: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

VC++ 는 MFC 를 포 함 하 여 OS 의 기 본 을 구성하고 있기 때문에 신중하게 추가되어야 합 니 다 .

SDK 와 개발 툴을 MS 의 주수익이 아닙니다 .때문에 개발 툴에 많은 돈을 쓸 필요는…

일반론

Page 8: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

MS 는 Visual C++2008 에 TR1 을 지원해야 했을까요 ?

Page 9: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

Visual C++ 2008 의 TR1 지원이유ISO ANSI C++ 표준을 강제하기 때문EU, 혹은 기업 , 국가에서 ISO 를 지원하지 않는

SI 환경과 compiler 는 퇴출됩니다 .STL 과 boost 와 같은 라이브러리를 사용하는

개발자들이 다른 회사 (STL Port) 의 제품을 사용하는 것을 막고자 한 것입니다 .

C99 와 유니코드를 지원하기 위해서입니다

Page 10: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

표준의 위대함

ISO ANSI C++ 표준이 제정되었다는 의미는 컴파일러가 다르더라도 C++ 을 지원하는 컴파일러로 어떠한 cpp 가 이식되더라도 실행을 보장한다는 말입니다 .

멀티 플랫폼 이식이 저수준에서 보장

Page 11: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

What the C++?• C++ 은 OOP 언어일 수도 있고 , 아닐 수 있는

언어 .• C++ 은 패러다임의 언어입니다 .

• 예를 들면 Ruby 는 bond 언어로 특정 목적에 최적화된 스크립트 언어입니다 . 한가지 결론을 내기 위해 한가지 방법 밖에 없는 언어입니다

• 그러나 C++ 은 아나키스트의 언어이기 때문에 프로그래머 수 만큼 다양성이 있습니다 .

Page 12: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

TR1 이란 ?Technical Report 1 의 약칭기술 보고서 1 편의 의미 . C++0x (C++ version 2.0) 로도 표현차기 C++ Standard아직 ANSI C++ 에 포함되지 않음C++ STL 의 무림 고수들이 boost 라이브러리를

만들며 draft 를 주도

Page 13: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

TR1 의 의의STL 의 제한적인 면을 보강실무에 사용 가능한 기능들이 다수 포함되어 있으며

Python 과 같은 script 언어의 생산성 수준의 라이브러리 포함 (tuple, bind, 수학 함수 )

C99 와 호환성 보강Meta Programming Helper 로 인하여 C++

안의 스크립트 수준으로 구문 확장 가능

Page 14: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

표준이 아닌 TR1, defecto TR1

TR1 은 아직 표준이 아닌 라이브러리 .주의할 점은 각 compiler 회사와 라이브러리

제공자들이 TR1 을 모두 준수하고 있지 않다는 점이다 .

TR1 은 C++ 개발 업계의 defecto 로써 사용이 확산되고 있다 .

Page 15: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

장점과 파급 효과

Page 16: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

< 짝 > TR1::tuple

• STL 의 pair 를 확장• 2 개가 뭐냐 ! 여러 개를 넣을 수 있어야 한다는

의견에서 탄생• 2 개 이상의 인자를 묶음으로 처리할 때 편리함 .• 게임에서는 간단 NPC 의 정보를 담을 때 적용 가능• 튜플 개수는 10 개 이상으로 권고

Page 17: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

< 공유 포인터 > TR1::shared_ptr

리소스 관리는 내게 맡겨라 !자바의 가베지 컬렉션은 유치하다 !Multi Thread 에서도 안전객체와 객체 사이에 공용 데이터 모듈 구축에 유리

Page 18: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

컴맹도 알 수 있다 C++ Builder 2009 가 좋은 점을 !

Page 19: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

What is Boost?Boost 는 STL 에 불만을 품은 천재적인 C++

프로그래머들이 모여 만든 LibraryBoost 에서 검증된 Library 는 TR1 에

적용됨으로써 boost 프로젝트의 장점 인정Boost 중 급진적인 Library 의 경우 아직 TR1

에서 논의되지 않고 TR2 로 논의를 진행 하고 있음 .

Boost 는 무림 고수들의 비급 !

Page 20: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

Boost 의 인스톨 여부

Page 21: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

Boost 의 인스톨 여부

Page 22: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

각각의 C++ compiler 의 기능 지원

C++Builder 2009 vs Visual C++ 2008 sp1

Page 23: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

Test Environment

Windows Vista Home Premium K SP1Core 2 T7200Memory 2GBC++ Builder 2009 Evolution versionVisual C++ 2008 Express SP1

Page 24: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

TR1 supportC++ Builder 2009 Visual C ++ 2008 SP1ArrayFunctionalMemoryRandomTupleUnordered_map (hash)Unordered_setutility

ArrayFunctional ( 느림 )MemoryRandom ( 문제 있음 )TupleUnordered_map (hash)Unordered_setutility

Page 25: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

Boost supportC++ Builder 2009 Visual C ++ 2008 SP1Boost library 지원1.35 버전

Not support별도로 boost library

설치가 필요

Page 26: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1
Page 27: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

TR1::randomVC 2008 SP1 의 Compiler 자체의 문제가 있기

때문입니다 Random engine 으로 많이 사용하는 Mersenne

twister engine 기반의 mt19937 Class 가 잘못된 연산을 합니다 .

BCB 2009 와 VC 2008 의 동일 예제를 살펴보면 결과를 알 수 있습니다 .

Page 28: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

TR1:: Random Source

원본 소스 by lyn

Page 29: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

VC++ 2008 TR1::Random

Page 30: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

지정 범위가 벗어나는 음수가… ㅠ _ ㅠ

Page 31: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1
Page 32: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1
Page 33: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

앞서가는 개발자의 분명한 선택은 하나 !

Page 34: Technical Report 1 C++Builder 2009  vs  Visual C++ 2008 SP1

Reference• BOOST: http://www.boost.org• TR1 :

http://www.boost.org/doc/libs/1_35_0/doc/html/boost_tr1.html

• C++Builder : http://dn.codegear.com/article/38478

• MSDN TR1 : http://msdn2.microsoft.com/en-us/library/bb982198.aspx