'C++'에 해당되는 글 25건
- 2009/10/22 My Recent Tweets 20091021
- 2009/08/13 My Recent Tweets 20090812
- 2009/08/07 잘 알려지지 않은 C++0x의 유용한 기능들 - 마지막 (2)
- 2009/07/29 잘 알려지지 않은 C++0x의 유용한 기능들 - 두번째 (2)
- 2009/07/23 잘 알려지지 않은 C++0x의 유용한 기능들 - 첫번째 (8)
- 2009/07/13 수학적 엄밀함으로 살펴보는 C++ 타입과 알고리즘
- 2009/06/25 My Recent Tweets 20090624
- 2009/06/06 D&D-style map of C++ (2)
- 2009/05/15 Iterators Must Go! (in favor of ranges) (2)
- 2009/05/12 std::stack에 관한 소고
- My Recent Tweets 20091021
Tweet
- Tweets
- 2009/10/22 08:05
- C++, codepad, Coders at Work, CT, D 언어, Fermi, functional programming, git, Git#, GLSL, KGC2009, Lambda Calculus, Lean, llvm, NAN, OpenGL 3.2, SFINAE, TDD, TED, VS2010, WPF, 네할렘, 뽀모도로, 스레드안정성, 스크럼, 애자일, 윈폼, 정렬, 칸반, 파이썬, 프로그래밍퍼즐
-
- PlanetD - a collection of blogs about D: http://su.pr/4iAHrC #programming #
- D 언어에 관한 글 모음 블로그
- RT codemonkeyism: +1 RT surya_s: +1 for Git: http://bit.ly/2ZL224 via KentBeck #programming #
- 또다른 git 튜토리얼
- RT bjoernknafla: Great info about VS2010 - RT msinilo: VS2010b impressions on John Robbins' blog: http://j.mp/3fHUpX, concurrency profi... #
- 최근 나온 비주얼 스튜디오 2010 베타2에 관한 사용기
- C++ and functional programming idioms: http://su.pr/2CwJmd #C++ #programming #
- C++로 함수형 프로그래밍하기
- Understanding SFINAE: http://su.pr/16NfZt #C++ #programming #
- C++의 "Substitution failure is not an error"를 잘 설명한 글
- Debunking Software Engineering Myths: Does the organization matter more than the programming? http://su.pr/2ub7jl #programming #
- 조직구조가 여타 코드계측보다 코드품질과의 상관관계가 더 높다는 흥미로운 연구결과
- RT programmingjoy: LLVM DevMeeting videos posted #programming http://bit.ly/1LcON3 #
- 최근 각광을 받고 있는 LLVM 개발회의 슬라이드 및 영상 자료
- RT programmingjoy: As Timeless As Infinity - Background on floating point math and NaN values #programming http://bit.ly/1EX0JP #
- 부동소수점수와 NaN 값에 관한 설명
- RT DeliciousHot: 10 Puzzle Websites to Sharpen Your Programming Skills http://is.gd/4n4HV #programming #
- 프로그래밍 퍼즐 사이트 모음
- C++ in Coders at Work: http://su.pr/1J9Xkg #C++ #programming #
- 책 "Coders at Work"의 C++ 관련 언급들... 다들 C++을 싫어하는듯;
- RT bjoernknafla: jooones: Still using Carmack's Magic Number rqsrt? "Timing square root" by Elan Ruskin http://bit.ly/2XALz8 #programming #
- 제곱근 계산의 다양한 방법들 성능 비교!
- RT KageKirin: ldc - #LLVM #D #Compiler #programming - well I was wondering if that existed. http://tinyurl.com/5qolxn #
- LLVM D 컴파일러
- RT itshooter: The Official Microsoft WPF and Windows Forms Site http://bit.ly/QeNr6 #WPF #programming #
- 마이크로스포트 공식 WPF 및 윈폼 사이트
- psake - A build automation tool... now with less XML... http://su.pr/2cJGk0 #programming #
- 파워쉘 기반 빌드 자동화 도구
- ㅎㅎ 글쿤요. RT javawork: 세상에는 정말 많은 C++ 네트웍 라이브러리가 있군요. - http://tinyurl.com/cqf4q8 #programming #
- RT programmingjoy: Git# - First Public Release #programming http://bit.ly/1CcWOg #
- 닷넷 Git
- RT programmingjoy: Lambda Calculus #programming http://bit.ly/2Nf14V #
- RT programmingjoy: Joel Spolsky: You cannot program parallel in C, period #programming http://bit.ly/pX3ZK #
- C로는 병렬 프로그래밍이 불가능하다는 조엘의 주장
- RT eHub: codepad http://bit.ly/Zs59V #programming #
- 여러 언어를 지원하는 온라인 컴파일러
- RT programmingjoy: Sorting Algorithm Shootout #programming http://bit.ly/RAPj0 #
- 정렬 알고리즘 비교
- RT programmingjoy: Vidiowiki feature on ICFP 2009 in Edinburgh #programming http://bit.ly/cLXFj #
- 함수형 프로그래밍 국제 컨퍼런스 영상위키
- RT programmingjoy: shedskin: an experimental Python to C++ compiler #programming http://bit.ly/apENm #
- 제한적 파이썬 -> C++ 컴파일러
병렬성parallelism
- RT programmingjoy: What is this thing you call "thread safe"? #programming http://bit.ly/2odln7 #parallelism #
- 스레드안정성의 의미에 관한 고찰
- RT bjoernknafla: Intel sponsored Gamasutra article by Ryan Shrout & Leigh Davis about thread programming for Nehale... http://bit.ly/29EhcL #
- 인텔 CPU의 근래 변화와 관련 최적화 팁
- RT SoftTalkBlog: Intel Ct Technology opens for beta applications. New tool to automate data parallelism. http://bit.ly/12arQy #parallelism #
- 데이터 병렬화를 자동화해주는 인텔의 새로운 도구 Ct
개발방법론methodology
- RT istoriae: Certified ScrumMaster course를 수료했습니다. 무면허 운전을 하다가, 운전 면허를 딴 기분이랄까요? 워크샵에서 얻은 것들을 이곳에 차차 정...:http://go.kaykim.org/csmkoreawiki #
- 한국에 있었으면 저도 참가하고 싶었는데... ㅠㅠ
- Agile Self-Assessment Tool: http://su.pr/74of9p #methodology #
- ThoughtWorks에서 제시하는 애자일 자기평가 도구
- RT programmingjoy: Lean To The Extreme #programming http://bit.ly/32BwcW #
- RT LeanKitKanban: RT topsurf: here is my Personal Kanban Evolution: http://bit.ly/3Srkw #personal #Kaban #lean #gtd #methodology #
- 칸반을 열심히 사용 중인 개인의 경험담
- RT unclebobmartin: Lee Copeland on Scrumdamentalism http://tinyurl.com/ygtxtja #methodology #
- RT unclebobmartin: One more blog on TDD. TDD Triage. http://bit.ly/2z2GXG Where does TDD work and where Doesn't it? #methodology #
- TDD에 관한 엉클밥의 의견
- The Pomodoro Technique: http://su.pr/1PwcSz #methodology #
- 일인스크럼 뽀모도로 테크닉에 관한 웹사이트
- The Danger of Lean: Ignoring Social Complexity http://su.pr/2L6ag2 #methodology #
- 사회성의 복잡도를 간과하는 린의 문제점을 지적하는 글
그래픽스graphics
- RT KageKirin: OpenGL 3.2 and More #graphics #programming #presentation #paper http://tinyurl.com/yhhf39z #
- 마크 킬가드의 OpenGL 3.2 관련 슬라이드
- New DirectX MSDN Developer Center: http://su.pr/9k7BqM #graphics #
- RT nvidiadeveloper: Satisfy your "inner geek" by reading the Whitepaper on "Fermi," NVIDIA’s Next-Gen CUDA... http://is.gd/4i9du #graphics #
- NVIDIA의 차세대 GPU 페르미에 관한 백서
- RT programmingjoy: Night Vision Post Processing GLSL Shader #programming http://bit.ly/5Ah8V #graphics #
- 야간시야 셰이더 효과 예제
기타etc.
- RT seoulrain: 차 마실 때 + 아무 때나 쓸 수 있는 귀여운 웹타이머 http://steep.it/ #
- RT sioum: 수학 연구 관련해서 "지식인" 같은 웹사이트가 생겼군요. Terrence Tao 교수 블로그에서 소개되어서 알게되었습니다. http://mathoverflow.net/ #
- 스택오버플로우(아시죠, 프로그래밍 질답 사이트) 수학 버전
- RT RatRaceTrap: “Let fear be a counselor and not a jailer” --Anthony Robbins #rq #
- RT DeliciousHot: View and Share PDF's Online in HTML http://is.gd/4l4gR #
- RT 79k: http://andstudy.com/andwiki/wiki.php/KGC2009/Link KGC2009 관련자료 모음링크입니다. 게임산업에 관심있으신 분들은 보시면 좋은 자료 많은 듯 합니다. 즐거운 오후 되시기... #gamedev #
- Amazing! RT programmingjoy: 10/GUI is one of the most dramatic reimaginations of the desktop user int.... #programming http://bit.ly/3EArvd #
- 혁신적인 멀티터치 기반 데스크탑 UI
- RT gamearchitect: Diffen - Compare Anything. Diffen. Discern. Decide: http://bit.ly/PqfPD #
- 온라인 diff 도구
- RT xiles: 국내 웹서비스 모음 http://xiles.net/web_services 아직 정리가 완전히 안됐지만, 차차 정리하고 댓글/추천 등을 넣을 예정입니다. 한국에서 개발한 멋진 웹서비스들이 엄청 많아질때까지~!!! #
- RT DeliciousHot: TEDTalks as of 10.09.09 - Google Docs http://is.gd/4eT6z #
- TED 비디오 목록
- RT spolsky: StackExchange site of the day: http://epicadvice.com/ (about World of Warcraft) #
- 스택오버플로우 와우 버전;
- RT autenil: Sweet. RSS feed filtering: http://feedrinse.com/ #
- 저도 이게 좀 필요한듯...
- RT spolsky: Peek inside Fog Creek: http://training.fogcreek.com/ #
- 조엘이 트레이닝 비디오도 출시하는군요.
* 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다.
'Tweets' 카테고리의 다른 글
| My Recent Tweets 20091120 (0) | 2009/11/24 |
|---|---|
| My Recent Tweets 20091104 (0) | 2009/11/06 |
| My Recent Tweets 20091021 (0) | 2009/10/22 |
| My Recent Tweets 20090928 (0) | 2009/10/01 |
| My Recent Tweets 20090909 (0) | 2009/09/10 |
| My Recent Tweets 20090826 (0) | 2009/08/26 |
- My Recent Tweets 20090812
Tweet
- Tweets
- 2009/08/13 05:12
- C++, CryENGINE3, Dijkstra, gi, global illumination, idTech5, Inferred Lighting, intellisense, JOHN CARMACK, Light Propagation Volumes, Rage, raytracing, Scrum, TDD, Tim Sweeney, Twitter, VS2008, VS2010, 스크럼, 트위터
-
그래픽스graphics
프로그래밍programming
기타etc
* 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다.
- John Carmack - Rage / CD-Action Interview: http://su.pr/1q4Zj9 http://su.pr/2jl9P3 http://su.pr/16bm8e #
- 전설적 게임 프로그래머 존 카맥의 최근 인터뷰
- Compact Normal Storage for small G-Buffers: http://su.pr/1Mr1Bu A through & nice summany of the subject! #
- 최근 추세인 지연 렌더링 기법에서 효과적으로 법선을 저장하는 다양한 방법에 관한 비교
- Inferred Lighting: http://su.pr/28Eotm #
- 이번 시그래프에서 발표된 지연 조명계산deferred lighting 기법의 개선 버전에 관한 요약
- A template library that provides a set of modular, generic and efficient implementations of common raytracing algorithms http://su.pr/6s9bUq #
- 깔끔한 광선추적 알고리즘 템플릿 라이브러리
- RT morgan3d Tim Sweeney's future: functional programming, micropolygons, and automated atomicity: http://short.to/mars #
- 시그래프 직전에 열린 High Performance Graphics 2009에서 에픽 게임즈의 수장 팀 스위니가 발표한 키노트
- Light Propagation Volumes in CryEngine 3: http://su.pr/1ddnUV #
- 역시 이번 시그래프에서 동료 안톤이 발표한 전역조명계산GI 기법
- RT bjoernknafla: RT bkaradzic: "Jobs are now running on a variety of processors" (http://bit.ly/8Ovdy #idTech5 #siggraph) #
- id Software의 새 엔진 idTech5에서의 병렬화
![]() flikr1679 by flikr |
프로그래밍programming
- C++ 'Named Parameter' idiom: http://su.pr/16tyuU #
- 유용한 C++ 관용기법 하나
- RT programmingjoy: Sneak Preview: Many Famous Coders at Work #programming http://bit.ly/AYyhO #
- 책 Coders at Work에 대한 리뷰
- C++ Intellisense in VS2010: http://su.pr/1rtxm5 #
- 비주얼스튜디오 2010의 새로운 인텔리센스 엔진의 강력함을 보여주는 사례
- Draft Spec of Transactional Language Constructs for C++ Released: http://su.pr/228rPR #
- C++의 트랜잭션 지원을 위한 스펙 초안
- RT cjunekim: Coder is often used as a derogatory word but after seeing Coders at Work you might think differentely. http://bit.ly/1asPX2 #
- Coders at Work에 대한 또다른 리뷰. 김창준님도 추천하시네요.
- RT unclebobmartin: Blog: TDD and FP. http://bit.ly/15HnLN #
- 엉클밥의 TDD(Test-Driven Development)와 FP(Functional Programming)에 관한 소고
- RT programmingjoy: The E. W. Dijkstra Archive (Update) #programming http://bit.ly/ZmQv2 #
- 컴퓨터과학계의 전설, 다익스트라의 모든 저술들
- RT KageKirin: Favorites Menu for Visual Studio http://tinyurl.com/nwzkqm #
- 즐겨찾기를 추가해주는 비주얼스튜디오 애드인
- RT KageKirin: C/C++ #include hierarchie viewer http://tinyurl.com/ojkk4m #
- #include 계층구조를 보여주는 비주얼스튜디오 애드인
- Bjarne Stroustrup Expounds on Concepts and the Future of C++: http://su.pr/1cp74M #
- Concept와 C++의 미래에 관한 Bjarne Stroustrup의 또다른 논평
- Debugging and breakpoint related issues in VS2008 SP1: http://support.microsoft.com/kb/957912 #
- 비주얼스튜디오 2008 SP1의 디버깅 및 브레이크포인트 관련 문제를 해결해주는 패치
![]() Data storage - old and new by Ian-S |
기타etc
- RT birdkr: 행복한 팀장 되기 - http://chulin28ho.egloos.com/5077754 : 절대 공감입니다. :) #
- Certified Scrum Master course in Seoul Korea: http://su.pr/7RYjqe #
- 서울에서 열리는 공인 스크럼 마스터 강좌
- RT RatRaceTrap: "Don't be afraid your life will end; be afraid that it will never begin." --Grace Hansen #rq #
- RT hur: 보면서 계속 키득거렸네^^ Cool RT mickeyk: All twittrs will enjoy ths presentation. Well done! "24 Reasons Y Twittr sucks!" http://tr.im/vYgS #
- 트위터에 관한 재기발랄한 논평
- 제 지인이 차린 회사에서 개발 중인 게임 동영상: http://su.pr/9hv9hG #
- RT programmingjoy: Software Pricing: Are We Doing It Wrong? #programming http://bit.ly/is1ny #
- 소프트웨어 가격에 대한 유명 프로그래밍 블로거 제프 앳우드Jeff Atwood의 신선한 고찰
* 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다.
'Tweets' 카테고리의 다른 글
| My Recent Tweets 20090909 (0) | 2009/09/10 |
|---|---|
| My Recent Tweets 20090826 (0) | 2009/08/26 |
| My Recent Tweets 20090812 (0) | 2009/08/13 |
| My Recent Tweets 20090806 (0) | 2009/08/06 |
| My Recent Tweets 20090727 (0) | 2009/07/27 |
| My Recent Tweets 20090715 (0) | 2009/07/15 |
- 잘 알려지지 않은 C++0x의 유용한 기능들 - 마지막
Tweet
- Game Development
- 2009/08/07 23:52
- Bjarne Stroustrup, C++, C++0x, constexpr, CPP, literal, nullptr, raw string, template alias, typedef, Using, 리터럴, 초기화목록, 템플릿별칭
-
잘 알려지지 않은 C++0x의 유용한 기능들 - 첫번째
잘 알려지지 않은 C++0x의 유용한 기능들 - 두번째
널포인터nullptr
정수 0 이 아닌 널 포인터 지칭 전용의 리터럴 nullptr가 생겼습니다.
날 문자열 리터럴raw string literals
문자열에서 특수문자를 나타내기 위해 백슬래쉬로 이스케잎 처리 해주는 것은, 정규표현식 등에서 매우 번거로운 작업이 됩니다. (정규표현식의 경우 캐릭터 클래스라는 것에서 별도 용도로 백슬래쉬를 쓰기 때문이죠.) 가령, 정규표현식에서 백슬래쉬로 분리되어 있는 두 단어를 나타내는 \w\\w를 문자열로 표현하려면 다음과 같이 해야 합니다.
날 문자열 리터럴을 사용하면 다음과 같이 표현 가능합니다.
이 때, 그럼 문자열 내에 ]" 표현이 있는 경우 어떻게 하는가 하는 의문이 들 수 있습니다. 이런 경우도 해결할 수 있도록, [ 앞과 ] 뒤에 쓰이는 구분자를 일치만 시켜주면 쌍따옴표와 대괄호 사이에 얼마든지 추가 구분자를 포함시킬 수 있도록 하였습니다. 다음과 같이 말이죠.
템플릿 별칭template alias
다음과 같이 일부 템플릿 인자만을 원하는 타입으로 지정하여 일반 템플릿처럼 작동하는 식별자를 만들 수 있습니다.
이 때 using 구문이 쓰이며, 이는 다음처럼 기존 typedef의 대용으로 쓰일 수도 있습니다.
초기화 구문 단일화uniform initialization syntax and semantics
C++은 타입과 초기화 문맥에 근거해 개체를 초기화할 수 있는 여러가지 방법을 제공해 왔습니다.
그리고 다음과 같은 혼란도 있었죠.
이러한 혼란을 없애고자 {}-초기화 목록을 일관되게 사용할 수 있도록 했습니다.
사용자정의 리터럴user-defined literals
C++은 여러 내장 타입들에 대한 리터럴을 제공합니다.
그러나 C++98에서는 사용자정의 타입에 대한 리터럴을 정의할 수 없었죠. 가령, 다음과 같은 것들 말입니다.
C++0x에서는 다음 문법으로 사용자정의 리터럴을 지원합니다.
컴파일시점 계산을 위해 constexpr을 사용함에 주목하세요. 이를 다음과 같이 활용할 수 있습니다.
이러한 사용자정의 리터럴을 위한 접미사는 보통 한두글자로 매우 짧을텐데요, 이럴 경우 쉽게 충돌이 발생할 수 있습니다. 그를 방지하려면 다음처럼 namespace를 사용하시면 됩니다.
이상으로 C++0x의 잘 알려지지 않은 기능들에 대한 연재를 마칩니다. 이상을 포함한 더 자세한 정보는 Bjarne Stroustrup 선생이 운영하는 다음 웹페이지에서 확인하실 수 있습니다.
* 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다.
잘 알려지지 않은 C++0x의 유용한 기능들 - 두번째
널포인터nullptr
정수 0 이 아닌 널 포인터 지칭 전용의 리터럴 nullptr가 생겼습니다.
날 문자열 리터럴raw string literals
문자열에서 특수문자를 나타내기 위해 백슬래쉬로 이스케잎 처리 해주는 것은, 정규표현식 등에서 매우 번거로운 작업이 됩니다. (정규표현식의 경우 캐릭터 클래스라는 것에서 별도 용도로 백슬래쉬를 쓰기 때문이죠.) 가령, 정규표현식에서 백슬래쉬로 분리되어 있는 두 단어를 나타내는 \w\\w를 문자열로 표현하려면 다음과 같이 해야 합니다.
날 문자열 리터럴을 사용하면 다음과 같이 표현 가능합니다.
이 때, 그럼 문자열 내에 ]" 표현이 있는 경우 어떻게 하는가 하는 의문이 들 수 있습니다. 이런 경우도 해결할 수 있도록, [ 앞과 ] 뒤에 쓰이는 구분자를 일치만 시켜주면 쌍따옴표와 대괄호 사이에 얼마든지 추가 구분자를 포함시킬 수 있도록 하였습니다. 다음과 같이 말이죠.
템플릿 별칭template alias
다음과 같이 일부 템플릿 인자만을 원하는 타입으로 지정하여 일반 템플릿처럼 작동하는 식별자를 만들 수 있습니다.
이 때 using 구문이 쓰이며, 이는 다음처럼 기존 typedef의 대용으로 쓰일 수도 있습니다.
초기화 구문 단일화uniform initialization syntax and semantics
C++은 타입과 초기화 문맥에 근거해 개체를 초기화할 수 있는 여러가지 방법을 제공해 왔습니다.
그리고 다음과 같은 혼란도 있었죠.
이러한 혼란을 없애고자 {}-초기화 목록을 일관되게 사용할 수 있도록 했습니다.
사용자정의 리터럴user-defined literals
C++은 여러 내장 타입들에 대한 리터럴을 제공합니다.
그러나 C++98에서는 사용자정의 타입에 대한 리터럴을 정의할 수 없었죠. 가령, 다음과 같은 것들 말입니다.
C++0x에서는 다음 문법으로 사용자정의 리터럴을 지원합니다.
컴파일시점 계산을 위해 constexpr을 사용함에 주목하세요. 이를 다음과 같이 활용할 수 있습니다.
이러한 사용자정의 리터럴을 위한 접미사는 보통 한두글자로 매우 짧을텐데요, 이럴 경우 쉽게 충돌이 발생할 수 있습니다. 그를 방지하려면 다음처럼 namespace를 사용하시면 됩니다.
이상으로 C++0x의 잘 알려지지 않은 기능들에 대한 연재를 마칩니다. 이상을 포함한 더 자세한 정보는 Bjarne Stroustrup 선생이 운영하는 다음 웹페이지에서 확인하실 수 있습니다.
* 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다.
'Game Development' 카테고리의 다른 글
| GDC Europe 2009 참관기 (2) | 2009/08/25 |
|---|---|
| GDC 유럽 2009 참관 세션 스케줄 (5) | 2009/08/14 |
| 잘 알려지지 않은 C++0x의 유용한 기능들 - 마지막 (2) | 2009/08/07 |
| 크라이텍 한국 지사에서 일할 프로그래머분들 모십니다 (14) | 2009/08/01 |
| 잘 알려지지 않은 C++0x의 유용한 기능들 - 두번째 (2) | 2009/07/29 |
| 잘 알려지지 않은 C++0x의 유용한 기능들 - 첫번째 (8) | 2009/07/23 |
- 잘 알려지지 않은 C++0x의 유용한 기능들 - 두번째
Tweet
- Game Development
- 2009/07/29 05:02
- C++, C++0x, decltype, explicit, initializer, initializer lists, lambda, Range, 람다, 범위
-
명시적 변환 연산자explicit conversion operators
C++98에서는 혼란을 유발하는 암묵적 변환을 방지하지 위해 다음과 같이 변환 생성자에 명시적이어야 함을 지정할 수 있었습니다.
하지만 가능한 변환을 정의하는 방법은 이것 말고 하나가 더 있죠. 해당 클래스를 수정할 수 없는 경우, 상대편 클래스에 변환 연산자를 정의해주는 것이 그것입니다.
이 경우 이전에는 명시성 지정이 불가능했는데 C++0x에서 다음과 같이 가능해졌습니다.
범위 for 구문range for statement
begin()과 end() 함수로 규정되는 범위에 대한 반복을 간편한 문법으로 제공하는 기능입니다.
반환형 접미 구문suffix return type syntax
다음과 같은 함수 템플릿이 있습니다.
이 경우 반환형이 무엇일까요? 물론, x*y의 타입입니다만, 그를 어떻게 나타내느냐는 것이죠. C++0x의 decltype을 사용할 수 있습니다.
하지만 그 시점에 x, y가 스코프에 없기 때문에 오류입니다. 다음과 같이 하면 됩니다.
하지만 역시 만족스럽지 않습니다. 그래서 나온 해법이 반환형을 인자 다음에 선언할 수 있게 하는 겁니다.
[]는 람다에서 도입된 것으로 "반환형이 유도될 수 있거나 나중에 지정될 것임"을 나타냅니다. 이와 같이 함수가 리턴문으로만 구성된 경우에는 다음과 같이 decltype도 생략할 수 있습니다.
클래스 내 멤버 초기화in-class member initializers
C++98에서는 정수형의 static const 멤버에 대해서만 클래스 내 초기화가 가능했습니다.
C++0x에서는 비정적 데이터 멤버를 선언 시에 초기화할 수 있습니다. 이는 생성자가 많은 다음과 같은 경우에 아주 유용합니다.
hash_algorithm과 s 변수가 하나의 초기값만을 가짐에도 각 생성자마다 작업을 되풀이해야 합니다. 유지보수에 쥐약이죠. 이를 다음과 같이 할 수 있습니다.
생성자 초기화 목록이 클래스 내 선언 시점 초기화보다 우선한다는 점을 이용하면, 다음처럼 더 간단히 할 수도 있습니다.
목록 초기화initializer lists
다음과 같은 것들이 가능합니다.
목록 초기화가 더 이상 배열에만 국한되지 않는 것이죠. {}-목록을 받아들이는 것은 std::initializer_list<T> 타입의 인자를 가지는 함수들(보통 생성자)입니다. 가령,
컨테이너는 다음과 같이 "목록 초기화 생성자"를 제공할 수 있습니다.
표준 라이브러리의 컨테이너들은 이제 목록 초기화 생성자를 지원하고, 범위 for 구문에 나온 것처럼 이러한 초기화 목록은 범위(range)로도 활용 가능합니다.
이번 회는 여기까지입니다. 다음 회면 대충 마무리될듯. ^^
* 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다.
'Game Development' 카테고리의 다른 글
| 잘 알려지지 않은 C++0x의 유용한 기능들 - 마지막 (2) | 2009/08/07 |
|---|---|
| 크라이텍 한국 지사에서 일할 프로그래머분들 모십니다 (14) | 2009/08/01 |
| 잘 알려지지 않은 C++0x의 유용한 기능들 - 두번째 (2) | 2009/07/29 |
| 잘 알려지지 않은 C++0x의 유용한 기능들 - 첫번째 (8) | 2009/07/23 |
| Parallelism이란 무엇인가?! (0) | 2009/07/22 |
| 두가지 C++ 차세대 병렬 플랫폼 간단 비교 (1) | 2009/07/21 |
- 잘 알려지지 않은 C++0x의 유용한 기능들 - 첫번째
Tweet
- Game Development
- 2009/07/23 19:59
- C++, C++0x, concept, constant expressions, constexpr, CPP, Cpp0x, defaulted and deleted functions, delegating constructors, enum class
-
최근 C++0x에서 concept 기능을 빼기로 최종 결정되면서 C++계가 나름 시끄러웠습니다. 그러면서 C++0x에 제가 알고 있던 큰 변화들 말고도 자잘하지만 유용한 변화가 꽤 많다는 것을 알게 되었습니다. 앞으로 두세 차례에 걸쳐 그런 기능들을 정리해보려 합니다.
enum class 열거형 클래스
기존 열거형의 다음과 같은 세가지 문제를 해결하고자 나온 놈입니다.
constant expressions 상수표현식
위에서 세번째 case문 같은 것이 가능해집니다.
당연히 컴파일 시점에 계산할 수 있는 것만 constexpr로 지정 가능합니다.
위와 같은 활용도 가능
defaulted and deleted functions 함수 자동생성 버전 사용 및 사용불가 지정
기존에는 복사를 방지하려고 복사 생성자와 대입 연산자를 private에 둔다던가 하는 방법을 썼었죠. 이제 다음과 같이 명시적 지정이 가능합니다.
또한 다음과 같이 컴파일러 자동 생성 버전을 사용함을 명시적으로 나타낼 수도 있습니다.
delegating constructors 생성자 위임
C++98에서는 여러 생성자가 같은 작업을 하도록 하려면 중복 코드를 짜거나 다음과 같이 "init()" 함수 같은 것을 만들어야 했습니다.
C++0x에서는 다음과 같이 한 생성자에서 다른 생성자에 작업을 위임할 수 있습니다.
이번 회는 여기까지입니다. C++ 사용하면서 불편하거나 번거로웠던 사항들을 많이 해결하고 있는 느낌입니다.
* 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다.
enum class 열거형 클래스
기존 열거형의 다음과 같은 세가지 문제를 해결하고자 나온 놈입니다.
- 기존 열거형은 암묵적으로 int로 변환이 되어, 그런 행동을 원치 않을 경우 문제가 된다.
- 기존 열거형은 그를 포함하는 스코프로 각 토큰들을 노출시켜, 이름 충돌을 발생시킬 수 있다.
- 열거형의 기반 타입을 지정할 수 없어, 혼란과 호환성 문제가 발생하고 전방 선언을 할 수 없다.
constant expressions 상수표현식
- 더 일반적 상수표현식 제공
- 사용자 정의 타입에 대한 상수표현 허용
- 컴파일 시점에 초기화가 이루어지도록 보장하는 도구 제공
위에서 세번째 case문 같은 것이 가능해집니다.
당연히 컴파일 시점에 계산할 수 있는 것만 constexpr로 지정 가능합니다.
위와 같은 활용도 가능
defaulted and deleted functions 함수 자동생성 버전 사용 및 사용불가 지정
기존에는 복사를 방지하려고 복사 생성자와 대입 연산자를 private에 둔다던가 하는 방법을 썼었죠. 이제 다음과 같이 명시적 지정이 가능합니다.
또한 다음과 같이 컴파일러 자동 생성 버전을 사용함을 명시적으로 나타낼 수도 있습니다.
delegating constructors 생성자 위임
C++98에서는 여러 생성자가 같은 작업을 하도록 하려면 중복 코드를 짜거나 다음과 같이 "init()" 함수 같은 것을 만들어야 했습니다.
C++0x에서는 다음과 같이 한 생성자에서 다른 생성자에 작업을 위임할 수 있습니다.
이번 회는 여기까지입니다. C++ 사용하면서 불편하거나 번거로웠던 사항들을 많이 해결하고 있는 느낌입니다.
* 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다.
'Game Development' 카테고리의 다른 글
| 크라이텍 한국 지사에서 일할 프로그래머분들 모십니다 (14) | 2009/08/01 |
|---|---|
| 잘 알려지지 않은 C++0x의 유용한 기능들 - 두번째 (2) | 2009/07/29 |
| 잘 알려지지 않은 C++0x의 유용한 기능들 - 첫번째 (8) | 2009/07/23 |
| Parallelism이란 무엇인가?! (0) | 2009/07/22 |
| 두가지 C++ 차세대 병렬 플랫폼 간단 비교 (1) | 2009/07/21 |
| VSTS 2010 팀 3분기 맴버 모집 (0) | 2009/07/09 |
- 수학적 엄밀함으로 살펴보는 C++ 타입과 알고리즘
Tweet
- Book Review
- 2009/07/13 04:16
- C++, concept, Elements of Programming, iterator, STL, 알고리즘
-
책 제목과 C++을 만든 이인 Bjarne Stroustrup의 추천 글귀에 끌려 이북으로 구입하였습니다.
일단 총평은 다음과 같습니다.
- 굉장히 신선한 접근이다.
- C++ 기준으로 설명하니 좋다.
- 신선한 만큼 개념 잡기가 쉽지 않다; (생소한 용어와 상당히 추상적 수학적 개념 대거 등장)
- 제대로 이해하려면 최소 한번 더 읽어봐야 할듯
- 그럼에도 건질만한 건 있었다...
* 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다.
'Book Review' 카테고리의 다른 글
| 프로그래밍 언어의 창시자들 (0) | 2009/09/17 |
|---|---|
| 글쓰기 공작소 - 나도 글 잘 쓰고 싶다 (4) | 2009/07/31 |
| 수학적 엄밀함으로 살펴보는 C++ 타입과 알고리즘 (0) | 2009/07/13 |
| 번역으로 살펴보는 우리말 (0) | 2009/06/01 |
| The Productive Programmer (10) | 2009/04/12 |
| 긍정과 부정, 3:1의 임계점을 향해 (6) | 2009/04/09 |
- My Recent Tweets 20090624
Tweet
- Tweets
- 2009/06/25 05:55
- agile, C++, Erlang, heap, pomodoro, SafeInt, STL, Thread, Twitter, visual studio 2010, VS2010, 뽀모도로, 스레드, 애자일, 얼랭, 트위터, 힙메모리
-
'Tweets' 카테고리의 다른 글
| My Recent Tweets 20090715 (0) | 2009/07/15 |
|---|---|
| My Recent Tweets 20090705 (0) | 2009/07/06 |
| My Recent Tweets 20090624 (0) | 2009/06/25 |
| My Recent Tweets 20090608 (0) | 2009/06/08 |
| My Recent Tweets 20090507 (0) | 2009/05/08 |
| My Recent Tweets 20090428 (0) | 2009/04/28 |
- D&D-style map of C++
Tweet
- Game Development
- 2009/06/06 18:04
- C++, cplusplus, CPP, D&D
-
복잡한 C++의 세계를 다 표현하기에는 명백히 부족하지만...
'Game Development' 카테고리의 다른 글
| 크라이텍 깜짝 선물 (2) | 2009/06/16 |
|---|---|
| n번째 피보나치 수 구하는 프로그램 (0) | 2009/06/09 |
| D&D-style map of C++ (2) | 2009/06/06 |
| Double-checked locking 이디엄의 함정 (2) | 2009/06/03 |
| Iterators Must Go! (in favor of ranges) (2) | 2009/05/15 |
| std::stack에 관한 소고 (0) | 2009/05/12 |
- Iterators Must Go! (in favor of ranges)
Tweet
- Game Development
- 2009/05/15 08:06
- Andrei Alexandrescu, Boost, BoostCon, C++, C++0x, CPP, D programming language, iterator, Range
-
부스트 라이브러리 관련 컨퍼런스가 있더군요. BoostCon 이라는 이름으로 얼마전 열렸습니다. 거기서 C++ 관련 대가 중 한명인 Andrei Alexandrescu가 키노트를 발표하였습니다. 제목은 "Iterators Must Go"였습니다.
결론은 말하자면 iterator는 여러가지 단점이 있으니 대신 range라는 개념을 쓰자였습니다. Range의 개념은 사실 한참 전에 나온 것으로 부스트를 비롯하여 여러 라이브러리에 이미 구현되어 있습니다. 안드레이는 여기서 한발 더 나아가 아예 range로 iterator를 대체할 것을 주장합니다. 안드레이의 결론은 다음과 같습니다.
- Range가 더 잘 추상화된 개념이다
- 안정성도 더 높다
- 쉽게 조합하여 확장할 수 있다
- 단순히 기존 iterator 버전의 STL 알고리즘들을 range로 포팅하는 수준을 넘어 한단계 업그레이드시킬 수 있다
대가답게 슬라이드 자료도 명료하고 흥미진진합니다. C++에 관심이 많은 분들은 꼭 읽어보십시오. 이곳에도 range 관련 글이 있으니 더불어 읽으시면 좋을듯.
p.s. 이러한 range를 비롯하여 STL 라이브러리 제공하는 언어가 하나 더 있으니 D 언어입니다. 저도 한때 관심을 가지고 공부했었는데... 나름 흥미로웠습니다. 게임 개발용으로도 적절한 언어로 보였거든요. 어쨌든 슬라이드나 안드레이의 홈페이지를 보셨다면 아시겠지만 조만간 그가 저술한 책, "The D Programming Language"가 나옵니다. 주류 언어로 자리잡기에는 여전히 갈길이 멀어보이지만 그래도 기대되는 행보입니다.
'Game Development' 카테고리의 다른 글
| D&D-style map of C++ (2) | 2009/06/06 |
|---|---|
| Double-checked locking 이디엄의 함정 (2) | 2009/06/03 |
| Iterators Must Go! (in favor of ranges) (2) | 2009/05/15 |
| std::stack에 관한 소고 (0) | 2009/05/12 |
| 실시간 렌더링에도 temporal coherence를 활용하자! (0) | 2009/05/06 |
| Dual Quaternion Skinning (2) | 2009/04/29 |
- std::stack에 관한 소고
Tweet
- Game Development
- 2009/05/12 20:34
- C++, Concurrency, condition variable, Exception, exception safety, race condition, std::stack, STL, Thread Safety, 스레드안정성, 스택, 예외, 예외안전성
-
이하의 정보는 "C++ Concurrency in Action"에서 얻은 것임을 밝힙니다.
(참고로 아직 정식 출간되지 않은 이 책의 맛보기 버전을 여기에 있는 쿠폰코드를 사용하면 싸게 구입하실 수 있습니다.)
스택하면 push/pop이 기본인데요, 이 std::stack은 실제 스택 꼭대기에 있는 놈을 리턴하는 top()과 실제 그 놈을 스택에서 꺼내는 pop() 함수가 따로 있습니다. 처음 사용할 때, 왜 이렇게 함수를 나눠놨을까 의아해 하였습니다.
이유가 있었더군요. 예외 안정성 때문이었습니다. 그냥 함수 하나로 값 리턴과 꺼내기를 한번에 수행할 경우, 그 리턴값을 지역 변수 등에 복사할 때 예외가 발생하면, 값은 못얻어왔으나 스택에서는 이미 꺼내버려 값이 사라지는 경우가 발생할 수 있습니다. 현 구현처럼 두 함수로 나눠놓으면 top()의 리턴값을 복사하는 와중에 예외가 발생하더라도 아직 꺼내진 않았기 때문에, 자료구조의 상태를 예외 발생 이전대로 안전하게 유지할 수 있는 것이죠.
근데 이러한 선택이 스레드 안전성에서는 오히려 문제가 됩니다. 아래와 같은 race 상황을 근본적으로 막을 수 없기 때문입니다. top()과 pop() 함수 등을 뮤텍스로 잘 보호해놓았어도 여전히 해결이 안되는 인터페이스 자체의 문제라 하겠습니다.
따라서 예외 안정성과 스레드 안정성을 동시에 보장할 수 있는 인터페이스를 고안해야합니다. 여러가지 해결책이 있습니다만, 다음과 같은 두가지 버전의 pop 함수를 제공해 상황에 맞게 사용자가 골라 쓸 수 있게 하는 것을 추천합니다. 위에 것은 포인터로 리턴하므로 복사 시 예외 문제가 없고, 아래 것은 출력 인자에 값을 복사한 후 pop을 하니 역시 예외 안정성이 유지됩니다.
(여러 해법들의 장단점에 대한 구체적 설명은 서두에 언급한 책을 참고해주세요.)
이 경우 빈 스택에 pop을 할 경우 예외를 던집니다. 스택이 비어 있지 않을 때가지 대기하다가 pop하는 등의 좀더 고급 동작을 원하는 경우, condition variable 같은 고급 동기화 개체를 사용해야 합니다. (위 쿠폰코드가 있는 슬라이드에 그 예가 나와있습니다.)
'Game Development' 카테고리의 다른 글
| Double-checked locking 이디엄의 함정 (2) | 2009/06/03 |
|---|---|
| Iterators Must Go! (in favor of ranges) (2) | 2009/05/15 |
| std::stack에 관한 소고 (0) | 2009/05/12 |
| 실시간 렌더링에도 temporal coherence를 활용하자! (0) | 2009/05/06 |
| Dual Quaternion Skinning (2) | 2009/04/29 |
| Mixed Resolution Rendering (0) | 2009/04/23 |














Recent comment