이 시리즈에서는 C++ 코드를 작성하면서 새롭게 알게 된 사실들에 대해 메모하기 시작하려 한다.

사실 이 시리즈는 주로 내 짧은 기억력을 보강하기 위해 작성되는 글이다. 그래서 내가 겪은 시행착오와 그 해결책에 대해 기록할 것이며, 내용 중에 오류가 있을 수 있다. 만약 이 글을 읽다가 잘못된 부분을 발견한다면, 메일로 알려주면 즉시 수정하도록 하겠다.

Motivation

21세기 초에 비해 로봇 분야는 크게 변했다. 20세기와 21세기 연구의 가장 큰 차이는 정보 접근성의 획기적인 향상이라고 생각한다. 좀 더 쉽게 풀어서 설명을 해보자면, 20세기에 연구자들은 논문을 통해 연구 결과를 공유하고 자신의 논문이 널리 읽히길 기도하는 수밖에 없었다(?). 그에 비해 21세기에는 논문 게재는 단순히 연구의 공신력을 얻는 것뿐이고, 그 후 연구자가 SNS나 GitHub를 통해 자신의 연구를 적극적으로 홍보하는 self-어필의 시대가 되었다는 말이다.

이러한 변화에 발맞추어, 나도 연구할 때 공개된 오픈 소스 코드를 많이 참고하고 있다. 그중에서도 ‘우와, 정말 잘 짜여진 코드다!’ 싶은 코드들이 많았는데, 그래서 이 시리즈에서는 그러한 코드들을 기반으로 학습한 내용을 공유할 계획이다. ‘For Robotics’라는 제목이 거창할 수 있지만, 사실 Eigen, TBB, tsl::robin 등 C++에 좀 더 초점을 맞춘 글이 될 것 같다. 또한, 컴퓨터 하드웨어의 발전으로 TBB 같은 병렬 처리와 CUDA 프로그래밍을 통해 오픈 소스를 발표하는 경우가 늘고 있는데, 병렬처리를 효율적으로 하는 방법 등등에도 다뤄보고자 한다.

특히, C++ 17을 기점으로 C++에 문법적으로 큰 변화가 있었다. 그에 반해 학교에서 배우는 자료들이나 블로그 글들은 예엣날 C++을 기반으로 설명된 글들이 많아서 다소 아쉬웠다. 목마른 자가 우물을 판다고 하지 않던가. 그래서 이 시리즈에서는 STL(Standard Template Library) 내에 있는 다양한 알고리즘들 또한 소개할 예정이다. 또한 다른 블로그 글과는 다르게 ‘로보틱스에서 활용 사례’를 들어서 실제로 어떻게 로보틱스 분야에서 해당 Modern C++ 함수가 사용되고 있는지도 설명을 들어줄 예정이다.

존경하는 교수님 중 한 분께서 앞으로는 Know-how(어떻게 하는지)은 ChatGPT 같은 친구들에게 물어보면 되는데, ‘무엇을 물어볼지’를 아는 Know-what이 중요해질 것이라고 말씀을 하신 적이 있다. 이 시리즈 또한 Modern C++ 코딩 스타일이 친숙하지 않은 이에게 이런게 있구나-하고 소개하는 것을 목표로 한다.


Robotics 연구자/개발자를 위한 Modern C++ 시리즈입니다. 사용된 코드들은 여기에서 확인할 수 있습니다.

  1. Modern C++ for Robotics 1. Introduction
  2. Modern C++ for Robotics 2. 함수형 프로그래밍과 Lambda Expression
  3. Modern C++ for Robotics 3. Lambda Expression의 Anonymous Function과 Named Function
  4. Modern C++ for Robotics 4. std::for_each() 쉬운 설명
  5. Modern C++ for Robotics 5. std::insert() 쉬운 설명
  6. Modern C++ for Robotics 6. std::move() 쉬운 설명
  7. Modern C++ for Robotics 7. std::transform() 쉬운 설명
  8. Modern C++ for Robotics 8. std::accumulate() 쉬운 설명
  9. Modern C++ for Robotics 9. std::all_of(), std::any_of(), std::none_of() 쉬운 설명
  10. Modern C++ for Robotics 10. std::copy_if() 쉬운 설명
  11. Modern C++ for Robotics 11. std::find_if() 쉬운 설명
  12. Modern C++ for Robotics 12. std::remove_if() 쉬운 설명
  13. Modern C++ for Robotics 13. std::replace_if() 쉬운 설명