똑똑한 코드 작성을 위한 실전 알고리즘 - 파이썬 예제로 문제 해결 전략 익히기
조지 하이네만 지음, 윤대석 옮김 / 한빛미디어 / 2022년 5월
평점 :
장바구니담기


--> 한빛출판네트워크로부터 책을 제공받아 작성했습니다.


알고리즘 책이 시중에 많이 나오는 것은 무슨 이유일까??

그렇다고 설명하는 알고리즘에 더 고차원적인 알고리즘이 추가 되어 있는 것도 아니다. 입문용 알고리즘의 테마는 고정되어 있지만, 그것을 설명하고 응용하는 방법을 각 저자 나름의 방법대로 설명하는 것이 다양하기 때문이리라 생각한다.


알고리즘을 공부하기 위해 여러가지 책을 보면서 나 자신이 가장 힘들다 라고 느낀점은 알고리즘 설명과 실제 소스 코드와의 괴리가 좀처럼 해결되지 않는 다는 점이다. 알고리즘의 설명에서는 간단하게 원리를 설명하지만, 그 원리를 직접 소스코드로 구현할 경우에 원리에서는 한 마디도 나오지 않았던 여러가지 추가적인 내용이 나와 있다.


일부 불친절한 책의 경우에 읽는 이의 이해력에 전적으로 의존해서 읽기는 다 읽었는데 어떻게 이런 소스코드로 작성되었는지 전혀 이해가 안 되는 경우도 많았다. 


이 책은 많지는 않지만 개인적으로 읽어봤던 알고리즘 서적중에 가장 쉽게 이해가 되었다. 원리 뿐만이 아니라 그 원리를 구현하기 위해 어떤 방법을 사용하고 해당 방법을 사용한 경우에 메모리의 움직임과 소스 코드의 움직임을 적절하게 제시를 하여 읽는 이의 이해력을 극대화 하는데 촛점을 두었다.


책의 내용을 따라가다 보면 어떤 원리로 알고리즘이 목적을 이루고, 그것을 위한 각각의 동작과 연결되는 소스코드의 설명은 많은 책들과 비슷하다. 이 책이 가장 주안점을 둔 부분은 소스코드가 실제 실행되면 이런 식으로 된다는 실행 시간별로 보여주는 메모리 도해이다. 


이 메모리 도해을 통해서 알고리즘의 원리와 소스코드의 괴리가 대부분 해소되는 경험은 이제까지의 알고리즘 서적이 얼마나 불친절했다는 것을 보여주는 예가 아닐까 감히 이야기 해 본다.


이 뒤에 이야기 할 몇 가지 개선이 필요한 부정적인 내용이 있음에도 불구하고, 가장 쉽게 알고리즘을 이해 시켜줄 서적으로 나는 이 책을 추천하길 주저하지 않을 것이다. 


이 책의 개선점으로는 다음과 같다.

첫번째로 조판 품질이 생각보다 많이 떨어진다. 책의 설명과 그림 혹은 소스코드가 어긋나는 경우가 꽤 많다. 완전히 동떨어진 형태는 아니지만, 설명하는 소스코드나 그림이 다른 페이지에 존재하는 경우가 상당히 많았다. 책을 읽는데 있어서 집중도를 많이 떨어뜨리는 요인이었다.


두번째는 특정 핵심 원리(네트웍의 노드 살피기 기능)의 경우에 소스코드가 아니라 라이브러리를 사용하여 구현이 없는 경우가 있다. 즉, 핵심 원리를 직접 구현해야 하는 경우에는 이 책은 도움이 될 수 없다는 것이다. 


세번째는 주로 마지막 장인 네트웍에서 보였던 현상인데, 공식에 따른 결과가 정확히 연결되지 않는 부분이 꽤 존재한다는 점이다. 대부분 어찌어찌 계산을 해서 맞다는 것을 확인 했지만, 마지막 몇 부분은 도저히 책의 내용이 나오질 않았다. 이 부분은 베타리딩에서 좀 잡아 주었으면 하는 아쉬움이 있었지만, 마지막 부분이고 어려운 내용이어서 힘들지 않았을까 이해를 한다. 그래도 계산 부분은 이해를 돕기 위해 주석을 좀 달아주었으면 하는 아쉬움이 많았다. 


