처음 처음 | 이전 이전 | 1 | 2 |다음 다음 | 마지막 마지막
Do it! 알고리즘 코딩 테스트 : 파이썬 편 - 코딩 테스트를 처음 경험하는 취준생의 필독서, 개정판 Do it! 시리즈
김종관 지음 / 이지스퍼블리싱 / 2025년 9월
평점 :
장바구니담기


이지스퍼블리싱에서 출판하는 유명한 두잇시리즈의 도서다. 코딩이나 it쪽 분야를 접해 본 사람은 한 번 쯤은 봤을 만한 시리즈인데, 필자는 처음에 파이썬도 이 시리즈 도서로 공부하고 깃/깃허브 입문도 이 시리즈로 공부했을 정도로 애용해왔다.

알고리즘 문제를 제시하는 사이트는 생각보다 많다. 대표적으로는 백준, 프로그래머스, Leetcode 등등이 있다. 국내에서 가장 많이 사용되는 것은 백준이기 때문에 이 책에서는 백준의 문제와 그 문제 번호를 기반으로 설명해준다. 백준 사이트에 있는 문제는 매우 다양한 형식으로 제공된다. 처음 보면 전혀 감이 오지 않는다. 이처럼 알고리즘 문제를 풀다보면 생각보다 수학적 개념이 많이 쓰이는 것을 알 수 있다 ... 특히 소수를 이용한 개념이 굉장히 많이 등장하여 정수론을 알면 편하게 대비할 수 있는 부분이 있으나 보통 공대생이 정수론을 접할 일은 없다. 이 책에서는 코딩테스트에 활용할만한 정도의 기초적인 정수론 내용을 제시해주기에 알고리즘 설계를 어떻게 할 지에 대한 생각의 토대를 배울 수 있다. 알고리즘 문제에서 빈출되는 수학적 개념들 및 활용방법을 제시해주기에 비교적 편하게 공부할 수 있다. 코딩테스트를 준비한다면 소수 구하는 문제는 매우 자주 출제된다고 하니 에라토스테네스의 체 정도는 확실히 공부 및 암기해두는 것을 추천드립니다. 문제를 푸려면 무작정 코드부터 치기보다는 어떻게 풀어야 할 지 전체적인 그림을 그려봐야 한다. 데이터의 흐름을 파악하는게 가장 중요하다고 생각하는데, 이 책에서는 그러한 과정까지 포함하여 설명해주기 때문에 반복 숙달한다면 코딩테스트에 매우 익숙해질 수 있을 것 같다. 학교에서는 [데이터구조및알고리즘] 이라는 수업을 수강했었는데, 여러 가지 자료구조를 배우고 그걸 활용하여 문제를 풀고 프로그램을 만드는 과제를 하는 수업이었다. 이 도서에서는 단순히 문제 풀이 뿐만 아니라 그 수업에서 다루었던 배열, 스택, 큐, 트리, 그래프 등의 자료구조와 여러 가지 정렬 알고리즘, 탐색 알고리즘 등을 코드와 함께 알려주기 때문에 확실히 복습을 할 수 있다. 이러한 자료구조를 어떻게 활용할 수 있을 것인가에 대해서도 예제를 통해 연습할 수 있다. 권장하는 진도도 있어서 자기주도적으로 공부하기 편하다 코테를 앞 둔 시점에 저렇게 쭉 공부해보면 급진적인 실력 향상을 얻을 수 있을 것 같습니다.

파이썬으로 코딩테스트를 준비하실 분이라면 이 도서로 준비해보는 것을 적극 추천드립니다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
JAX/Flax로 딥러닝 레벨업 - 고급 모델링과 병렬 가속화로 무장한 차세대 딥러닝 라이브러리를 만나다
이영빈 외 지음 / 제이펍 / 2024년 9월
평점 :
장바구니담기


