이전

리뷰 (2)

한줄평
평점 분포
  • 리뷰 총점10 100%
  • 리뷰 총점8 0%
  • 리뷰 총점6 0%
  • 리뷰 총점4 0%
  • 리뷰 총점2 0%
연령대별 평균 점수
  • 10대 0.0
  • 20대 0.0
  • 30대 10.0
  • 40대 10.0
  • 50대 0.0
리뷰 총점 종이책
핵심 C++ 표준 라이브러리, 기본적인 라이브러리를 알고싶다면.
"핵심 C++ 표준 라이브러리, 기본적인 라이브러리를 알고싶다면." 내용보기
평소에 C++에 관심도 많고 C++ 이용한 프로젝트들도 많이해서 살까 싶었던 책이었습니다.최근에 리뷰어 이벤트를 하길래 신청했는데 당첨되어서 즐겁게 읽고 있지요 ㅎㅎ(전에 샀던 책 중에 Effective Modern C++ 이라는 책이 있는데 그 책도 류광님이 번역한 책이더군요.)이 책에서 다루는 내용은 C++ 표준 라이브러리에는 무엇이 있는가 입니다.C++ 11, C++ 14 에서 표준으로 사용되는
"핵심 C++ 표준 라이브러리, 기본적인 라이브러리를 알고싶다면." 내용보기

평소에 C++에 관심도 많고 C++ 이용한 프로젝트들도 많이해서 살까 싶었던 책이었습니다.
최근에 리뷰어 이벤트를 하길래 신청했는데 당첨되어서 즐겁게 읽고 있지요 ㅎㅎ
(전에 샀던 책 중에 Effective Modern C++ 이라는 책이 있는데 그 책도 류광님이 번역한 책이더군요.)

이 책에서 다루는 내용은 C++ 표준 라이브러리에는 무엇이 있는가 입니다.
C++ 11, C++ 14 에서 표준으로 사용되는 라이브러리를 다루고 있는데
책을 읽으면서 저는 "아, 내가 학교에서 배우고 지금 사용하고 있는 스타일을 보면 C++11 보다는 낮은 스타일을 사용하고 있구나"하고 느꼈습니다.

책의 내용을 나눠서 보자면,
1. C++11, C++14 표준 라이브러리 소개 및 팁.
2. C++17 표준 라이브러리 소개.

표준 라이브러리 소개 및 팁에서는
- 각 기능의 사용법.
- 이런 기능을 사용할 때의 주의점과 팁.
- 그리고 성능.

C++17 표준 라이브러리 소개는 부록에 있는데,
이 내용은 원서에는 없는 내용이다. 번역서에만 있는 내용이라고 하네요.
C++17은 현재 draft 상태지만 올해 3월에 동결되었다고 하며 옮긴이의 정리글입니다.
주로 소개하고 있는 내용은 아래와 같습니다.

  • 문자열에 대한 비소유 참조, std::string_view
  • 없을 수도 있는 값을 나타내는 std::optional
  • 아무 형식이나 담을 수 있는 std::any
  • 형식에 안전한 공용체, std::variant
  • 파일 시스템 라이브러리,
  • 알고리즘의 병렬화
  • 새로 추가된 알고리즘, for_each_n, sample, reduce, transform_reduce, ...
  • 기타 변경 사항


책을 다보고 내용을 다 머릿속에 넣을 수는 없었지만 책장에 두고 개발하면서 꺼내볼만한 책입니다.
주로 사용하는 vector나 string, list, map 말고 다른 기능들을 알 수 있어서 좋았습니다.
중간중간 사용해볼만한 라이브러리를 기억해두고 나중에 쓰기위해 포스트잇을 붙여뒀는데
이렇게 해두면 나중에 잘 찾아볼수 있겠죠?!

C++ 표준 라이브러리는 뭐가 있는지, 어떻게 사용해야할지 모르겠다면 한번 살펴보면 좋을 책입니다!



p****c 2017.07.16. 신고 공감 0 댓글 0
리뷰 총점 종이책
우리 C++이 달라졌어요!
"우리 C++이 달라졌어요!" 내용보기
우리 C++이 달라졌어요!   내가 처음 프로그래밍을 시작한 언어는 C언어였다.   아니 정확히는 난 시작부터 C++이었다.   즉,   #include <stdio.h> int main(int argc, char* argv[]) {     printf("Hello, World!\n");     return 0; }   이 아닌   #include <iostream> int main(int argc, char* argv[]) {
"우리 C++이 달라졌어요!" 내용보기

