이 책은 학교다닐 때 프로그래밍 언어론 과목 시간에 교재로 쓰였던 책이다.
학교 다닐 때는 6판으로 공부했던 것 같은데 어느새 8번째 에디션이 나와서 목차를 둘러보고는 도서관에 신청해서 빌려 보았다.
학교 다닐 때에 열심히 공부했던 책을 다시 보게 되니 옛 생각도 나고, 시험 문제들도 고스란히 생각나고 아주 즐거웠다.

나는 이 과목을 아주 좋아했는데 성적은 A0를 받았다.
다음 2문제를 틀린 것이 원인이었는데, 아직까지도 잊지 않고 있다.

Java로 새로운 Thread를 시작하는 코드를 작성하시오.
short-circuit evaluation에 대해서 간단히 기술 하시오.

둘다 아주 간단한 문제였는데, 시험 당일날 마음이 살짝 풀어져서 제대로 체크하지 않았던 것이 원인이었다.
지금도 가끔 옛 성적표를 보다가 이 과목을 보면 그 기말고사 날이 생각나면서 속이 쓰리다.

8판에서는 중간 중간 프로그래밍 언어 설계자들(Perl의 Larry Wall, PHP의 Rasmus Lerdorf, C++의 Bjarne Stroustrup) 에 대한 인터뷰도 들어있는데, 인터뷰 역시 읽어볼만 하다.
하지만 항상 느끼는 거지만 비야네의 인터뷰는 정말 재미없다^^

어쨌든 이 책은 프로그래밍 언어에 대해서 공부하기에 정말 좋은 책이다.
그렇지만 거의 모든 홍릉과학출판사 책이 그렇듯이 직장인보단 학생 때 읽어보는 것이 좀 더 좋다고 생각한다.
이 책에는 연습문제가 있는데 학교에 다니면서 레포트나 시험때문에 연습문제를 풀어보는 것이 아주 많은 도움이 되기 때문이다.
직장에 다니면서 그렇게 공부하는 것은 사실 거의 모든 사람들에게 있어서 어려운 일이다.

프로그래밍 언어에 대한 기본을 배우고 싶다면 이 책을 꼭 읽어보자.

Chapter 01. 기본적인 사항
1.1 프로그래밍 언어의 개념 학습 이유
1.2 프로그래밍 영역
1.3 언어 평가 기준
1.4 언어 설계에 미친 영향
1.5 언어 부류
1.6 언어 설계 절충
1.7 구현 방법
1.8 프로그래밍 환경
요점 정리
복습 문제
연습 문제

Chapter 02. 프로그래밍 언어의 발전사
2.1 Zuse의 Plankalkul
2.2 최소의 하드웨어 프로그래밍: 의사 코드
2.3 IBM704와 Fortran
2.4 함수 프로그래밍:LISP
2.5 정교화를 향한 첫 단계: ALGOL 60
2.6 사무 기록의 전산화: COBOL
2.7 시분할의 발단: BASIC
인터뷰: Alan Cooper-사용자 설계와 언어 설계
2.8 모든 사람을 위한 모든 것: PL/I
2.9 2개의 초창기 동적 언어: APL과 SNOBOL
2.10 데이터 추상화의 발단: SIMULA 67
2.11 직교적 설계: ALGOL 68
2.12 ALGOL의 초창기 후손 언어들
2.13 논리 기반 프로그래밍: Prolog
2.14 역사상 최대 설계 노력: Ada
2.15 객체지향 프로그래밍: Smalltalk
2.16 명령형 특징과 객체지향 특징의 결합: C++
2.17 명령형 언어 기반 객체지향 언어: Java
2.18 스크립트 언어: JavaScript, PHP, Python, Ruby
2.19 새 천년을 위한 C-기반 언어: C#
2.20 마크업/프로그래밍의 하이브리드 언어
요점 정리
참고 문헌
복습 문제
연습 문제
프로그래밍 연습 문제

Chapter 03. 구문과 의미론
3.1 서론
3.2 구문 기술의 일반적인 문제
3.3 구문 기술의 형식적 방법
3.4 속성 문법
3.5 프로그램 의미 기술: 동적 의미론
요점 정리
참고 문헌
복습 문제
연습 문제

Chapter 04. 어휘 분석과 구문 분석
4.1 서론
4.2 어휘 분석
4.3 파싱 문제
4.4 재귀 하강 파싱
4.5 상향식 파싱
요점 정리
복습 문제
연습 문제
프로그래밍 연습 문제

Chapter 05. 이름, 바인딩, 타입 검사와 영역
5.1 서론
5.2 이름
5.3 변수
5.4 바인딩의 개념
인터뷰: Rasmus Lerdorf-스크립트 언어와 교묘한 해결책에 대한 다른 예제
5.5 타입 검사
5.6 타입
5.7 타입 동등
5.8 영역
5.9 영역과 존속기간
5.10 참조 환경
5.11 이름
요점 정리
복습 문제
연습 문제
프로그래밍 연습 문제

Chapter 06. 데이터 타입
6.1 서론
6.2 기본 데이터 타입
6.3 문자 스트링 타입
6.4 사용자-정의 순서 타입
6.5 배열 타입
인터뷰: Rasmus Lerdorf-소스 개방 운동과 작업 수명
6.6 연상 배열
6.7 레코드 타입
6.8 공용체 타입
6.9 포인터 타입과 참조 타입
요점 정리
참고 문헌
복습 문제
연습 문제
프로그래밍 연습 문제

