1. 프로그래밍 언어 소개

의사 소통하는 방식 ↔ 생각하는 방법 (언어) ↔ (사고)가 서로 영향을 줌

Untitled

1. 프로그래밍 언어란 무엇인가

프로그래밍 언어의 정의

프로그래밍 언어는 기계가 읽을 수 있고 사람이 읽을 수 있는 형식으로 계산을 기술하는 표현 체계이다

  • 컴퓨터와 의사 소통하기 위한 표현법 (약간 부적절한 면 존재)
  • 1940년대 이전: 프로그래밍이 전선 연결 (프로그래밍 언어 ?)
  • 1940년대 Von Neumann 방식(Program stored computer)
    • CPU가 처리할 작업을 명령 코드로 작성
    • 프로그래밍 개념 시작
    • 어셈블리 언어 탄생 : symbol 사용
      • 기계종속적
      • 저급 수준의 추상화 (고급 언어가 나오게 되는 계기)
      • 읽고 쓰기 어려움
    • 고급 수준의 추상화가 필요로 함 ⇒ 고급 언어 등장
      • 프로그램 간략, 이해 용이, 이식성 증가
      • 배정, 반복, 선택 개념
  • 계산 (computation) 이란?
    • 수학적으로 형식적인 정의 가능(튜링 머신등)
    • 컴퓨터가 처리할 수 있는 작업을 의미 (일반적)
  • 기계가 읽을 수 있는 (machine-readable)
    • 효과적인 번역 가능 ( 간결한 구조의 언어 요구)
    • 단순 번역 알고리즘 존재
    • 제한된 시간 내에 번역 가능 (프로그램 크기 단순 비례 이상적 임)
    • 문맥 자유 언어 (context free language) → 위 조건들 만족
  • 사람이 읽을 수 있는 (human-readable)
    • 기계 독립적인 추상성 제공 → 자연어 형태
    • 프로그램 대형화 → 판독성은 새로운 국면 지역성 요구
    • 프로그래밍 언어 → 소프트웨어 개발 환경에 포함되는 경향

3. 프로그래밍 언어에서의 추상화

추상화 (abstraction) 의 개념

  • 주어진 작업이나 객체를 속성들의 일부분을 가지고 필요한 만큼
  • 사할 수 있는 방법을 지원하는 것
  • 필수적인 속성만으로 주어진 것을 묘사하므로 나머지 속성들은 추상화, 은닉, 또는 삭제됨

추상화의 범주

  • 자료 추상화
  • 문자열, 수, 트리와 같은 계산 될 자료의 특성을 추상화
  • 제어 추상화 (알고리즘 추상화)
  • 실행 순서를 제어하는 특성을 추상화
  • 제어 추상화의 예 : 반복문, 조건문, 프로시저 호출 등

