프로그래밍 언어론
본 자료는 8페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
해당 자료는 8페이지 까지만 미리보기를 제공합니다.
8페이지 이후부터 다운로드 후 확인할 수 있습니다.

목차

I. 프로그래밍 언어 소개
1.1. 프로그래밍 언어란 무엇인가
1.2. 프로그래밍 언어를 배워야 하는 이유
1.3. 프로그래밍 언어에서의 추상화
1.4. 계산 전형(Computational Paradigms)
1.5. 언어 정의

II. 언어의 변천
2.1. 디지털 컴퓨터 이전의 언어
2.2. 1950年代 : 최초의 프로그래밍 언어
2.3. 1960年代 : 프로그래밍 언어의 폭증
2.4. 1970年代 : 간결성, 추상화, 연구 사항
2.5. 1980年代 : 통합과 새로운 방향
2.6. 프로그래밍 언어의 세대론과 미래

III. 프로그래밍 언어 설계
3.1. 역사와 설계 기준
3.2. 효율성
3.3. 일반성, 직교성, 획일성
3.4. 기타 프로그래밍 언어 설계 원칙
3.5. 문제점과 해결책들

본문내용

일반성이 갖는 문제점
(1) 언어의 간결성 저하
(2) 언어의 판독성 저하
(3) 언어의 신뢰성 저하
ex> C언어의 포인터(일반성 제공) - 문제점 제기
Pascal에서는 이명(aliasing)과 위험을 줄이기 위해 포인터가 본질적으로 제한
직교성(orthogonality)
(1) 수학 개념에서 유래 "직각 or 완전히 독립적인 방향"
(2) 언어의 구성자들이 각각의 의미를 가진 채 결합하는 성질
(구성자간의 상호작용 or 문맥의 사용이 예상 밖의 행위를 야기하지 않아야 함)
(3) 비직교성 - 문맥에 의존하는 제한, 비일반성 - 문맥과 관계없는 제한
직교성이 부족한 예
(1) 함수 반환 값 자료형
­Pascal : 스칼라형, 포인터형만 허용
­C : 배열형만 제외
­Ada : 완벽한 직교성 제공(모든 자료형 허용)
(2) 문자열
­Modula-2 : 문자열 배정(작은 문자열 더 큰 문자열)
크기가 다른 객체에 대한 유일한 배정
(3) 매개변수 전달 기법
­C : 배열 - call by reference, 이외 모든 자료형 - call by value 방식
­Ada : 모든 자료형 - call by value, result, value-result 허용(직교성 보장)
Algol 68의 중요 설계 목표 - 직교성 보장
획일성(uniformity)
(1) 언어 구조들의 외모와 행동에서의 조화에 중점을 둠
(2) 유사한 것들은 유사하게 보이고 유사한 의미를 갖게 하며, 상이한 것들은 서로 다르게 보이고 서로 다르게 행동하여야 된다는 성질
획일성이 부족한 비조화의 예(Pascal)
(1) ifans, while 문 : begin-end 구조 요구, repeat 문 : begin-end 구조 비 요구
(2) 가변 레코드에서 case 문, case 제어문 : 구문 상이(Modula-2에서 해결)
(3) 함수 값의 반환 방법 - 배정문과 유사(타 언어 return 문 사용으로 해결)
function f : boolean;
begin
f := true;
end:
(4) : 포인터 선언( integer)과 포인터 값(x )에 공용
(Modula-2는 POINTER TO로 해결)
(5) 세미콜론(;) : Modula-2, Pascal에서 문장 구분자와 선언 종결자로 사용
(C언어에서는 종결자로만 사용)
procedure p; (*terminator*)
var x:integer;(*terminator*)
y:real;(*terminator*)
begin
x:=0;(*separator*)
y:=1.0
end; (*terminator*)
비획일성은 특별한 문맥에서만 발생되고 구성 자들간의 상호작용으로 불 수 있으므로 비직교성으로 간주될 수도 있다.
3.4. 기타 프로그래밍 언어 설계 원칙
간결성(simplicity)
(1) Pascal의 주된 설계 원칙은 간결성
(2) 직교성, 일반성, 획일성 : 간결성 보장 못함 ex> Algol 68
(3) 구성자의 수가 작다고 언어가 간결한 것은 아님
ex> Lisp, Prolog : 작은 수의 구성자를 갖으나 복잡한 실행시간과 시스템에 의존적
(4) 과다한 단순성 - 언어 사용에 방해, 표현력이 부족, 많은 제한 발생
표현력(expressiveness)
(1) 복잡한 과정이나 구조를 표현하는데 용이함을 의미
(2) 표현력은 강하나 단순하지 않은 언어 - Lisp, Prolog, Algol 68
(3) 표현력이 강하면서 단순한 언어 - C언어
ex> while(*s++ = *t++);
정확성(preciseness)
(1) 언어에 대한 정확한 정의 언어의 행위가 예측 가능한 정의의 존재 여부
(2) 정확한 언어 정의 언어의 신뢰도, 번역기의 신뢰도 영향
기계 독립성(machine independence)
(1) 기계 독립적인 언어 정의를 통하여 보장(호환성 제공)
(2) 기억 장소 할당과 기계 구조와 별개로 정의된 자료형 사용
보호성(security)
(1) 프로그래밍 오류를 줄이고, 오류 발견 용이한 언어 목표
(2) 언어의 신뢰성과 정확성에 밀접한 관계
(3) 언어 설계시 자료형, 형 검사, 변수 선언을 도입
기존 표기나 관습과의 일치성
(1) 언어 설계시 표준화된 특성과 개념을 갖도록 해야 함
(2) Algol 68 - 표준화된 표기를 잘 따르지 않은 언어
(type 대신 mode 사용)
확장성(extensibility)
(1) 사용자가 언어의 특성을 쉽게 부가하도록 허용하는 기법
(2) 확장성을 가진 언어의 예 - Lisp
(3) 명령형 언어는 함수형 언어보다 언어 확장이 어려움
(4) 추상화 개념(자료 추상화, 제어 추상화)은 확장성 지원
제한성(restrictability)
(1) 일부의 언어 지식과 언어 구조만 가지고도 효과적인 프로그램 작성 가능
(2) 언어 제한성의 장점
­프로그래머는 언어의 효과적인 사용을 위해 언어 전체를 배울 필요 없음
­번역기 작성자가 언어 일부분 만을 선택하여 구현, 사용 가능(부분언어 지원)
ex> SP/1, SP/2 ... SP/K : PL/I의 부분 언어들
3.5. 문제점과 해결책들
성공적인 언어 설계를 위한 충고
(1) 신뢰성
­프로그램의 신뢰성 위해 진단 컴파일러 or 점검 컴파일러 사용
­Cornell : PL/I diagnostic, C언어 환경(debugger 포함)
(2) 효율적인 번역
­초기 고급언어(Fortran, Cobol, ...)
: 분리 컴파일 제공 효율적 번역 가능, 오류 유발
­Algol 68, Pascal(70년대 초반) : 신뢰성 강조 통합 컴파일러
Ada : 조화(분리 컴파일의 장점 + 통합 컴파일의 장점)
specification part, body part 제공으로 해결
(3) 코드 최적화(optimization)
­효율적인 목적 코드
­컴파일링 비용 증가
­반복 수행부 등 일부분만 최적화 효과 큼
­실제 컴파일러 : 여러 최적화 단계 제공
(4) 신뢰성
­언어 구문의 과다한 간결성과 생략은 프로그램 판독성을 저하
­적절한 수준의 간결성은 프로그래머에게 좋은 훈련과 프로그램의 신뢰성을 증가
­짧은 프로그램 신뢰성 증진(APL, 4세대 언어) readability 증가
  • 가격3,300
  • 페이지수23페이지
  • 등록일2002.10.12
  • 저작시기2002.10
  • 파일형식한글(hwp)
  • 자료번호#206239
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니