[PL] 1. 프로그래밍 언어 소개

Jimin·2022년 4월 18일
0

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

  • 컴퓨터와 의사소통하기 위한표기법
  • 기계가 읽을 수 있고 사람이 읽을 수 있는 형태로 계산을 서술하기 위한 표기체제
  • 어셈블리어 언어: symbol 사용 → 기계 종속적/ 저급 수준의 추상화

2. 프로그래밍 언어를 배워야하는 이유

→ 프로그래밍 언어 고찰

  • 언어 특징들에 대한 기본 개념
  • 특징들의 구현과 이때 발생하는 문제점
  • 특징들의 설계에 대한 기본 개념
  • 실제 언어의 도입 예: 비교 분석


    ▷ 프로그래밍 언어를 고찰함으로써 얻는 장점
    1) 사용하고 있는 언어의 이해와 효율적인 알고리즘 작성 → 유용한 프로그래밍 구사 능력
    2) 프로그래밍 언어 선택 능력, 새로운 프로그래밍 언어의 학습 능력/ 언어 설계 능력

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

▶ 추상화 (abstraction)

  • 주어진 작업이나 객체를 속성들의 일부분을 가지고 필요한 만큼 묘사할 수 있는 방법을 지원하는 것

  • 필수적인 속성만으로 주어진 것을 묘사하므로 나머리 속성들은 추상화, 은닉 또는 삭제 됨

  • 추상화 범주

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

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

  • 기본 추상화: 가장 지역적인 정보
  • 구조 추상화: 보다 전역적인 정보인 프로그램의 구조
  • 단위 추상화: 단위 프로그램 전체

▷ 자료 추상화

  • 기본 추상화: 컴퓨터 내부 자료 표현 → 추상화
    • ex) 기억장치의 장소를 변수로 추상화
  • 구조 추상화: 관련된 자료의 집합을 추상화
    • ex) 배열, 렌코드 (구조형 자료)
    • 구조형에 새 이름 부여 기능 (새 차원의 추상화)
  • 단위 추상화: 자료의 생성과 사용에 대한 정보를 한 장소에 모아두고, 자료의 세부 사항에 대한 접근을 제한하는 도구
    • 자료형의 구조 변경이 프로그램 전체에 영향을 주지 않으며, 자료 구조의 세부사항을 무시함

▷ 제어 추상화

  • 기본 추상화: 몇 개의 기계 명령어를 모아 이해하기 쉬운 추상 구문화

    • ex) 배정문, 분기문 (goto문 or if문 등)
  • 구조 추상화: (검사 값에 따라) 분할된 명령어 그룹 수행

    • ex) 택일문(if/case/switch), 구조화 반복문(for/repeat while/loop-exit
    • 강력한 구조 제어: 부프로그램(프로시저 추상화) → 새 활성화 환경
  • 단위 추상화: 프로시저의 집합을 추상화

    • 자료관리 프로그램에서 평균, 표준편자 등 통계 작업 프로그램들을 모아 하나의 단위 프로그램화

    • 지원 도구(library 형태 지원)

    • 기타 제어 추상화: 병행 프로그래밍(동기화, 통신 개념 지원)

* 추상화란? readablilty 증가 목적

4. 계산 전형

1) 명령형 언어 (절차적 언어)

  • 특징:
    • 명령의 순차적 실행
    • 변수 사용
    • 배정문 사용
  • 문제점:
    • 폰 노이만 병목 현상 발생 (순차 실행)
    • 많은 자료의 동시 계산. 비결정적 계산, 순서에 의존하지 않는 계산 등에 비효율적
      → 비절차적 언어: 함수형 언어, 논리형 언어

2) 함수형 언어 (적응형 언어): 함수 평가와 함수 적용을 기본으로 함

  • 특징: 함수의 평가 및 호출 방법을 제공
    • 함수의 평가 및 호출 방법을 제공
    • 함수 배정문이 없음
    • 반복 연산은 재귀적 함수 이론에 의해 기술됨

3) 논리형 언어 (선언적 언어)

  • 특징
    • 기호 논리학에 근거
    • 계산의 실행 순서(how)대신 무엇을 하려고 하는가(what)를 선언
    • 반복이나 선택 개념 불필요

4) 객체 지향 언어

  • 특징
    • 객체에 기반을 둔 언어
    • 객체는 클래스로 그룹화

5. 언어 정의

  • 언어의 정확한 형식 정의가 필요한 이유?
    • 언어의 구조와 의미의 정확한 기술 없이는 프로그래밍이 불가능함
    • 모호함 없는 언어 구현
    • 프로그래밍 과정에서 프로그램이 어떻게 동작할 것인가에 대한 문제 발생 시 유용함
    • 프로그램 설계 과정을 규격화하는 방법

  • 언어 정의의 범주: 구문 정의와 의미 정dml
    1) 구문 정의: 언어 구문에 대한 정의는 형식화가 많이 되어있음
    - 대부분의 언어가 문맥 자유 분법을 만족하며 BNF로 정의
    2) 의미 정의: 의미는 프로그램 실행 시 어떤 일이 발생하는가를 기술

0개의 댓글