프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과.

Slides:



Advertisements
Similar presentations
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 프로그래밍 언어론 2nd edition Tucker and Noonan 1 장 소 개 A good programming language is a.
Advertisements

Copyright © 2015 Pearson Education, Inc. 6 장 : 프로그래밍 언어.
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
8장 프로그래밍 언어 8.1 프로그램이란? 8.2 프로그램 언어의 역사 8.3 프로그램 설계 절차
Vision System Lab, Sang-Hun Han
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
1. 컴파일러 개론 1-1. Compiler 정의 1-2. Language Processing System
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
기본 컴퓨터 프로그래밍 Lecture #6.
알기 쉽게 해설한 Java 8th edition
제 7 장 문장 구조화 제어문 지정문 조건문 반복문 GOTO 문 비결정적문.
4장 구문(Syntax).
컴퓨터 소프트웨어.
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 1 강원대학교 컴퓨터과학전공 문양세.
Ruby 프로그래밍 1 문자열 입출력 제어구조 looping 함수 정의
컴퓨터 구조학 정보보호학과.
프로그래밍언어론 2nd edition Tucker and Noonan
Part 08 함수 ©우균, 창병모 이 슬라이드는 부산대학교 우균이 작성하였습니다. 오류나 수정할 사항 있으면 연락 주세요.
오토메타 형식언어 2003년도 제 2학기.
출처: IT CookBook, 컴퓨터 구조와 원리 2.0 제 12장
프로그램 개발과 언어 Chapter 05 컴퓨터의 이해
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
강의 내용 및 방법 접근방법 시험 수업은 75분(14:30-15:45), 혹시 부족하면 보강
장. 문법 구조(Syntax) 컴퓨터공학과 권기태 프로그래밍언어론.
제 1 장 C 언어의 개요 Google 공동 창업자, 래리 페이지와 세르게이 브린.
1 마이크로프로세서의 원리 마이크로컨트롤러 AVR ATmega128.
Visual C++ Programming
Tel : Office : 2공학관 408호 오토마타 및 형식언어 김 현 성 Tel : Office : 2공학관 408호
프로그래밍 서울대학교 통계학과 2009년 2학기 컴퓨터의 개념 및 실습 (
Power Java 제7장 클래스와 객체.
Chapter 06 명령어와 번지지정 방식.
운영체제 이나현.
전자의료시스템 및 실습 C-언어 구 환 경희대학교 전자정보대학 동서의료공학과.
Power Java 제1장 자바 소개.
아날로그 VS 디지탈 -. Analog Vs Digital -. 디지털 논리에 대하여 -. 메모리에 대하여
제1장 서론.
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
Chapter 4 The Von Neumann Model.
Lecture 01: Compiler Overview
컴퓨터 시스템 개관 시스템 프로그래밍 - Lecture #1 신라대학교 컴퓨터공학과 시스템 프로그래밍.
A Web-Based Little Man Computer Simulator
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
강의 소개, 자료구조의 개념, SW 개발과 자료구조
Introduction to Programming Language
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 년 봄학기
컴 파 일 러 Compilers.
[CPA340] Algorithms and Practice Youn-Hee Han
프로그래밍언어론 2nd edition Tucker and Noonan
컴퓨터공학실습(I) 3주 인공지능연구실.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Chapter 02. 소프트웨어와 자료구조.
객체지향 패러다임에서의 코드 재사용을 위한 응집도 레벨 식별 모범 사례
제1장 정리 컴퓨터소프트웨어과 2-A반 주세호.
Signature, Strong Typing
Signature, Strong Typing
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
Signature, Strong Typing
언어 언어 사람 사람 사람들간의 의사 소통을 위한 수단
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
C언어 개요 프로그래밍이란 프로그래밍 언어란 컴퓨터와의 의사소통을 위한 표현 방법 세대별 언어의 발전을 거듭함
컴퓨터구조 강의소개 정보통신공학과 한성대학교.
강의교안 이용 안내 *이 책에 딸린 강의자료는 교수님의 효율적인 수업진행을 돕기 위해 만들어졌습니다.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
3주차: Control Flow and Others
Introduction to Computer System Spring, 2019
C.
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Lecture 7 7-Segment LED controller using u-controller
제 1 강 컴퓨터의 구조.
Presentation transcript:

프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과

담당교수 창 병 모, 숙명여대 컴퓨터과학, 서관 408A호 e-mail : chang@sookmyung.ac.kr www : http://sookmyung.ac.kr/~chang phone: 710-9378

교재 및 참고문헌 교재 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

강의 목표 프로그래밍 언어의 이론 및 실제 이론 및 실제가 필요하다. 프로그래밍 언어 및 컴파일러 이론 언어 구현 기술 Java 프로그래밍 언어

강의 계획 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주 : 중간시험

강의 계획 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주 : 기말시험

1장 서론 프로그래밍 언어란 ? 프로그래밍 언어의 역할 프로그래밍 파라다임 프로그래밍 언어 정의 프로그래밍 언어 구현

1.1 프로그래밍 언어란 ?

프로그래밍 언어의 중요성 주요 프로그래밍 도구 예 컴퓨터과학은 프로그래밍 언어의 발전을 매개로 발전해 왔다. 객체-지향 프로그래밍 언어 객체-지향 데이터베이스 시스템 객체-지향 소프트웨어 공학

프로그래밍 언어의 중요성 언어의 구조가 사고의 범위를 지배한다 ? 언어에 따라 생각하는 모드가 달라진다. 절차형 언어(procedural language) 함수형 언어(functional language) 논리 언어(logic language) 객체-지향 언어(object-oriented language)

무엇을 공부할까? 프로그래밍 언어가 제공하는 기능들 동기 설계원리 사용법 프로그래밍 언어의 구현 구현 기술

왜 프로그래밍 언어를 배울까? 응용에 적절한 언어의 선택 새로운 언어를 쉽게 배울 수 있다. 새로운 언어 설계 능력 배양 모든 응용에 적합한 언어는 없다. 새로운 언어를 쉽게 배울 수 있다. C++를 알고 있으면 Java는 쉽게 배울 수 있다. 새로운 언어 설계 능력 배양 대부분의 소프트웨어 시스템은 언어를 통해서 사용자와 상호작용한다. 컴퓨팅에 대한 전체적인 시각을 갖게 한다. 객체-지향 컴퓨팅, 인터넷 컴퓨팅

프로그래밍 언어란 무엇인가 ? A programming language is a notational system for describing computation in machine-readable and human-readable form

프로그래밍 언어란 무엇인가 ? 계산(Computation) 기계 읽기(Machine readability) 데이터 조작 텍스트 처리 정보 저장 및 검색 기계 읽기(Machine readability) 효율적인 번역 혹은 실행 사람 일기(Human readability) 프로그래밍 편의성 컴퓨터 연산들의 이해하기 쉬운 추상화 혹은 요약

1.2 프로그래밍 언어의 역할 추상화(Abstraction)

데이터 추상화(Data Abstraction) 기본 추상화 변수(variable) 데이터 값을 저장하는 메모리 위치 데이터 타입(data type) 값들의 종류에 대한 이름 예: int, float, double, … 선언(declaration) 변수의 이름과 데이터 타입을 선언한다. int x; double y;

데이터 추상화 구조적 추상화 예 관련된 데이터 값들의 모음을 요약 레코드(구조체): 다른 타입의 값들의 모음 배열: 같은 타입의 값들의 모음

제어 추상화(Control Abstraction) 기본 추상화 몇 개의 기계어 명령어들을 하나의 문장으로 요약 배정문 x = x+3 READ XADD X, 3, TMP STORE TMP, X goto 문 jump 명령어의 요약

제어 추상화 구조적 제어 추상화 예 테스트 내의 중첩된 기계어 명령어들을 하나의 문장으로 요약 if-문 switch-문 C for, while, …

제어 추상화 예 장점 L1: if (~condition) GOTO L2 while (condition) { statements 기계에 대한 추상화(요약된) 관점 다른 제어 문장들과 중첩되어 사용될 수 있다. L1: if (~condition) GOTO L2 code for statements GOTO L1 L2 : ... while (condition) { statements }

제어 추상화 프로시저(함수, 메쏘드) 선언 호출 일련의 계산 과정을 하나의 이름으로 요약해서 정의 이름과 실 매개변수를 이용하여 호출

통합 추상화(Unit Abstraction) 추상 데이터 타입 (데이터 + 연산) 데이터와 관련된 연산들을 통합하여 요약 예 Modula-2의 모듈 Ada의 패키지 C++, Java 등의 클래스

1.3 프로그래밍 파라다임

명령형 언어 (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

Von Neuman Model Computer Instructions and data Results of operation CPU Memory Instruction + Data

명령형(절차형) 언어 특징 단점 순차적 명령어 실행 메모리 위치를 나타내는 변수 사용 배정문을 사용한 변수 값 변경 언어 필요가 아니고 기계 모델에 기반한 언어

다른 계산 모델들 다른 계산 모델은 무엇인가 ? 함수형 언어(functional language) 논리 언어(logic language) 객체-지향 언어(object-oriented language)

예제(in C) int gcd(int u, int v) { if (v== 0) { return u; } else { return gcd(v, u mod v);

함수형 언어 (Functional language) 기본 모델 수학 함수에 기반 함수를 값에 적용(application) 매개변수 전달(parameter passing) 반환 값(return value) 특징 변수 및 배정문이 없음 자기호출(recursion)에 의한 반복 루프 같은 반복문은 없음

함수형 언어 (Functional language) 예제 (define (gcd u v) (if (= v 0) u (gcd v (remainder u v)))) 장점 기계 모델과 무관 수학을 기반으로 하기 때문에 프로그램의 의미를 명확하게 정의할 수 있다.

논리 언어 (Logic language) 기본 모델 예제 기호 논리를 기반으로 함 선언적 언어 프로그램 문제를 해결하는 방법보다 문제가 무엇인지를 기술하는 논리 문장들의 집합 예제 gcd(U,V,U) :- V = 0. gcd(U,V,X) :- V > 0, Y is U mod V, gcd(V,Y,X).

논리 언어 (Logic language) 특징 장점 루프나 선택문 등가 같은 제어 추상화가 없다. 제어는 하부 시스템(해석기)에 의해 제공된다. 변수는 메모리 위치가 아니라 부분 결과 값에 대한 이름이다. 장점 기계-독립적이고 정확한 의미구조를 가지고 있다. 선언적 프로그래밍이 가능하다.

객체지향 언어 (Object-oriented language) 기본 모델 객체(object) 데이터와 관련 연산들의 모음 계산과정(computation) 객체들 사이의 상호작용 클래스(class) 객체에 대한 타입 정의 객체는 클래스의 한 실체(instance)이다.

1.4 프로그래밍 언어 정의

정형적 정의 구문구조(Syntax) 문장을 구성하는 법 의미구조(Semantics) 각 문장의 정확한 의미 프로그램의 의미

구문(syntax) 구문 구조 문법 혹은 BNF <if-statement> ::= if < condition> then<statement> [else <statement>]

의미구조 (semantics) 문장의 의미, 프로그램의 의미 정형적 정의/비정형적 정의 정형적 정의 방법 if-문의 의미 denotational semantics operational semantics axiomatic semantics

1.5 프로그래밍 언어 구현

인터프리터 (Interpreter) source code input interpreter output

컴파일러 역할 source program preprocessor source program compiler target assembly program assembler relocatable machine code loader/link-editor absolute machine code

컴파일러 구조 Source program Analysis phases Synthesis phases Target program

컴파일러 구조 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

JAVA 실행 모델 JAVA program compiler Bytecode Byte code Interpreter