이 책을 읽은 사람
4명
나의 별점
책장에 담기
게시물 작성
문장 남기기
분량
보통인 책
출간일
2013.10.16
페이지
270쪽
상세 정보
프로그래밍 언어가 가지고 있는 다양한 개념이 ‘왜’ 존재하고 있는지를 설명하는 책이다. 이를 위해 언어 설계자의 관점에서 여러 언어를 비교하고 언어가 어떻게 변화되어 왔는지를 설명한다. 다양한 개념이 ‘왜’ 탄생했는지를 이해하게 되면 각 언어를 왜, 언제, 어떻게 사용해야 할지를 판단할 수 있게 된다. 또한 이후에 생겨날 새로운 개념도 쉽게 이해할 수 있는 밑거름이 될 것이다.
총 12장으로 구성되어 있다. 1장은 언어를 효율적으로 학습하기 위한 ‘비교를 통한 학습’과 ‘역사를 통한 학습’에 관해 구체적인 예를 들어 설명한다. 2장은 프로그래밍 언어 자체가 왜 탄생했는지 역사를 따라가며 배워나간다. 3장은 프로그래밍 언어에 왜 수많은 문법(규칙)이 존재하는지 설명한다.
4장은 if 문, while 문, for 문 등 ‘제어 구문’이 왜 탄생했는지, 제어 구문이 없는 어셈블리 언어와 제어 구문이 있는 C 언어를 비교해서 학습한다. 5장은 ‘함수’가 왜 탄생했는지를 배운다. 또한 ‘재귀 호출’이 어떤 경우에 필요한지 학습한다. 6장은 현재 많은 언어에서 ‘예외’라고 부르고 있는 ‘에러 처리’ 구조가 왜 필요했는지, 어떻게 탄생하게 됐는지에 대해 학습한다.
7장은 변수나 함수의 ‘이름’이 왜 탄생했는지, 그리고 ‘스코프(Scope)’가 왜 필요했으며 어떻게 진화해왔는지를 학습한다. 8장은 ‘형’에 대해, 9장은 ‘객체를 저장할 수 있는 공간’(컨테이너, container)에 대해 학습한다. 컨테이너에는 다양한 종류가 있지만 왜 그렇게 종류가 다양한지, 차이를 비교해 각각의 장단점을 파악한다.
10장에서는 복수의 처리를 동시에 실행하는 ‘병행 처리’의 문제점과 대안책에 대해 각종 언어를 비교하며 학습한다. 11장에서는 ‘객체 지향’에 대해, 12장에서는 ‘상속’에 대해 학습한다. 여러 언어에서 사용되고 있는 상속 구조를 비교하여 각각의 장단점을 배우게 된다.
상세정보
프로그래밍 언어가 가지고 있는 다양한 개념이 ‘왜’ 존재하고 있는지를 설명하는 책이다. 이를 위해 언어 설계자의 관점에서 여러 언어를 비교하고 언어가 어떻게 변화되어 왔는지를 설명한다. 다양한 개념이 ‘왜’ 탄생했는지를 이해하게 되면 각 언어를 왜, 언제, 어떻게 사용해야 할지를 판단할 수 있게 된다. 또한 이후에 생겨날 새로운 개념도 쉽게 이해할 수 있는 밑거름이 될 것이다.
총 12장으로 구성되어 있다. 1장은 언어를 효율적으로 학습하기 위한 ‘비교를 통한 학습’과 ‘역사를 통한 학습’에 관해 구체적인 예를 들어 설명한다. 2장은 프로그래밍 언어 자체가 왜 탄생했는지 역사를 따라가며 배워나간다. 3장은 프로그래밍 언어에 왜 수많은 문법(규칙)이 존재하는지 설명한다.
4장은 if 문, while 문, for 문 등 ‘제어 구문’이 왜 탄생했는지, 제어 구문이 없는 어셈블리 언어와 제어 구문이 있는 C 언어를 비교해서 학습한다. 5장은 ‘함수’가 왜 탄생했는지를 배운다. 또한 ‘재귀 호출’이 어떤 경우에 필요한지 학습한다. 6장은 현재 많은 언어에서 ‘예외’라고 부르고 있는 ‘에러 처리’ 구조가 왜 필요했는지, 어떻게 탄생하게 됐는지에 대해 학습한다.
7장은 변수나 함수의 ‘이름’이 왜 탄생했는지, 그리고 ‘스코프(Scope)’가 왜 필요했으며 어떻게 진화해왔는지를 학습한다. 8장은 ‘형’에 대해, 9장은 ‘객체를 저장할 수 있는 공간’(컨테이너, container)에 대해 학습한다. 컨테이너에는 다양한 종류가 있지만 왜 그렇게 종류가 다양한지, 차이를 비교해 각각의 장단점을 파악한다.
10장에서는 복수의 처리를 동시에 실행하는 ‘병행 처리’의 문제점과 대안책에 대해 각종 언어를 비교하며 학습한다. 11장에서는 ‘객체 지향’에 대해, 12장에서는 ‘상속’에 대해 학습한다. 여러 언어에서 사용되고 있는 상속 구조를 비교하여 각각의 장단점을 배우게 된다.
출판사 책 소개
이 책의 목적은 여러분의 ‘왜’를 해결하는 것이다
세상에는 수많은 프로그래밍 언어가 존재한다. 읽어야 할 문서도 셀 수 없을 정도다. 하지만 여러분이 가지고 있는 시간은 제한되어 있어 모든 것을 습득하기엔 역부족이다.
또한 기술 변화 속도가 너무 빨라서 특정 언어나 툴에 관한 지식은 금방 쓸모 없게 된다. ‘변화하고 있는 지식’을 꾸준히 습득하지 않으면, 이미 학습한 지식도 점점 가치를 잃게 된다.
그러면 무엇을 학습하면 되는 것일까? 학습에는 3가지 중요한 포인트가 있다.
- 비교를 통한 학습
- 역사를 통한 학습
- 만드는 것을 통한 학습
첫 번째는 다수의 언어를 비교하는 것이다. 무엇이 그 언어만이 가진 특유의 개념이고, 무엇이 언어 간에 공통으로 사용되는 개념인지를 배울 수 있다.
두 번째는 언어의 발달 과정을 따라가는 것이다. 어떻게 탄생했고, 어떤 식으로 변화해 왔는지를 배움으로 ‘왜 이런 식으로 동작하고 있는지’에 대한 의문을 풀 수 있다.
세 번째는 직접 언어를 만드는 것이다. ‘나라면 어떻게 만들까?’를 생각함으로, 언어 설계자의 의도를 쉽게 이해할 수 있게 된다. 또한 실제로 만들어 봄으로써 자신이 잘 이해하지 못한 것을 알 수 있게 된다.
독자 여러분도 지금까지 다양한 책을 읽으면서 분명 ‘왜’라는 의문을 가진 적이 있을 것이다. 이 책의 목적은 여러분의 ‘왜’를 해결하는 것이다. 프로그래밍에 익숙하지 않은 독자들을 위해 ‘비교를 통한 학습’과 ‘역사를 통한 학습’ 방법에 많은 분량을 할애하고 있다. 이런 학습 방법 자체를 여러분들이 익힐 수 있다면, 이 책으로서는 대성공한 것이다.
예제코드 다운로드
http://nhiro.org/langbook/
https://github.com/nishio/learn_language/tree/master/langbook
독자대상
초중급
이 책의 구성
이 책은 총 12장으로 구성되어 있다.
1장은 언어를 효율적으로 학습하기 위한 ‘비교를 통한 학습’과 ‘역사를 통한 학습’에 관해 구체적인 예를 들어 설명한다.
2장은 프로그래밍 언어 자체가 왜 탄생했는지 역사를 따라가며 배워나간다.
3장 이후로는 프로그래밍 언어에 관한 여러 가지 개념에 대해 설명한다. 특정 언어에 관한 지식을 전제로 하고 있진 않지만, 여러분들의 경험과 연관 되지 않을 경우 이해하기 어려울 수도 있다. 예를 들어, C 언어만 경험했다면 6장의 ‘에러 처리’를 이해하기 어려울 것이다. 또한 스레드를 사용한 적이 없다면 10장의 ‘병행 처리’를 이해하기 어려울 것이다. 그런 경우에는 다 른 장을 먼저 읽어도 상관없다.
3장은 프로그래밍 언어에 왜 수많은 문법(규칙)이 존재하는지 설명한다. 특히 연산자의 우선 순위를 중심으로, 규칙이 적은 언어인 FORTH나 LISP를 비교하며 배운다.
4장은 if 문, while 문, for 문 등 ‘제어 구문’이 왜 탄생했는지, 제어 구문이 없는 어셈블리 언어와 제어 구문이 있는 C 언어를 비교해서 학습한다.
5장은 ‘함수’가 왜 탄생했는지를 배운다. 또한 ‘재귀 호출’이 어떤 경우에 필요한지 학습한다.
6장은 현재 많은 언어에서 ‘예외’라고 부르고 있는 ‘에러 처리’ 구조가 왜 필요했는지, 어떻게 탄생하게 됐는지에 대해 학습한다.
7장은 변수나 함수의 ‘이름’이 왜 탄생했는지, 그리고 ‘스코프(Scope)’가 왜 필요했으며 어떻게 진화해왔는지를 학습한다.
8장은 ‘형’에 대해 학습한다. 형이 왜 필요하게 됐는지 구체적으로 학습하기 위해 우선 ‘숫자를 어떻게 표현하는지’를 배우고, 형과 그 응용 방법에 대해 학습한다.
9장은 ‘객체를 저장할 수 있는 공간’(컨테이너, container)에 대해 학습한다. 컨테이너에는 다양한 종류가 있지만 왜 그렇게 종류가 다양한지, 차이를 비교해 각각의 장단점을 파악한다.
후반부에서는 ‘문자열’에 대해 배운다. 문자 인코딩(encoding)의 변천사를 확인하며, 언어에 따라 문자열이 어떻게 다른지 비교를 통해 학습한다.
10장에서는 복수의 처리를 동시에 실행하는 ‘병행 처리’의 문제점과 대안책에 대해 각종 언어를 비교하며 학습한다.
11장에서는 ‘객체 지향’에 대해 학습한다. 객체 지향이 의미하는 바가 언어에 따라 다른 것을 Smalltalk와 C++을 비교하며 배운다. 다음으로, 왜 객체 지향이 발명됐는지 역사를 통해 확인한다. 또한 ‘클래스’와 ‘객체를 만드는 다양한 방법’에 대해 학습한다.
12장에서는 ‘상속’에 대해 학습한다. 여러 언어에서 사용되고 있는 상속 구조를 비교하여 각각의 장단점을 배운다.
[출판사 리뷰]
이 책은 프로그래밍 언어가 가지고 있는 다양한 개념이 ‘왜’ 존재하고 있는지를 설명한다. 세상에는 많은 프로그래밍 언어가 있으며 관련된 개념도 함수, 형, 스코프, 클래스, 상속 등 그 수를 헤아릴 수 없을 정도로 다양하다. 많은 프로그래밍 언어에서 공통적으로 사용하고 있는 개념도 있지만, 일부 언어만 채용하고 있는 개념도 많다. 이런 개념들은 ‘왜’ 탄생한 것일까? 본서의 목적은 그 이유를 알아내는 것이다.
이를 위해, 이 책은 언어 설계자의 관점에서 여러 언어를 비교하고 언어가 어떻게 변화되어 왔는지를 설명한다. 다양한 개념이 ‘왜’ 탄생했는지를 이해하게 되면 각 언어를 왜, 언제, 어떻게 사용해야 할지를 판단할 수 있게 된다. 또한 이후에 생겨날 새로운 개념도 쉽게 이해할 수 있는 밑거름이 될 것이다.
이 책은 프로그램 개발에 대한 핵심 개념을 쉽게 이해할 수 있어 개발자뿐만 아니라, 시스템 설계자나 관리자들에게도 큰 도움이 될 것이다.
현재 25만명이 게시글을
작성하고 있어요