< 자바 코드의 품질을 높이는 100가지 방법 >

타키르 발레예프 지음 | 정병열 옮김 | 한빛미디어

 

어떤 언어로 개발하든 개발자라면 다양한 실수를 하게 된다. 의도하든 의도하지 않든 그 실수를 제때 수정하지 않는다면 나중에 비싼 비용을 치뤄야하는 것은 널리 알려진 사실이다. 그렇다면 반복되는 실수를 어떻게 사전에 알 수 있을까? 경험이 많은 개발자라면 다양한 케이스에 대한 노하우가 있기 때문에 적당한 수준으로 실수를 보완해 가겠지만 경력이 얼마되지 않는 개발자라면 명백한 실수도 잘 알아채지 못하는 경우가 종종 있는 것 같다. 특히 컴파일러나 런타임시에 에러가 나온다면 다행이지만 그렇지 않은 경우도 상당히 많다는 것이 문제이다. 테스트 케이스를 통해 문제가 있는 코드가 커버되지 않는다거나 특정한 경우에만 문제가 발생한다거나 또는 시간이 지나야 문제가 나타나는 등 바로 알아채릴 수 없는 다양한 경우가 존재한다.

이 책은 Java 개발에서 반복적으로 발생하는 100가지 실수를 모아 더 나은 코드를 작성할 수 있도록 돕는 실전가이드이다. 다양한 예제를 통해 예외 처리, 변수 처리, 유닛 테스트에서 발생할 수 있는 다양한 문제의 원인과 해결책을 알려준다. 1장에서는 코드 품질 관리를 위한 기본적인 개념에 대한 소개를 통해 기본 개념을 익힐 수 있도록 한다. 이후 표현식에 관련된 부분, 프로그램 구조, 숫자, 예외처리, 문자열, 라이브러리, 유닛테스트 등 Java 개발에 대한 전반적인 영역을 다룬다. 특히 무심코 넘길 수 있는 숫자의 정밀도 손실이나 오버플로우 등 신경써야 할 부분에 대해 잘 설명을 해주며, 문자열에서는 replaceAll 함수의 오용 및 문자열의 대소문자 비교 등 사소한 실수에 대해 점검할 수 있는 요령을 잘 보여준다.

이미 알고 있다고 생각하지만 다시 되집어 볼 수 있는 유용한 정보를 제공하고 있다고 생각이 들었다. 특히 Java 개발을 시작한지 얼마되지 않는 개발자라면 옆에 두고 천천히 읽어보면서 자신의 것으로 소화시키면 매우 유용하겠다는 생각이 들었다. 개발을 빨리하는 것도 중요할 수 있지만 그에 못지않게 코드의 품질을 높이는 것은 더 중요하다고 볼 수 있다. 개발을 진행하면서 꼼꼼히 살펴보고 품질을 높이려는 노력을 기울이는 것이 필요하다고 생각된다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 실전 코드로 배우는 Vue.js

2024. 10. 27. 18:24 | Posted by 꿈꾸는코난

< 실전 코드로 배우는 Vue.js> | 마야 셰빈 지음 | 정병열 옮김 | 한빛미디어

 

요즘 Vue.js를 이용하여 개발하는 개발자들을 종종 만나는 것 같다. 개발 업무를 하고는 있지만 프론트엔드쪽 개발은 거의 해본 적이 없어서 Javascript도 사용해본 적이 거의 없다. 물론 Vue.js도 접해본 적은 거의 없다고 볼 수 있다. 최근 회사 개발 업무때문에 Vue.js로 된 코드를 분석하고 일부 수정해야 할 일이 생겼다. 급하게 인터넷에서 자료를 찾아보면서 필요한 수정 작업은 진행했지만 Vue에 대한 기본적인 개념과 용어, 그리고 구조에 대해 매우 생소하다는 것을 느끼게 되었다. 단순히 Javascript로만 생각했던 것과 다르게 상당히 구조적으로 설계되어 있다는 느낌을 받았다. Vue.js에 대해 좀 더 깊이있게 알고 싶다는 생각이 들 때 이 책을 접하게 되었다.

이 책은 책 소개에 있는 그대로 실무에 바로 적용 가능한 코드를 다루고 있으며, 기본적이 개념을 상세히 설명할 뿐 아니라 실제 어플리케이션을 개발하는 과정을 그대로 따라가면서 하나하나 차근차근 설명을 해주고 있다. 이런 설명덕분에 생소했던 개념도 눈에 잘 들어오게 되었고 전반적인 구조도 잘 이해할 수 있게 된 것 같다.

