이미 소장하고 있다면 판매해 보세요.
|
1부 프로그래밍 언어의 기초
01장 소개 1.1 언어 설계의 기술 1.2 프로그래밍 언어의 스펙트럼 1.3 프로그래밍 언어를 공부해야 하는 이유 1.4 컴파일과 해석 1.5 프로그래밍 환경 1.6 컴파일 개요 1.7 정리 1.8 연습문제 1.9 탐구문제 1.10 참고자료 02장 프로그래밍 언어 구문 2.1 구문 명시: 정규식과 문맥 자유 문법 2.2 어휘 분석 2.3 구문 분석 2.4 이론적 기초 사항 【CD-14】 2.5 정리 2.6 연습문제 2.7 탐구문제 2.8 참고자료 03장 이름, 유효 범위, 바인딩 3.1 바인딩 시점의 의미 3.2 객체 수명과 저장 공간 관리 3.3 유효 범위 규칙 3.4 유효 범위의 구현 【CD-23】 3.5 참조 환경의 바인딩 3.6 유효 범위 내에서의 바인딩 3.7 분리 컴파일 【CD-30】 3.8 정리 3.9 연습문제 3.10 탐구문제 3.11 참고자료 04장 의미 분석 4.1 의미 분석기의 역할 4.2 속성 문법 4.3 속성 평가 4.4 동작 루틴 4.5 속성을 위한 저장 공간의 관리 【CD-37】 4.6 구문 트리 장식 4.7 정리 4.8 연습문제 4.9 탐구문제 4.10 참고자료 05장 타겟 머신의 구조 5.1 메모리 계층 5.2 자료 표현 5.3 명령어 집합 구조 5.4 구조와 구현 5.5 최신 프로세서를 위한 컴파일 5.6 정리 5.7 연습문제 5.8 탐구문제 5.9 참고자료 2부 프로그래밍 언어의 핵심 요소 06장 제어 흐름 6.1 수식의 값 계산 6.2 구조화된 흐름과 구조화되지 않은 흐름 6.3 열거 6.4 선택 6.5 반복 6.6 재귀 6.7 비결정성 【CD-65】 6.8 정리 6.9 연습문제 6.10 탐구문제 6.11 참고자료 07장 자료형 7.1 유형 시스템 7.2 유형 검사 7.3 레코드(구조체)와 베리언트(공용체) 7.4 배열 7.5 문자열 7.6 집합 7.7 포인터와 재귀형 7.8 리스트 7.9 파일과 입력/출력 【CD-65】 7.10 등가 검사와 대입 7.11 정리 7.12 연습문제 7.13 탐구문제 7.14 참고자료 08장 서브루틴과 제어 추상화 8.1 스택 배치의 복습 8.2 호출 순서 8.3 매개변수 전달 8.4 제네릭 서브루틴과 모듈 8.5 예외 처리 8.6 동시 실행 루틴 8.7 정리 8.8 연습문제 8.9 탐구문제 8.10 참고자료 09장 자료 추상화와 객체지향 9.1 객체지향 프로그래밍 9.2 캡슐화와 상속 9.3 초기화와 종결화 9.4 동적 메소드 바인딩 9.5 다중 상속 【CD-135】 9.6 객체지향 프로그래밍 다시 보기 9.7 정리 9.8 연습문제 9.9 탐구문제 9.10 참고자료 3부 다른 관점에서 바라본 프로그래밍 모델 10장 함수형 언어 10.1 역사적 기원 10.2 함수형 프로그래밍의 개념 10.3 스킴 복습/개관 10.4 계산 순서 다시 보기 10.5 고차 함수 10.6 이론적 기초 【CD-152】 10.7 한눈에 보는 함수형 프로그래밍 10.8 정리 10.9 연습문제 10.10 탐구문제 10.11 참고자료 11장 논리형 언어 11.1 논리형 프로그래밍의 개념 11.2 프롤로그 11.3 이론적 기초 【CD-163】 11.4 한눈에 보는 논리형 프로그래밍 11.5 정리 11.6 연습문제 11.7 탐구문제 11.8 참고자료 12장 병행 처리 12.1 배경과 동기 12.2 병행 프로그래밍 기초 12.3 공유 메모리 12.4 메시지 전달 12.5 정리 12.6 연습문제 12.7 탐구문제 12.8 참고자료 13장 스크립팅 언어 13.1 스크립팅 언어란 13.2 문제 영역 13.3 월드 와이드 웹 스크립팅 13.4 혁신적인 기능 13.5 정리 13.6 연습문제 13.7 탐구문제 13.8 참고자료 4부 로우레벨로 되짚어본 프로그램의 비밀 14장 실행 가능한 프로그램 작성 14.1 후단 컴파일러 구조 14.2 중간 형태 【CD-169】 14.3 코드 생성 14.4 주소 공간 구조 14.5 어셈블리 14.6 링킹 14.7 동적 링킹 【CD-175】 14.8 정리 14.9 연습문제 14.10 탐구문제 14.11 참고자료 15장 코드 개선 【CD-180】 15.1 코드 개선의 여러 단계 【CD-182】 15.2 국소적 최적화 【CD-184】 15.3 기본 블록에서의 중복 제거 【CD-187】 15.4 전역 중복과 자료 흐름 분석 【CD-196】 15.5 루프 개선 I 【CD-207】 15.6 명령어 스케줄링 【CD-212】 15.7 루프 개선 II 【CD-216】 15.8 레지스터 할당 【CD-228】 15.9 정리 【CD-233】 15.10 연습문제 【CD-234】 15.11 탐구문제 【CD-239】 15.12 참고자료 【CD-241】 부록 A 이 책에서 다룬 프로그래밍 언어 부록 B "설계와 구현" 목차 부록 C "예" 목차 참고자료 부록 CD 활용 방법 |
|
외국에서 생활하고 그 나라의 문화를 배우려면 일단 그 나라의 언어부터 익혀야 하듯이 컴퓨터가 이해하는 언어부터 배워야 컴퓨터를 이해하고 전문적으로 다룰 수 있게 된다. 이것이 개발자나 컴퓨터를 전공하는 사람에게 우선 프로그래밍 언어부터 가르치는 이유 중 하나다. 이 책을 읽고 있는 여러분도 C, C++, 자바 등과 같은 언어 중 한두 개는 잘 다룰 것이다. 그런데 지금 다룰 줄 아는 언어를 어떤 식으로 배웠는지 생각해보자. 아마도 "Hello, World!"를 출력하는 예제로 시작해서 자료형, 제어 흐름, 구조체, 포인터 등의 순서로 각 언어 구성소를 어떻게 사용하는지 배웠을 것이다. 누구도 프로그래밍 언어가 왜 자료형을 가지며, 어째서 특정 제어 흐름이 많이 쓰이는지, 또 포인터가 일부 언어에서는 매우 선호되지만 다른 언어에서는 아예 존재하지도 않는 이유는 무엇인지를 배우지는 않았을 것이다. 적어도 우리나라 대부분의 대학이나 개발자를 양성하는 기관에서는 프로그래밍 언어 자체를 넓고 깊게 다루는 강의는 찾아보기 힘든 것 같다.
이 책은 바로 프로그래밍 언어를 배우며 궁금할 수 있는 부분들, 왜 이런 식으로 언어가 정의됐을까 하는 의문을 품게 만드는 언어 구성소나 규약 등을 명확하고 쉽게 설명해준다. 또 프로그래밍 언어는 어떻게 분류할 수 있으며, 어떠한 것들이 주로 사용되고 어떤 개념들이 중요한지 등을 상세하고 친절하게 알려준다. 그렇기에 이 책은 초보자에게는 프로그래밍 언어의 개념을 확실히 잡아줄 수 있는 지침서이며, 이미 일부 프로그래밍 언어를 능숙히 다룰 줄 아는 독자에게는 다양한 언어의 특징과 장단점을 명확히 정리해주는 참고서다. 특히 이 책을 통해 다양한 언어의 강점과 약점을 분명히 알게 되어 어떤 방식의 프로그래밍 업무/과제가 주어져도 그에 맞는 최적의 언어를 선택해 가장 효율적으로 구현할 수 있게 될 것이다. 역자의 경우에도 머릿속에 산재해 있는 여러 언어들의 지식이 이 책을 통해 깔끔하게 정리되었다(사실 그 전까지는 가끔 여러 언어의 문법을 섞어 써서 컴파일 오류를 발생시키곤 했다). 『새로 보는 프로그래밍 언어』는 프로그래밍 언어 자체뿐만 아니라 이와 관련된 이슈를 모두 다룬다는 점에서도 큰 의미를 가진다(프로그래밍 언어 분야에 이런 책은 여태껏 없었다!). 특히 컴파일러, 컴퓨터 구조, 시스템 프로그래밍, 논리학 등과 같은 내용도 훑어봄으로써 소프트웨어 분야 전체를 정리할 수 있는 기회도 제공해준다. 그러면서도 각 주제를 비교적 깊게 다루고 있으며, 풍부한 예를 통해 독자의 이해도 도모하고 있다. 프로그래밍 언어 분야의 정석으로 자리 잡을 수 있을 만큼 잘 쓰여진 책이다. 개발자라면 꼭 읽어 봐야 할 책이다. 이 책을 읽고 나면 여러분이 알고 있는 프로그래밍 언어의 세계, 그리고 컴퓨터의 세계가 한층 더 넓어질 것이다. 『새로 보는 프로그래밍 언어』는 방대한 내용을 다루는 만큼 책에서 미처 다루지 못한 심화 내용을 부록 CD에서 다룬다. 각 장에서 좀 더 깊게 다루는 내용을 CD에 담은 것이므로 책의 내용이나 흐름을 따라가기 위해 CD를 바로 참고할 필요는 없다. 물론 CD에 있는 내용도 중요하므로 꼭 읽어보자. --- 옮긴이의 말 |
|
핵심만 놓고 보자면 『새로 보는 프로그래밍 언어』는 프로그래밍 언어의 동작 원리에 대한 책이다. 많은 언어의 상세를 나열하기보다는 학생이나 개발자가 접할 만한 모든 언어의 기초가 되는 개념에 초점을 맞춘다. 이 책은 다양하고 구체적인 예를 이용하며 여러 언어가 각각 다른 방법으로 설계된 이유를 알게 해주는 트레이드오프(tradeoff)를 살펴본다. 또 컴파일러나 해석기(interpreter)를 만드는 방법(극소수 개발자가 수행하는 업무)을 설명하기보다는 컴파일러가 입력 프로그램에 무엇을 왜 하는지에 초점을 맞춘다. 그러므로 『새로 보는 프로그래밍 언어』는 언어 설계와 구현을 함께 살펴보며 특히 이들의 상호작용 방법에 중점을 둔다.
★ 이 책에 쏟아진 각계의 찬사 ★ 『새로 보는 프로그래밍 언어』는 독자의 흥미와 관심을 잘 이끌어내는 교과서다. 각 주제마다 소개, 심화, 예시, 다른 주제와의 통합이 매우 잘 되어있다. 저자는 최신 정보를 이용해 다양한 프로그래밍 언어의 예를 들어가며 수많은 개념을 세세히 설명한다. 학생이 읽기에 적합한 수준으로 쓰였으며, 교육 목적으로 추가된 부분 덕분에 각 장은 쉽게 읽을 수 있고 다시 참조하기도 용이하다. - 카말 다부르 / 드폴 대학 『새로 보는 프로그래밍 언어』는 고전 언어와 최근에 나온 언어를 총망라하면서도 깊이와 폭의 균형을 매우 잘 맞추고 있다. - 징케 리 / 포트랜드 주립 대학 『새로 보는 프로그래밍 언어』는 프로그래밍 언어의 이론과 구현을 다룬 책 중 가장 포괄적이다. 스콧 교수는 오늘날 사용되는 주요 언어 전체를 아우르는 기본 원리와 더불어 각 언어를 구별 짓는 언어 설계 시의 선택까지 잘 설명하고 있다. 몇 가지 개정을 통해 독자들은 내용을 좀 더 친숙하게 받아들일 수 있게 됐다. - 윌리엄 칼훈 / 블룸스버그 대학 스콧 교수는 최신 정보를 추가하고 학생들의 이해도를 높임으로써 개정판 ??새로 보는 프로그래밍 언어??를 성공적으로 출간했다. 새로 추가된 스크립팅 언어와 스크립팅 언어의 사용을 설명하기 위한 XML 용례를 다룬 장은 이번 개정판에서 가장 중요한 내용 부분이다. - 아일린 헤드 / 빙햄턴 대학 『새로 보는 프로그래밍 언어』는 언어의 다양한 개념과 상세한 구현사항을 매우 명확히 설명할 뿐만 아니라 컴퓨터 구조와 컴파일러가 언어의 설계 및 구현과 어떻게 연관되는지 잘 설명하고 있다. 이 책은 프로그래밍 언어가 프로그래머와 컴퓨터를 연결해주는 다리며 컴퓨터 과학의 진정한 중심이라는 것을 보여준다. - 제임스 라루스 / 마이크로소프트 리서치 『새로 보는 프로그래밍 언어』는 교과서에서 가장 중요한 세 가지 질적 요구사항인 폭, 깊이, 명확성 간의 균형을 잘 맞추고 있다. 스콧 교수는 가장 오래된 언어부터 가장 최신 언어에 이르는 프로그래밍 언어 전반을 모두 다루고 있으며, 학생들이 각 언어의 중요한 특징을 쉽게 이해할 수 있는 정도로 충분히 깊게 설명하고 있다. 이와 동시에 지나치게 어렵거나 특수한 내용으로 인해 학생들이 헤매는 일이 없도록 주의를 기울였다. 최근에는 스크립팅 언어가 주요 기술로 부상하고 있기에 이를 다룬 새로운 장은 이번 개정판에서 가장 귀중한 추가 부분이다. 프로그래밍 언어 분야의 금자탑이 될 거라 확실하다. - 크리스토퍼 비커리 / 퀸즈 대학, 뉴욕시립대 ★ 이 책의 구성 ★ 1부는 프로그래밍 언어의 기초적인 내용을 다룬다. (1) 언어 설계와 구현에 대한 소개, (2) 프로그래밍 언어 구문(syntax), (3) 이름, 유효 범위, 바인딩, (4) 의미 분석(semantic analysis), (5) 목표 기계의 구조(target machine architecture). 이 중에서 항목 (2)와 (5)에서는 주로 구현에 대한 내용을 다룬다. 항목 (1)과 (4)에는 언어 설계와 구현에 대한 내용이 섞여 있으며, 항목 (3)에서는 언어 설계에 대한 핵심 쟁점을 주로 다룬다. 2부에서는 프로그래밍 언어의 핵심 요소를 다룬다. (6) 제어 흐름, (7) 자료형, (8) 서브루틴과 제어 추상화, (9) 자료 추상화와 객체지향. 마지막 항목은 초판에서보다 좀 더 앞부분에서 다루었는데, 이는 객체지향 언어가 현대 컴퓨팅에서 차지하는 중심적 위치를 반영한 것이다. 3부는 다른 관점에서 바라본 프로그래밍 모델을 다룬다. (10) 함수형 언어(functional language), (11) 논리형 언어(logic language), (12) 병행, (13) 스크립팅 언어. 초판에서는 함수형 언어와 논리형 언어를 한 장에서 다뤘다. 4부는 언어 구현이라는 주제를 다시 다룬다. (14) 실행 가능한 프로그램 만들기(코드 생성, 어셈블리, 링킹), (15) 코드 개선(최적화). 그림: 책을 읽는 다양한 순서 ★ 개정판에서 추가된 내용 ★ ● C99, C# 2.0, 자바 5 등 프로그래밍 언어 설계 분야의 최신 내용을 다룬다. ● 스크립팅 언어를 새로 추가된 장과 책 전반에서 설명하며, 펄, 파이썬, 루비, Tcl, PHP, 자바스크립트, XSLT 등을 다룬다. ● 병행처리를 광범위하게 설명하며 C#과 자바의 새로운 병행 패키지(JSR 166)를 다루는 장도 포함한다. ● 반복자, 예외, 다형성, 템플릿/제네릭, 유효 범위 규칙, 선언 정렬, 분리 컴파일, 가비지 콜렉션, 쓰레드와 동기화 등 새로운 내용이 추가됐다. ● 부록 CD에 추가 자료를 제공한다. 고급/선택적인 내용, 수백 개의 실제 용례를 담고 있으며, 검색 도구, 인터넷상의 사용설명서, 튜토리얼, 컴파일러, 해석기에 대한 링크도 제공한다. ★ 부록 CD 소개 ★ ● 독자가 선택해 볼 수 있는 심화학습과 보충설명 ● 300개 이상의 소스파일 ● 공개 컴파일러와 해석기 링크 모음 |