chapter 1 l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Chapter 1. ????? ??? ?? PowerPoint Presentation
Download Presentation
Chapter 1. ????? ??? ??

Loading in 2 Seconds...

play fullscreen
1 / 22

Chapter 1. ????? ??? ?? - PowerPoint PPT Presentation


  • 290 Views
  • Uploaded on

Chapter 1. 프로그래밍 언어의 소개. Introduction. 프로그래밍 언어 사용자가 컴퓨터가 해야 할 일을 기술하는데 사용하는 매체 (media) 내용 프로그래밍 언어의 역사 프로그래밍 언어의 정의 프로그래밍 언어의 학습 이유 좋은 프로그래밍 언어의 조건. 프로그래밍 언어의 정의. 프로그램 컴퓨터가 실행하는 명령어들의 집합 컴퓨터가 수행할 계산 절차를 기술한 것 프로그래밍 언어 프로그램을 작성하기 위한 표기법 (notation) 프로그래밍 언어의 학습 문법 (syntax)

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Chapter 1. ????? ??? ??' - salena


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
introduction
Introduction
  • 프로그래밍 언어
    • 사용자가 컴퓨터가 해야 할 일을 기술하는데 사용하는 매체 (media)
  • 내용
    • 프로그래밍 언어의 역사
    • 프로그래밍 언어의 정의
    • 프로그래밍 언어의 학습 이유
    • 좋은 프로그래밍 언어의 조건
slide3
프로그래밍 언어의 정의
  • 프로그램
    • 컴퓨터가 실행하는 명령어들의 집합
    • 컴퓨터가 수행할 계산 절차를 기술한 것
  • 프로그래밍 언어
    • 프로그램을 작성하기 위한 표기법 (notation)
  • 프로그래밍 언어의 학습
    • 문법 (syntax)
      • 프로그래밍 언어 구성 요소들이 결합되는 방법
    • 의미론 (semantics)
      • 문법적으로 옳은 프로그램 각 문장의 의미를 해석하는 규칙
slide4
프로그래밍 언어를 배우는 이유
  • 프로그래밍 언어론 학습
    • 여러 언어의 특성 비교, 분석
    • 자신이 사용하는 언어의 이해력 증진
    • 보다 신뢰성 있고 효율적인 프로그램 작성
  • 학습 이유 (Pratt & Zelkowitz)
    • 효과적인 알고리즘 개발 능력 향상
    • 현재 사용하고 있는 프로그래밍 언어의 이용도 증진
    • 유용한 프로그래밍 구조에 대한 어휘력 증진
    • 적절한 프로그래밍 언어의 선택
    • 새로운 언어의 용이한 습득
    • 새로운 언어의 설계
slide5
좋은 프로그래밍 언어의 조건 (1)
  • 1960년대 이전
    • 효율성: 적은 실행 메모리, 짧은 실행 시간
    • FORTRAN: 실행 속도, 실행 파일 크기
  • Readability (해독성, 판독성, 가독성)
    • 프로그램의 용이한 이해
    • C 언어: 간결, 이해의 어려움
    • COBOL
      • 영어 문장 같은 언어, 프로그램의 크기 증가, 역효과
    • 70년대: 프로그램의 유지 보수  주석 허용

Z = X + Y;

ADD X TO Y GIVING Z

slide6
좋은 프로그래밍 언어의 조건 (2)
  • 간결성
    • 단순하게 표현할 수 있게 하는 특성
      • 프로그램 작성, 이해 용이
    • Pascal: 간결성을 주요 설계 목표로 함  성공
    • 프로그램 구조 복잡, 프로그래밍 작업량 증대
  • 프로그램 검증의 용이성
    • 단순 명확한 문법 구조와 언어 의미
    • 프로그램의 크기가 커지고 중요한 프로그램일 경우 중요한 이슈
slide7
좋은 프로그래밍 언어의 조건 (3)
  • Orthogonality (직교성, 독립성)
    • 프로그래밍 언어의 직교성
      • 모든 가능한 조합을 사용하여 프로그래밍 언어의 요소를 결합할 수 있도록 허용하는 것
    • 프로그램 작성 용이
    • 프로그램의 오류 발견의어려움
    • Algol 68

B+C

(1) B: 정수, 실수 C: 정수, 실수

(2) B: 정수, 실수, 배열, 레코드 C: 정수, 실수, 배열, 레코드

slide8
좋은 프로그래밍 언어의 조건 (4)
  • Abstraction (추상화, 단순화)
    • 추상화
      • 객체가 자신의 복잡한 내부 구조, 구현 방법 등을 외부로부터 감추어 블랙박스로 단순화 한다는 의미
      • 객체의 필수적인 속성만으로 객체를 사용할 수 있도록 하는 것
    • 프로그래밍 작업의 단순화, 분업화
slide9
좋은 프로그래밍 언어의 조건 (5)
  • stack, queue

class stack {

int top;

int data[100];

public:

stack() { top=0; }

void push(int x) { data[top++] = x; }

int pop() { return data[--top]; }

};

int top=0;

int data[100];

void push(int x) {

data[top] = x;

top++;

}

int pop() {

top--;

return data[top];

}

slide10
좋은 프로그래밍 언어의 조건 (6)
  • Machine independence (기계 독립성)
    • 작성된 프로그램이 모든 컴퓨터 시스템에서 동일한 기능을 수행할 수 있어야 한다.
    • PASCAL의 MAXINT: 기계 종속적인 부분을 분리
    • 프로그램의 이식성 (portability) 향상에 중요
  • 개발 환경
    • 신뢰성 있고 효율적인 컴파일러
    • 풍부한 개발 환경: 편집기, 유틸리티, debugger