책은 모두 13장으로 구성되어 있다. 1장에서는 Vue의 장점과 Vue 개발을 위한 개발 환경의 필수 도구를 설치하고 사욯하는 방법에 대해 소개한다. 물론 이미 익숙한 사람도 있겠지만 처음 접하는 개발자를 위해 가장 기본이 되는 점을 소개하는 부분이 꼭 필요하다고  생각한다. 2장에서는 Vue의 기본 작동 방식을 소개한다. 언어 문법적인 측면뿐만 아니라 Vue 개발을 위한 가상 DOM과 가상 DOM을 이용해 성능을 향상하는 과정을 보여준다. 또한 컴포턴트의 로컬 데이터 제어 및 UI 템플릿 표시하는 방법, 그리고 Vue 컴포넌트 생성 및 등록, 템플릿 구문등에 대해 자세히 소개하고 있다.  이 기본 개념을 이용하여 3장에서는 Vue 컴포넌트를 생성하고 Vue 어플리케이션에 타입스크립를 활성화시키는 방법을 보여준다. 또한 재사용 가능한 컴포넌트를 만들고 여러 컨텍스트에서 스타일을 격리하고 다양한 컴포넌트를 구성하는 방법을 보인다. 4장부터는 3장까지 익힌 개념을 바탕으로 컴포넌트 상호작용, 컴포지션 API, 외부 데이터 통합 과정을 자세히 설명한다. 또한 7장부터는 좀 더 고급 기술을 활용한 방법을 제시한다. 고급 랜더링과 동적 컴포넌트 플러그인 구성 방법, 라우팅, 상태 관리 등을 설명한다. 이후 이어지는 장에서는 사용자 경험을 향상시킬 수 있는 Vue만의 고급 기술에 대해 차례대로 설명한다.

이 책을 통해 Vue의 핵심 기능을 활용하고, 확장성 높은 인터렉티브 웹 어플리케이션을 구축할 수 있는 기술을 습득할 수 있다고 생각한다. Vue을 모르더라도 이 책을 따라 기본 개념을 이해하고 따라간다면 어느정도 개발을 진행하는데 문제가 없을 정도로 실력이 향상될 수 있다고 본다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

'꿈꾸는 책들의 도시' 카테고리의 다른 글

[경제] 박태웅의 AI 강의 2025  (3) 2024.11.06
[경제] 2025 AI 대전환  (2) 2024.11.06
[IT] 코드 밖 커뮤니케이션  (7) 2024.09.13
[과학] 뜻밖의 과학사  (1) 2024.09.13
[IT] 네트워크 인프라 자동화  (1) 2024.08.23

[IT] 코드 밖 커뮤니케이션

2024. 9. 13. 16:32 | Posted by 꿈꾸는코난

< 코드 밖 커뮤니케이션 > | 재퀴 리드 지음 | 곽지원 옮김 | 한빛미디어

 

일반적으로 과학자를 생각하면 잘 정리된 연구실에서 정해진 절차에 따라 연구하고 원하는 결과물을 만들어 내는 것을 생각한다. 물론 대다수 과학적 산물들은 이러한 개발자 능력은 단순히 프로그래밍만 잘하는 것만으로는 충분하지 않다. 개인 프로젝트를 제외한다면 모든 개발은 다수의 인원들이 모여 협업하는 형태를 이루고 있다. 제대로 된 협업을 위해서는 제대로 된 의사소통이 필수적이라고 할 수 있다. 하지만 의외로 많은 개발자들이 의사소통에 어려움을 겪거나 심지어는  소홀히 하는 경우가 있다. 이러한 역량은 다양한 학습을 통해 향상시킬 필요가 있으며, 이런 종류의 책을 통해 직간접적으로 다양한  경험을 획득할 수 있다고 본다.

이 책에서는 단순히 대화와 같은 단순 소통의 의미로 커뮤니케이션이라는 용어를 사용하지 않는다. 개발자는 개발문서 등을 통해 이해당사자와 소통하게 된다. 이때 중요한 측면이 패턴의 개념이다. 소프트웨어 개발과 아키텍처에는 코드를 작성하고 시스템을 설계할 때 적용할 수 있는 패턴과 안티패턴이라는 개념이 있다. 패턴이란 특정한 또는 일반적인 문제를 해결하는데 효과가 입증된, 재사용 가능한 솔루션을 의미한다. 안티패턴은 문제를 해결하는 올바른 방법인 것처럼 보이지만 실제로는 그 어떤 이점보다 더 중대한 부정적인 결과를 초래할 수 있는 것을 의미한다. 실제로 좋은 아이디어를 만들기 위해서는 투자가 필요하지만 투자를 하지 않으면 나쁜 아키텍처로 인해 장기적으로 더 많은 비용이 든다는 의미로 해석할 수 있다.

