Computing Systems, 그리고 추상화

2022. 6. 14. 21:00IT/Concept

반응형

From [The Elements of Computing Systems]

The notion of abstraction, central to many arts and sciences, is normally taken to be a mental expression that seeks to separate in thought, and capture in some concise manner, the essence of some entity. In computer science, we take the notion of abstraction very concretely, defining it to be a statement of “what the entity does” and ignoring the details of “how it does it.”

-From [The Elements of Computing Systems]


1. 개요

컴퓨터 사이언스(CS)에서 추상화란 매우 중요한 개념이다.

추상화란 무엇이며, 왜 중요한 것일까?

 

2. 추상화란

추상화란 어떤 개체의 본질을 포착하여 간결한 방식으로 구별해 내는 정신적 활동이다.

즉, 사물의 본질을 자연 상태로부터 분리해내는 작업이다.

 

추상화는 왜 중요할까?

크게 두 가지가 있을 수 있겠다.

첫째로, 핵심에 집중할 수 있게 한다.

둘째로, 이식/적용이 용이하다.

 

 

예를 들어보자.

 

1. 운전을 하기 위해 우리가 자동차를 설계할 필요는 없다.

핸들, 엑셀 등의 인터페이스를 이해한다면 엔진의 구조, 서스펜션 등에 대한 이해가 적거나 없어도 운전이 가능하다.

사용자는 '운전'이라는 목적에 부합하는 '기능'에만, 다시 말해 필요한 핵심에만 집중할 수 있게 된다.

즉, 좋은 추상화는 객체의 핵심에 집중할 수 있게 한다.

 

2. 좋은 독서 습관은 그 자체로 가치가 있다.

이때, '좋은 독서 습관'은 좋은 추상화를 통해 '활자 습득 능력'으로 추출될 수 있다.

이렇게 추출된 '활자 습득 능력'은 빠르게 코드를 리뷰하고 정확하게 핵심을 포착할 수 있도록 적용가능하다.

즉, 좋은 추상화는 다른 상황에 이식 및 적용이 용이하다.

 

3. CS에서의 추상화란

컴퓨터는 추상화 그 자체다.

컴퓨터는 단순한 트랜지스터가 모이고 모여서 구성된다.

층층이 쌓인 추상화는 더 높은 단계의 기능을 구현한다.

따라서 사용자는 컴퓨터가 어떻게 동작하는지 몰라도 컴퓨터를 사용할 수 있다.

 

4. 적용

개발자란, 이러한 추상화를 정의하고 구현하는 사람이다.

잘 설계된 인터페이스는 막강한 위력을 발휘한다.

 

개발자뿐일까.

사실 모든 전문가는 좋은 추상화를 하는 사람들이다.

 

물리학자는 자연현상에서 수식을 추출해낸다. 수식은 현상의 핵심이며 다른 상황에도 적용가능하다.

비즈니스 또한 추상화다. 비즈니스란, 사람들의 문제를 해결하고 이를 바탕으로 수익을 창출하여 더 많은 사람들의 더 어려운 문제를 해결하는 지속가능한 사이클이다. 그리고 이는 비즈니스 기능들이 모듈화되고 계층화됨으로써 가능하다.

 

우리의 작은 일상부터 발견과 설계, 비즈니스에 이르기까지, 추상화란 어디에나 존재한다.


더 자세히 알아보기

관련서적: The Elements of Computing Systems: Building a Modern Computer from First Principles

관련강의: Circuits and Electronics

 

 

 

 

-학습을 진행하며 남기는 지식 포스팅-

 

-부족한 설명이 있다면 부디 조언 부탁드립니다-

 

 

 

 

이 포스팅은 쿠팡 파트너스 활동의 일환으로,

이에 따른 일정액의 수수료를 제공받습니다

반응형

'IT > Concept' 카테고리의 다른 글

var, let, const, 그리고 Hoisting  (0) 2022.08.01
웹의 역사, 그리고 프론트엔드  (0) 2022.07.28
Microservices Architecture 란?  (0) 2022.06.01
React의 Higher-order Component란?  (0) 2022.05.06
CSS의 BEM이란?  (0) 2022.04.27