최근 Pytorch에서 JAX/Flax로의 전환이 이루어지고 있다. 구글에서 나오는 대부분의 모델들은 JAX를 활용하고 있고, 허깅 페이스에선 기존 모델의 속도 향상을 위해 JAX로의 전환을 진행하고 있다. JAX는 구글 딥마인드에서 사용하고 있는 고성능 딥러닝 프레임워크이며, 자동 미분과 XLA(Accelerated Linear Algebra)를 결합하여 사용하기 때문에 PyTorch에서 사용되는 동적 그래프 방식보다 훨씬 빠르게 학습과 추론을 진행할 수 있다. Flax는 JAX + Flexibility를 합쳐 만들어진 말이며, JAX를 조금 더 쉽게 사용할 수 있게 만든 프레임워크이다. 이 책은 JAX와 Flax의 개념과 장점, 사용방법에 대해 자세히 설명해주는 책이다.

JAX/Flax를 이용하여 딥러닝 모델을 만드려면 함수형 프로그래밍에 대한 이해가 있어야 하는데, 이 책의 도입부에서는 이를 먼저 설명해준다. 함수형 프로그래밍이란 계산을 수학적 함수로 취급하고 상태 및 변경 가능한 데이터를 피하는 프로그래밍 방식이다. 따라서 코드의 재사용성이 높아지게 되고 간결해지지만, 작성 난이도는 다소 높아 진입 장벽이 있는 편이다. 이 책에선 이를 먼저 이해시켜주기 때문에 다소 편하게 JAX를 접할 수 있었다. 함수형 프로그래밍의 핵심인 불변성과 순수 함수에 관한 개념도 예시와 함께 자세히 설명되어 있어 독자가 엄격한 함수형 프로그래밍 방법을 이해하는데도 큰 도움을 주는 파트다.

또한 이 책에선 JAX/Flax로 간단한 CNN 모델을 만드는 모습을 코드와 함께 튜토리얼로써 보여주는데, 이 부분이 실질적으로 독자가 JAX/Flax를 이용해 필요한 모델을 제작하는데 큰 도움이 되는 부분이다. 딥러닝 모델을 구현한 실제 코드를 보면 이를 참고하여 여러 곳에 활용할 수 있기 때문에, 독자가 더욱 성능 좋은 딥러닝 라이브러리를 직접 사용해 모델을 만들어보는 과정을 이끌어줄 수 있는 부분이라고 생각한다.

물론 무조건 PyTorch가 JAX/Flax 보다 좋지 않다는 것은 아니고 장단점이 존재한다. Pytorch는 직관적인 API 방식의 사용법을 지원해 사용자 친화적이며, 수 년간 업계에서 메이저한 라이브러리로써 쓰여 왔기 때문에 강력한 커뮤니티가 지원되며, 디버깅이 용이하다는 장점이 있다. JAX는 기본적으로 자동 미분과 XLA 컴파일러를 사용해 GPU 및 TPU에서 고도로 최적화된 연산을 수행할 수 있기 때문에 방대한 연산이 필요한 LLM을 구현하기에 적합하고, 함수형 프로그래밍 스타일을 지원해 깔끔한 코드를 작성할 수 있다는 장점이 있다. 독자는 이러한 장단점을 이해하고 어떤 라이브러리를 이용해 딥러닝 모델을 제작할지 잘 선택해야 한다.