이 책은 총 4부로 구성되어 있다. 1부는 다이어그램 및 시각 자료의 패턴과 안티패턴을 다룬다. 개발자가 기술적인 측면에서 꼭 갖춰야 하는 개념이라고 볼 수 있다. 2부에서는 원격 및 대면 커뮤니케이션에 적용할 수 있는 서면, 언어적 및 비언어적 커뮤니케이션에 대한 패턴과 기법을 다루고 있으며, 3부에서는 문서화를 포함한 지식 관리 및 공유를 개선하기 위한 원칙, 사례 및 패턴을 보여준다. 4부에서는 하이브리드 및 원격 환경에서 다른 시간대와 다른 근무 패턴을 가진 사람들과 소통할 때 사용할 수 있는 다양한 전략과 패턴을 소개한다.

대략적인 구성만 보더라도 개발자가 부족하다고 느끼거나 귀찮아하는 부분들이 많이 눈에 띈다. 중요하다고는 개발자 누구나 생각하지만 실제 본인이 잘하기는 어려운 부분들이다. 하지만 이러한 역량이 궁극적으로 개발 과정 및 최종 개발  산물물의 완성도를 높이고, 궁극적으로는 프로젝트의 성패에까지 큰 영향을 미치는 요소들이라고 볼 수 있다. 마지막 4부에 나오는 소통 역량은 시시각각 변하는 다양한 근무형태에 적응하고 능율을 높이기 위해 꼭 필요한 요소라고 생각든다. 코로나 시대에 다양한 화상 회의 등을 경험했지만, 보다 체계적이고 효율적으로 업무를 수행하기 위해서는 다양한 도구에 대한 이해와 보안, 그리고 지식의 공유가 꼭 필요한 시점인 것 같다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 네트워크 인프라 자동화

2024. 8. 23. 17:34 | Posted by 꿈꾸는코난

< 네트워크 인프라 자동화 > | 맷 오스왈트 외 3인 지음 | 이주호 옮김 | 한빛미디어

 

네트워크 관련 제품을 개발하는 입장에서 테스트 환경을 구성하고 테스트하는 것은 매번 번거럽게 느껴지는 일인 것 같다. 어쩔수없이 반복적으로 해야하는 일이지만 반복적인 부분은 자동화하면 좋지 않을까 생각하곤 한다. 물론 docker 사용으로 서버 설치 및  설정에 대한 부분은 간편하게 만들 수 있고, 많은 부분을 스크립트로 만들어 편리성을 높였다고 생각한다. 하지만 적어도 네트워크 구성에 대한 부분은 여전히 환경을 구성하고 케이블을 연결하고 네트워크 설정을 하는 등 반복적인 작업이 수시로 이어지는 것 같다.

이 책을 처음 접했을 때 게속 고민하던 부분을 상당부분 해소할 수 있지 않을까 생각했다. 책의 초반에는 이미 익숙한 네트워크 개념 및 네트워크 자동화, 리눅스에 대한 개념이 소개되어 빠르게 넘어갈 수 있었다. 이후 클라우드와 네트워크 개발자 환경, 그리고 파이쎤, Go 언어 부분도 눈의 띄는 부분만 빠르게 읽고 넘어갈 수 있었다. 개념적인 부분은 데이터 포맷 및 모델, 템플릿 등 개념을 주의깊게 파악할 수 있었으며, 네트워크 API 부분에서 좀 더 편리하게 어플리케이션 레벨에서 네트워크 설정을 자동화할 수 있는 개념을 익힐 수 있는 것 같다. 깃을 이용한 버전 관리나 자동화 도구, 지속적 통합 부분은 평상시에 해오고 있던 부분과 조금 생소한 부분들이 섞여 있었지만 그럭저럭 어렵지 않게 파악할 수 있었던 것 같다.

