본문 바로가기
[ Computer Science ]

[Programming Language] 2. 추상화

by dev charlotte 2024. 10. 31.

추상화의 정의

  • 특정 대상에서 필수 속성만을 뽑아내어 상위 개념으로 범주화
  • 복잡한 정보 속에서 중요한 부분만을 선택하여 일반화
  • 추상화 = 일반화, 분류, 부류화
  • 현생 인류의 핵심 특징 중 하나
  • 인간의 언어 발달과 밀접하게 연계
  • 범주화된 개념이 더 포괄적일수록 높은 추상화 수준
  • 높은 추상화 수준은 더 많은 사례를 포괄하는 정보가 포함되며, 반면 낮은 추상화는 더 구체적이고 국지적
  • A의 한 개 문장 = B의 여러 개 문장
  • A의 개념 하나를 구현하기 위한 B의 방식이 여러 개 존재
  • 구체화, 특수화와는 반대

추상화의 예

 

  • 물리적 외양의 추상화: 비행기 프라모델, 지도, 그래프 모형화 
  • 분류의 추상화: 생물의 계통수, 직장 조직도 / 특정 범주 안에 속하는 여러 개체를 분류하여 설명
  • 언어적 추상화: 사전의 표제어 / 간단히 특정 대상을 추상화
  • 수의 추상화: 기호로서의 수를 통해 다양한 추상화 / 3
  • 공산품의 추상화: TV, 컴퓨터 본체, 자동차 등 복잡한 구성 요소를 가지는 공산품, 프로그램

 

 

추상화의 중요성

 

  • 여러 분야 간의 연관성 파악
  • 한 분야의 기술을 다른 분야에서 활용
  • 일반화된 지식을 체계적으로 조직화
  • 고도로 추상화된 개념은 학습 난이도 높음
  • 추상화의 궁극적인 목표는 복잡성 제어
  • 인간의 인지 능력에는 한계가 있으므로 복잡한 개념을 간소화하여 다루기 쉽게

 

 

컴퓨터 프로그램과 추상화

  • 예제 1
    • 학생 점수에 대한 통계치를 계산하는 프로그램
    • 점수를 컴퓨터에 한 번만 입력한 뒤 여러 번 사용할 수 있도록 저장
    • 데이터의 재사용성과 효율성을 높이기 위한 추상화
  • 예제 2
    • 학생 정보 시스템을 구축
    • 학적 정보, 신체 데이터, 환경 데이터 등 각 학생에 대한 모든 정보
    • 컴퓨터 내에 이를 추상화하는 필요성
  • 매트릭스 영화의 예시
    • 실세계와 사이버 세계의 모델링 과정
    • 추상화가 현실 세계의 정보를 컴퓨터 내에서 모델링하는 데 어떻게 적용되는지
  • 프로그램 내에서의 추상화
    • ‘작은 세상’을 창조하는 프로그래머의 역할
    • 프로그래밍 = 프로그래밍을 통해 현실을 제한적으로 모델링하고 시뮬레이션하는 과정 >> 추상화로 설명
  • 예제 3
    • 하노이의 탑
      • 수학적 개념을 프로그래밍으로 구현하는 과정
      • 문제 해결과정을 추상화

 

프로그래밍 언어와 추상화

  • 초기 프로그래밍
    • ENIAC의 실제 배선 작업을 통해 프로그래밍
    • 프로그램 내장 개념이 도입되며 컴퓨터 프로그래밍이 기계어로 추상화
  • 어셈블리어와 고급 프로그래밍 언어
    • 어셈블리어는 기계어의 추상화
    • 고급 프로그래밍 언어는 어셈블리어를 더욱 추상화한 것
    • 고급 언어의 명령어가 여러 어셈블리 명령어로 이루어짐 >> 추상화 계층 설명
  • 프로그래밍 언어에서의 데이터 추상화와 제어 추상화
    • 데이터와 제어라는 두 가지 측면에서의 추상화
    • 변수, 상수, 타입 등 기본적인 데이터 추상화
    • 분기문, 반복문 등 제어 추상화