1 / 10

Programming Languages

Programming Languages. 제1장 프로그래밍 언어 소개. 프로그래밍 언어란? 컴퓨터와 의사소통을 하기 위한 표현법 Hard-Wired(1940 년 이전), Assembly(40 년 이후, 폰 노이만) 정의 P.L 은 기계가 읽을 수 있고 사람이 읽을 수 있는 형식으로 계산을 기술하는 표현체계 P.L 배워야 한다. Why? 현재 사용하고 있는 언어의 이해 증진 유용한 프로그래밍을 구사할 수 있는 능력의 증대 언어 선택의 능력 증대 새로운 언어의 학습 새로운 언어의 설계 용이.

ivana-avila
Download Presentation

Programming Languages

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programming Languages

  2. 제1장프로그래밍 언어 소개 • 프로그래밍 언어란? • 컴퓨터와 의사소통을 하기 위한 표현법 • Hard-Wired(1940년 이전), Assembly(40년 이후, 폰 노이만) 정의P.L은 기계가 읽을 수 있고 사람이 읽을 수 있는 형식으로 계산을 기술하는 표현체계 • P.L 배워야 한다. Why? • 현재 사용하고 있는 언어의 이해 증진 • 유용한 프로그래밍을 구사할 수 있는 능력의 증대 • 언어 선택의 능력 증대 • 새로운 언어의 학습 • 새로운 언어의 설계 용이

  3. 프로그래밍 언어 소개 사람이 프로그램을 읽고 작성하기 용이하도록 • 프로그래밍 언어에서의 추상화(Abstraction) 추상화 개념자신의 속성들의 일부분만을 가지고 주어진 작업이나 객체들을 필요한 정도로 묘사할 수 있는 방법을 지원하는 것 • 자료 추상화(Data Abstraction) • string, number, tree, etc. • 제어추상화(Algorithm Abstraction) • Loop statements, Condition statements, Procedure call, etc. • 정보의 양으로 나눈 추상화 분류 • 기본적 추상화(Basic Abstraction) • 기계 정보의 수집 • 구조화된 추상화(Structured Abstraction) • 프로그램 구조에 대한 전역적 정보 수집 • 기본적 단위 추상화(Unit Abstraction) • 단위 프로그램 전체에 대한 정보 수집 계산의 주체가 되는 자료를 추상화함 실행 순서의 수정을 위한 제어의 특성을 추상화함

  4. 프로그래밍 언어 소개 자료 추상화(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

  5. 프로그래밍 언어 소개 제어 추상화(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)

  6. 프로그래밍 언어 소개 계산 전형 • PL은 폰 노이만 기계구조에 기초하여 설계됨. • 명령형 언어(imperative language; 절차적 언어) • 폰 노이만 기계구조에 기초하여 설계된 언어 • 컴퓨터의 계산 방식을 모방하여 설계 • 명령의 순차적 실행, 기억장소를 표시하는 변수의 사용 • 값의 변경을 위한 배정문의 사용 • 단점: 폰 노이만 구조의 병목현상 초래, 비결정적 계산이나 순서에 의존하지 않는 계산의 표현에는 부적절하며 비효율적 • 적용형 언어(applicative language) • 함수형 언어(함수호출 기반) : Modula-2, LISP • 알려진 값들을 함수에 적용(함수의 평가 및 호출 방법 제공) • 논리형 언어(선언적 언어) :Prolog • 기호 논리학에 근거, 계산 순서를 기술하지 않고 계산의 내용만 기술 • 객체지향 언어 :Simular 67, C++, JAVA • 기억장치 기억장소와 이 기억장소의 값을 변경할 수 있는 연산의 집합 예제 예제 예제

  7. 프로그래밍 언어 소개 언어 정의 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(공리적)

  8. 프로그래밍 언어 소개 함수형 언어의 예 • 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

  9. 프로그래밍 언어 소개 논리형, 객체지향 언어의 예 • 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

  10. Programming Languages- The end of Chapter 1 -To Be Continue ...

More Related