마지막 네트워크 자동화 아키텍처 부분에서는 지금까지 학습한 개념과 기술을 종합하여 네트워크 자동화를 도입하기 위한 전반적인 전략을 소개한다. 개념과 기술을 아는 것과 그것을 실제 환경으로 구성하는 것에는 큰 차이가 있다. 이 차이를 해소하기 위해 자동화 작업을 이해하기 쉽고 적용하기도 쉬운 방식으로 구성할 수 있는 네트워크 자동화 아키텍처를 제안하고 있다. 이 아키텍처에는 요구 사항과 구성 요소간 의존 관계를 쉽게 정의할 수 있는 구조화된 관점을 제공하고 있기 때문에 네트워크 자동화 솔루션으로 자동화된 작업을 설계하고 그에 대한 구현 방안을 선택할 때 시스템 관점에서 더 나은 결정을 내리는데 도움을 주고 있다. 실제 네트워크 자동화를 위해 현실적으로 고려해야할 다양한 요소들이 설명되고 있기 때문에 실무적인 관점에서 다양한 방향으로 접근할 수 있었던 것 같다. 기초적인 지식부터 네트워크 자동화에 대한 구체적인 방안까지 폭넓은 정보를 제공해 주는 책인 것 같다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 개발자를 위한 필수 수학

2024. 6. 21. 16:29 | Posted by 꿈꾸는코난

< 개발자를 위한 필수 수학 > | 토머스 닐드 지음 | 박해선 지음

 

이 책은 개발자가 알아야 하는 데이타 과학에 필수적인 수학 지식을 자세히 설명하고 있다. 이농지능 관련한 기술때문에 다양한 수학적인 배경이 필요하게 되었고, 이를 수학적으로 설명하는 책이 많이 나와 있다. 하지만 머신러닝 관련한 수학 개념은 시작부터 너무 어려워 제대로 이해하기가 너무 어렵다는 느낌을 많이 받았다. 기초적인 수학 개념이 배제된, 통계 및 분석에 관련된 깊이 있는 개념 위주로 설명이 되다보니 한번에 그 개념을 이해하고 파악하는데는 무리가 있다는 느낌을 많이 받은 것 같다.

이 책은 기초수학 개념부터 시작을 한다. 간략하게 설명하고 넘어가기는 하지만 정수론과 연산, 함수 등에서 부터 출발해서 극한, 미분, 적분을 1장에서 간략하게 다룬다. 이 개념만 이해하더라도 수에 대한 기본적인 개념을 다시 파악할 수 있는 지식을 얻을 수 있다고 본다. 이 후에는 확률과 통계에 대해 구체적으로 다루며, 벡터와 행렬을 포함한 선형대수학 개념을 설명함으로써 이후 이어지는 데이타 분석을 위한 핵심 개념을 미리 파악할 수 있도록 해 놓았다.

5장부터는 데이타 분석에서 사용하는 다양한 기법을 본격적으로 설명한다. 관측된 데이터 포인트를 통과하는 직선을 그려서 두 개 이상의 변수 간의 관계를 보여주는 것이 가장 실용적인 기법 중의 하나이다. 회귀는 관측 데이터에서 어떤 함수를 훈련한 다음 새로운 데이터에 대한 예측을 만드는 방법이며, 선형 회귀는 관측 데이터에 맞는 직선을 훈련하는 것이다.  이를 통해 변수 간의 선형 관계를 보여주고 새로운 데이터에 대한 예측을 만들 수 있다. 6장에서는 하나 이상의 독립 변수가 주어졌을 때 결과의 확률을 예측하는 로지스틱 회귀에 대해 소개한다. 로지스틱 회귀는 선형 회귀처럼 실수를 예측하는 것이 아니라 범주를 예측하는 분류 알고리즘으로 이해하면 된다. 로지스틱 회귀는 구현하기 쉽고 이상치와 기타 데이터 문제에 상당히 탄력적이기 때문에 많은 머신러닝 문제를 해결할 수 있고 다른 유형의 지도 학습보다 실용성과 성능이 뛰어나다고 볼 수 있다.

마지막 7장에서는 신경망에 대해 설명한다. 신경망은 지난 10년간 르네상스를 누려온 회귀 및 분류 기법이다. 신경망은 입력 변수와 출력 변수 사이에 가중치, 편향, 비선형 함수로 이루어진 층을 쌓아 구성하며, 특히 딥러닝은 신경망의 한 종류로써 가중치의 편향을 가진 노드로 구성된 여러 개의 은닉 층을 사용하는 기법이다. 신경망을 통해 이전에 컴퓨터로 해결하기 어려웠던 문제에 대해 흥미있는 해결책을 다양하게 제시할 수 있게 되었다.