우리 C++ 달라졌어요!

 

내가 처음 프로그래밍을 시작한 언어는 C언어였다.

 

아니 정확히는 시작부터 C++이었다.

 

,

 

#include <stdio.h>
int main(int argc, char* argv[])
{
    printf("Hello, World!\n");
    return 0;
}

 

아닌

 

#include <iostream
int main(int argc, char* argv[])
{
    
std::cout << "Hello, World!" << std::endl;
    return 0;
}

 

이었음을 말하는데, 컴파일러 기준으로 C++이지 나는 꽤나 오랜 기간 C 스타일로 코딩해왔다.

 

 

게임 개발 쪽에서 꽤나 시간 당연한 선택은 C++이었다.

 

그렇다 보니 너도 나도 C++ 높은 허들을 넘어야만 했고, 그걸 넘은 사람만이 프로가 있었다.

 

이제와 밝히자면, 내가 작업으로 업계에 알바로 염탐(?)했던 2000년대 당시의 게임 개발자 분들중에서는, 나처럼 C스타일 코딩을 고수하신 분들이 많았다.

 

실제로 일을 시작한 2005년도... 별반 다르지 않았다 랄까 

 

물론 역시 배움의 깊이가 부족 했음은 당연히 인정한다.

 

내가 boost 처음 접하게 것은, 2008 , 당시 프로그래밍 이사님이 알려주신 boost bind, boost function 시작이었다.

 

이후 필요한 기능을 두개 찾아서 쓰다가, C++ tr1 (technical report 1) 이라는 있다는 것을 알게 됐고, 것들이 boost 기능 일부를 포함했음도 알게 됐다.

 

C++ 0x라고 해서, 차세대 C++ 기능을 0x (2000~09) 사이엔 정식 포함될 알았던 계획에서, C++  11 (2011) 늦춰지면서 기술 보고서의 부분적 이식이 이뤄졌던 것이다.

 

boost 기능들이 순차적으로 표준화 되고 있고, 실질적으로 boost 차기 C++ 표준의 후보자 였다는 것도 알게 됐다.

 

나는 꽤나 시간인 7년정도는 C++ 위주로만 사용했는데, 과정에서 아쉬움은 포인터, 함수 포인터, 문자열이었다.

 

Boost 많은 C++ 개발자 사이에서 논란이 되거나, 자주 필요로 하는, 또는 다른 언어가 가진 장점을 흡수하려 노력했다.

 

심지어 개중에는 언어에서는 대부분 구현되지 않은 훌륭한 녀석 (multi_index같은) 존재한다.

 

사실 C++ 표준은 레거시를 포함 , 권장하지 않는다.

 

Smart pointer (shared_ptr, unique_ptr, weak_ptr)로써 소유권의 의미를 엄격하게 관리하길 바라며, 의도가 드러나는 코드를 원한다. 여러가지 이유로 raw ptr 허용할 뿐이다.

 

또한 WIN32 비롯한 POSIX 라이브러리를 직접 다루는 것이 그다지 직관적이지 않아 기능 하나를 구현할 때도, 많은 시행 착오를 겪어야 했던 지난날은 이제 안녕~

 

Chrono Time SYSTEM_TIME이나 time_t 사용해야 했던 지난날의 아픔을 모두 잊어도 되게 해준다.

 

auto, r-value reference, enum class 등은 C++ 사용하며 아쉬웠던 틈을 빼곡히 채워준다.

 

멀티 리턴 값이 필요하다고? 그렇다면 tuple!

 

C++ 표준 라이브러리의 확장과 boost library 발전으로 생산성과 속도, 표현력 많은 부분이 성장하고 있다.

 

물론 그럼에도 집중력과 노력을 기울여야만 장점을 이끌어 있는 어려운 언어 임은 분명하다.

 

레거시를 포함하기에 실수의 여지를 포함하여 장점들을 놓칠 있다는 점도 인정한다.

 

하지만 그럼에도, 같은 포지션에서 경쟁력을 잃고 사라진 수많은 언어들과는 다르게 C++ 발전하고 있다.

 

C++ 몇가지 단점들을 커버할 수만 있다면, 결국 C++ 수명은 예상보다 훨씬 길어 있지 않을까 


YES마니아 : 로얄 s*******4 2017.07.12. 신고 공감 0 댓글 0