8월의 한빛 서평 도서는 이것이 자료구조+알고리즘이다 with C 언어입니다. 서평 덕에 오랜만에 C언어 코드를 읽는 시간이어서 조금 어색하기도 했지만, 구현과 컴퓨터에서 실제로 어떻게 동작하는지 이해 하긴 좋은 선택이었습니다. ADT부터 해당 자료구조들의 기본 스펙과 기능들을 소개하고 컴퓨터 메모리 상에서 어떻게 작동하고 올렸다가 내리지 등 시스템 적 이해도 동시에 키울 수 있는 책이었습니다. C언어로 코드를 작성해서 단순히 문법을 익힌 수준으로 책의 코드가 다소 어려울 수 있습니다. 포인터를 이용해 메모리를 직접 참조해서 넘기고, 메모리를 할당하기 위해 해당 구조체의 크기를 연산해서 메모리 할당을 하고, 구조체에서 자신을 재귀적으로 참조하는 등 C 기초 이상을 이해를 하고 있어야 큰 무리 없이 읽을 수 있다고 생각이 들었습니다.
다시 확률 통계는 2019년도에 다시 미분 적분으로 서평들을 쓰기 시작 하면서부터 예고 된 책이어서 정말 기다리던 책이었습니다. 햇수로는 4년만에 드디어 책이 손에 들어와서 읽을 수 있게 되었습니다. 다시 XX XX 수학 시리즈는 굉장히 만족스럽게 읽고 있습니다.
이 시리즈의 가장 큰 특징은 미적분도 통계도 확률도 큰 수학적 사전 지식없이 책을 시작해 수학적 지식을 가지고 책을 덮게 해줍니다. 보통 이런 책들을 읽다보면 겉핥기로 적당히 이야기를 풀다가 찝찝하게 책이 끝나는 경우도 많습니다. 하지만 이번에도 느꼈지만 수학적으로 더 깊이 들어가고 싶은 독자와 간단하게 읽고 큰 그림이 보고 싶은 독자 양쪽을 위해 증명까지 해줍니다.
학부 시절과 졸업 이후 제일 달라진 점은 개발도구를 비롯해서 대부분의 프로그램들을 최신버전으로 세팅해서 쓰지 않는 것 같습니다. 업데이트 노트를 보면서 써보고 싶은 기능도 있고, 가려운 점을 긁어주는 기능이 나왔지만 현재 쓰는 주요 라이브러리가 호환이 안되서 못 쓰는 경우가 많은 것 같습니다. 개발 중 라이브러리 뿐 아니라 정말 예기치 못한 곳에서 호환 문제가 생겨서 다시 다운그레이드를 몇 번 한 뒤로 최신버전이 릴리즈 되도 바로 못 올라가고 있는 것 같습니다.
개발론도 아무리 최신 기법이 나오고 새로운 방법이 나와도 레거시한 방법을 무시할 순 없습니다.
전공을 시작 할 때만해도 파이썬은 알고리즘 공부나 대회 준비에 적합하지 않다는 인식이 강했습니다. 제가 가지고 있는 다른 알고리즘 서적들만 해도 C와 cpp가 각 2권씩입니다. 자료구조나 파이썬의 신텍스 슈가 등 때문에 파이썬 자료구조와 알고리즘 책을 시장에서 거의 찾아볼 수 없었습니다.
책이 한 장 한 장 넘어가면서 파이썬이 알고리즘 공부에 별로라는 생각은 편견이라는 걸 다시 느꼈다. 알고리즘에서 중요한 점은 문제 풀이를 위한 논리적인 사고 과정과 사고 과정을 코드로 옮기는 과정이지 구현하는 언어의 문제가 아니었다.
형태는 기능을 따른다 Function Follows Form
현대 디자인에도 통용되는 내용인지는 모르겠지만 디자인에 있어서 굉장히 좋아하는 구문입니다. 형태로 기능을 유추하고 직관적으로 이해하고 사용할 수 있는 디자인이 좋은 디자인이라고 생각합니다.
많은 언어들에서 자동차라는 단어에는 마차의 연장선상에 있었던 흔적을 찾을 수 있습니다. 그래서 마차 때 있던 기능들이 레거시로 넘어오거나 명칭들에서 흔적을 찾아 볼 수 있습니다. 이 책은 이런 내용들로 시작해 왜 현재의 형태를 가지게 되었는지 기능과 형태의 발자취를 따라갑니다.
단순히 기능과 상호작용만 설명하는게 아니라 적절한 유머와 함께 기능의 태동부터 현재 형태까지 풀어내고 있습니다.
스마트폰을 사용하면서 인터넷에 공유되는 정보의 양은 이전과 비교할 수 없을 정도로 폭발적으로 늘어났습니다. 과거에는 인터넷이 연결된 장소와 단말이 한정적이었지만 이제는 언제 어디서나 접속하고 데이터를 만들어 낼 수 있습니다. 맛집을 검색하고, 사진을 찍고, SNS 공유하고 정말 수 많은 양의 데이터가 실시간으로 쌓이고 있습니다. 기업들은 이 데이터를 기반으로 새로운 직관을 얻고, 연구를 진행하기도 합니다.
데이터가 이렇게 많이 쌓이면서 이 데이터들을 기반으로 데이터의 주인을 추정할 수 있다는 것입니다. 그래서 유럽의 GDPR을 필두로 개인정보 운용에 관한 법률들이 제정이 되고, 그에 맞춰 약관들 변경 받으신 기억들이 있을 것입니다.
여러분은 웹 프로그래밍이라고 하면 어떤 것을 떠올리시나요? 초보자 분들은 CRUD라고 하는 생성, 읽기, 갱신, 삭제를 익히기 위해 게시판을 만들거나 웹 스크래핑으로 시작하는 경우가 대부분일 것이라고 생각합니다. 그 뒤에 간단한 API를 이용하거나 만들기도 하면서 웹 생태계에 익숙해 지고 계실 것입니다.
클론 코딩 줌은 어떻게 보면 통신에 있어서 기본이라고 할 수 있던 소켓 통신부터 webRTC를 이용한 화상채팅 프로그램인 ZOOM을 만드는 것까지 이 책을 찾아보실 분들께서 익숙하지 않으실 기술들로 여러분의 수준을 한단계 성장시켜 줄 수 있습니다.