이 책을 통해 인공지능에 필요한 다양한 수학적 지식을 습득할 수 있을 뿐만 아니라 파이썬 코드와 라이브러리를 사용하여 수학 개념을 파악해 볼 수 있다. 또한 데이타 과학 경력을 쌓기 위한 방법과 진로 제언까지 포함하고 있어서 막연히 생각만 하고 있던 경력 목표를 다시 파악하고 구체화시킬 수 있는 정보를 제공하고 있다. 이런 면에서 이 책은 보다 현실적으로 도움이 되는 수학적 지식과 경력 목표를 바라볼 수 있는 유용한 정보를 제공한다고 생각한다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 더 나은 프로그래머 되는 법

2024. 5. 26. 22:22 | Posted by 꿈꾸는코난

< 더 나은 프로그래머 되는 법 > | 피터 구들리프 지음 | 최원재 외 3인 옮김 | 한빛미디어

 

팀이나 조직에 신입 개발자 또는 경력 개발자가 들어왔을 때 개발자로서 해야 하는 역할에 대해 조언을 해주고  싶을 때가 많다. 하지만 내가 경험한 경험이 정답이 아닐 수 있기에 나의 경험 위주로 개발에 대해 말하기는 어렵다는 것을 느낀다. 다행히 요즘 개발자의 역할이나 개발자가 갖추어야 할 자질, 그리고 개발자로서의 필요한 기본적인 지식 등 선배 개발자로서 다른 개발자에게 알려줘야 할 다양한 정보에 대해 잘 정리된 책들이 나오고 있는 것 같다. 이런 책들 중 괜찮은 책들을 선물하거나 필요하면 파트를 나누어 발표를 하고 있다.

궁극적으로 개발자로서 커리어를 쌓아가기 위해서는 지금보다 더 나은 개발자가 되기 위해 꾸준히 노력해야 한다. 이를 위해서는 누구나 공감할 수 있는 무엇인가가 필요하다고 생각한다. 단순히 개발 스킬을 향상시키는 것이 아니라 사람과의 관계, 시스템의 활용, 문제에 대한 접근방법 등 단순 지식만으로는 알 수 없는 깊이있는 무엇인가가 꼭 필요한 것 같다. 이런 측면에서 보면 이 책이 더 나은 개발자가 되기 위한 중요한 내용을 알려준다고 생각한다.

책의 앞부분에 소개되듯이 이 책의 주제는 소프트웨 개발자로서의 삶 전반에 대한 내용이다. 코드에 대한 부분뿐만 아니라 실질적인 기술들, 그리고 개발을 위해 필요한 효율적인 태도와 접근 방법들,  궁극적으로 소프트웨어 업계에서 살아가기 위한 필요한 절차적인 부분과 조직적인 부분에 대해 잘 알려준다. 이런 측면에서 보면 이 책은 신입 개발자뿐만 아니라 경험있는 개발자에게도 많은 도움을 줄 수 있는 것 같다. 경력 개발자들도 이 책을 통해 더 많은 것을 배울 수 있을 뿐만 아니라 후배 개발자에게도 의미있는 조언과 방향을 알려줄 수 있기에 더 유용하다고 생각한다.

이 책은 총 5개의 파트로 구성되어 있으며 세부적으로 총 39개의 장으로 이루어져 있다. 첫번째 파트에서는 코드에 대한 전반적인 부분을 설명한다. 정돈된 코드를 유지하는 이유와 방법, 코드를 간결하게 작성하는 방법 및 개선 방안, 문제점을 확인하고 버그를 찾는 법, 그리고 테스트와 복잡도에 대한 부분 등 코드 전반적인 부분을 다루고 있다. 두번째 파트에서는 소프트웨어 개발이란 무엇인지로 부터 출발해서 간결한 소프트웨어 개발과 코드 수정에 대한 방법, 그리고 코드 재사용 및 버전 관리에 대한 개념을 소개한다. 세번째 파트에서는 배움의 중요성과 테스트 주도 개발자에 대한 소개를 하며, 도전을 두려워하지 말고 다양한 도전을 통해 동기 부여가 중요하다는 점, 그리고 궁극적으로 개발자의 자세에 대해 잘 설명해 준다. 네번째 파트에서는 현명하게 개발하는 방법과 일에 대한 완료 개념에 대해 소개한다. 마지막 다섯번째 파트에서는 사람이 하는 일로서의 개발에 대한 설명을 한다. 생각의 중요성과 의사소통, 그리고 궁극적으로 태도에 대한 부분으로 마무리 짓는다.

