목차
chapter 01 프로그래밍 언어 소개
section 1.1. 프로그래밍 언어란 무엇인가? = 15
section 1.2. 프로그래밍 언어를 배워야 하는 이유 = 18
section 1.3. 프로그래밍 언어에서의 추상화 = 20
1.3.1 자료 추상화 = 20
1.3.2 제어 추상화 = 21
section 1.4. 계산 전형 = 25
section 1.5. 언어 정의 = 29
연습문제 = 31
chapter 02 언어의 변천
section 2.1. 디지털 컴퓨터 이전의 언어 = 35
section 2.2. 1950년대 : 최초의 프로그래밍 언어 = 38
section 2.3. 1960년대 : 프로그래밍 언어의 폭증 = 41
section 2.4. 1970년대 : 간결성, 추상화, 연구 사항 = 44
section 2.5. 1980년대 : 통합과 새로운 방향 = 46
section 2.6. 1990년대 : 웹을 위한 언어 = 48
2.6.1 Java = 49
2.6.2 JavaScript = 52
2.6.3 PHP = 53
section 2.7. 2000년대 : C#, 마크업 언어 = 54
2.7.1 C# = 54
2.7.2 XLST = 56
2.7.3 JSP = 57
section 2.8. 언어의 세대론과 미래 = 59
연습문제 = 61
chapter 03 프로그래밍 언어 설계
section 3.1. 설계 기준의 역사적 변천 = 65
section 3.2. 효율성 = 67
section 3.3. 일반성, 직교성, 획일성 = 69
section 3.4. 프로그래밍 언어의 기타 설계 원칙 = 73
section 3.5. 문제점과 해결책들 = 77
연습문제 = 80
chapter 04 프로그래밍 언어의 구문과 구현 기법
section 4.1. 언어 구문 = 86
4.1.1 프로그래밍 언어의 어휘 구조 = 86
4.1.2 문맥 자유 문법과 BNF = 89
4.1.3 구문 도표 = 92
4.1.4 파스 트리와 추상 구문 트리(AST) = 95
4.1.5 모호성, 결합성 및 우선 순위 = 97
4.1.6 구문과 프로그램 신뢰성 = 101
section 4.2. 프로그래밍 언어 구현 기법 = 105
4.2.1 번역 기법 = 105
4.2.2 인터프리터 기법 = 107
4.2.3 인터프리터 기법과 번역 기법 = 108
연습문제 = 112
chapter 05 컴파일러 개요
section 5.1. 서론 = 117
section 5.2. 컴파일러 일반적 구성 = 119
section 5.3. 컴파일러 자동화도구 = 125
5.3.1 어휘 분석기 생성기 = 126
5.3.2 파서 생성기 = 127
5.3.3 코드 생성의 자동화 = 129
5.3.4 컴파일러-컴파일러 시스템 = 130
section 5.4. 어휘 분석 = 133
5.4.1 서론 = 133
5.4.2 토큰 인식 = 136
section 5.5. 구문 분석 = 140
5.5.1 구문 분석 방법 = 140
5.5.2 구문 분석기의 출력 = 145
5.5.3 Top-down 방법 = 147
5.5.4 Bottom-up 방법 = 149
연습문제 = 159
chapter 06 변수, 바인딩, 식 및 제어문
section 6.1. 변수 = 166
section 6.2. 바인딩 = 168
6.2.1 바인딩 개념 = 168
6.2.2 바인딩 시간의 종류 = 169
6.2.3 바인딩 시간의 중요성 = 172
section 6.3. 선언 = 174
section 6.4. 배정문 = 178
6.4.1 ℓ-values와 r-values = 178
6.4.2 단순 배정문 = 180
6.4.3 다중 목적지 배정문 = 181
6.4.4 조건 목적지 배정문 = 181
6.4.5 복합 배정 연산자 = 181
6.4.6 단항 배정 연산자 = 182
6.4.7 식으로서의 배정문 = 183
6.4.8 혼합형 배정문 = 185
section 6.5. 상수 및 변수 초기화 = 186
section 6.6. 표현식 = 190
6.6.1 식의 개요 = 190
6.6.2 논리 조건 = 194
section 6.7. 조건문 = 197
section 6.8. 반복문 = 202
6.8.1 사용자 지정 반복 = 202
6.8.2 논리 제어 반복문 = 204
6.8.3 제어 변수 반복문 = 205
section 6.9. GoTo문 = 209
6.9.1 레이블과 GoTo문 = 209
6.9.2 GoTo문의 장단점 = 210
연습문제 = 212
chapter 07 자료형
section 7.1. 자료형과 형 선언 = 219
section 7.2. 단순형 = 222
7.2.1 수치형 = 224
7.2.2 논리형 = 225
7.2.3 문자형 = 226
section 7.3. 열거형 = 230
section 7.4. 배열 = 234
section 7.5. 연상 배열(Associative array) = 246
section 7.6. 레코드 = 248
section 7.7. 포인터 자료형 = 254
7.7.1 Pascal과 Ada의 포인터 = 257
7.7.2 C/C++의 포인터 = 260
7.7.3 참조형 = 261
section 7.8. 자료형 변환 = 264
section 7.9. 자료형 동치 = 267
연습문제 = 271
chapter 08 영역과 수명
section 8.1. 블록과 영역 = 277
section 8.2. 정적 영역과 동적 영역 = 279
section 8.3. 언어에서의 영역 = 284
section 8.4. 변수의 수명 = 290
section 8.5. Ada의 영역 = 294
연습문제 = 297
chapter 09 기억장소 배당
section 9.1. 정적 및 동적 기억장소 배당 = 305
section 9.2. 단위 프로그램 = 307
section 9.3. 정적 기억장소 배당 = 308
section 9.4. 스택 기반 기억장소 배당 = 310
9.4.1 활성 레코드의 크기가 정적으로 확정하는 경우 = 312
9.4.2 단위 프로그램이 활성화되는 시점에서 활성 레코드의 크기가 확정되는 경우 = 316
9.4.3 활성 레코드가 동적으로 변하는 경우 = 318
9.4.4 비지역 변수의 참조 방법 = 320
section 9.5. 힙 기억장소 배당 = 325
연습문제 = 328
chapter 10 부프로그램
section 10.1. 개요 = 334
section 10.2. 매개변수 평가와 전달 기법 = 338
10.2.1 형식 매개변수와 실 매개변수 = 338
10.2.2 참조 호출 = 339
10.2.3 값 호출과 결과 호출 = 340
10.2.4 이름 호출 = 343
section 10.3. 형식 매개변수 명세 = 349
section 10.4. 부수효과와 이명 = 351
10.4.1 부수효과 = 351
10.4.2 이명 = 352
section 10.5. 연산자 중복정의 = 354
section 10.6. 포괄 기능(Generic Fuction) = 357
section 10.7. 코루틴 = 359
연습문제 = 361
chapter 11 추상 자료형
section 11.1. 소개 = 367
section 11.2. Ada의 추상 자료형 = 371
section 11.3. C++의 추상 자료형 = 376
section 11.4. Java의 추상 자료형 = 382
section 11.5. 수학적 추상화 명세 = 384
연습문제 = 389
chapter 12 예외 처리
section 12.1. 설계 쟁점 = 393
section 12.2. PL/I의 예외 처리 = 396
section 12.3. Ada의 예외 처리 = 401
section 12.4. C++의 예외 처리 = 407
section 12.5. Java의 예외 처리 = 412
연습문제 = 419
chapter 13 병렬 프로그래밍과 병렬 처리
section 13.1. 병렬 처리 소개 = 423
13.1.1 공유 메모리 구조 = 425
13.1.2 분산 메모리 구조 = 426
section 13.2. 병렬 처리와 프로그래밍 언어 = 428
13.2.1 명시적인 언어 기능을 사용하지 않는 병렬 프로그래밍 = 430
13.2.2 프로세스 생성과 소멸 = 432
13.2.3 명령어 수준의 병렬 = 433
13.2.4 프로시저 수준의 병렬성 = 434
13.2.5 프로그램 수준의 병렬성 = 435
section 13.3. 세마포어(Semaphores) = 438
section 13.4. 모니터 = 443
13.4.1 CSP/K = 444
13.4.2 Concurrent-Pascal = 446
section 13.5. 메시지 전달 기법 = 451
section 13.6. 실시간 언어 = 454
연습문제 = 459
chapter 14 객체 지향 프로그래밍
section 14.1. 소프트웨어의 재사용과 독립성 = 463
section 14.2. 객체, 클래스, 메소드 = 465
section 14.3. 상속 = 469
section 14.4. 동적 바인딩 = 475
section 14.5. C++ = 478
section 14.6. Smalltalk = 487
14.6.1 Smalltalk의 역사 = 487
14.6.2 객체 지향 언어로서의 Smalltalk = 487
14.6.3 Smalltalk-80 문법 = 489
14.6.4 Smalltalk 프로그래밍 = 492
section 14.7. 객체 지향 언어 설계 문제 = 496
14.7.1 클래스와 자료형 = 496
14.7.2 상속과 도입 = 496
14.7.3 상속과 다형성 = 497
연습문제 = 498
chapter 15 함수형 프로그래밍
section 15.1. 명령형 언어의 특징 = 501
15.1.1 명령형 프로그램 = 502
15.1.2 명령형 언어의 문제점 = 503
section 15.2. 함수형 프로그래밍의 본질 = 506
15.2.1 함수 = 506
15.2.2 수학 함수와 프로그래밍 언어 함수 = 510
15.2.3 함수 언어(적용 언어) = 511
section 15.3. 간단한 순수 함수 언어 = 512
15.3.1 원시 함수 = 512
15.3.2 함수 형식 = 514
section 15.4. 기존 언어의 함수 기능 = 519
15.4.1 Lisp = 519
section 15.5. 적용형 언어와 명령형 언어의 비교 = 524
연습문제 = 526
chapter 16 논리형 프로그래밍
section 16.1. WHAT과 HOW = 529
section 16.2. 비절차적 언어의 예 = 533
16.2.1 데이터베이스 언어 = 533
16.2.2 SETL = 535
16.2.3 Snobol4 = 536
section 16.3. Prolog = 539
16.3.1 사실, 규칙, 질문 = 539
16.3.2 단일화와 퇴각 검색 = 543
16.3.3 일반적인 자료 구조 = 548
section 16.4. Prolog와 Snobol4의 단일화 개념 = 551
연습문제 = 552
chapter 17 Ada
section 17.1. 소개 = 554
section 17.2. 자료형 = 556
17.2.1 변수와 상수 선언 = 556
17.2.2 단순 자료형 = 557
17.2.3 구조 자료형 = 558
17.2.4 배열형 = 558
17.2.5 문자열형 = 560
17.2.6 레코드 자료형 = 561
17.2.7 접근 자료형 = 565
17.2.8 전용 자료형 = 566
17.2.9 표현 명세 = 566
17.2.10 파생 자료형과 자료형 호환성 = 568
17.2.11 중복정의 = 569
section 17.3. 수식과 문장 = 570
section 17.4. 부프로그램 = 573
section 17.5. 패키지와 전용 자료형 = 577
17.5.1 정보 은닉 = 577
17.5.2 전용 자료형 = 581
section 17.6. 태스크 = 584
section 17.7. 태스크들 사이의 통신 기법 = 588
17.7.1 랑데뷰 = 588
17.7.2 태스크들간의 선택 기법 = 589
section 17.8. 예외 처리 = 594
section 17.9. 포괄성 = 596
연습문제 = 598
appendix(부록) : 프로그래밍 언어 분야 용어의 국제 규격과 국가 규격 = 609
찾아보기 = 635