책 소개프로그래밍 언어들을 잘 이해하지 못하면서 컴퓨터를 진실로 이해하기란 어렵다. 프로그래밍 언어를 사용할 줄 안다고 해서 프로그래밍 언어를 이해한다는 것은 아니다. 대부분의 사람들은 프로그래밍 언어를 충분히 이해하지 못하면서 프로그래밍 언어를 사용할 줄만 안다. 그러므로 이 책은 여러분들에게 프로그래밍 언어를 이해하는 데 도움을 줄 목적으로 집필하였다. 컴퓨터 과학 분야에서 프로그래밍 언어의 개발은 매우 큰 업적 중의 하나이다. 그러나 아직까지 이 분야에 흥미 있고 관심이 큰 특별한 주제들이 많은 것은 아니다. 그러므로 이 책에서는 흥미를 불러일으킬 수 있는 주제를 최근 프로그래밍 언어에서의 사용 예를 보아가면서 조심스럽게 다루고자 한다. 이 책은 많은 프로그래밍 언어들을 요약한 지침서가 아니라 프로그래밍 언어의 근본적인 개념들을 다루고자 노력하였다. 이 개념들에 초점을 맞추어 최근 프로그래밍 언어를 중심으로 살펴보는 것이 이러한 개념들을 이해하는 데 가장 좋은 방법이라 할 수 있다. 이 책에서는 변수, 표현식, 문장, 자료형, 기억장소 배당, 영역과 수명, 부프로그램, 자료 추상화, 예외 처리, 병행 처리, 그리고 프로그래밍 전형에 입각하여 병렬 프로그래밍, 객체 지향 프로그래밍, 함수형 프로그래밍, 논리형 프로그래밍들을 주요 논점으로 다루었다. 이러한 개념들이 무엇이며, 이들 개념이 서로 다른 언어에서 어떻게 구현되었을 지를 분석해 본다는 것이 실제로 프로그램을 작성해 보는 것보다 프로그래밍 언어를 더 잘 이해할 수 있다. 더구나 이들 개념이 미래의 새로운 언어들을 이해하는 데 좋은 기초를 제공할 것이다. 프로그래밍 언어 과목에서 중요한 것 중의 하나가 이 분야에 나오는 용어의 정의와 이해이다. 용어 사용의 혼란을 없애고 정보 교류를 효율적으로 하기 위하여, 이 분야에 관한 중요 용어로 국제 규격에 정의 된 용어는 국제 표준 규격(ISO/IEC 2382-15)을 그대로 번역한 KS표준을 부록으로 게재했으며, 타 용어 정의와 구별하기 위하여 특별히 도안된 그림과 참조를 위하여 국제 규격 번호를 그대로 사용했다. 이 국제 표준 규격에서 정의한 개념들은 일반성을 가지려고 노력했기에 경우에 따라서는 의미가 어려울 뿐 아니라 이해가 어렵다.
이 책은 전산학을 전공하는 고학년 학생들에게 알맞도록 집필하였다. 본서를 학습하는 데는 Pascal 언어의 지식이 요구되지만 C, PL/I, ALGOL, Java 또는 이와 비슷한 블록 중심 언어 하나에 대한 지식이 Pascal 언어를 대체할 수 있다. 또한 이 책은 현 프로그래밍 언어들에 대한 중요한 특징들을 알고 싶은 대학원생들에게도 큰 도움이 될 것이다. 여기에서는 여러 특징에 관한 많은 예들이 Ada Java, C++ 언어 중심으로 되어 있는데, 그 이유는 이 예들을 이해하면 이들 언어를 이해하기 쉬우며 동시에 프로그래밍 언어에서의 특징들을 잘 이해할 수 있기 때문이다. 이 책의 1, 2, 3, 4장에서는 프로그래밍 언어에 대한 기본적인 인식과 구현 기법 및 구문 등을 중심으로 소개하였으며, 5장에서는 컴파일러를 요약하여 다루었으며, 6장부터 12장까지는 프로그래밍 언어들에서 중심이 되는 주요 개념들을 특징별로 다루었다. 그리고 13, 14, 15, 16장에서는 프로그래밍 전형에 입각하여 병렬 프로그래밍, 객체 지향 프로그래밍, 함수형 프로그래밍, 논리형 프로그래밍을 논하고, 17장에서는 현재의 명령형 언어의 총체적 개념을 갖춘 Ada 언어를 요약했다. 따라서, 학부에서 한두 학기에 강의할 수 있도록 구성하였으나 한 학기 교재로 사용하고자 하면 1, 2, 3, 4장은 1, 3, 4장 중심으로 강의하고, 5장은 컴파일러 개요와 구문분석을 어느 정도 심도 있게 다루었는데, 컴파일러가 필수이거나 대부분이 수강하는 학교는 생략해도 좋을 것이다. 6장부터 13장까지를 집중적 강의로 다루며, 14장부터 17장까지는 한두 장을 선택하여 강의하면 될 것이다. 그러나 두 학기 교재로 사용할 경우에는 전체의 내용을 강의한 후, 이 책에서 다룬 언어 중 한두 언어만을 택하여 실제 개념들을 프로그래밍 해보는 것도 좋을 것이다.
|
목차chapter 01 프로그래밍 언어 소개
1.1 프로그래밍 언어란 무엇인가? 1.2 프로그래밍 언어를 배워야 하는 이유 1.3 프로그래밍 언어에서의 추상화 1.3.1 자료 추상화 1.3.2 제어 추상화 1.4 계산 전형 1.5 언어 정의 연습문제
chapter 02 언어의 변천
2.1 디지털 컴퓨터 이전의 언어 2.2 1950년대:최초의 프로그래밍 언어 2.3 1960년대:프로그래밍 언어의 폭증 2.4 1970년대:간결성, 추상화, 연구 사항 2.5 1980년대:통합과 새로운 방향 2.6 1990년대:웹을 위한 언어 2.6.1 Java 2.6.2 JavaScript 2.6.3 PHP 2.7 2000년대:C#, 마크업 언어 2.7.1 C# 54 2.7.2 XLST 2.7.3 JSP 2.8 언어의 세대론과 미래 연습문제
chapter 03 프로그래밍 언어 설계
3.1 설계 기준의 역사적 변천 3.2 효율성 3.3 일반성, 직교성, 획일성 3.4 프로그래밍 언어의 기타 설계 원칙 3.5 문제점과 해결책들 연습문제
chapter04 프로그래밍 언어의 구문과 구현 기법
4.1 언어 구문 4.1.1 프로그래밍 언어의 어휘 구조 4.1.2 문맥 자유 문법과 BNF 4.1.3 구문 도표 4.1.4 파스 트리와 추상 구문 트리(AST) 4.1.5 모호성, 결합성 및 우선 순위 4.1.6 구문과 프로그램 신뢰성 4.2 프로그래밍 언어 구현 기법 4.2.1 번역 기법 4.2.2 인터프리터 기법 4.2.3 인터프리터 기법과 번역 기법 연습문제
chapter 05 컴파일러 개요
5.1 서론 5.2 컴파일러 일반적 구성 5.3 컴파일러 자동화도구 5.3.1 어휘 분석기 생성기 5.3.2 파서 생성기 5.3.3 코드 생성의 자동화 5.3.4 컴파일러-컴파일러 시스템 5.4 어휘 분석 5.4.1 서론 5.4.2 토큰 인식 5.5 구문 분석 5.5.1 구문 분석 방법 5.5.2 구문 분석기의 출력 5.5.3 Top-down 방법 5.5.3 Bottom-up 방법 연습문제
chapter 06 변수, 바인딩, 식 및 제어문
6.1 변수 6.2 바인딩 6.2.1 바인딩 개념 6.2.2 바인딩 시간의 종류 6.2.3 바인딩 시간의 중요성 6.3 선언 6.4 배정문 6.4.1 -values와 r-values 6.4.2 단순 배정문 180 6.4.3 다중 목적지 배정문 6.4.4 조건 목적지 배정문 6.4.5 복합 배정 연산자 6.4.6 단항 배정 연산자 6.4.7 식으로서의 배정문 6.4.8 혼합형 배정문 6.5 상수 및 변수 초기화 6.6 표현식 6.6.1 식의 개요 6.6.2 논리 조건 6.7 조건문 6.8 반복문 6.8.1 사용자 지정 반복 6.8.2 논리 제어 반복문 6.8.3 제어 변수 반복문 6.9 GoTo문 6.9.1 레이블과 GoTo문 6.9.2 GoTo문의 장단점 연습문제
chapter 07 자료형
7.1 자료형과 형 선언 7.2 단순형 7.2.1 수치형 7.2.2 논리형 7.2.3 문자형 7.3 열거형 7.4 배열 7.5 연상 배열(Associative array) 7.6 레코드 7.7 포인터 자료형 7.7.1 Pascal과 Ada의 포인터 7.7.2 C/C++의 포인터 7.7.3 참조형 7.8 자료형 변환 7.9 자료형 동치 연습문제
chapter 08 영역과 수명
8.1 블록과 영역 8.2 정적 영역과 동적 영역 8.3 언어에서의 영역 8.4 변수의 수명 8.5 Ada의 영역 연습문제
chapter 09 기억장소 배당
9.1 정적 및 동적 기억장소 배당 9.2 단위 프로그램 9.3 정적 기억장소 배당 9.4 스택 기반 기억장소 배당 9.4.1 활성 레코드의 크기가 정적으로 확정하는 경우 9.4.2 단위 프로그램이 활성화되는 시점에서 활성 레코드의 크기가 확정되는 경우 9.4.3 활성 레코드가 동적으로 변하는 경우 9.4.4 비지역 변수의 참조 방법 9.5 힙 기억장소 배당 연습문제
chapter 10 부프로그램
10.1 개요 10.2 매개변수 평가와 전달 기법 10.2.1 형식 매개변수와 실 매개변수 10.2.2 참조 호출 10.2.3 값 호출과 결과 호출 10.2.4 이름 호출 10.3 형식 매개변수 명세 10.4 부수효과와 이명 10.4.1 부수효과 10.4.2 이명 10.5 연산자 중복정의 10.6 포괄 기능(Generic Function) 10.7 코루틴 연습문제
chapter11 추상 자료형
11.1 소개 11.2 Ada의 추상 자료형 11.3 C++의 추상 자료형 11.4 Java의 추상 자료형 11.5 수학적 추상화 명세 연습문제
chapter 12 예외 처리
12.1 설계 쟁점 12.2 PL/I의 예외 처리 12.3 Ada의 예외 처리 12.4 C++의 예외 처리 12.5 Java의 예외 처리 연습문제
chapter 13 병렬 프로그래밍과 병렬 처리
13.1 병렬 처리 소개 13.1.1 공유 메모리 구조 13.1.2 분산 메모리 구조 13.2 병렬 처리와 프로그래밍 언어 13.2.1 명시적인 언어 기능을 사용하지 않는 병렬 프로그래밍 13.2.2 프로세스 생성과 소멸 13.2.3 명령어 수준의 병렬 13.2.4 프로시저 수준의 병렬성 13.2.5 프로그램 수준의 병렬성 13.3 세마포어(Semaphores) 13.4 모니터 443 13.4.1 CSP/K 444 13.4.2 Concurrent-Pascal 13.5 메시지 전달 기법 13.6 실시간 언어 연습문제
chapter 14 객체 지향 프로그래밍 14.1 소프트웨어의 재사용과 독립성 14.2 객체, 클래스, 메소드 14.3 상속 14.4 동적 바인딩 14.5 C++ 14.6 Smalltalk 14.6.1 Smalltalk의 역사 14.6.2 객체 지향 언어로서의 Smalltalk 14.6.3 Smalltalk-80 문법 14.6.4 Smalltalk 프로그래밍 14.7 객체 지향 언어 설계 문제 14.7.1 클래스와 자료형 14.7.2 상속과 도입 14.7.3 상속과 다형성 연습문제
chapter 15 함수형 프로그래밍
15.1 명령형 언어의 특징 15.1.1 명령형 프로그램 15.1.2 명령형 언어의 문제점 15.2 함수형 프로그래밍의 본질 15.2.1 함수 15.2.2 수학 함수와 프로그래밍 언어 함수 15.2.3 함수 언어(적용 언어) 15.3 간단한 순수 함수 언어 15.3.1 원시 함수 15.3.2 함수 형식 15.4 기존 언어의 함수 기능 15.4.1 Lisp 15.5 적용형 언어와 명령형 언어의 비교 연습문제
chapter 16 논리형 프로그래밍
16.1 WHAT과 HOW 16.2 비절차적 언어의 예 16.2.1 데이터베이스 언어 16.2.2 SETL 16.2.3 Snobol4 16.3 Prolog 16.3.1 사실, 규칙, 질문 16.3.2 단일화와 퇴각 검색 16.3.3 일반적인 자료 구조 16.4 Prolog와 Snobol4의 단일화 개념 연습문제
chapter 17 Ada
17.1 소개 17.2 자료형 17.2.1 변수와 상수 선언 17.2.2 단순 자료형 17.2.3 구조 자료형 17.2.4 배열형 17.2.5 문자열형 17.2.6 레코드 자료형 17.2.7 접근 자료형 17.2.8 전용 자료형 17.2.9 표현 명세 17.2.10 파생 자료형과 자료형 호환성 17.2.11 중복정의 17.3 수식과 문장 17.4 부프로그램 17.5 패키지와 전용 자료형 17.5.1 정보 은닉 17.5.2 전용 자료형 17.6 태스크 17.7 태스크들 사이의 통신 기법 17.7.1 랑데뷰 17.7.2 태스크들간의 선택 기법 17.8 예외 처리 17.9 포괄성 연습문제
국제 규격 인덱스 599
appendix 부록 프로그래밍 언어 분야 용어의 국제 규격과 국가 규격
|
프로그래밍 언어 개념
지은이 : 원유헌
ISBN : 978-89-353-0482-0
금액 : 35,000원
● 발행날짜 : 2014년 8월 20일
● 페이지 : 644페이지
● 판매처 : 온라인 서점
● 강의자료 제공
책 소개
책 소개
프로그래밍 언어들을 잘 이해하지 못하면서 컴퓨터를 진실로 이해하기란 어렵다. 프로그래밍 언어를 사용할 줄 안다고 해서 프로그래밍 언어를 이해한다는 것은 아니다. 대부분의 사람들은 프로그래밍 언어를 충분히 이해하지 못하면서 프로그래밍 언어를 사용할 줄만 안다. 그러므로 이 책은 여러분들에게 프로그래밍 언어를 이해하는 데 도움을 줄 목적으로 집필하였다.컴퓨터 과학 분야에서 프로그래밍 언어의 개발은 매우 큰 업적 중의 하나이다. 그러나 아직까지 이 분야에 흥미 있고 관심이 큰 특별한 주제들이 많은 것은 아니다. 그러므로 이 책에서는 흥미를 불러일으킬 수 있는 주제를 최근 프로그래밍 언어에서의 사용 예를 보아가면서 조심스럽게 다루고자 한다. 이 책은 많은 프로그래밍 언어들을 요약한 지침서가 아니라 프로그래밍 언어의 근본적인 개념들을 다루고자 노력하였다. 이 개념들에 초점을 맞추어 최근 프로그래밍 언어를 중심으로 살펴보는 것이 이러한 개념들을 이해하는 데 가장 좋은 방법이라 할 수 있다.
이 책에서는 변수, 표현식, 문장, 자료형, 기억장소 배당, 영역과 수명, 부프로그램, 자료 추상화, 예외 처리, 병행 처리, 그리고 프로그래밍 전형에 입각하여 병렬 프로그래밍, 객체 지향 프로그래밍, 함수형 프로그래밍, 논리형 프로그래밍들을 주요 논점으로 다루었다. 이러한 개념들이 무엇이며, 이들 개념이 서로 다른 언어에서 어떻게 구현되었을 지를 분석해 본다는 것이 실제로 프로그램을 작성해 보는 것보다 프로그래밍 언어를 더 잘 이해할 수 있다. 더구나 이들 개념이 미래의 새로운 언어들을 이해하는 데 좋은 기초를 제공할 것이다. 프로그래밍 언어 과목에서 중요한 것 중의 하나가 이 분야에 나오는 용어의 정의와 이해이다. 용어 사용의 혼란을 없애고 정보 교류를 효율적으로 하기 위하여, 이 분야에 관한 중요 용어로 국제 규격에 정의 된 용어는 국제 표준 규격(ISO/IEC 2382-15)을 그대로 번역한 KS표준을 부록으로 게재했으며, 타 용어 정의와 구별하기 위하여 특별히 도안된 그림과 참조를 위하여 국제 규격 번호를 그대로 사용했다. 이 국제 표준 규격에서 정의한 개념들은 일반성을 가지려고 노력했기에 경우에 따라서는 의미가 어려울 뿐 아니라 이해가 어렵다.
이 책은 전산학을 전공하는 고학년 학생들에게 알맞도록 집필하였다. 본서를 학습하는 데는 Pascal 언어의 지식이 요구되지만 C, PL/I, ALGOL, Java 또는 이와 비슷한 블록 중심 언어 하나에 대한 지식이 Pascal 언어를 대체할 수 있다. 또한 이 책은 현 프로그래밍 언어들에 대한 중요한 특징들을 알고 싶은 대학원생들에게도 큰 도움이 될 것이다. 여기에서는 여러 특징에 관한 많은 예들이 Ada Java, C++ 언어 중심으로 되어 있는데, 그 이유는 이 예들을 이해하면 이들 언어를 이해하기 쉬우며 동시에 프로그래밍 언어에서의 특징들을 잘 이해할 수 있기 때문이다.
이 책의 1, 2, 3, 4장에서는 프로그래밍 언어에 대한 기본적인 인식과 구현 기법 및 구문 등을 중심으로 소개하였으며, 5장에서는 컴파일러를 요약하여 다루었으며, 6장부터 12장까지는 프로그래밍 언어들에서 중심이 되는 주요 개념들을 특징별로 다루었다. 그리고 13, 14, 15, 16장에서는 프로그래밍 전형에 입각하여 병렬 프로그래밍, 객체 지향 프로그래밍, 함수형 프로그래밍, 논리형 프로그래밍을 논하고, 17장에서는 현재의 명령형 언어의 총체적 개념을 갖춘 Ada 언어를 요약했다.
따라서, 학부에서 한두 학기에 강의할 수 있도록 구성하였으나 한 학기 교재로 사용하고자 하면 1, 2, 3, 4장은 1, 3, 4장 중심으로 강의하고, 5장은 컴파일러 개요와 구문분석을 어느 정도 심도 있게 다루었는데, 컴파일러가 필수이거나 대부분이 수강하는 학교는 생략해도 좋을 것이다. 6장부터 13장까지를 집중적 강의로 다루며, 14장부터 17장까지는 한두 장을 선택하여 강의하면 될 것이다. 그러나 두 학기 교재로 사용할 경우에는 전체의 내용을 강의한 후, 이 책에서 다룬 언어 중 한두 언어만을 택하여 실제 개념들을 프로그래밍 해보는 것도 좋을 것이다.
저자소개
목차
chapter 01 프로그래밍 언어 소개1.1 프로그래밍 언어란 무엇인가?
1.2 프로그래밍 언어를 배워야 하는 이유
1.3 프로그래밍 언어에서의 추상화
1.3.1 자료 추상화
1.3.2 제어 추상화
1.4 계산 전형
1.5 언어 정의
연습문제
chapter 02 언어의 변천
2.1 디지털 컴퓨터 이전의 언어
2.2 1950년대:최초의 프로그래밍 언어
2.3 1960년대:프로그래밍 언어의 폭증
2.4 1970년대:간결성, 추상화, 연구 사항
2.5 1980년대:통합과 새로운 방향
2.6 1990년대:웹을 위한 언어
2.6.1 Java
2.6.2 JavaScript
2.6.3 PHP
2.7 2000년대:C#, 마크업 언어
2.7.1 C# 54
2.7.2 XLST
2.7.3 JSP
2.8 언어의 세대론과 미래
연습문제
chapter 03 프로그래밍 언어 설계
3.1 설계 기준의 역사적 변천
3.2 효율성
3.3 일반성, 직교성, 획일성
3.4 프로그래밍 언어의 기타 설계 원칙
3.5 문제점과 해결책들
연습문제
chapter04 프로그래밍 언어의 구문과 구현 기법
4.1 언어 구문
4.1.1 프로그래밍 언어의 어휘 구조
4.1.2 문맥 자유 문법과 BNF
4.1.3 구문 도표
4.1.4 파스 트리와 추상 구문 트리(AST)
4.1.5 모호성, 결합성 및 우선 순위
4.1.6 구문과 프로그램 신뢰성
4.2 프로그래밍 언어 구현 기법
4.2.1 번역 기법
4.2.2 인터프리터 기법
4.2.3 인터프리터 기법과 번역 기법
연습문제
chapter 05 컴파일러 개요
5.1 서론
5.2 컴파일러 일반적 구성
5.3 컴파일러 자동화도구
5.3.1 어휘 분석기 생성기
5.3.2 파서 생성기
5.3.3 코드 생성의 자동화
5.3.4 컴파일러-컴파일러 시스템
5.4 어휘 분석
5.4.1 서론
5.4.2 토큰 인식
5.5 구문 분석
5.5.1 구문 분석 방법
5.5.2 구문 분석기의 출력
5.5.3 Top-down 방법
5.5.3 Bottom-up 방법
연습문제
chapter 06 변수, 바인딩, 식 및 제어문
6.1 변수
6.2 바인딩
6.2.1 바인딩 개념
6.2.2 바인딩 시간의 종류
6.2.3 바인딩 시간의 중요성
6.3 선언
6.4 배정문
6.4.1 -values와 r-values
6.4.2 단순 배정문 180
6.4.3 다중 목적지 배정문
6.4.4 조건 목적지 배정문
6.4.5 복합 배정 연산자
6.4.6 단항 배정 연산자
6.4.7 식으로서의 배정문
6.4.8 혼합형 배정문
6.5 상수 및 변수 초기화
6.6 표현식
6.6.1 식의 개요
6.6.2 논리 조건
6.7 조건문
6.8 반복문
6.8.1 사용자 지정 반복
6.8.2 논리 제어 반복문
6.8.3 제어 변수 반복문
6.9 GoTo문
6.9.1 레이블과 GoTo문
6.9.2 GoTo문의 장단점
연습문제
chapter 07 자료형
7.1 자료형과 형 선언
7.2 단순형
7.2.1 수치형
7.2.2 논리형
7.2.3 문자형
7.3 열거형
7.4 배열
7.5 연상 배열(Associative array)
7.6 레코드
7.7 포인터 자료형
7.7.1 Pascal과 Ada의 포인터
7.7.2 C/C++의 포인터
7.7.3 참조형
7.8 자료형 변환
7.9 자료형 동치
연습문제
chapter 08 영역과 수명
8.1 블록과 영역
8.2 정적 영역과 동적 영역
8.3 언어에서의 영역
8.4 변수의 수명
8.5 Ada의 영역
연습문제
chapter 09 기억장소 배당
9.1 정적 및 동적 기억장소 배당
9.2 단위 프로그램
9.3 정적 기억장소 배당
9.4 스택 기반 기억장소 배당
9.4.1 활성 레코드의 크기가 정적으로 확정하는 경우
9.4.2 단위 프로그램이 활성화되는 시점에서
활성 레코드의 크기가 확정되는 경우
9.4.3 활성 레코드가 동적으로 변하는 경우
9.4.4 비지역 변수의 참조 방법
9.5 힙 기억장소 배당
연습문제
chapter 10 부프로그램
10.1 개요
10.2 매개변수 평가와 전달 기법
10.2.1 형식 매개변수와 실 매개변수
10.2.2 참조 호출
10.2.3 값 호출과 결과 호출
10.2.4 이름 호출
10.3 형식 매개변수 명세
10.4 부수효과와 이명
10.4.1 부수효과
10.4.2 이명
10.5 연산자 중복정의
10.6 포괄 기능(Generic Function)
10.7 코루틴
연습문제
chapter11 추상 자료형
11.1 소개
11.2 Ada의 추상 자료형
11.3 C++의 추상 자료형
11.4 Java의 추상 자료형
11.5 수학적 추상화 명세
연습문제
chapter 12 예외 처리
12.1 설계 쟁점
12.2 PL/I의 예외 처리
12.3 Ada의 예외 처리
12.4 C++의 예외 처리
12.5 Java의 예외 처리
연습문제
chapter 13 병렬 프로그래밍과 병렬 처리
13.1 병렬 처리 소개
13.1.1 공유 메모리 구조
13.1.2 분산 메모리 구조
13.2 병렬 처리와 프로그래밍 언어
13.2.1 명시적인 언어 기능을 사용하지 않는 병렬 프로그래밍
13.2.2 프로세스 생성과 소멸
13.2.3 명령어 수준의 병렬
13.2.4 프로시저 수준의 병렬성
13.2.5 프로그램 수준의 병렬성
13.3 세마포어(Semaphores)
13.4 모니터 443
13.4.1 CSP/K 444
13.4.2 Concurrent-Pascal
13.5 메시지 전달 기법
13.6 실시간 언어
연습문제
chapter 14 객체 지향 프로그래밍
14.1 소프트웨어의 재사용과 독립성
14.2 객체, 클래스, 메소드
14.3 상속
14.4 동적 바인딩
14.5 C++
14.6 Smalltalk
14.6.1 Smalltalk의 역사
14.6.2 객체 지향 언어로서의 Smalltalk
14.6.3 Smalltalk-80 문법
14.6.4 Smalltalk 프로그래밍
14.7 객체 지향 언어 설계 문제
14.7.1 클래스와 자료형
14.7.2 상속과 도입
14.7.3 상속과 다형성
연습문제
chapter 15 함수형 프로그래밍
15.1 명령형 언어의 특징
15.1.1 명령형 프로그램
15.1.2 명령형 언어의 문제점
15.2 함수형 프로그래밍의 본질
15.2.1 함수
15.2.2 수학 함수와 프로그래밍 언어 함수
15.2.3 함수 언어(적용 언어)
15.3 간단한 순수 함수 언어
15.3.1 원시 함수
15.3.2 함수 형식
15.4 기존 언어의 함수 기능
15.4.1 Lisp
15.5 적용형 언어와 명령형 언어의 비교
연습문제
chapter 16 논리형 프로그래밍
16.1 WHAT과 HOW
16.2 비절차적 언어의 예
16.2.1 데이터베이스 언어
16.2.2 SETL
16.2.3 Snobol4
16.3 Prolog
16.3.1 사실, 규칙, 질문
16.3.2 단일화와 퇴각 검색
16.3.3 일반적인 자료 구조
16.4 Prolog와 Snobol4의 단일화 개념
연습문제
chapter 17 Ada
17.1 소개
17.2 자료형
17.2.1 변수와 상수 선언
17.2.2 단순 자료형
17.2.3 구조 자료형
17.2.4 배열형
17.2.5 문자열형
17.2.6 레코드 자료형
17.2.7 접근 자료형
17.2.8 전용 자료형
17.2.9 표현 명세
17.2.10 파생 자료형과 자료형 호환성
17.2.11 중복정의
17.3 수식과 문장
17.4 부프로그램
17.5 패키지와 전용 자료형
17.5.1 정보 은닉
17.5.2 전용 자료형
17.6 태스크
17.7 태스크들 사이의 통신 기법
17.7.1 랑데뷰
17.7.2 태스크들간의 선택 기법
17.8 예외 처리
17.9 포괄성
연습문제
국제 규격 인덱스 599
appendix 부록 프로그래밍 언어 분야 용어의 국제 규격과 국가 규격