아는 만큼 보이는 AI - 표지

 

아는 만큼 보이는 AI - 표지와 내용

 

AI 발전 추세를 간략히 살펴보기 좋은 책입니다.

기반 기술도 굉장히 단순화해서 설명하기 때문에 전공 지식이 없어도 읽기에 지장은 없어 보입니다.

반대로, 기술서가 아닌만큼 전문 지식을 쌓기 보다는 AI 트렌드를 간단하게 살펴보기 좋은 책입니다.

 

책은 크게 4가지 Chatper로 분류됩니다.

  • Chapter 1 - AI, 어디까지 발전했나: 대표적인 AI 기술 소개
  • Chapter 2 - AI, 어떤 원리로 학습하나: AI 모델을 학습시키는 법
  • Chapter 3 - 생성형 AI란 무엇인가: 생성형 AI의 작동 방식
  • Chapter 4 - AI, 어떻게 사용될까: 주요 기업의 AI 활용 사례

Chapter 1에서는 AI 서비스의 추세를 설명합니다.

람다(LaMDA), 달리(DALL·E), 알파폴드(AlphaFold), ChatGPT 등 다양한 AI 기술/서비스에 대해서 설명하는데요,

기존에 있던 AI 서비스와 어떤 차이가 있는지, 어떻게 발전했는지를 얘기합니다. (예, 미드저니 vs. 달리)

서비스 이름(ChatGPT)과 기술/모델(GPT-3.5, GPT-4)을 혼용하는 부분은 조금 아쉽습니다.

 

Chapter 2에서는 AI 학습에 대해 간략히 설명합니다.

학습(Training)이 무엇인지, 학습 데이터 양, 편향, 과적합 등에 대해서도 사람에 빗대어서 잘 설명합니다.

읽다보면 '설명 재밌게 잘하네' 라는 생각이 듭니다.

 

Chapter 3에서는 챗봇을 기준으로 생성형 AI에 대해 간략히 설명합니다.

과거 검색 기반 챗봇과 생성형 AI를 사용한 생성 기반 챗봇의 차이를 들어서 설명하는데요,

특히, 생성형 AI의 학습, 추론, 답변 방식에 대해서 굉장히 단순화해서 설명합니다.

'생성형 AI는 답변할 때의 과정이 이런 느낌이구나' 정도로 이해하기는 좋을 것 같습니다.

 

Chapter 4에서는 몇몇 기업의 AI를 이용해서 추천/분류하는 서비스에 대해서 설명합니다.

각 AI 모델에 대한 설명이 각 서비스의 실제 AI 모델의 학습 및 서비스 방법을 설명했다기 보다는,

그러한 AI 모델을 일반적으로 만들어볼 수 있는 방식에 대한 설명이므로 오해하지 않으면 좋을 것 같습니다.

그러나, 좋은 설명으로 보입니다.

 

AI 트렌드를 살펴보기 좋은 책인 것 같고,

일부 전문 용어도 간단하게 설명하는 만큼 AI가 궁금한 사람이 쉽게 살펴보기 좋은 책인 것 같습니다.

 

❕ 길벗 출판사의 개발자 리뷰어에 선정되어 도서를 제공받았습니다.

읽기 쉽고 코드 리뷰하기 좋은 코드 작성 가이드 - 표지

 

 

가독성이 좋은 코드 작성 방법에 대해 설명한 책입니다.

근래에 뉴스에 자주 언급되던 그 회사, LINE(현재 라인야후)의 개발자가 작성한 책이네요!


이 책은 LINE(현 라인야후) 개발자가 작성했다고 해서 어떤 책일지 조금 더 궁금하기도 했는데요,
책에서 저자는 네이밍, 주석, 함수 분할, 의존성 등 다양한 부분에 대해서 코딩 가이드를 권장하고 있습니다.