이 책은 pytorch나 tensorflow, keras로 딥러닝 모델을 구현하는 코드를 보여주고 있으며, 머신러닝/딥러닝 모델의 학습 과정과 매개변수 등을 포함한 이론과 개념에 익숙한 사람이라면 누구나 시도해 볼 만한 책이다. 자신의 딥러닝 모델을 성능과 속도면에서 업그레이드 하고 싶다면, 이 책을 읽어보는 것을 적극 추천한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
러스트 프로페셔널 코드 - 동시성, 성능 최적화, 디자인 패턴 등 러스트 전문가가 되기 위한 모든 것
브렌든 매슈스 지음, 장연호 옮김 / 제이펍 / 2024년 9월
평점 :
장바구니담기


 필자는 러스트에 입문하여 공부하다 보니 러스트로 어떤 것을 만들 수 있고, 어떤 방식으로 코드를 작성해야 하고, 러스트만의 데이터 구조 특징과 메모리 관리 방법 등 궁금해지는 점이 점점 많아서 본 도서에 관심을 갖게 되었다. <러스트 프로페셔널 코드>는 러스트를 이용해 수 년간 개발을 해온 사람인 필자의 노하우가 담긴 책으로, 러스트를 제대로 알고 싶고 제대로 활용하고 싶다면 꼭 읽어봐야하는 책이다.


 이 책을 보면, 러스트는 생각보다 훨씬 현대적이고 다른 언어와의 결합성이 뛰어나며, 기능이 매우 많다는 것을 알 수 있다. 책의 내용이 방대해 아직 본격적으로 읽어보지는 못했지만, 이 책을 살펴보고 러스트는 생각보다도 더욱 무궁무진한 언어라는 생각이 들었다. 이 책은 "Code Like a Pro in Rust" 라는 제목 그대로 러스트라는 언어를 러스트스럽게 쓰려면 어떻게 해야 하는가에 대해 설명해주는 책이다. 러스트 입문용 책에 있는 조건문, 반복문, 자료형, 오류처리 등의 간단한 개념에 관한 설명이 담긴 책이 아니라, 실전 개발을 어떻게 해야 하는지에 초점을 맞춘 책이라고 할 수 있다.


 실전 개발에 발을 들이기에는 아직 부족한 필자에게 가장 도움이 되었던 부분은 이 책의 PART 2 : 코어 데이터 부분이다. 처음 러스트를 배울 때 상당히 헷갈리는 개념인 String과 str, &str 등의 개념과 예시에 대해 코드와 함께 설명해주어서 컴파일러가 코드를 읽는 원리를 깊게 이해해볼 수 있었다. 그 밖에도 벡터, 맵 등의 복합적인 데이터 타입와 입문 책에선 찾아볼 수 없는 From-Into 키워드 사용법까지 알려주어 러스트의 데이터 구조를 어떻게 다뤄야 하는 지 알 수 있었다.


 또한 메모리 작업 챕터에서는 러스트에서 힙 영역, 스택 영역의 개념과 데이터가 어떤 영역에 어떻게 할당되는지에 관한 설명이 자세하게 나와있고, 이를 그림과 함께 설명하여 컴퓨터의 메모리 구조에 대해서도 이해할 수 있다. 특히 다른 언어에는 없는 러스트만의 생소한 개념인 스마트 포인터에 관해서도 자세한 설명이 있어 도움이 되었다. 러스트가 얼마나 메모리 안정성에 관해 신경을 많이 썼는지 느껴볼 수 있는 구간이다.


 하지만 단위 테스트와 통합 테스트, 비동기 작업, 최적화 등의 챕터는 아직 초보 개발자로써 이해하긴 어려운 부분이다. 하지만 이 책을 읽으며 이를 이해할 수 있는 수준으로 성장해 나간다면 러스트 언어 뿐만 아니라 프로그래밍과 개발 자체의 전문가가 되어 있을 것이라 확신한다.


 이 책의 마지막 부분인 CHAPER 9 : HTTP REST API 서비스 만들기 부분에서는 비동기 러스트를 이용해 웹 서비스를 직접 구축함으로써 이 책에서 배운 내용들을 실제로 적용해본다. 이 과정에서 웹 프레임워크와 API 설계방법, 필요 라이브러리와 도구와 SQL까지 사용하여 TODO CRUD 앱까지 설계해본다. 이 실전 경험을 통해 러스트를 어디에 어떻게 써야하는지, 그 과정에서 어떤 흐름과 규칙으로 데이터를 제어해야 하며 러스트의 어떤 기능과 키워드를 사용해야 하는지 경험해볼 수 있다. 물론 소스코드와 코드에 관한 설명까지 모두 제공되니 이 과정을 따라가며 학습하다 보면 러스트로 웹 개발을 할 수 있는 개발자로 성장할 수 있을 것이다.


 정리하자면, 난이도는 상당히 높은 책이지만 러스트 전문가가 되고 싶다면 꼭 겪어봐야 하는 책이다. 필자가 생각하는 이 책을 읽어보아야 하는 사람은 다음과 같다.


1. 다른 언어로 서비스를 개발해본 경험이 있는데 러스트로도 해보고 싶은 사람

2. 러스트 언어를 더 잘 다루기 위한 기법과 도구가 궁금한 사람

