Download presentation
Presentation is loading. Please wait.
1
프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과
2
담당교수 창 병 모, 숙명여대 컴퓨터과학, 서관 408A호 e-mail : chang@sookmyung.ac.kr
www : phone:
3
교재 및 참고문헌 교재 Kenneth C. Louden, Programming languages : Principles and Practice, 2nd Edition, Thomson 참고문헌 R. Sebesta, Concepts of Programming Languages, 5th Edition, Addison-Wesley, 2001 Lewis, and Loftus, Java Software Solutions, 2nd Edition, Addison-Wesley 1999
4
강의 목표 프로그래밍 언어의 이론 및 실제 이론 및 실제가 필요하다. 프로그래밍 언어 및 컴파일러 이론 언어 구현 기술
Java 프로그래밍 언어
5
강의 계획 1주 : 서론 2주 : History and Design Principles
1주 : 서론 2주 : History and Design Principles 3주 : Syntax and Semantics 4주 : Basic semantics 5주 : Data types 6주 : Expressions and Statements 7주 : Procedures and Environments 8주 : 중간시험
6
강의 계획 9주 : Procedure Implementation 10주 : Java Virtual Machine
11주 : Abstract Data Types 12주 : Object-oriented Programming I 13주 : Object-oriented Programming II 14주 : Exception Handling 15주 : 기말시험
7
1장 서론 프로그래밍 언어란 ? 프로그래밍 언어의 역할 프로그래밍 파라다임 프로그래밍 언어 정의 프로그래밍 언어 구현
8
1.1 프로그래밍 언어란 ?
9
프로그래밍 언어의 중요성 주요 프로그래밍 도구 예 컴퓨터과학은 프로그래밍 언어의 발전을 매개로 발전해 왔다.
객체-지향 프로그래밍 언어 객체-지향 데이터베이스 시스템 객체-지향 소프트웨어 공학
10
프로그래밍 언어의 중요성 언어의 구조가 사고의 범위를 지배한다 ? 언어에 따라 생각하는 모드가 달라진다.
절차형 언어(procedural language) 함수형 언어(functional language) 논리 언어(logic language) 객체-지향 언어(object-oriented language)
11
무엇을 공부할까? 프로그래밍 언어가 제공하는 기능들 동기 설계원리 사용법 프로그래밍 언어의 구현 구현 기술
12
왜 프로그래밍 언어를 배울까? 응용에 적절한 언어의 선택 새로운 언어를 쉽게 배울 수 있다. 새로운 언어 설계 능력 배양
모든 응용에 적합한 언어는 없다. 새로운 언어를 쉽게 배울 수 있다. C++를 알고 있으면 Java는 쉽게 배울 수 있다. 새로운 언어 설계 능력 배양 대부분의 소프트웨어 시스템은 언어를 통해서 사용자와 상호작용한다. 컴퓨팅에 대한 전체적인 시각을 갖게 한다. 객체-지향 컴퓨팅, 인터넷 컴퓨팅
13
프로그래밍 언어란 무엇인가 ? A programming language is a notational system for describing computation in machine-readable and human-readable form
14
프로그래밍 언어란 무엇인가 ? 계산(Computation) 기계 읽기(Machine readability)
데이터 조작 텍스트 처리 정보 저장 및 검색 기계 읽기(Machine readability) 효율적인 번역 혹은 실행 사람 일기(Human readability) 프로그래밍 편의성 컴퓨터 연산들의 이해하기 쉬운 추상화 혹은 요약
15
1.2 프로그래밍 언어의 역할 추상화(Abstraction)
16
데이터 추상화(Data Abstraction)
기본 추상화 변수(variable) 데이터 값을 저장하는 메모리 위치 데이터 타입(data type) 값들의 종류에 대한 이름 예: int, float, double, … 선언(declaration) 변수의 이름과 데이터 타입을 선언한다. int x; double y;
17
데이터 추상화 구조적 추상화 예 관련된 데이터 값들의 모음을 요약 레코드(구조체): 다른 타입의 값들의 모음
배열: 같은 타입의 값들의 모음
18
제어 추상화(Control Abstraction)
기본 추상화 몇 개의 기계어 명령어들을 하나의 문장으로 요약 배정문 x = x+3 READ XADD X, 3, TMP STORE TMP, X goto 문 jump 명령어의 요약
19
제어 추상화 구조적 제어 추상화 예 테스트 내의 중첩된 기계어 명령어들을 하나의 문장으로 요약 if-문 switch-문 C
for, while, …
20
제어 추상화 예 장점 L1: if (~condition) GOTO L2 while (condition) { statements
기계에 대한 추상화(요약된) 관점 다른 제어 문장들과 중첩되어 사용될 수 있다. L1: if (~condition) GOTO L2 code for statements GOTO L1 L2 : ... while (condition) { statements }
21
제어 추상화 프로시저(함수, 메쏘드) 선언 호출 일련의 계산 과정을 하나의 이름으로 요약해서 정의
이름과 실 매개변수를 이용하여 호출
22
통합 추상화(Unit Abstraction)
추상 데이터 타입 (데이터 + 연산) 데이터와 관련된 연산들을 통합하여 요약 예 Modula-2의 모듈 Ada의 패키지 C++, Java 등의 클래스
23
1.3 프로그래밍 파라다임
24
명령형 언어 (Imperative language)
Imperative programming languages began by imitating and abstracting the operations of a von Neuman model computer Von Neuman model stored program (instructions and data) computer a single CPU sequentially execute instructions in memory that operate on values stored in memory
25
Von Neuman Model Computer
Instructions and data Results of operation CPU Memory Instruction + Data
26
명령형(절차형) 언어 특징 단점 순차적 명령어 실행 메모리 위치를 나타내는 변수 사용 배정문을 사용한 변수 값 변경
언어 필요가 아니고 기계 모델에 기반한 언어
27
다른 계산 모델들 다른 계산 모델은 무엇인가 ? 함수형 언어(functional language)
논리 언어(logic language) 객체-지향 언어(object-oriented language)
28
예제(in C) int gcd(int u, int v) { if (v== 0) { return u; } else {
return gcd(v, u mod v);
29
함수형 언어 (Functional language)
기본 모델 수학 함수에 기반 함수를 값에 적용(application) 매개변수 전달(parameter passing) 반환 값(return value) 특징 변수 및 배정문이 없음 자기호출(recursion)에 의한 반복 루프 같은 반복문은 없음
30
함수형 언어 (Functional language)
예제 (define (gcd u v) (if (= v 0) u (gcd v (remainder u v)))) 장점 기계 모델과 무관 수학을 기반으로 하기 때문에 프로그램의 의미를 명확하게 정의할 수 있다.
31
논리 언어 (Logic language) 기본 모델 예제 기호 논리를 기반으로 함 선언적 언어 프로그램
문제를 해결하는 방법보다 문제가 무엇인지를 기술하는 논리 문장들의 집합 예제 gcd(U,V,U) :- V = 0. gcd(U,V,X) :- V > 0, Y is U mod V, gcd(V,Y,X).
32
논리 언어 (Logic language) 특징 장점 루프나 선택문 등가 같은 제어 추상화가 없다.
제어는 하부 시스템(해석기)에 의해 제공된다. 변수는 메모리 위치가 아니라 부분 결과 값에 대한 이름이다. 장점 기계-독립적이고 정확한 의미구조를 가지고 있다. 선언적 프로그래밍이 가능하다.
33
객체지향 언어 (Object-oriented language)
기본 모델 객체(object) 데이터와 관련 연산들의 모음 계산과정(computation) 객체들 사이의 상호작용 클래스(class) 객체에 대한 타입 정의 객체는 클래스의 한 실체(instance)이다.
34
1.4 프로그래밍 언어 정의
35
정형적 정의 구문구조(Syntax) 문장을 구성하는 법 의미구조(Semantics) 각 문장의 정확한 의미 프로그램의 의미
36
구문(syntax) 구문 구조 문법 혹은 BNF
<if-statement> ::= if < condition> then<statement> [else <statement>]
37
의미구조 (semantics) 문장의 의미, 프로그램의 의미 정형적 정의/비정형적 정의 정형적 정의 방법 if-문의 의미
denotational semantics operational semantics axiomatic semantics
38
1.5 프로그래밍 언어 구현
39
인터프리터 (Interpreter) source code input interpreter output
40
컴파일러 역할 source program preprocessor source program compiler
target assembly program assembler relocatable machine code loader/link-editor absolute machine code
41
컴파일러 구조 Source program Analysis phases Synthesis phases Target program
42
컴파일러 구조 Source program Lexical analysis Syntax Analysis Parse tree
Target program Semantic Analysis Int Code Gen Target Code Gen Global Optimizer Parse tree Abstract syntax tree
43
JAVA 실행 모델 JAVA program compiler Bytecode Byte code Interpreter
Similar presentations