추상화의 정의
- 특정 대상에서 필수 속성만을 뽑아내어 상위 개념으로 범주화
- 복잡한 정보 속에서 중요한 부분만을 선택하여 일반화
- 추상화 = 일반화, 분류, 부류화
- 현생 인류의 핵심 특징 중 하나
- 인간의 언어 발달과 밀접하게 연계
- 범주화된 개념이 더 포괄적일수록 높은 추상화 수준
- 높은 추상화 수준은 더 많은 사례를 포괄하는 정보가 포함되며, 반면 낮은 추상화는 더 구체적이고 국지적
- A의 한 개 문장 = B의 여러 개 문장
- A의 개념 하나를 구현하기 위한 B의 방식이 여러 개 존재
- 구체화, 특수화와는 반대
추상화의 예
- 물리적 외양의 추상화: 비행기 프라모델, 지도, 그래프 모형화
- 분류의 추상화: 생물의 계통수, 직장 조직도 / 특정 범주 안에 속하는 여러 개체를 분류하여 설명
- 언어적 추상화: 사전의 표제어 / 간단히 특정 대상을 추상화
- 수의 추상화: 기호로서의 수를 통해 다양한 추상화 / 3
- 공산품의 추상화: TV, 컴퓨터 본체, 자동차 등 복잡한 구성 요소를 가지는 공산품, 프로그램
추상화의 중요성
- 여러 분야 간의 연관성 파악
- 한 분야의 기술을 다른 분야에서 활용
- 일반화된 지식을 체계적으로 조직화
- 고도로 추상화된 개념은 학습 난이도 높음
- 추상화의 궁극적인 목표는 복잡성 제어
- 인간의 인지 능력에는 한계가 있으므로 복잡한 개념을 간소화하여 다루기 쉽게
컴퓨터 프로그램과 추상화
- 예제 1
- 학생 점수에 대한 통계치를 계산하는 프로그램
- 점수를 컴퓨터에 한 번만 입력한 뒤 여러 번 사용할 수 있도록 저장
- 데이터의 재사용성과 효율성을 높이기 위한 추상화
- 예제 2
- 학생 정보 시스템을 구축
- 학적 정보, 신체 데이터, 환경 데이터 등 각 학생에 대한 모든 정보
- 컴퓨터 내에 이를 추상화하는 필요성
- 매트릭스 영화의 예시
- 실세계와 사이버 세계의 모델링 과정
- 추상화가 현실 세계의 정보를 컴퓨터 내에서 모델링하는 데 어떻게 적용되는지
- 프로그램 내에서의 추상화
- ‘작은 세상’을 창조하는 프로그래머의 역할
- 프로그래밍 = 프로그래밍을 통해 현실을 제한적으로 모델링하고 시뮬레이션하는 과정 >> 추상화로 설명
- 예제 3
- 하노이의 탑
- 수학적 개념을 프로그래밍으로 구현하는 과정
- 문제 해결과정을 추상화
- 하노이의 탑
프로그래밍 언어와 추상화
- 초기 프로그래밍
- ENIAC의 실제 배선 작업을 통해 프로그래밍
- 프로그램 내장 개념이 도입되며 컴퓨터 프로그래밍이 기계어로 추상화
- 어셈블리어와 고급 프로그래밍 언어
- 어셈블리어는 기계어의 추상화
- 고급 프로그래밍 언어는 어셈블리어를 더욱 추상화한 것
- 고급 언어의 명령어가 여러 어셈블리 명령어로 이루어짐 >> 추상화 계층 설명
- 프로그래밍 언어에서의 데이터 추상화와 제어 추상화
- 데이터와 제어라는 두 가지 측면에서의 추상화
- 변수, 상수, 타입 등 기본적인 데이터 추상화
- 분기문, 반복문 등 제어 추상화
'[ Computer Science ]' 카테고리의 다른 글
[Programming Language] 6. 구문 (4) | 2024.11.01 |
---|---|
[Programming Language] 5. 설계 원칙 (0) | 2024.10.31 |
[Programming Language] 4. 프로그래밍 언어 개발의 역사 (6) | 2024.10.31 |
[Programming Language] 3. 전체에 대한 개관 (6) | 2024.10.31 |
[Programming Language] 1. 프로그래밍 언어론 개요 (0) | 2024.10.31 |