3. 러스트 언어의 메모리 관리, 소유권 등의 특징에 대해 완전히 이해하고 싶은 사람


정도로 정리해보겠다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
Do it! 플러터 앱 개발 & 출시하기 - 1인 개발로 ‘수익화 앱’을 만든다! Do it! 시리즈
조준수 지음 / 이지스퍼블리싱 / 2024년 6월
평점 :
구판절판


언젠가 좋은 아이디어가 생기면 내가 만들고 싶은 앱을 직접 만들어보고 싶다는 생각이 있었는데, Flutter라는 좋은 소프트웨어 개발 프레임워크의 존재를 알게 되어 나중에 공부해봐야지라는 막연한 생각만 하고 있다가, 이지스퍼블리싱에서 최신 플러터 기술을 반영한 도서가 출간되어 기대를 가지고 읽어보게 되었다.

<Flutter> 는 구글에서 개발한 오픈 소스 UI 소프트웨어 개발 키트로, 최근 몇 년간 가장 주목받는 앱 개발 프레임워크이다. 


Google Trends를 이용해 지난 5년간의 데이터를 보면, React Native 보다 훨씬 많은 검색량과 관심을 받고 있다는 사실을 알 수 있다. 필자도 React Native는 기존에 React를 이용해 웹개발을 하던 개발자들에게는 유리하지만 그렇지 않은 사람들에겐 어려울 수 있다는 이야기를 듣고 Flutter를 통한 앱 개발을 시도해보기로 마음먹었다.


Flutter에는 다음과 같은 장점들이 있다.


1. 크로스 플랫폼 개발 가능

2. 빠른 개발

3. 고성능

4. 풍부한 위젯

5. 개방형 커뮤니티


Flutter의 주요 구성 요소는 다음과 같다.


1. Dart

Flutter 애플리케이션을 작성하는 데 사용되는 언어이다. Dart는 정적 타입 언어이며, 개발자 친화적이고 빠른 실행 속도를 제공한다.

2. 위젯

Flutter에서는 버튼, 텍스트, 패딩 등 모든 UI요소가 위젯으로 구성되어 있다. 위젯은 조합 가능하며, 커스터마이징도 자유롭게 할 수 있다.

3. Flutter 엔진

고성능 그래픽 렌더링 및 네이티브 API 접근을 담당하고, Skia 그래픽 라이브러리를 사용해 고품질 2D 그래픽을 제공한다.

4. Flutter 프레임워크

위젯, 렌더링, 애니메이션, 제스처 처리 등을 포함하는 라이브러리 모음으로, 개발자가 쉽게 애플리케이션을 개발할 수 있도록 다양한 도구와 기능을 제공한다.


플러터가 어떤 것인지 알아봤으니, 이제 플러터를 공부하기 위한 이지스퍼블리싱의 신간 도서

<Do it! 플러터 앱 개발&출시하기> 책을 살펴보자.


1. 플러터 환경 구축

이 도서의 초반부에는 플러터 개발 환경 구축 방법을 상세하게 알려준다. 플러터를 사용할 수 있는 통합 개발 환경들을 소개해주고 설치해야 하는 프로그램과 그 방법들까지 상세히 나와있다. 필자처럼 앱 개발에 대해 하나도 모르는 사람에게는 어떻게 이를 시작하는지 조차 알 수 없어 이것이 첫 번째 걸림돌이 되는데, 환경 구축 방법을 상세히 알려주고 좋은 선택지를 알려주는 것은 입문자들에게 큰 도움이 된다.


2. Dart 프로그래밍 언어

플러터에서는 특이하게 Dart라는 조금 생소한 언어를 사용한다. 다트는 구글이 웹 프론트엔드를 구현할 목적으로 개발한 프로그래밍 언어로, 다양한 목적으로 이용될 수 있다. 이 책에서는 Dart라는 언어를 앱에서 어떻게 사용하는지 상세하게 알려준다. 앱에서 많이 쓰이는 Dart의 기능에 초점을 맞추어 비동기 처리, JSON 데이터 통신과 API호출 방법, 스트림 통신방법 등을 알려준다. 또한 Dart에 익숙해지는 과정을 위해 구구단 프로그램 만들기 등 간단한 프로그램을 만들어 보는 과정도 소개해준다. 이런 과정을 통해 flutter를 이용한 앱 개발에서 Dart를 활용할 수 있는 능력을 함양할 수 있다.