책을 읽기에 아쉬운 점이 꽤 있었음에도 불구하고, 나는 이 책의 설명 방식이 너무나 마음에 든다. 그리고, 알고리즘의 설명에 있어서 소스코드와의 괴리를 가장 잘 매꾸어 읽는이가 알고리즘을 제대로 이해했음을 느끼게 해 준 책으로 많은 이들에게 추천을 하고 싶다. 


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
파이썬 크래시 코스 - 누적 판매 150만 부 기록! 파이썬 분야 글로벌 1위 베스트셀러 I 연습문제 + 해답, 파이썬 치트 시트 제공
에릭 마테스 지음, 한선용 옮김 / 한빛미디어 / 2023년 8월
평점 :
장바구니담기


--> 한빛출판네트워크로부터 책을 제공받아 작성했습니다.


파이썬 크래시 코드는 책 제목만으로는 최소 중급이상의 책처럼 보이지만,

내용은 파이썬을 처음 접하는 혹은 초급자를 위한 책이다.

그리고, 학습자를 제대로 교육시키기 위한 책이다.


먼저 책의 디자인부터 살펴보면, 가장 먼저 높은 점수를 주고 싶은 점은 2권을 쉽게 나뉘어 들고 다닐 수 있게 만든 점이다.


책의 전체 두께는 들고다니기에는 부담스럽지만, 2권으로 나뉘어서 들고 다닐 수 있는 실용적인 디자인을 채택 했다는 점은 무겁고 두꺼운 대부분의 한국 책들이 따라했으면 하는 마음이 들 정도이다.


책의 내용은 기본편과 실습편으로 나뉘어 있는데, 기본편은 파이썬의 설치와 편집기 및 개발환경의 설정, (필요한) 파이썬 기본 문법의 설명이다.

이 기본 문법의 설명이 다른 파이썬 문법서에 비해 감칠맛 나는 음식을 먹는 듯 아주 짜임새 있게 설명하고 있다.


다른 파이썬 문법서를 보면 문법을 일일이 설명하는 식이지만, 이 책의 설명방법은 단순한 문법 설명을 벗어나, 학습자가 기억하기 쉽게 연관 내용들을 잘 묶어서 설명하고 있다. 혹자는 다른 문법서도 같은 방식이라고 이야기 할 지 모르겠지만, 이 책은 다른 책의 설명을 뛰어넘는 구성과 이런 설명방식을 기본서 전체를 통해서 유지하고 있다는 점이다.


철저히 학습자 중심의 내용 전개를 통해 실습편에서 계속 사용할 문법을 제대로 학습하도록 유도하고 있다.


실습편은 기본편에서 학습한 문법을 계속 활용하며, 게임 / 데이터 시각화(BI) / 웹 사이트 제작(Django)의 3가지 주제를 가지고 실무에 도움이 되는 내용을 학습한다. 여기서 중요한 점은 기본편에서 배운 문법 내용을 뛰어넘는 문법은 선보이지 않는다. 물론, 라이브러리를 사용할 경우에 라이브러리의 클래스나 함수는 설명하지만, 문법 내용에서 뜬금없이 배우지 않은 내용이 나오는 예외상황이 없다.


게임은 개인적인 프로그램이 학습에 도움이 되는 내용으로 이를 바탕으로 유튜브에 나오는 다른 파이썬 게임 내용들을 참고하면, 충분히 학습자 스스로 발전시킨 토대를 제공해 준다. 


데이터 시각화를 통해서는 데이터 시각화에 자주 쓰이는 라이브러리의 기본적인 사용법 및 JSON 데이터와 API 호출을 사용하여 다양한 데이터소스를 활용한 데이터 시각화를 어떻게 만드는지를 구체적으로 소개한다. 


웹 사이트 제작은 가장 널리 알려진 Django 프레임워크를 사용하여 간단한 웹 사이트의 각종 서비스 제작(백 엔드)과 웹 페이지들의 디자인의 적용(프론트 엔드)의 예를 보여주고 더 나아가 웹 사이트 서비스를 위한 배포까지 친절히 설명해 주고 있다. 물론, 잘 알려진 클라우드를 사용한 배포는 아니지만 충분히 어떻게 배포를 해서 상용환경에서 서비스가 이루어지는지에 대한 개념 설명으로는 충분하다고 할 수 있다. 