slide11
좋은 프로그래밍 언어의 조건 (7)
  • 일반성
    • 언어의 문법은 일반적으로 많이 사용하는 표현과 일치하는 것이 좋다.
    • Java에서의 상수: const (x)  final (o)
    • Algol 68에서의 형 선언: type (x)  mode (o)
slide12
좋은 프로그래밍 언어의 조건 (8)
  • 획일성 (Uniformity)
    • 비슷한 의미를 지닌 것은 비슷한 형식을 가져야 함

function ex1 : integer;

begin

ex1 := 3

end

procedure p1; (* terminator *)

var x, y : integer; (* terminator *)

begin

x := 0; (* separator *)

y := 3

end; (* terminator *)

함수 ex1의 return value가 3

slide13
프로그래밍 언어의 종류 (1)
  • 저급 언어
    • 기계어, 어셈블리어
    • 프로그램 작성과 이해가 어렵다.
  • 고급 언어
    • FORTRAN, C, PASCAL, …
    • 이해가 쉽다.
    • 이식성이 높다.
    • 기계어로 번역하는 과정이 필요하다.
slide14
프로그래밍 언어의 종류 (2)
  • 응용 분야별 구분
    • 범용 언어 (general purpose language)
      • Pascal, C, Ada, C++, …
    • 인공지능 언어
      • 논리 연산과 융통성
      • LISP, Prolog
slide15
프로그래밍 언어의 종류 (3)
  • 병렬 처리 언어 (parallel language)
    • 상호 통신하는 프로세스를 실행시킬 수 있는 언어
    • Linda, concurrent Pascal
  • 페이지 기술 언어 (page description language)
    • 문서의 형식을 기술하는 언어
    • Postscript, HTML, …
  • 데이터베이스 질의어 (query language)
    • 데이터베이스 정보 검색을 위한 언어
    • SQL (structured query language)
slide16
프로그래밍 언어의 종류 (4)
  • 세대별 구분
    • 1세대 (1940 ~ 50년대): 기계어, 어셈블리어
    • 2세대: 비구조적 고급어, FORTRAN
    • 3세대: 구조적 고급어, Algol, PASCAL
    • 4세대: 특수 목적 언어, SQL, Lotus, Delphi
    • 5세대: 초 고급 언어, Prolog, SETL
slide17
프로그래밍 언어의 종류 (5)
  • 계산 모델에 의한 구분
    • 명령형 언어 (imperative language, procedural language)
      • 문제를 해결할 모든 절차를 기술해야 하는 언어
      • 기억 장소의 내용을 조작/변경하여 계산 과정 수행
      • 순차적 문장들로 프로그램 구성
slide18
프로그래밍 언어의 종류 (6)
  • 함수형 언어 (functional language, applicative language)
    • 입력과 출력의 함수만을 사용하여 프로그램 기술
    • 프로그램의 실행: 입력 데이터를 원하는 결과로 변환
    • LISP

result  function_n(…function_2(function_1(data))…)

slide19
프로그래밍 언어의 종류 (7)
  • 논리 언어 (logic language, rule-based language)
    • 프로그램 = rule + 규칙 활성화 조건
      • 조건 만족 시 연관 조건 실행
    • Knowledge base: 규칙의 집합
    • Prolog

enabling condition1  action1

enabling condition2  action2

enabling condition3  action3

slide20
프로그래밍 언어의 종류 (8)
  • 객체 지향 언어 (object oriented language)
    • 기본 개념
      • 클래스 (class)
      • 객체간 계층화 (hierarchy)
      • 상속 (inheritance)
      • 다형성 (polymorphism)
    • 객체 (object): 프로그램 안의 모든 독립 개체
    • 프로그램의 수행 : 객체간의 메시지 교환
    • C++, Smalltalk, Java
slide21
프로그래밍 언어의 종류 (9)
  • 구현 기법에 의한 구분
    • 구현 기법: 프로그램을 실제 기계에서 실행시키는 방법
    • 번역 방식 (translation)
      • 프로그램을 번역  기계어 프로그램 생성  실행
      • 필요한 프로그램
        • 컴파일러 (compiler): 고급 언어  기계 언어
        • 링커 (linker)
          • 목적 코드 + 다른 목적 코드 + 라이브러리  실행 가능한 프로그램
        • 로더 (loader): 실행 가능 파일  주기억 장치
        • 기타: 어셈블러 (assembler), 프리프로세서 (preprocessor)
      • 빠른 실행 시간
      • 프로그램의 변경  모든 프로그램의 재 번역
      • Fortran, Algol, PL/I, Pascal, C, C++, …
slide22
프로그래밍 언어의 종류 (10)
  • 인터프리터 방식 (interpreter)
    • 명령문을 중간 형태로 번역  바로 실행
    • 실행 시간이 길다.
    • 프로그램의 개발 단계에서 유용
    • 교육용: 대화식 프로그래밍
    • 목적 프로그램을 위한 기억 장소가 필요 없다.
    • 사용자 적응성
    • Basic, Prolog, Lisp, Snobol, …
    • 하이브리드 (hybrid) 방식의 실행
      • 중간 언어로 번역
      • 소프트웨어 인터프리터로 실행
      • Java: byte code로 번역  java virtual machine에서 실행