3. 앱 만들기 실습

이 책에서는 다섯 가지 상용화 앱을 직접 만들어 보는 과정을 상세하게 제시한다. 이 과정에서 기본적인 앱 개발에서 사용되는 기법들을 코드와 함께 소개해주며, 구글 지도 API, SQLite, 애널리틱스, 인증 등의 앱에서 자주 쓰이는 기능들을 하나 씩 배워볼 수 있다. 이 다섯 가지 앱을 만드는 과정을 거친다면 현재 쓰이는 웬만한 간단한 앱 작동 방식들은 이해할 수 있을 것이다.


4. 앱 배포하기

플러터는 크로스 플랫폼 앱 개발이 가능한 프레임워크다. 그에 맞게 이 책에서는 안드로이드와 ios 두 개의 환경에서 앱을 배포하는 방법까지 알려준다.


여러 프로그래밍 언어를 다뤄봤고, 프로그래밍 언어를 다루는 데 익숙한 사람들이 앱 개발을 위해 이 책을 접한다면, 쉽게 Dart를 배울 수 있고 이 책을 완성할 수 있을 것이다. 하지만 프로그래밍 언어를 많이 다뤄보지 않아 코딩 자체에 익숙하지 않은 사람들이라면 이 책을 바로 시도하는 것은 어려울 수 있다. 어느정도 코드에 의해 프로그램이 돌아가는 과정을 이해하고 있는 사람이라면, 앱 개발의 영역까지 자신의 지식과 능력을 확장할 수 있는 좋은 책이다. Flutter를 이용한 앱 개발에 관심 있는 사람이라면 누구든지 이 도서를 시도해 볼 만하다!


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
파이썬과 비교하며 배우는 러스트 프로그래밍 - 가장 사랑받는 언어 러스트를 배우는 가장 확실한 방법
윤인도 지음 / 제이펍 / 2024년 5월
평점 :
장바구니담기


프로그래밍 언어마다 장단점이 있다. 예를 들면 파이썬은 개발할 때 속도가 빠르고 생산성이 높지만, 코드 실행 속도가 느리고 멀티스레딩에 취약하다는 단점이 있다. C/C++는 안정적이고 견고하며 실행속도가 빠르지만, 언어의 난이도가 매우 높아 개발 속도가 느리다. 또한, 개발자가 메모리를 하나 하나 관리해줘야하는 어려움이 있어 메모리 누수가 자주 발생해 보안 측면에서 문제점이 제기되고 있다. 백악관 측은 메모리 취약점이 있는 프로그래밍 언어로 C와 C++를 제시한 적도 있다.

반면 Rust는 간결한 문법 덕에 개발 속도도 빠르고, 컴파일 언어이기 때문에 실행속도도 빨라 최근 몇 년간 엄청난 주목을 얻고 있는 언어다. 가장 배우고 싶은 프로그래밍 언어에 항상 순위권을 차지한다. Rust의 가장 큰 장점은 메모리 안정성이다. 백악관 측은 안정적인 보안을 위해 사용해야 하는 프로그래밍 언어 중 하나로 Rust를 꼽았고, 마이크로소프트 측은 C/C++ 대신 Rust를 사용했다면 보안 취약점이 70%나 줄어들었을 것이라고 말했다. 또한, Rust의 컴파일러는 다른 언어들에 비해서 매우 친절하다. 코드에 오류가 있다는 것을 알려주는 동시에 왜 오류가 발생했는지, 어떻게 고쳐야 하는지 코드를 직접 제시해주기도 한다. 이러한 장점들에 의해 개발자들의 만족도가 매우 높은 언어다.


