chapter 01 프로그래밍 언어 소개 section 1.1. 프로그래밍 언어란 무엇인가? = 15 section 1.2. 프로그래밍 언어를 배워야 하는 이유 = 18 section 1.3. 프로그래밍 언어에서의 추상화 = 201.3.1 자료 추상화 = 201.3.2 제어 추상화 = 21 section 1.4. 계산 전형 = 25 section 1.5. 언어 정의 = 29 연습문제 = 31chapter 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년대 : 웹을 위한 언어 = 482.6.1 Java = 492.6.2 JavaScript = 522.6.3 PHP = 53 section 2.7. 2000년대 : C#, 마크업 언어 = 542.7.1 C# = 542.7.2 XLST = 562.7.3 JSP = 57 section 2.8. 언어의 세대론과 미래 = 59 연습문제 = 61chapter 03 프로그래밍 언어 설계 section 3.1. 설계 기준의 역사적 변천 = 65 section 3.2. 효율성 = 67 section 3.3. 일반성, 직교성, 획일성 = 69 section 3.4. 프로그래밍 언어의 기타 설계 원칙 = 73 section 3.5. 문제점과 해결책들 = 77 연습문제 = 80chapter 04 프로그래밍 언어의 구문과 구현 기법 section 4.1. 언어 구문 = 864.1.1 프로그래밍 언어의 어휘 구조 = 864.1.2 문맥 자유 문법과 BNF = 894.1.3 구문 도표 = 924.1.4 파스 트리와 추상 구문 트리(AST) = 954.1.5 모호성, 결합성 및 우선 순위 = 974.1.6 구문과 프로그램 신뢰성 = 101 section 4.2. 프로그래밍 언어 구현 기법 = 1054.2.1 번역 기법 = 1054.2.2 인터프리터 기법 = 1074.2.3 인터프리터 기법과 번역 기법 = 108 연습문제 = 112chapter 05 컴파일러 개요 section 5.1. 서론 = 117 section 5.2. 컴파일러 일반적 구성 = 119 section 5.3. 컴파일러 자동화도구 = 1255.3.1 어휘 분석기 생성기 = 1265.3.2 파서 생성기 = 1275.3.3 코드 생성의 자동화 = 1295.3.4 컴파일러_컴파일러 시스템 = 130 section 5.4. 어휘 분석 = 1335.4.1 서론 = 1335.4.2 토큰 인식 = 136 section 5.5. 구문 분석 = 1405.5.1 구문 분석 방법 = 1405.5.2 구문 분석기의 출력 = 1455.5.3 Top_down 방법 = 1475.5.4 Bottom_up 방법 = 149 연습문제 = 159chapter 06 변수, 바인딩, 식 및 제어문 section 6.1. 변수 = 166 section 6.2. 바인딩 = 1686.2.1 바인딩 개념 = 1686.2.2 바인딩 시간의 종류 = 1696.2.3 바인딩 시간의 중요성 = 172 section 6.3. 선언 = 174 section 6.4. 배정문 = 1786.4.1 ℓ_values와 r_values = 1786.4.2 단순 배정문 = 1806.4.3 다중 목적지 배정문 = 1816.4.4 조건 목적지 배정문 = 1816.4.5 복합 배정 연산자 = 1816.4.6 단항 배정 연산자 = 1826.4.7 식으로서의 배정문 = 1836.4.8 혼합형 배정문 = 185 section 6.5. 상수 및 변수 초기화 = 186 section 6.6. 표현식 = 1906.6.1 식의 개요 = 1906.6.2 논리 조건 = 194 section 6.7. 조건문 = 197 section 6.8. 반복문 = 2026.8.1 사용자 지정 반복 = 2026.8.2 논리 제어 반복문 = 2046.8.3 제어 변수 반복문 = 205 section 6.9. GoTo문 = 2096.9.1 레이블과 GoTo문 = 2096.9.2 GoTo문의 장단점 = 210 연습문제 = 212chapter 07 자료형 section 7.1. 자료형과 형 선언 = 219 section 7.2. 단순형 = 2227.2.1 수치형 = 2247.2.2 논리형 = 2257.2.3 문자형 = 226 section 7.3. 열거형 = 230 section 7.4. 배열 = 234 section 7.5. 연상 배열(Associative array) = 246 section 7.6. 레코드 = 248 section 7.7. 포인터 자료형 = 2547.7.1 Pascal과 Ada의 포인터 = 2577.7.2 C/C++의 포인터 = 2607.7.3 참조형 = 261 section 7.8. 자료형 변환 = 264 section 7.9. 자료형 동치 = 267 연습문제 = 271chapter 08 영역과 수명 section 8.1. 블록과 영역 = 277 section 8.2. 정적 영역과 동적 영역 = 279 section 8.3. 언어에서의 영역 = 284 section 8.4. 변수의 수명 = 290 section 8.5. Ada의 영역 = 294 연습문제 = 297chapter 09 기억장소 배당 section 9.1. 정적 및 동적 기억장소 배당 = 305 section 9.2. 단위 프로그램 = 307 section 9.3. 정적 기억장소 배당 = 308 section 9.4. 스택 기반 기억장소 배당 = 3109.4.1 활성 레코드의 크기가 정적으로 확정하는 경우 = 3129.4.2 단위 프로그램이 활성화되는 시점에서 활성 레코드의 크기가 확정되는 경우 = 3169.4.3 활성 레코드가 동적으로 변하는 경우 = 3189.4.4 비지역 변수의 참조 방법 = 320 section 9.5. 힙 기억장소 배당 = 325 연습문제 = 328chapter 10 부프로그램 section 10.1. 개요 = 334 section 10.2. 매개변수 평가와 전달 기법 = 33810.2.1 형식 매개변수와 실 매개변수 = 33810.2.2 참조 호출 = 33910.2.3 값 호출과 결과 호출 = 34010.2.4 이름 호출 = 343 section 10.3. 형식 매개변수 명세 = 349 section 10.4. 부수효과와 이명 = 35110.4.1 부수효과 = 35110.4.2 이명 = 352 section 10.5. 연산자 중복정의 = 354 section 10.6. 포괄 기능(Generic Fuction) = 357 section 10.7. 코루틴 = 359 연습문제 = 361chapter 11 추상 자료형 section 11.1. 소개 = 367 section 11.2. Ada의 추상 자료형 = 371 section 11.3. C++의 추상 자료형 = 376 section 11.4. Java의 추상 자료형 = 382 section 11.5. 수학적 추상화 명세 = 384 연습문제 = 389chapter 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 연습문제 = 419chapter 13 병렬 프로그래밍과 병렬 처리 section 13.1. 병렬 처리 소개 = 42313.1.1 공유 메모리 구조 = 42513.1.2 분산 메모리 구조 = 426 section 13.2. 병렬 처리와 프로그래밍 언어 = 42813.2.1 명시적인 언어 기능을 사용하지 않는 병렬 프로그래밍 = 43013.2.2 프로세스 생성과 소멸 = 43213.2.3 명령어 수준의 병렬 = 43313.2.4 프로시저 수준의 병렬성 = 43413.2.5 프로그램 수준의 병렬성 = 435 section 13.3. 세마포어(Semaphores) = 438 section 13.4. 모니터 = 44313.4.1 CSP/K = 44413.4.2 Concurrent_Pascal = 446 section 13.5. 메시지 전달 기법 = 451 section 13.6. 실시간 언어 = 454 연습문제 = 459chapter 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 = 48714.6.1 Smalltalk의 역사 = 48714.6.2 객체 지향 언어로서의 Smalltalk = 48714.6.3 Smalltalk_80 문법 = 48914.6.4 Smalltalk 프로그래밍 = 492 section 14.7. 객체 지향 언어 설계 문제 = 49614.7.1 클래스와 자료형 = 49614.7.2 상속과 도입 = 49614.7.3 상속과 다형성 = 497 연습문제 = 498chapter 15 함수형 프로그래밍 section 15.1. 명령형 언어의 특징 = 50115.1.1 명령형 프로그램 = 50215.1.2 명령형 언어의 문제점 = 503 section 15.2. 함수형 프로그래밍의 본질 = 50615.2.1 함수 = 50615.2.2 수학 함수와 프로그래밍 언어 함수 = 51015.2.3 함수 언어(적용 언어) = 511 section 15.3. 간단한 순수 함수 언어 = 51215.3.1 원시 함수 = 51215.3.2 함수 형식 = 514 section 15.4. 기존 언어의 함수 기능 = 51915.4.1 Lisp = 519 section 15.5. 적용형 언어와 명령형 언어의 비교 = 524 연습문제 = 526chapter 16 논리형 프로그래밍 section 16.1. WHAT과 HOW = 529 section 16.2. 비절차적 언어의 예 = 53316.2.1 데이터베이스 언어 = 53316.2.2 SETL = 53516.2.3 Snobol4 = 536 section 16.3. Prolog = 53916.3.1 사실, 규칙, 질문 = 53916.3.2 단일화와 퇴각 검색 = 54316.3.3 일반적인 자료 구조 = 548 section 16.4. Prolog와 Snobol4의 단일화 개념 = 551 연습문제 = 552chapter 17 Ada section 17.1. 소개 = 554 section 17.2. 자료형 = 55617.2.1 변수와 상수 선언 = 55617.2.2 단순 자료형 = 55717.2.3 구조 자료형 = 55817.2.4 배열형 = 55817.2.5 문자열형 = 56017.2.6 레코드 자료형 = 56117.2.7 접근 자료형 = 56517.2.8 전용 자료형 = 56617.2.9 표현 명세 = 56617.2.10 파생 자료형과 자료형 호환성 = 56817.2.11 중복정의 = 569 section 17.3. 수식과 문장 = 570 section 17.4. 부프로그램 = 573 section 17.5. 패키지와 전용 자료형 = 57717.5.1 정보 은닉 = 57717.5.2 전용 자료형 = 581 section 17.6. 태스크 = 584 section 17.7. 태스크들 사이의 통신 기법 = 58817.7.1 랑데뷰 = 58817.7.2 태스크들간의 선택 기법 = 589 section 17.8. 예외 처리 = 594 section 17.9. 포괄성 = 596 연습문제 = 598appendix(부록) : 프로그래밍 언어 분야 용어의 국제 규격과 국가 규격 = 609찾아보기 = 635