목차
Chapter 01 프로그래밍 언어 소개
1.1 프로그래밍 언어란 무엇인가 = 14
1.2 프로그래밍 언어를 배워야 하는 이유 = 17
1.3 프로그래밍 언어에서의 추상화 = 19
1.3.1 자료 추상화 = 20
1.3.2 제어 추상화 = 21
1.4 계산 전형 = 24
1.5 언어 정의 = 28
연습 문제 = 30
Chapter 02 언어의 변천
2.1 디지털 컴퓨터 이전의 언어 = 34
2.2 1950년대 : 최초의 프로그래밍 언어 = 37
2.3 1960년대 : 프로그래밍 언어의 폭증 = 39
2.4 1970년대 : 간결성, 추상화, 연구 사항 = 42
2.5 1980년대 : 통합과 새로운 방향 = 43
2.6 1990년대 : World Wide Web 프로그래밍(Java) = 45
2.7 언어의 세대론과 미래 = 48
연습 문제 = 51
Chapter 03 프로그래밍 언어 설계
3.1 설계 기준의 역사적 변천 = 57
3.2 효율성 = 59
3.3 일반성, 직교성, 획일성 = 60
3.4 프로그래밍 언어의 기타 설계 원칙 = 64
3.5 문제점과 해결책들 = 68
연습 문제 = 71
Chapter 04 프로그래밍 언어의 구문과 구현 기법
4.1 언어 구문 = 76
4.1.1 프로그래밍 언어의 어휘 구조 = 76
4.1.2 문맥 자유 문법과 BNF = 78
4.1.3 구문 도표 = 81
4.1.4 파스 트리와 추상 구문 트리(AST) = 85
4.1.5 모호성, 결합성 및 우선 순위 = 87
4.1.6 구문과 프로그램 신뢰성 = 91
4.2 프로그래밍 언어 구현 기법 = 94
4.2.1 번역 기법 = 94
4.2.2 인터프리터 기법 = 96
4.2.3 인터프리터 기법과 번역 기법 = 97
연습 문제 = 101
Chapter 05 변수, 바인딩, 식 및 제어문
5.1 변수 = 104
5.2 바인딩 = 105
5.2.1 바인딩 개념 = 105
5.2.2 바인딩 시간의 종류 = 106
5.2.3 바인딩 시간의 중요성 = 109
5.3 선언 = 111
5.4 배정문 = 114
5.4.1 ℓ-values와 r-values = 115
5.4.2 단순 배정문 = 116
5.4.3 다중 목적지 배정문 = 117
5.4.4 조건 목적지 배정문 = 117
5.4.5 복합 배정 연산자 = 117
5.4.6 단항 배정 연산자 = 118
5.4.7 식으로서의 배정문 = 119
5.4.8 혼합형 배정문 = 120
5.5 상수 및 변수 초기화 = 121
5.6 표현식 = 125
5.6.1 식의 개요 = 125
5.6.2 논리 조건 = 129
5.7 조건문 = 130
5.8 반복문 = 135
5.8.1 사용자 지정 반복 = 135
5.8.2 논리 제어 반복문 = 136
5.8.3 제어 변수 반복문 = 138
5.9 GoTo문 = 141
5.9.1 레이블과 GoTo문 = 141
5.9.2 GoTo문의 장단점 = 142
연습 문제 = 144
Chapter 06 자료형
6.1 자료형과 형 선언 = 150
6.2 단순형 = 152
6.2.1 수치형 = 154
6.2.2 논리형 = 156
6.2.3 문자형 = 156
6.3 열거형 = 160
6.4 배열 = 163
6.5 연상 배열(Associative array) = 174
6.6 레코드 = 176
6.7 포인터 자료형 = 181
6.7.1 Pascal과 Ada의 포인터 = 184
6.7.2 C/C++의 포인터 = 187
6.7.3 참조형 = 188
6.8 자료형 변환 = 190
6.9 자료형 동치 = 192
연습 문제 = 197
Chapter 07 영역과 수명
7.1 블록과 영역 = 202
7.2 정적 영역과 동적 영역 = 204
7.3 언어에서의 영역 = 208
7.4 변수의 수명 = 214
7.5 Ada의 영역 = 217
연습 문제 = 221
Chapter 08 기억장소 배당
8.1 정적 및 동적 기억장소 배당 = 226
8.2 단위 프로그램 = 227
8.3 정적 기억장소 배당 = 228
8.4 스택 기반 기억장소 배당 = 230
8.4.1 활성 레코드의 크기가 정적으로 확정하는 경우 = 231
8.4.2 단위 프로그램이 활성화되는 시점에서 활성 레코드의 크기가 확정되는 경우 = 235
8.4.3 활성 레코드가 동적으로 변하는 경우 = 237
8.4.4 비지역 변수의 참조 방법 = 239
8.5 힙 기억장소 배당 = 244
연습 문제 = 247
Chapter 09 부프로그램
9.1 개요 = 254
9.2 매개변수 평가와 전달 기법 = 257
9.2.1 형식 매개변수와 실 매개변수 = 257
9.2.2 참조 호출 = 258
9.2.3 값 호출과 결과 호출 = 260
9.2.4 이름 호출 = 263
9.3 형식 매개변수 명세 = 268
9.4 부작용과 이명 = 269
9.4.1 부작용 = 270
9.4.2 이명 = 270
9.5 연산자 중복정의 = 272
9.6 포괄 기능(Generic Function) = 275
9.7 코루틴 = 277
연습 문제 = 279
Chapter 10 추상 자료형
10.1 소개 = 285
10.2 Ada의 추상 자료형 = 289
10.3 C++의 추상 자료형 = 293
10.4 Java의 추상 자료형 = 298
10.5 수학적 추상화 명세 = 300
연습 문제 = 305
Chapter 11 예외 처리
11.1 설계 쟁점 = 308
11.2 PL/I의 예외 처리 = 311
11.3 Ada의 예외 처리 = 316
11.4 C++의 예외 처리 = 321
11.5 Java의 예외 처리 = 325
연습 문제 = 332
Chapter 12 병렬 프로그래밍과 병렬 처리
12.1 병렬 처리 소개 = 336
12.1.1 공유 메모리 구조 = 338
12.1.2 분산 메모리 구조 = 339
12.2 병렬 처리와 프로그래밍 언어 = 340
12.2.1 명시적인 언어 기능을 사용하지 않는 병렬 프로그래밍 = 342
12.2.2 프로세스 생성과 소멸 = 344
12.2.3 명령어 수준의 병렬성 = 346
12.2.4 프로시저 수준의 병렬성 = 347
12.2.5 프로그램 수준의 병렬성 = 348
12.3 세마포어(Semaphores) = 350
12.4 모니터 = 354
12.4.1 CSP/K = 356
12.4.2 Concurrent-Pascal = 358
12.5 메시지 전달 기법 = 362
12.6 실시간 언어 = 365
연습 문제 = 369
Chapter 13 객체 지향 프로그래밍
13.1 소프트웨어의 재사용과 독립성 = 372
13.2 객체, 클래스, 메소드 = 374
13.3 상속 = 377
13.4 동적 바인딩 = 382
13.5 C++ = 385
13.6 Smalltalk = 392
13.6.1 Smalltalk의 역사 = 392
13.6.2 객체 지향 언어로서의 Smalltalk = 393
13.6.3 Smalltalk-80 문법 = 394
13.6.4 Smalltalk 프로그래밍 = 398
13.7 객체 지향 언어 설계 문제 = 402
13.7.1 클래스와 자료형 = 402
13.7.2 상속과 도입 = 402
13.7.3 상속과 다형성 = 403
연습 문제 = 404
Chapter 14 함수형 프로그래밍
14.1 명령형 언어의 특징 = 407
14.1.1 명령형 프로그램 = 408
14.1.2 명령형 언어의 문제점 = 409
14.2 함수형 프로그래밍의 본질 = 411
14.2.1 함수 = 411
14.2.2 수학 함수와 프로그래밍 언어 함수 = 415
14.2.3 함수 언어(적용 언어) = 416
14.3 간단한 순수 함수 언어 = 417
14.3.1 원시 함수 = 417
14.3.2 함수 형식 = 419
14.4 기존 언어의 함수 기능 = 423
14.4.1 Lisp = 423
14.5 적용형 언어와 명령형 언어의 비교 = 427
연습 문제 = 430
Chapter 15 논리형 프로그래밍
15.1 WHAT과 HOW = 432
15.2 비절차적 언어의 예 = 436
15.2.1 데이터베이스 언어 = 436
15.2.2 SETL = 437
15.2.3 Snobol4 = 438
15.3 Prolog = 441
15.3.1 사실, 규칙, 질문 = 441
15.3.2 단일화와 퇴각 검색 = 445
15.3.3 일반적인 자료 구조 = 449
15.4 Prolog와 Snobol4의 단일화 개념 = 452
연습 문제 = 453
Chapter 16 Ada
16.1 소개 = 456
16.2 자료형 = 458
16.2.1 변수와 상수 선언 = 458
16.2.2 단순 자료형 = 459
16.2.3 구조 자료형 = 460
16.2.4 배열형 = 460
16.2.5 문자열형 = 462
16.2.6 레코드 자료형 = 462
16.2.7 접근 자료형 = 466
16.2.8 전용 자료형 = 467
16.2.9 표현 명세 = 467
16.2.10 파생 자료형과 자료형 호환성 = 468
16.2.11 중복정의 = 470
16.3 수식과 문장 = 470
16.4 부프로그램 = 473
16.5 패키지와 전용 자료형 = 476
16.5.1 정보 은닉 = 477
16.5.2 전용 자료형 = 481
16.6 태스크 = 483
16.7 태스크들 사이의 통신 기법 = 486
16.7.1 랑데뷰 = 486
16.7.2 태스크들간의 선택 기법 = 487
16.8 예외 처리 = 492
16.9 포괄성 = 493
연습 문제 = 495
국제 규격 인덱스 = 496
부록 = 505
색인 = 530