많은 개발자들이 개발 스킬 향상에만 너무 신경쓰는 경우가 있는 것 같다. 하지만 개발은 단순히 스킬만으로 되는 것이 아니라 여러 사람이 모여 공통의 목표를 이루기 위해 서로 협업하고 목표에 다가가는 과정이다. 이를 위해서는 기술 못지 않게 의사소통과 동일한 목표를 가지는 것이 필요하다. 어떻게 보면 중요하지 않다고 치부할 수 있지만 기술보다 더 중요한 요소들도 많이 있다는 것을 느낄 수 있을 것 같다. 개발자로서 무엇을 배우고 성장해야 하는지 잘 보여주는 책이라고 생각한다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[IT] 인사이드 머신러잉 인터뷰

2024. 4. 26. 13:11 | Posted by 꿈꾸는코난

< 인사이드 머신러닝 인터뷰 > | 펑 샤오 지음 | 정원창 옮김 | 한빛미디어

 

현재 다양한 산업에서 생성형 AI 활용되고 있으며, 거의 모든 산업게에서 AI/ML 분야 인력을 채용하고 팀이 유지되고 있다. 하지만 생성 AI에 대한 기본 개념인 ML에 대해 제대로 된 이해를 하고 있는 사람은 흔치 않고, 다양한 관련 기술서적도 기본적인 개념을 파악하고 기본기를 다지기에는 어려운 수준이라고 볼 수 있을 것 같다. 이 책은 ML 직무 면접을 준비하는 사람을 비롯해서 ML 업계에서 일하는 다양한 직군의 기본기를 다져주고자 하는 목적으로 쓰여졌다. 이를 위해 중요 주제를 선정하고 내용을 탄탄히 정리할 수 있도록 단계별로 내용을 정리하고 있다. 또한 ML 면접 과정을 따라 가면서 자주 묻는 질문에 대해 이상적인 답변을 구성하고 제시하고 있다.

이 책은 총 7장으로 구성되어 있다. 1장은 ML 면접에 임하는 단계로서 다양한 유형의 ML 면접을 소개하고, 우수 답변의 필수 요소에 대해 설명한다. 2장에서는 ML 기본지식을 소개하는 장으로서, 데이타셋 수집 단계부터 이 단게에서 발생할 수 있는 문제점, 그리고 고려사항에 대해 설명한다. 또한 질문에서 나올 수 있는 기본적인 지식을 총 29개로 나누어 제시한다. 3장은 ML 코딩에 대한 부분을 설명하고, 4장과 5장에서는 ML 시스템 설계에 대해 소개한다. 6장에서는 ML 인프라 설계에 대해 제시하고 7장에서는 고급 ML 문제를 제공한다.

각각의 장마다 세부적인 질문형식으로 문제를 제시하고 이에 대한 답변을 설명하는 형식으로 되어 있다. 따라서 실제 면접을 보는 입장에서 면접관이 질문하는 과정처럼 책을 읽어 나갈 수 있으며, 주어진 주제에 대해 전반적으로 고민하고 답변할 수 있는 능력을 키울 수 있는  구성이라고 생각한다. 뒷부분으로 가면 갈수록 제시되는 질문이 어려운 난이도를 가지지만 현재 본인의 수준에 맞추어 책을 읽어보면 좋을 것 같다.


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

< 게임 AI를 위한 탐색 알고리즘 입문 > | 아오키 지음 | 서수환 옮김 | 한빛미디어

 

요즘 워낙 AI가 대세이다 보니 AI가 들어간 분야에 대해 관심을 가지고 보는 편이다. 처음 이책을 접했을 때는 게임에 AI를 접목한 기술에 대해 설명한다고 생각했다. 게임 AI는 실제 1인 게임을 하면서 많이 접해 본, 컴퓨터를 대상으로 같이 게임하는 것으로 생각하면 편할 것 같다. 물론 AI 기술이 워낙 대중적으로 널리 퍼져있기 때문에 머신러닝 기술이 포함되기도 하지만 넓게 본다면 규칙기반, 탐색 등의 기술적인 요소를 모두 포함한 개념으로 보면 된다. 특히 이 책에서는 탐색에 중점을 두고 설명하고 있기 때문에 일반적으로 생각하는 AI와는 조금 거리감이 있는 것 같다. 이 책에서 언급하는 탐색은 조합론적 게임 이론의 게임 트리 탐색과 조합 최적화를 사용한 휴리스틱을 포함한다. 이 중 조합론적 게임 이론에서는 게임의 진행을 유향 그래프로 표현하고, 게임판을 노드, 선택지를 엣지로 표현한 것을 게임트리로 지칭한다.

