알라딘

헤더배너
상품평점 help

분류

이름:토마스 닐드 (Thomas Nield)

최근작
2024년 6월 <개발자를 위한 필수 수학>

개발자를 위한 필수 수학

지난 10여 년 동안 일상생활과 업무에 수학과 통계를 적용하는 데 관심이 높아졌습니다. 데이터의 가용성이 증가함에 따라 수학과 통계학이 주류의 관심을 끌고 있으며, 이런 데이터를 이해하기 위해서는 수학, 통계학, 머신러닝이 필요합니다. 컴퓨터가 우리보다 더 똑똑하다고 생각하기 쉽지만(그리고 이러한 생각은 종종 마케팅에 활용되기도 합니다), 현실은 그 반대일지 모릅니다. 이러한 오해는 상당히 위험할 수 있습니다. 알고리즘이나 AI가 범죄 판결을 내리거나 자동차 운전을 하는 데 개발자를 포함한 그 누구도 특정 결정에 도달한 이유를 설명할 수 없다면 어떻게 될까요? 설명 가능성은 통계 컴퓨팅과 AI의 차세대 영역입니다. 이는 블랙박스를 열어 그 아래 숨겨진 수학을 끄집어낼 때에만 가능합니다. 일상생활에 인터넷에 연결된 기기가 깊숙이 들어와 있기 때문에 우리의 데이터는 수시로, 그리고 대규모로 수집됩니다. 우리는 더 이상 데스크톱이나 노트북 컴퓨터에서만 인터넷을 사용하는 게 아니라, 스마트폰, 자동차, 가정용 기기에서까지 인터넷을 사용합니다. 이런 현상은 지난 20년 동안 미묘한 변화를 가져왔습니다. 데이터가 운영 도구에서 보다 명확한 목적을 위해 수집하고 분석되는 대상으로 진화되었습니다. 데이터의 가용성이 증가함에 따라 데이터 과학과 머신러닝은 수요가 많은 직업이 되었습니다. 데이터를 다루는 데 필요한 필수 수학은 확률, 선형대수학, 통계학, 머신러닝과 맞닿아 있습니다. 데이터 과학, 머신러닝 또는 엔지니어링 분야에서 경력을 쌓고 싶다면 이 주제에 대한 이해는 필수입니다. 이 책에서는 여러분이 만나게 될 블랙박스 라이브러리의 내용을 더 잘 이해하는 데 필요한 수학, 미적분, 통계학을 소개합니다. 이 책의 목표는 실제 문제에 적용할 수 있는 다양한 수학, 통계, 머신러닝 영역을 여러분에게 소개하는 것입니다. 처음 네 개 장에서는 실용적인 미적분, 확률, 선형대수학, 통계 등 기초 수학 개념을 다룹니다. 마지막 세 개 장에서는 머신러닝을 소개합니다. 머신러닝을 가르치는 궁극적인 목적은 책에서 배운 내용을 모두 통합하고, 블랙박스에 대한 이해를 넘어 머신러닝과 통계 라이브러리를 사용하는 데 있어 실용적인 인사이트를 보여주기 위함입니다. 지금 펼친 이 책을 통해 여러분은 전문가가 되거나 박사 학위 수준의 지식을 얻을 수 있는 것은 아닙니다. 필자는 그리스 기호로 가득 찬 수식을 피하고, 그 자리에 일반적인 언어를 사용하려고 최선을 다했습니다. 하지만 이 책을 통해 여러분이 수학과 통계에 대해 조금 더 편안하게 이야기하고, 이 분야를 성공적으로 탐험하는 데 필요한 지식을 얻기를 바랍니다. 저는 성공으로 가는 가장 넓은 길은 한 가지 주제에 대한 깊고 전문적인 지식이 아니라, 여러 주제를 탐구하고 실용적인 지식을 갖추는 것이라고 믿습니다. 이게 바로 이 책의 목표입니다. 여러분은 위험할 수 있을 정도로, 그리고 한때 알기조차 어려웠던 중요한 질문을 던질 수 있을 만큼 배울 것입니다. 그럼 시작해보겠습니다!

RxJava 시작하기