추상화에 포함된 정보의 양에 따른 분류

  • 기본 추상화 (basic abstraction)
    • 가장 지역적인 기계정보에 대한 추상화
  • 구조 추상화 (structured abstraction)
    • 보다 전역적인 정보인 프로그램의 구조에 대한 추상화
  • 단위 추상화 (unit abstraction)
    • 단위 프로그램 전체에 대한 정보의 추상화
  • 자료 추상화
    • 기본 추상화 (basic abstraction)
      • 컴퓨터 내부 자료 표현 → 추상화
      • 예) 기억 장치의 장소 → 변수로 추상화 int x; float y;
      • 자료의 값 (2진수) → 수를 십진 자료형으로 추상화 x = 5.7;
    • 구조 추상화 (structured abstraction)
      • 관련된 자료의 집합을 추상화
      • 전형적인 구조 추상화 예 : 배열, 레코드 (구조형 자료)
      • 구조형에 새 이름 부여 기능(새 차원의 추상화)
        • type student = record …..
    • 단위 추상화 (unit abstraction)
      • 자료의 생성과 사용에 대한 정보를 한 장소에 모아두고, 자료의 세부사항에 대한 접근을 제한하는 도구
        • 자료형의 구조 변경이 프로그램 전체에 영향을 주지 않으며, 자료 구조의 세부사항 무시 함
      • 자료 캡슐화 또는 자료 추상화 (10장)
      • 예 : C++, Java의 class, Modula-2의 module, Ada의 package
  • 제어 추상화
    • 기본 추상화
    • 구조 추상화
      • (검사 값에 따라) 분할된 명령어 그룹 수행
      • 예1 : 택일문

        if 문과 같은 택일문, Pascal의 case문, C언어의 switch문 등

      • 예2 : 구조화 반복문

        for, repeat, while, loop-exit

      • 예3 : 강력한 구조 제어 : 부프로그램 (프로시저 추상화) procedure def, procedure invocation (새 활성화 환경)
    • 단위 추상화
      • 프로시저의 집합을 추상화 (관련된 프로시저 그룹 추상화
      • 자료 관리 프로그램에서 평균, 표준편차 등 통계 작업 프로그램들을 모아서 하나의 단위 프로그램화
      • 지원 도구 (library 형태 지원)
        • Ada의 package, Modula-2의 module, C++와 Java의 class
    • 기타 제어 추상화
      • 병행 프로그래밍 (동기화, 통신 개념 지원) : coroutine, task, process

추상화란 : readability 증가 목적 (가독성 향상)

4. 계산 전형

  • 명령형 언어(imperative L.) 또는 절차적 언어(procedural L.)

    순서를 명확한 계산법으로 쉽게 표현이 가능한 문제 지향 언어

    • 특징
      • 명령의 순차적 실행
      • 변수 사용
      • 배정문 사용
    • 문제점
      • 폰 노이만 병목현상 발생(순차 실행)

      ⇒ 프로그램 메모리인 과 데이터 메모리인  사이의 공유 버스 즉, CPU와 메모리간 데이터 전송율의 한계로 인해 발생하는 병목현상 또는 기억장소의 지연 현상을 이른다

      • 많은 자료의 동시 계산, 비결정적 계산, 순서에 의존하지 않는 계산 등에 비효율적
      • 대표적 예 : C, Ada, Pascal, Fortran, Basic 등 대부분 언어
      • 비 절차적 언어 : 함수형 언어, 논리형 언어
  • 함수형 언어(functional L.) 또는 적용형 언어(applicative L.)

    실행 순서에 관계없이 처리 내용을 기술할 수 있는 프로그램

    • 함수의 평가와 함수 적용을 기본으로 함
    • 특징
      • 함수의 평가 및 호출 방법을 제공
      • 변수, 배정문이 없음
      • 반복 연산은 재귀적 함수 이론에 의해 기술됨
  • 객체 지향 언어 (object-oriented L.)
    • 객체에 기반을 둔 언어 객체란 상태를 의미하는 기억 장소와 상태를 변경할 수 있는 연산의 집합
    • 객체는 클래스로 그룹화
    • 클래스 선언
      • C나 Pascal에서 구조형 자료를 선언하는 방법과 유사
    • 클래스의 인스턴스
  • 선언된 객체의 실제 예
    • 객체 지향의 방법을 처음 소개한 언어 : Simula 67

5. 언어 정의

  • 프로그래밍 언어의 정확한 형식 정의가 필요한 이유
    • 언어의 구조와 의미의 정확한 기술 없이는 프로그래밍이 불가능
    • 모호함 없는 언어 구현
    • 프로그래밍 과정에서 프로그램이 어떻게 동작할 것인가에 대한 문
    • 제 발생 시 유용
    • 프로그램 설계 과정을 규격화하는 방법
  • 언어 정의의 범주 형식 정의에는 구문(syntax) 정의의미(semantic) 정의가 있음
  • 언어 구문 정의
    • 언어 구문에 관한 정의는 형식화가 많이 되어 있음
    • 대부분의 언어가 문맥 자유 문법을 만족하며 BNF로 정의
    • 예 : Pascal의 if 문
    ::= if <조건> then <문> [ else <문> ]
  • 언어 의미 정의
    • 의미는 프로그램의 실행 시 어떤 일이 발생하는가를 기술
      • 예 : if 문에서 조건문이 거짓으로 판명 되었을 때, else 문 이하가 존재하지 않을 경우
    • 언어 의미론은 형식화 미비
    • 의미론의 형식적 정의 방법 : 디노테이셔녈 (denotational) 의미론, 액시어매틱 (axiomatic) 의미론
  • 어노테이션 -

댓글남기기