다른 여러 개발 방법론을 다룬 서적이 그러하듯, 적용하면 좋겠지만 레거시 코드가 함께 남아있는 프로젝트에는 적용하기 어려운 내용도 많이 포함되어 있습니다.

코드의 가독성과 유연성을 높이는 많은 방법 중 아마도 저자가 개발 업무를 하면서 중요하다 생각한 정보들을 알차게 채운 것 같습니다.


한 가지 아쉬운 점은 책에서 예시로 사용하는 언어가 코틀린으로 되어있다는 것인데요,

코틀린을 모르는 사람은 예시를 보는게 조금 답답할 것 같습니다.


저자도 이를 염려했는지 부록으로 필요한 코틀린 문법을 간략하게 설명하기도 합니다.
차라리 예시를 pusedo code로 작성하는 식으로 했다면, 조금 더 많은 독자가 쉽게 읽히지 않을까 합니다.
 - 가령 열거형(enum)을 다루는 예시 코드에서 when 대신 switch-case를 사용하는 -

책은 권장 내용을 올바르게 적용한 좋은 예시와 잘못 적용한 나쁜 예시를 함꼐 다루고 있습니다.
몇 가지 안티패턴과 그 개선방안도 같이 언급하고 있어서, 예제를 통해 직관적으로 이해하기 좋은 편입니다.
아무래도 실무 개발자가 다년간의 경험을 바탕으로 선정한 방법들이기 때문에 조금더 실무 적용에 가깝지 않을까 생각합니다.

또한, 책에서 저자는 코드 리뷰에 임하는 자세에 대해서도 짧은 챕터로 언급하는데요,

이 부분은 특히 들이 알면 좋을 것 같았습니다.
책에서 언급된 방법들을 모두 적용할 수 있다면 굉장히 좋겠지만, 어쩔 수 없이 타협하게 되는 부분이 있다보니 이러한 책을 읽을 때마다 매번 반성만 하는 것 같네요😂.

모두의 네트워크 기초 - 표지

 

근래에 책을 한 권 읽었습니다.

네트워크 공부 시작하기에 괜찮은 책이었는데요.

 

저자는 책의 머리말에서 타겟 독자를 다음과 같이 얘기했습니다.

📌 네트워크를 처음 배우는 학생

📌 IT 분야에서 업무를 담당하고 있는 개발자 혹은 시스템/솔루션 운영자

📌 네트워크 분야에서 일하고자 하는 사람

 

다만, 제 생각에는 개발자 및 시스텝/솔루션 운영자라면 알고있을 내용일 것 같고,

네트워크 개념을 공부하는 초심자를 위한 서적으로 적합할 것 같습니다.

네트워크 전반에 대해서 가볍게 서술되어 있고 그림도 함께 제공해서 쉽게 읽히고 부담도 안되는데요,
독자에게 이야기하듯 서술되어 있는 것도 좋은점 같습니다.

네트워크 하면 가장 쉽게 언급되는 OSI 7계층의 각 계층별 역할도 가볍게 짚어주는 것도 좋았는데요,
저는 통신 네트워크 석사이다 보니 오히려 너무 가벼운 내용만 있는 것 같은 기분도 받았습니다.
책의 이름에서 알 수 있듯이 이 책은 기초를 다루고 있기 때문에, 실무적인 내용은 다른 서적도 참고하는 것이 좋을 것 같습니다.

만약 저의 주변 사람이 네트워크 공부를 시작하겠다고 한다면,

이 책으로 시작하라고 할만큼 기초 서적으로는 굉장히 적합해 보입니다.

 

 

대규모 C++ I편: 절차와 아키텍처 - 표지

 

길벗 출판사에서 진행하는 도서 리뷰 이벤트에 당첨되어서 도서를 받았습니다.

C++기반의 대규모 프로젝트를 위한 기술서라니!

 

이 책은 C++의 문법이나 고급 trick 같은 것을 설명하는 책은 아닙니다.