이 책을 모두 읽고 난 후에 든 개인적인 느낌은 이 책의 저자는 학습법을 전공했고, 실무에서 교육을 오랬동안 전담했던 경험이 있는 사람이 아닐까 생각된다.

(찾아보니 역시 25년 경력의 고등학교의 선생님 출신이었다.) 

그만큼 책 안의 학습내용이 절제되어 있고, 현재 꼭 필요한 내용만을 다루고 있다.

내용의 전개에 대해서도 앞 장에서 배운 내용을 활용하면서 추가적인 내용으로 부담스럽지 않게 내용을 확장하여 파이썬 초보자의 실력을 반석위에 올려놓고 있다.


파이썬 책을 읽고서도 아직 잘 모르겠거나, 어떻게 써야 할지 모르는 학습자들은 꼭 이 책을 한번 읽어 보기 바란다. 

가물가물하던 내용이 어떻게 써야 하는지 명확해 지고, 배운 내용을 어떻게 써야 할지 모르는 학습자는 자기 스스로 어떤 것을 해야 할지 이 책을 통해 명료해 질 것이다. 


좋은 내용을 읽을 기회를 준 한빛출판네트워크에 감사의 말을 드리고 싶다. 



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
실무에 바로 쓰는 Go 언어 핸즈온 가이드 - Go 언어의 개념, 기능, 패턴부터 커맨드 라인, HTTP, gRPC 애플리케이션 개발까지
아미트 사하 지음, 김찬빈 옮김 / 제이펍 / 2022년 12월
평점 :
장바구니담기


--> Jpub(제이 펍)으로부터 책을 제공받아 작성했습니다.


먼저 스포일을 하자면 이 책에 나와 있는 내용들을 베이스로 일본의 모 핀테크 업체의 기간 시스템이 돌아가고 있다. 그렇기에 처음 이 책을 받고서 시일이 어느 정도 흐르고 나서 읽기 시작했는데, 첫 장을 읽으면서 왜 이 책을 더 빨리 보질 않았는지 너무나 후회가 되었다.


이 책은 크게 4가지 파트로 나뉜다.

명령어 라인 프로그램의 작성, RestAPI 웹 서비스의 작성, gRPC 서비스의 작성, 파일 및 디비를 이용한 오브젝트 저장소의 작성으로 이루어져 있다. 

기본적인 업무에 대해서는 명령어 라인과 RestAPI 웹 서비스 부분만 읽어봐도 충분하다. 거기다 오브젝트 저장소의 내용이면 웬만한 웹 서비스 기능을 모두 망랑했다고 이야기 할 수 있다.


다만, 많이 실망한 부분은 역시 gRPC의 부분이다. 

구글이 만든 gRPC의 설명은 솔직히 이야기 해서 많이 불친절하다는 느낌을 많이 받았다. 그냥 이렇게 작성하시면 되요라는 느낌을 많이 받았다. 이 책만으로는 불충분하기에 다른 자료들을 만이 찾아보면서 개념을 잡아야 할 것이다. 


장점을 이야기 하자면 이 책은 Go 언어로 해 볼 수 있는 모든 활용을 보여주고 있는 레퍼런스로써 가치가 높다는 것이다. 하나의 프로그래밍 언어로 이렇게 다양한 활용을 가지고 있음을 보여주고, 그것을 소스코드로 하나씩 직접 뜯어볼 수 있다는 것은 이 책만이 가진 장점이라고 할 수 있다. 


그리고, 부록도 빠뜨릴 수 없을 만큼 Go를 활용한 실무에서의 중요한 내용을 가지고 있다. 프로그램의 성능 프로파일링 및 튜닝에 중요한 정보를 제공하는 로그, 메트릭, 트레이스를 어떻게 설정하는지를 설명하고 있다. 간단하지만, 운영에서 이 내용이 가지는 중요성은 두 말할 필요도 없다.