하지만 Rust에도 단점이 있다. Rust는 Garbage Collector가 없어 실행속도가 빠르고 메모리를 직접 지정해주지 않아도 되는 대신, 소유권이라는 개념을 잘 이해해야한다. 이 개념이 다른 언어 개발자들에겐 매우 생소하기 때문에 이해하기 어려워 선뜻 도전하기 쉽지 않은 언어이며, 문법도 어려운 편에 속한다. 필자도 이러한 이유에서 Rust를 배우고 싶다는 생각만 하고 1년 넘게 배워보지 못했다.

이러한 상황에서 제이펍 출판사에서 <파이썬과 비교하며 배우는 러스트 프로그래밍> 도서를 출판하여 평소 파이썬으로 프로그래밍을 하고 있는 필자는 파이썬만 잘 알고 있으면 이 책을 통해 러스트에 쉽게 입문해볼 수 있겠다고 생각하여 본 도서의 서평단 모집에 지원하게 되었고 이에 선정되었다. 최근 현생이 너무 바빠 책을 다 읽어보진 못했지만, 매우 만족하며 이 책으로 러스트를 공부해보고 있는 중이다.


이 책의 장점들을 꼽아보자면

1. 가볍다.

Rust는 위에서 언급했다시피 난이도가 있는 언어다. 이러한 언어를 도서를 통해 진득하게 공부하려면 피로가 쌓여 책 한권을 완독하기 매우 쉽지 않지만, <파이썬과 비교하며 배우는 러스트 프로그래밍> 도서는 300페이지 미만의 도서로 프로그래밍 언어 입문 도서 치고는 분량이 아주 가벼운 편에 속한다. 그렇기에 러스트를 처음 접하는 사람들이라도 어렵지 않게 이 책을 완독하여 러스트라는 언어에 입문해볼 수 있다!

2. 시중 러스트 도서 중 유일하게 파이썬과 비교하며 공부할 수 있다.

파이썬은 현재 정말 많은 개발자들이 사용하고 있는 언어다. 다양한 분야에서 다양한 용도로 쓰이기에 그만큼 많은 사람들이 파이썬으로 개발을 하고 있다. 파이썬으로 개발을 하다 보면 실행 속도가 느려 불만을 느낄 수 밖에 없는데, 이 도서는 그러한 사람들에게 딱 맞는 도서다. 파이썬을 알고 있다면 누구나 러스트를 배워볼 수 있는 책이다. 파이썬에서의 기법과 러스트에서의 기법을 나란히 코드로 제시하여 러스트 언어를 다루는 법을 쉽고 효과적으로 익히고 이해할 수 있다.

3. 간결하고 알차다.

지금까지 많은 프로그래밍 도서를 접해봤지만, 몇몇 도서는 특정 개념에 대한 설명이 지나치게 길거나 예시와 예제가 많아 읽기 피로한 부분이 있었다. 반면 이 책은 개념설명이 매우 간결하여 이해하기 쉽고, 많은 내용을 꽉꽉 눌러담았다. 밀도 높고 알찬 책이라고 할 수 있다. 이 책 하나로 러스트에 관한 대부분의 개념을 배울 수 있으며, 비동기 프로그래밍, 멀티스레딩, 테스트 등 응용 및 실전 사용법까지 공부할 수 있다. 특히 마지막 챕터로 파이썬 바인딩을 하는 법까지 알려주는 점이 가장 좋았다. 최근 다른 프로그래밍 언어들로 구성된 환경에서 성능이 필요한 부분만 러스트 코드로 대체하여 프로그램을 만드는 기법이 유행이라고 하는데, 이에 맞게 파이썬에 환경에서 러스트 코드를 실행하는 법을 따로 챕터로 구성하여 알려준다. 러스트를 활용하는 법까지 알려주니 내용이 정말 알찼다.

요약하자면 <파이썬과 비교하며 배우는 러스트 프로그래밍> 은 파이썬 개발자들을 대상으로 최근 가장 인기있는 언어인 러스트를 쉽게 입문할 수 있게 해주는 도서다. 2024년 개발 트렌드에 맞춰가려면 러스트는 한 번 쯤 다뤄봐야 하는 언어가 되었고, 많은 사람들이 이 도서를 통해 러스트를 접해봤으면 한다!


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
처음 처음 | 이전 이전 | 1 | 2 |다음 다음 | 마지막 마지막