C++ 기반의 library/application 프로젝트를 구축하는데 있어서 고려해야 하는 것들을 소개하는 책이었습니다.

소개하는 설계 방법론은 C++ 외의 컴퓨터 언어에서도 사용할 수 있겠으나, 예시 설명이 C++ 기반이기 때문에, C++을 전혀 모른다면 읽기 어려울 수 있어 보입니다.

 

C++ 프로그램을 만드는데 있어서 나타날 수 있는 문제들("나쁜 아이디어")을 소개하고, 그러한 문제들을 해결하기 위한 (유일한 답은 아니겠지만, 상당히 합리적인) 방법들도 같이 소개합니다.

 

책에서 저자는

 📌 C++의 프로그램의 빌드(컴파일 및 링크)에 대한 개념과 내부 동작,

 📌 그로 인해 나타날 수 있는 문제들,

 📌 그러한 문제들을 해결하기 위한 방법을 소개합니다.

 

또한, C++은 자유도가 상당히 높기 때문에 계획 없이 구현하면 스파게티 코드가 되기 쉬운데, 관리가 나빠질 수 있는 경우와 그것들을 방지하기 위한 가이드도 함께 소개합니다.

 

특히, 저자는 나쁜 아이디어라는 이름으로, 문제 상황이 적용된 적절한 예시를 보여주면서, 독자가 최대한 쉽고 직관적으로 문제상황을 인식할 수 있게 해줍니다. 읽다 보면 '아, 그렇지. 이렇게 하면 안되지' 라는 생각이 절로 듭니다.

 

책에서 저자는 지향하는 설계 방법론의 당위성과, 필요한 정보들을 거의 모두 제공하고 있는 것 같습니다.

이 책만 참고하면 저자가 지향하는 설계 방법론을 온전히 재현해낼 수 있을 것 같습니다.

(II편과 III편은 필요합니다 😂)

 

한편, 여러 팀이 여러 라이브러리를 구축하고 통합된 최종 application을 만들어내는 정도의 대규모 프로젝트에서 발생할 수 있(다고 생각이 드)는 문제들도 소개하고 있는데, 저는 간단히 훑어만 보았습니다.

공감이 많이 되지 않는 부분이어서, 그런 내용이 있었다는 것만 알아두고 필요할 때 찾아보려고 합니다.

 

C++은 다른 많은 언어가 제공하는 import 대신 #include 라는 것을 사용합니다.

#include는 copy & paste 동작인 샘인데, 많은 C++ 입문자 또는 주니어 개발자분들은 잘 모르고 반사적으로 사용합니다. 이전 회사의 동기들이나 동료분들도 그러했는데요,

이 책에서는 static, extern, 그리고 inline 등 C++의 다양한 키워드가 컴파일 타임, 링크 타임에 어떤 영향을 주는지도 소개합니다.

 

이러한 키워드들은 보통 경험적으로 사용할텐데요, 경험적인 사용은 통상 성공적인 사용을 토대로 하기 때문에, 잠재적 위험 요인이 무엇이 있는지를 모르고 사용하는 단점이 있습니다.

이제 이 책을 통해 컴파일/링크 동작을 이해한다면, 각 키워드가 어떤 영향을 주는지 알고 사용할 수 있습니다.

저는 C/C++을 접한지는 13년이 넘었고, 연구/실무하면서 사용한지는 8년이 넘은 것 같습니다.

개인적으로 이것저것 많이 찾아보고 테스트해보는 편이었는데도 새롭게 알게 된 것들이 매우 많았습니다.


책에서 저자는 대부분을 C++ 표준에 기반하여 설명하므로, 정의되지 않은/보장하지 않는 동작에 대한 지식도 얻어갈 수 있었고, 몰랐던 부분들도 C++ 표준과 컴파일러의 동작에 기반해서 상세히 설명되어 있어서 읽는 동안 재미있었습니다.

 

 

+ Recent posts