리액티브 프로그래밍은 신기술 또는 라이브러리 그 이상이며, 문제를 해결하기 위한 완전히 새로운 사고 방식이다. 리액티브 프로그래밍이 효과적이고 혁신적인 이유는 우리의 세계를 일련의 상태 대신 끊임없이 움직이는 것으로 구성하기 때문이다. 상태보다 쉽게 동작의 복잡성과 동적인 특성을 신속하게 포착할 수 있기 때문에 코드를 사용해 사물을 표현하는 방식에 새로운 가능성이 열린다. 자바와 객체지향 프로그래밍을 처음 배웠을 때는 유용하다고 생각했지만 충분히 효과적이라고 느끼지는 못했다. OOP는 유용하지만, 더 높은 생산성을 위해서는 다른 무언가와 짝을 지을 필요가 있다고 생각했기 때문에 C#와 스칼라를 유심히 지켜봤다. 불과 몇 년 뒤 자바 8이 출시됐는데, 그때 처음으로 함수형 프로그래밍을 사용해 볼 수 있었다. 그러나 여전히 뭔가가 빠진 느낌이 들었다. 나는 도미노 효과처럼 어떤 값의 변경값을 전달하는 데이터와 이벤트를 발생시키는 이벤트의 개념에 매료됐다. 그리고 자바 8의 스트림과 같이 유창하고 함수형 방식으로 이벤트를 모델링할 수 있는 방법이 없을까 하고 고민했다. 언젠가 이런 생각을 밝혔을 때 누군가가 리액티브 프로그래밍을 소개해줬다. 그 당시 살펴봤던 것은 RxJava 옵저버블이었는데, 언뜻 보기에는 자바 8의 스트림과 매우 흡사해 보였다. 두 가지는 비슷하게 보였지만 옵저버블은 데이터뿐만 아니라 이벤트도 푸시한다. 그 순간, 나는 찾고 있던 것을 정확히 발견할 수 있었다. 나뿐만 아니라 많은 사람에게 RxJava 습득의 장애물이 되는 것은 문서가 부족하다는 것이다. 나는 종종 실험적인 질문을 스택 오버플로에 남겼으며, 깃허브(GitHub)에서 모르는 이슈에 대해 철저히 살펴봤다. 회사에서 마주치는 문제에 RxJava를 사용해보면서 병렬화 및 동시성과 같은 주제에 대한 생각을 공유하는 여러 블로그 글을 작성했다. 놀랍게도 이런 글은 트래픽을 폭발적으로 증가시켰다. 이러한 주제에 대해 다루는 곳이 드물었기 때문에 이런 반응은 놀랄 만한 일이 아니었다. 나의 두 번째 저서 출간과 관련해 Packt에서 연락이 왔을 때, 다른 많은 업무가 있었음에도 그 기회를 받아들였다. 어쩌면 RxJava의 문서화 문제를 이 책으로 한 번에 해결할 수 있을지도 모른다. 이 책은 모든 기본 개념과 유스 케이스, 유용한 트릭 및 '깨달음'을 제공할 것이며, 이를 통해 RxJava가 더 이상 고급 주제에만 머물러 있지 않게 한다. 나는 RxJava가 어려운 문제든 쉬운 문제든 효과적으로 쉽게 해결할 수 있게 해주기 때문에 모든 기술 수준의 전문 개발자가 접근할 수 있어야 한다고 생각한다. 조금 더 추상적인 이해를 필요로 할 수도 있지만, 즉각적인 생산성 향상은 이 작은 장애물을 가치 있게 해준다. 내가 아는 한 이 책은 최초로 RxJava 2.0을 다루고 있으며, 2.0은 RxJava 1.0과 많은 차이점이 있다. 지금 여러분이 읽고 있는 이 책은 내가 원했던 포괄적이고 단계적인 가이드를 제공한다. 핵심을 생략하거나 충분한 설명 없이 코드를 제시하지 않으려고 노력했다. 여러분이 RxJava의 가치를 빨리 발견하고 그것을 적용하기 위한 시도가 성공적이기를 빈다.

가나다별 l l l l l l l l l l l l l l 기타
국내문학상수상자
국내어린이문학상수상자
해외문학상수상자
해외어린이문학상수상자