100 likes | 236 Views
Programming Languages. 제1장 프로그래밍 언어 소개. 프로그래밍 언어란? 컴퓨터와 의사소통을 하기 위한 표현법 Hard-Wired(1940 년 이전), Assembly(40 년 이후, 폰 노이만) 정의 P.L 은 기계가 읽을 수 있고 사람이 읽을 수 있는 형식으로 계산을 기술하는 표현체계 P.L 배워야 한다. Why? 현재 사용하고 있는 언어의 이해 증진 유용한 프로그래밍을 구사할 수 있는 능력의 증대 언어 선택의 능력 증대 새로운 언어의 학습 새로운 언어의 설계 용이.
E N D
제1장프로그래밍 언어 소개 • 프로그래밍 언어란? • 컴퓨터와 의사소통을 하기 위한 표현법 • Hard-Wired(1940년 이전), Assembly(40년 이후, 폰 노이만) 정의P.L은 기계가 읽을 수 있고 사람이 읽을 수 있는 형식으로 계산을 기술하는 표현체계 • P.L 배워야 한다. Why? • 현재 사용하고 있는 언어의 이해 증진 • 유용한 프로그래밍을 구사할 수 있는 능력의 증대 • 언어 선택의 능력 증대 • 새로운 언어의 학습 • 새로운 언어의 설계 용이
프로그래밍 언어 소개 사람이 프로그램을 읽고 작성하기 용이하도록 • 프로그래밍 언어에서의 추상화(Abstraction) 추상화 개념자신의 속성들의 일부분만을 가지고 주어진 작업이나 객체들을 필요한 정도로 묘사할 수 있는 방법을 지원하는 것 • 자료 추상화(Data Abstraction) • string, number, tree, etc. • 제어추상화(Algorithm Abstraction) • Loop statements, Condition statements, Procedure call, etc. • 정보의 양으로 나눈 추상화 분류 • 기본적 추상화(Basic Abstraction) • 기계 정보의 수집 • 구조화된 추상화(Structured Abstraction) • 프로그램 구조에 대한 전역적 정보 수집 • 기본적 단위 추상화(Unit Abstraction) • 단위 프로그램 전체에 대한 정보 수집 계산의 주체가 되는 자료를 추상화함 실행 순서의 수정을 위한 제어의 특성을 추상화함
프로그래밍 언어 소개 자료 추상화(Data Abstraction) • 기본적 추상화(Basic Abstraction) • 컴퓨터 내부의 자료 표현을 추상화 • 기억장치 변수, 2진수의 내부 표현 값 정수/실수 자료형 • 구조화된 추상화(Structured Abstraction) • 서로 다른 형태의 자료들에 대한 집합을 추상화하는 방법 • Record/Array • e.q)type person = record var X, Y : array[0..20] of real; name : string; employee : person; age : years; address : string; telnumber : string; salary : integer; end • 단위 추상화(Unit Abstraction) • large 프로그램에서 자료의 생성과 사용에 대한 정보를 한 곳에 두고, 자료의 접근을 제한하는 경우의 추상화 • Encapsulation : Modula-2의 module, Ada의 package, JAVA의 class
프로그래밍 언어 소개 제어 추상화(Algorithm Abstraction) • 기본적 추상화(Basic Abstraction) • 몇 개의 기계 명령어를 모아 이해하기 쉬운 추상 구문으로 만드는 것 • Fortran, Pascal, C의 GOTO문 • 배정문 : x = x + y; 의미 :LDA x,ADD y,STA x • 구조화된 추상화(Structured Abstraction) • 프로그램에서 어떤 검사된 값에 따라 분할된 명령어의 한 그룹을 수행 • If / case / switch / iteration • 강력한 구조화된 제어 부프로그램 (Procedure Abstraction) • 단위 추상화(Unit Abstraction) • Procedure 집합의 추상화 • Modula-2의 module, Ada의 package, 라이브러리 함수 • 그 외의 제어 추상화 • 병행 프로그래밍 • 동기화(synchronization)와 통신(communication)
프로그래밍 언어 소개 계산 전형 • PL은 폰 노이만 기계구조에 기초하여 설계됨. • 명령형 언어(imperative language; 절차적 언어) • 폰 노이만 기계구조에 기초하여 설계된 언어 • 컴퓨터의 계산 방식을 모방하여 설계 • 명령의 순차적 실행, 기억장소를 표시하는 변수의 사용 • 값의 변경을 위한 배정문의 사용 • 단점: 폰 노이만 구조의 병목현상 초래, 비결정적 계산이나 순서에 의존하지 않는 계산의 표현에는 부적절하며 비효율적 • 적용형 언어(applicative language) • 함수형 언어(함수호출 기반) : Modula-2, LISP • 알려진 값들을 함수에 적용(함수의 평가 및 호출 방법 제공) • 논리형 언어(선언적 언어) :Prolog • 기호 논리학에 근거, 계산 순서를 기술하지 않고 계산의 내용만 기술 • 객체지향 언어 :Simular 67, C++, JAVA • 기억장치 기억장소와 이 기억장소의 값을 변경할 수 있는 연산의 집합 예제 예제 예제
프로그래밍 언어 소개 언어 정의 CFG ? G ( V, T, S, P) A x ( A ∈ V, x ∈ ( V ∪ T)* • 형식적인 언어의 정의 • 언어에 대한 정확한 형식 기술 방법이 필요 • 프로그래밍 과정에서 프로그램 동작의 이해를 위해 필요 • 구문론(Syntax)와 의미론(Semantics)으로 구분 • 언어 구문론 : 대부분의 언어가 Context-free 문법으로 표현 • Pascal if 문의 context-free grammar의 표현 방법 <if문> ::= if <조건> then <문> [else <문>] • 언어 의미론 • 언어구문은 언어의 표면적인 구조만을 정의 • 그러므로 의미론에 대한 형식화가 잘 이루어져 있지 않다. • 현재, 사용되고 있는 형식적 정의 방법 denotational semantics(상징적), axiomatic semantics(공리적)
프로그래밍 언어 소개 함수형 언어의 예 • Modula-2의 예 PROCEDURE gcd(u, v : INTEGRE) : INTEGER BEGIN IF v=0 THEN RETURN u; ELSE RETURN gcd(v, u MOD v); END; END gcd; • LISP의 예 (define( gcd u v) ( if (= v 0) u( gcd v (remainder u v ) )) ) 배정문이나 반복문의 사용 없이 수학적 이론에 근거를 둔 형태 Return
프로그래밍 언어 소개 논리형, 객체지향 언어의 예 • Prolog의 예 Ex) a :- b,c,d ( b,c,d가 참이면 a가 참이라는 의미) clause(문장) • Simula 67의 예 class gcd(u, v) ; integer u, v ; begin integer procedure value ; begin if v = 0 then value := u else begin ref(gcd) x ; x :- new gcd(v, u mod v) ; value := x.value ; end ; end value ; end gcd ; gcd(U, V, U) :- V=0. gcd(U, V, X) :- V>0, Y is U mod V, gcd(V, Y, X). V=0이면 u와 v의 gcd는 u이다. V > 0이면 u와 v의 gcd는 v와 u mode v의 gcd이다. 최대공약수의 논리(이론) Y는 중간 결과값의 이름 참조형 : ref(gcd) z; z:-new gcd(8,18); y:=z.value className a; b = new a( ); c = b.value; Return
Programming Languages- The end of Chapter 1 -To Be Continue ...