이런 개념뿐만 아니라 실제 C++을 이용하여 게임개발을 위한 환경 구축을 사전에 진행할 수 있도록 한다. 이를 위해 WSL을 설치하고 필요한 패키지를 설치하는 과정을 소개함으로 별도 서버를 두지 않더라도 자신의 윈도우즈  시스템에서 테스트해 볼 수 있는 환경을 구성할 수 있다. 이후 본격적으로 탐색 알고리즘을 소개한다. 컨텍스트가 있는 1인 게임에서 사용하는 탐색 알고리즘, 컨텍스트가 없는 1인 게임에서 사용하는 탐색 알고리즘, 교대로 두는 2인 게임에서 사용하는 탐색 알고리즘, 동시에 두는 2인 게임에서 사용하는 탐색 알고리즘, 그리고 여태까지 설명된 알고리즘을 기반으로 좀 더 효율적으로 이를 활용할 수 있는 방법을 소개한다. 마지막으로 실제 게임에 응용하기 위한 방법을 설명한다.

각각의 장마다 다양한 검색 알고리즘과 코드를 설명한다. 어떤 방식의 게임이냐에 따라 사용해야 하는 알고리즘이 조금 달라진다는 것을 알수 있으며, 일부 알고리즘은 여러 게임방식에 활용될 수 있다는 것도 알 수 있게 된다. 또한 단순 게임을 진행하는 방식만 설명하는 것이 아니라 스코어를 매기고 승률 계산을 하는 부분까지 세밀한 부분까지 코드로 보여준다. 따라서 게임 개발에 관심이 있다면 다양하게 제시된 코드와 개념을 활용할 수 있지 않을까 생각된다. 물론 아주 복잡한 게임을 소개하는 것은 아니기 때문에 대중적인 게임을 만들만큼의 개념을 제시하지는 않지만 책 제목처럼 입문이라고 생각한다면 게임 개발의 출발점으로 삼기에는 큰 무리가 없는 것 같다.


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

< 개발자를 위한 최소한의 실무 지식 > | 김현정, 이재효 지음 | 한빛미디어

 

개발팀 내에 신입 개발자 또는 주니어 개발자가 있을 경우 이들에게 어떤 것을 가르쳐야 할지 고민이 종종 발생한다. 개발 자체에 대한 부분은 개발자 개개인의 능력이라고 볼 수 있지만 실무에 필요한 지식은 정의하기도 어렵고 범위도 넓어 어떤 부분을 교육해야 할지 막막하기도 하다. 이 책은 개발자를 위한 최소한의 실무 지식이란 제목에 맞게 주니어 개발자에게 필요한 최소한의 실무 지식을 알려준다. 개발자가 꼭 알고 있어야 하는 효과적인 데이타베이스 활용법과 암호화 및 시큐어코딩, 자원 관리, 성능 최적화 등 개발에 직접적인 지식뿐만 아니라 효율적인 개발을 위한 개발 도구, 테스팅 도구, 좋은 코드를 작성하는 방법 등 폭넓은 지식을 익힐 수 있도록 되어 있다.

어떻게 보면 주니어 개발자가 혼자서 이 책을 통해 공부하기에는 조금은 어려울 수도 있겠다는 생각이 든다. 보다 효과적으로 이 책을 활용할 수 있는 방법은 주니어 개발자를 가르쳐야 하는 시니어 개발자가 이 책을 이용하여 교육하는 것이 좋은 방법이지 않을까 생각한다. 총 10개의 챕터로 구성되어 있지만 서로 연관성은 없기 때문에 조직내에서 꼭 필요한 챕터만 간추려 교육해도 좋곘다는 생각이 들었다. 물론 어느정도 기반지식이 있는 주니어 개발자라면 혼자서도 별 무리없이 이 책을 기반으로 학습할 수도 있을 것 같다.

이 책에 포함된 내용은 개발자라면 누구라도 접할 수 밖에 없는 핵심적인 지식을 포함하고 있다는 생각이 들었다. 조직 내에서 교육자료로 사용하든 혼자서 공부하는 용도로 사용하든  어떤 방식으로든 유용하게 활용될 수 있는 책이라는 생각이 든다. 또한 단순히 내용만 기술하는 것이 아니라 코드가 필요한 곳에서는 실제 코드를 활용하여 상세히 설명하고, 참고 화면이 필요한 곳에서는 실제 화면을 보여주면서 설명하고 있기 때문에 좀 더 실제와 가까운 지식을 습득할 수 있다고 생각한다.

