책소개
이 책이 속한 분야
『Go 언어』는 각 주제의 핵심만 담아서 UNIT으로 정리했다. UNIT으로 정리한 Go 언어의 문법, 라이브러리, 실전 예제를 따라가다 보면 어느새 수업이 끝난다. Go 언어의 핵심 문법을 정리하고, 표준 라이브러리로 Go 언어의 확장성을 느껴보고, 지금까지 배운 내용을 토대로 실전 예제에서는 웹 크롤러와 채팅 서버를 만들어본다.
저자소개
저자 이재홍은 PYRASIS.COM이라는 개인 웹사이트를 운영하고 있으며, 여러 가지 기술 문서를 작성하여 공개해왔다. 엔씨소프트에서 리니지 이터널 개발에 참여하였고, 엔트리브소프트에서 모바일 게임 서버를 개발했다. 또한, FFS File System Driver for Windows라는 오픈 소스 프로젝트를 진행하기도 하였으며, 최근에는 모바일 게임 엔진인 Cocos2d-x를 Tizen용으로 개발하여 메인스트림에 포함시켰다. 현재 주 관심 분야는 운영체제 커널, 파일시스템, 소프트웨어 개발 자동화, 게임 엔진, 클라우드 플랫폼, 분산 처리 시스템이다. 완전 자동화된 나만의 집을 짓는 것과 오픈 소스 재단 설립이 꿈이다.
사이트 http://pyrasis.com
주요 저서
<윈도우 프로젝트 필수 유틸리티: Subversion, Trac, CruiseControl.NET>(한빛미디어)
<아마존 웹 서비스를 다루는 기술>(길벗)
<가장 빨리 만나는 Docker>(길벗)
출판사서평
[책소개]
Go 언어를 문법부터 실전 예제까지
가장 빠르게 학습한다!
Go 언어를 빠르게 학습하는 방법, 67 UNIT
각 주제의 핵심만 담아서 UNIT으로 정리했다. UNIT으로 정리한 Go 언어의 문법, 라이브러리, 실전 예제를 따라가다 보면 어느새 수업이 끝난다. Go 언어의 핵심 문법을 정리하고, 표준 라이브러리로 Go 언어의 확장성을 느껴보고, 지금까지 배운 내용을 토대로 실전 예제에서는 웹 크롤러와 채팅 서버를 만들어본다.
700개 이상의 코드 조각으로 철저하게 설명
프로그래밍 언어 학습의 왕도는 코드 읽기다. 이 책은 철저하게 코드 중심으로 설명했다. Go 언어로 작성된 다양한 코드를 반복해서 읽다 보면 Go 언어에 익숙해질 것이다.
[이 책의 내용]
-. Go 언어의 기본 문법
-. 배열, 슬라이스, 맵 사용법
-. 함수, 클로저, 지연 호출
-. 덕 타이핑
-. 고루틴, 채널, 채널 버퍼링
-. 뮤텍스, 풀, 대기 그룹
-. 리플렉션
-. 문자열과 파일 처리
-. JSON
-. 정규표현식
-. 암호화
-. TCP/RPC/HTTP 프로토콜
-. 에러 처리
-. 단위 테스트
-. 웹 크롤러 실전 예제
-. 채팅 서버 실전 예제
예제 소스: https://github.com/gilbutITbook/006792
[저자 서문]
C, C++, Java, Python 등 지금까지 무수히 많은 프로그래밍 언어들이 나왔습니다. Go 언어도 이렇게 많은 언어들 중 하나입니다. 최근에 오픈 소스로 개발된 가상화 컨테이너 Docker가 큰 인기를 끌면서 Docker 개발에 쓰인 Go 언어도 많은 관심을 받게 되었습니다.
특히 클라우드 환경을 위한 오픈 소스 프로젝트는 상당수가 Go 언어로 작성되어 있습니다. 대표적인 프로젝트가 구글의 컨테이너 관리 시스템인 Kubernetes입니다. 클라우드, 웹 서비스, 분산 처리, 서버 애플리케이션 배포 시스템, 데이터베이스 등 다양한 분야에서 Go 언어를 프로젝트 언어로 선택하는 경우가 증가하고 있습니다.
Go 언어는 기본 라이브러리가 매우 탄탄합니다. 기본 라이브러리만으로도 어지간한 요구 사항은 손쉽게 구현할 수 있을 정도입니다. 또한, 기본 라이브러리 이외에도 GitHub에 공개된 수많은 패키지를 키워드 하나로 간단하게 사용할 수 있습니다.
또 다른 특징은 메모리 관리 기능입니다. C, C++처럼 네이티브 바이너리를 만들어내는 컴파일 언어는 메모리를 할당한 후에 반드시 수동으로 해제해야 합니다. 그러다 보니 프로그램의 로직보다는 메모리 관리에 더 많은 신경을 쓰는 일도 비일비재합니다. Go 언어는 소스를 컴파일하여 네이티브 바이너리를 만들지만, 실행 파일 안에 가비지 컬렉터를 내장해서 메모리 관리에 신경 쓰지 않아도 됩니다.
네이티브 바이너리 형식이 주는 이점도 큽니다. Java는 시스템에 항상 가상 머신이 설치되어 있어야 하고, 다른 스크립트 언어들도 각자의 언어 플랫폼이 꼭 필요합니다. 하지만, Go 언어는 실행 파일 하나만 있으면 끝입니다. 그만큼 배포와 관리가 간단해집니다.
멀티 프로세서, 멀티 스레드 환경에 최적화된 설계도 큰 장점입니다. 고루틴을 사용하면 간단한 문법으로 여러 작업을 동시에 처리할 수 있으며 복잡한 동기화 과정을 거치지 않아도 채널을 사용하여 고루틴끼리 간단하게 데이터를 주고받을 수 있습니다.
제가 Go 언어 책을 쓰기로 했을 때 출판사의 담당 편집자는 Go 언어 사용자가 많지 않다며 만류했습니다. 그런데도 저는 Go 언어가 프로그래밍 환경에 큰 변화를 몰고 올 것이라고 확신했기 때문에 많은 사람이 Go 언어를 사용해보았으면 하는 마음에서 책을 쓰게 되었습니다.
새로운 언어를 배우는 일 자체가 부담스러운 분도 많을 것입니다. 하지만, Go 언어는 여러분들의 프로그래밍 능력에 날개를 달아주리라 생각합니다. 아무쪼록 Go 언어를 익히고 사용해보면서 새로운 프로그래밍 언어의 재미를 느껴보기 바랍니다.
_ 이재홍
* 현재 책속 한문장이 없습니다. 책속 한문장을 작성해주세요.