Chapter 08. 문자수준 제어 구조
8.1 서론
8.2 선택문
8.3 반복문
인터뷰: Larry Wall-파트 1: 언어학과 Perl의 탄생
8.4 무조건 분기
8.5 보호 명령
8.6 결론
요점 정리
복습 문제
연습 문제
프로그래밍 연습 문제

Chapter 09. 부프로그램
9.1 서론
9.2 부프로그램의 원리
9.3 부프로그램의 설계 고려 사항
9.4 지역 참조 환경
9.5 매개변수 전달 방법
인터뷰: Larry Wall-파트 2: 일반적인 스크립트 언어와 Perl
9.6 부프로그램 매개변수
9.7 중복 부프로그램
9.8 포괄형 부프로그램
9.9 함수의 설계 고려 사항
9.10 사용자-정의 중복 연산자
9.11 코루틴
요점 정리
복습 문제
연습 문제
프로그래밍 연습 문제

Chapter 10. 부프로그램의 구현
10.1 호출과 복귀의 일반적 의미
10.2 '단순' 부프로그램의 구현
10.3 스택-동적 지역 변수를 갖는 부프로그램
10.4 중첩 부프로그램
인터뷰: NiklausWirth-단순하게 유지하기
10.5 블록
10.6 동적 영역 규칙의 구현
요점 정리
복습 문제
연습 문제

Chapter 11. 추상 데이터 타입과 캡슐화 구조
11.1 추상화의 개념
11.2 데이터 추상화의 소개
11.3 추상 데이터 타입의 설계 고려 사항
11.4 언어 예제
인터뷰: Bjarne Stroustrup-C++: 탄생, 편재와 일반적인 비평
11.5 매개변수 추상 데이터 타입
11.6 캡슐화 구조
11.7 캡슐화 명칭
요점 정리
복습 문제
연습 문제
프로그래밍 연습 문제

Chapter 12. 객체지향 프로그래밍
12.1 서론
12.2 객체지향 프로그래밍
12.3 객체지향 언어의 설계 고려 사항
12.4 Smalltalk에서 객체지향 프로그래밍
12.5 C++에서 객체지향 프로그래밍
인터뷰: Bjarne Stroustrup-패러다임과 보다 좋은 프로그래밍
12.6 Java에서 객체지향 프로그래밍
12.7 C#에서 객체지향 프로그래밍
12.8 Ada 95에서 객체지향 프로그래밍
12.9 Ruby에서 객체지향 프로그래밍
12.10 JavaScript의 객체 모델
요점 정리
복습 문제
연습 문제
프로그래밍 연습 문제

Chapter 13. 동시성
13.1 서론
13.2 부프로그램-수준 동시성
13.3 세마포어
13.4 모니터
13.5 메시지 전달
13.6 동시성을 위한 Ada 지원
13.7 Java 스레드
13.8 C# 스레드
13.9 문장-수준 동시성
요점 정리
참고 문헌
복습 문제
연습 문제
프로그래밍 연습 문제

Chapter 14. 예외 처리와 이벤트 처리
14.1 예외 처리의 소개
14.2 Ada에서 예외 처리
14.3 C++에서 예외 처리
14.4 Java에서 예외 처리
인터뷰: James Gosling-Java의 탄생
14.5 이벤트 처리의 소개
14.6 Java에서 이벤트 처리
요점 정리
참고 문헌
복습 문제
연습 문제
프로그래밍 연습 문제

Chapter 15. 함수형 프로그래밍 언어
15.1 서론
15.2 수학 함수
15.3 함수형 프로그래밍 언어의 원리
15.4 첫 함수형 프로그래밍 언어:LISP
15.5 Scheme의 소개
15.6 COMMON LISP
15.7 ML
15.8 Haskell
15.9 함수형 언어의 응용
15.10 함수형 언어와 명령형 언어의 비교
요점 정리
참고 문헌
복습 문제
연습 문제
프로그래밍 연습 문제

Chapter 16. 논리형 프로그래밍 언어
16.1 서론
16.2 술어 해석학
16.3 술어 해석학의 정리 증명
16.4 논리형 프로그래밍의 개과
16.5 Prolog의 기원
16.6 Prolog의 기본 원소
16.7 Prolog의 결점
16.8 논리 프로그래밍의 응용
요점 정리
참고 문헌
복습 문제
연습 문제
프로그래밍 연습 문제

  1. eslife 2008/11/04 21:53 답글수정삭제

    오픈소스의 가능성에 대해 예전에는 부정적인 생각이 많았는데, 오픈 소스의 위력과 가능성, 그리고 많은 사람들의 지지를 접하다 보면 제가 아직 모르는 묘한 매력이 있나 봅니다.
    그게 뭔지는 잘 모르겠지만요 ^^

  2. 김이현 2009/04/06 20:41 답글수정삭제

    형 전 어제 밤까지 과제하다가 한문제를 못풀어서 쩔쩔매다가 결국 그냥 제출해버렸다는...ㅠㅠ

    형 블로그와서 좀더 열씨미해야겠다는 생각을 하는 1인..댓글달고갑니당..ㅎ

트랙백 주소 :: http://www.crazytazo.com/54/trackback/
옵션
댓글 달기