개발자로서 출발하는 주니어 개발자, 주니어 개발자를 교육해야 하는 시니어 개발자가 이 책을 활용한다면 실무에서 바로 활용할 수 있는 실무 지식을 습득할 수 있는 좋은 방법이 될 것 같다.


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

'꿈꾸는 책들의 도시' 카테고리의 다른 글

[인문] 북극을 꿈꾸다  (0) 2024.03.15
[소설] 파우스트  (0) 2024.03.04
[시] 꽃이 사람이다  (0) 2024.02.17
[경제] 국부론  (0) 2024.02.03
[물리] 모든 순간의 물리학  (0) 2024.02.02

[과학] 기계의 반칙

2023. 12. 23. 16:42 | Posted by 꿈꾸는코난

< 기계의 반칙 > | 넬로 크리스티아니니 지음 | 김정민 옮김 | 한빛미디어

 

얼마 전 챗GPT를 출시해 글로벌 테크 업계 스타로 떠오른 샘 올트먼이 해고된 후 사무실에 서 복귀 논의를 벌이다 결국 마이크로소프트로 가기로 했다는 기사가 나왔다. 최종적으로 해고를 결정한 이사회를 다시 구성하고 올트먼이 다시 복귀하는 형태로 마무리되었다. 이러한 일이 일어난 궁극적인 이유는 빠른 인공지능 개발에 대한 우려때문으로 생각된다. 즉 현재의 빠른 인공지능의 개발이 언젠가는 인간을 넘어서는 인공지능의 개발로 이어지고 이는 인간이 제어하지 못하는 형태로 이어질 수 있다는 것이다. 즉 인공지능의 발전이 인류에 야기할 수 있는 윤리 및 도덕적 문제에 대한 근본적인 인식 차이를 보여준다고 볼 수 있다. 이러한 시점에서 우리는 인공지능에 대해 근본적인 질문과 이해를 할 필요가 있어 보인다.

이 책은 현재와 같은 인공지능의 급성장 시기에 인공지능과 공존하기 위한 조언을 제시한다. 책의 시작은 지능에 대한 정의로부터 시작한다. 지능이란 인간적인 것에 대한 문제가 아니라 새로운 상황에서 효과적으로 행동할 수 있는 능력의 문제이다. 이전에는 지능을 인간 위주로 해석헀다면 이제는 지능을 두뇌가 아닌 식물, 개미 군체, 소프트웨어에서 지능을 찾아볼 수 있다는 점이다. 이러한 인식의 전환을 통해 인공지능에 대한 패러다임이 전환되고 획기적으로 발전될 수 있었다고 본다.

이런 과정을 거쳐 점점 인공지능은 논리와 추론의 언어가 아닌 확률과 수학적 최적화로 발전했으며,  규칙성을 파악하고 규칙적인 환경을 갖추는 것이 지능형 행동의 전제 조건이 된다는 것을 이해할 수 있다. 규칙성으로 부터 데이터를 학습한 인공지능이 아무런 문제를 발생시키지 않을 것이라고 기대하는 것은 불가능하다. 이는 인공지능의 미래를 언급할 때 종종 야기되는 인공지능의 반란(?)으로 이어지며 인간을 위협하는 과정으로 이어질 수 있다. 이러한 상황을 만들지 않고 인간이 만든 기계가 지시받은 일을 그대로 수행함으로써 근본적인 사회 규범을 위반하지 않도록 하려면 어떻게 해야 할지 많은 고민이 필요하다.

어찌되었던 이제 인공지능이 배제된 세상은 상상하기 힘든 시대가 되었다. 따라서 인공지능과 함께 안전하게 살아갈 방법을 찾아야 하며, 이를 위핸 많은 연구자들이 인공지능이 준수해야 할 원칙의 목록을 중요하게 여기고 있다. 이를 통해 인공지능에 대한 감사를 가능하게 하며, 안정성, 공공성, 개인정보보호, 투명성 등 중요한 요구사항을 준수할 수 있도록 개선해 나갈 필요가 있다.

주위를 보면 인공지능의 발전 속도가 무섭게 느껴진다. 예상하지 못한 형태의 서비스가 속속 출현하고 있으며 전에는 생각하지도 못한 다양한 정보를 제공하고 있다. 현 시점에서 인공지능에 대한 발전 과정을 살펴보고 현재 일어나고 있는 다양한 기술적, 윤리적 이슈를 생각해 봄으로써 인공지능에 대해 다시 생각해볼 필요가 있을 것 같다.


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

이전 1 2 3 4 다음