단점을 꼽자면 이미 언급한 설명이 좀 많이 부족할 수도 있다는 것과 내용이 보기보다 많다. 이 책 한권으로 모든 기술을 이해하기는 힘들 것이고, 책을 참고하면서 중간중간 다른 자료를 많이 찾아봐야 할 것이다. 이 책 자체로도 상당한 볼륨이기에, 그냥 한번 읽고 끝낼 수 있을 정도의 분량은 절대로 아니다. 개인적으로 이 정도의 분량을 이 정도의 책 두께로 출판 했다는 것이 신기할 정도로 생각된다. 그리고, 책 중간중간에 잘못 된 소스코드의 소개가 있지만, 소스코드가 다행히 제공되므로 학습에 지장을 줄 정도는 아니다.


책의 난이도가 중급 미만으로 표시(개인적으로 중급 이상)되어 있지만, 여기 있는 내용만 내것으로 만들어도 웬만한 Go언어를 다루는 회사에서 꽤 비중 높은 기술자로 받아 들여질 것이라고 생각된다. 


Go 언어에 대해 어느 정도 활용 할 줄 아는 사람이 이 책을 통해서 좀 더 세련된 Go 언어의 활용법을 익히기에 안성맞춤인 서적이다. 




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
혼자 공부하는 첫 프로그래밍 with 파이썬 - 1:1 과외하듯 배우는 왕초보 코딩 입문서 혼자 공부하는 시리즈
문현일 지음 / 한빛미디어 / 2020년 6월
평점 :
구판절판


--> 한빛 미니어로부터 책을 제공받아 작성했습니다.

이 책은 프로그래밍 언어를 익힐려는 사람에게는 사실 그렇게 많은 도움이 되질 않는다. 왜냐하면 세세한 코드 설명이나 프로그래밍 언어에 특화된 설명은 없다.
그러나 프로그래머로 일하고 싶은 사람은 프로그래밍 경험이 있더라도 두세번 가량을 읽어볼 가치가 있는 책이라고 감히 말하고 싶다.
내가 이 책에서 주목한 부분은 각종 데이터 타입의 변수와 데이터 셋이라고 부르는 리스트(배열)과 딕셔너리(연관배열)의 변수 사용설명 부분이다.
프로그래밍을 하다보면 항상 마주하는 상황이 선택이고, 특히 초보 프로그래머들에게는 지금 주어진 사양에 대해서 어떤 방식으로 구성을 해야 하는지 망설이는 경우가 많다.
일반적인 서적에는 이들 데이터 타입의 작성 방법과 특성만 이야기 하고, 곧바로 해당 데이터 타입을 사용한 프로그래밍 언어의 작성으로 들어간다.
물론, 프로그래밍 언어를 익히려는 학습자 입장에서 이런 식의 설명도 충분하다.
문제는 학습이 끝나고 나서 실제로 구현을 할 경우, 어떤 때 일반 데이터 타입의 변수를 쓰고, 어떤 때 데이터 셋의 변수를 써야 할지 선택해야 할 때다.
개인의 경험에 의해 변수를 선택한다고 하더라도, 그 다음은 일반 데이터 타입의 변수와 데이터 셋의 변수로 바꿀때 변경사항이 얼마만큼 될지 막막한 경우가 많다.
프로그래머라는 직업을 가지면 사실 직접 처음부터 만드는 것보다는 다른 이들이 이미 해 만들어 놓은 것을 유지 보수하는 작업이 훨씬 많다.
그때 가장 요구되는 능력이 수정을 어느 만큼 해야 하는지에 대한 작업량 예상 능력이다. 이 책에서는 이를 어떻게 계산할 수 있는지 간단한 예시로 쉽게 설명하고 있다. 개인적으로 이 부분만으로도 이 책은 읽을 가치가 있다고 생각한다.
그 외에도 프로그래밍 언어의 기본적인 동작에 대한 설명을 다른 프로그래밍 언어책의 설명과는 확연히 다른 그러나 훨씬 이해하기 쉬운 단어 선택과 설명을 하고 있다.

프로그래밍 언어를 더 쉽게 이해하기 위한 전반적인 내용과 수정작업에 대한 작업량 예상을 간단하게 나마 알고 싶다면 선행 학습용으로 이 책을 읽기를 적극 추천한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
개발자 원칙 - 테크 리더 9인이 말하는 더 나은 개발자로 살아가는 원칙과 철학 원칙 시리즈
박성철 외 지음 / 골든래빗(주) / 2022년 12월
평점 :
구판절판


골든래빗 출판사로부터 책을 제공받아 작성했습니다.


