이전

리뷰 (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