지금은 세상의 모든 것이 컴퓨터를 활용한 업무에 종사하고 있고,

많은 이들이 중,고등학생 떄 부터 프로그램을 만드는 직업을 꿈꾸고 있다.

이럴때 먼저 앞서서 그 직업을 가지고 있는 사람들에게 듣는 조언은 금보다 더 가치가 있다는 것을 말 해봐야 입만 아플 것이다.


오랜만에 재미 있고도 가볍게 읽을 수 있는 책을 만나게 되었다.

가볍게 읽을 수 있는 있지만, 그 내용은 절대로 가볍지 않다.

각 개인의 지금 현재를 있게 한 10년 이상의 원칙은 결코 가벼울 수가 없다.


그리고, 각 장의 마자막에 소개하는 책들은 독자가 마음에 들어하는 각 원칙을 좀 더 깊이 살펴 볼 수 있는 기회를 제공하리라 생각한다. 


그리고 각 장에 대하여 개별적으로 느낀 점을 참고로 적어 놓는다.


1. 덕업 일치를 넘어서 - 개발이란 직업을 왜 선택하게 되었는가에 대한 이유를 저자 나름의 철학으로 풀었다. 개발이 아니더라도 한번쯤은 자신의 직업 선택의 이유를 자기 스스로의 관점으로 돌아보게 만든다는 점이 저자의 솔직함이 느껴진다. 


2. 오류를 만날 때가 가장 성장하기 좋을 때다 - 처음 개발을 접하는 이가 아니라 어느 정도 개발에 익숙한 사람이 가지면 좋을 성장을 위해 가져야 할 자세를 보여준다.


3. 소프트웨어 디자인 원칙 - 한마디로 내용이 넓다. 좁은 의미의 설계가 아닌, 시스템 전체 및 소프트웨어 라이프 사이클을 아우르는 설계를 위해서 생각해야 할 내용을 적어 놓았다. 어떻게 보면 이미 아키텍쳐 위치에 있는 이면 잘 읽어 두어야 할 내용이나, 아키텍쳐 아래의 기술자면 그냥 한번 읽어보는 정도가 좋을 것이다. 


4. 나의 메이져 버젼을 업그레이드하는 마이너 원칙들 - 작은 시작으로 하나씩 만들어 가고 해답을 찾고, 최종적인 목표를 이루는 것을 잔잔히 보여준다. 개인적으로 약간의 서머리가 있었으면 하는 아쉬움이 든다.


5. 이직, 분명한 이유가 필요해 - 막무가내의 이직이 아니라 내가 원하는 목표가 생기고 내부에서 해결 하지 못하면 이직으로 해결하는 방법을 제시한다. 결국 이직에는 자기 나름의 스토리가 없다면 후회하는 이직이 된다는 것을 알려준다.

이직을 생각하고 있다면 한번 읽어 볼 만한 내용이다. 


6. 목표를 달성하는 나만의 기준, GPAM - 적절한 크기의 목표를 어떻게 이룰 것인가에 대한 짧지만 강렬한 설명


7. 프로덕트 중심주의 - 프로덕트의 시작은 작게, 그러나 크게 잡은 목표를 향해서 어떻게 반복 개발을 해야 하는지 명쾌하게 알려주는 내용. 결국 상세부분이 제대로 갖추어 져야 프로덕트가 완성된다는 것을 꼭 기억해 두어야 할 말이다.


8. 제어할 수 없는 것에 의존하지 않기 - 일(여기서는 코드와 이직과 조직관리의 3가지)을 진행하는데 있어서 자신이 조정가능한 것 불가능한 것을 명확히 구분하여 일을 진행했던 경험을 배울 수 았다. 여러가지 생각할 것이 많을 때 도움이 되는 경험이라고 생각된다.


9. 달리는 기차의 바퀴를 갈아 끼우기 - 개발 팀을 잘 유지하기 위한 또 다른 기준을 보여주며, 개발자들 사이에 많이 이야기 되나 좀 처럼 지키기 어려운 개발 원칙에 대해서 다른 관점으로 마음을 편하게 해 준다. 그러나, 잘 하기 위해서 많이 읽고 쓰고 생각하는 것를 강조, 또 강조한다.



-- 끝



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo