추상화 (Abstract)

Rex·2022년 11월 23일
0

인생 프로그래밍

목록 보기
23/33
post-thumbnail

본 글의 저작권과 원문은 https://blog.naver.com/sweetie_rex 에 있습니다.
현재의 글은 업데이트가 되지 않음을 유의해서 읽어주세요.
최신 업데이트 된 글을 읽으시려면 아래의 링크를 확인해주세요.

추상화(Abstract)

이 책에서 정말 가장 핵심적인 단어를 설명하려고 해.

갑자기 왠 추상화냐고? 이 다음에 '함수(Function)' 에 대해 공부할건데, 그 전에 추상화 개념을 꼭 알아야 해.
함수는 우리 인생에 특정 영역의 기능을 추상화(Abstract) 하여 구현해놓은 것이기 때문이지.

앞으로 이 책에서 '추상(Abstraction)', '추상화(Abstract)' 라는 말을 아주 많이 사용하게 될 거야. 이 단어를 잘 이해하는 것이 정말정말 중요해.
누군가가 나에게 "이 책에서 가장 중요한 한 단어를 선택하라." 라고 말한다면 나는 주저하지 않고 "추상화(Abstract)" 라고 말할 거야.

TMI: 나의 인생 좌우명이 "from Abstraction to Realization" 일 정도로 나는 추상화를 아주 중요하게 생각 해.

추상화(Abstract) 가 뭔데?

추상화는 2종류의 뜻이 있어. 하나는 미술(그림)에서 나오는 '추상화' 이고, 다른 하나는 어떤 복잡한 사물이나 현상, 형태를 핵심적인 요소만 추출해서 단순하게 만드는 것 을 말해.
이 책은 미술책이 아니니 여기서 말하는 모든 추상화는 두번째 의미의 추상화야.

네이버 국어사전에서 추상화를 검색하면 위와 같은 결과를 볼 수 있어.

추상화의 본질은 '복잡한 문제를 단순하게 만드는 것' 이야.
추상화(Abstract)의 반대말은 '구체화(Embody)' 이고,
추상(Abstraction)의 반대말은 '구현(Embodiment)' 이야.

대표적인 추상화의 예시는 지하철 노선도가 있어. 지하철을 타고 잠실역에서 강남역까지 간다고 생각해보자. 지하철 노선도를 보면 어때? 잠실역에서 강남역까지 가는 거리가 명확히 나와있어? 그리고 그 지형지물이 정확하게 표시 되어있어? 그렇지 않지. 우리가 지하철을 이용할 때 알아야할 핵심적인 요소는 몇 호선을 타고, 어떤 정거장을 지나가야 하는가야. 정확하게 몇 km 떨어져있느냐, 가는길에 어떤 사거리가 있느냐, 어떤 편의점이 있느냐 같은건 중요하지 않지.
지하철을 탈 때 자주 겪는 문제를 원활히 해결하기 위해 '핵심적인 요소' 만 추상화(Abstract)해서 만든게 지하철 노선도야.

추상화의 예시로 '지하철 노선도' 라는 결과물을 얻는 과정을 보여줄게.

완벽하게 구체적인 상태

낮은수준의 추상화를 진행한 상태

추상화를 거친 상태

더 높은 추상화를 거친 상태

이렇게 추상화를 거쳐 우리가 본질적으로 원하는 정보(지하철 노선도)를 얻어냈어.

결론적으로 추상화(Abstract) 란?

  • 핵심적인 요소만 추출해서 단순하게 만드는 것
  • 복잡한 문제를 단순하게 만드는 것
  • 문제를 쉽게 해결하기 위해 핵심적인 요소만 뽑아내는 것
  • 중요하거나 꼭 필요한 특징만을 추출해서 모아놓은 것

이렇게 정리할 수 있어.
그리고 나는 프로그래밍의 추상화 를 이렇게 표현하고 싶어.

인생에서 일어나는 일들 중 불필요한 것들을 걷어내고, 본질적이고 핵심적인 내용들만 뽑아내어 코드를 작성하는 것.

프로그래밍에서 가장 중요한 능력은 '추상화' 능력이야. 그래서 이렇게 하나의 주제로 따로 설명했어. 이 짧은 영역에서 '추상' 이라는 단어가 30번이 넘게 나와. 얼마나 중요한지 이해하겠지?
이 추상화 능력을 키우는 것은 프로그래밍을 넘어서, 개발자가 되는 것을 넘어서, 우리들의 인생 전반적으로 도움이 될거야.

프로그래밍은 추상적(Abstract)으로 해야해.
바로 다음부터 배우게 될 함수(Function)는 바로 추상화의 '결과물' 이라고 말할 수 있어. 그래서 함수를 배우기 전에 추상화에 대한 개념을 배운거야.
함수란, 동일한 목적을 가진 여러가지 소스코드를 한 곳으로 추상화한 거야, 소스코드 묶음을 '이런 기능' 을 하는 함수라고 정의하는거지. 지하철 노선을 보기 위해 일반 지도를 보진 않는 것 처럼.

인생에서 일어나는 모든 일, 머릿속의 모든 상상들을 추상화하여 프로그래밍 하자. 그리고 동일한 목적을 가진 코드묶음을 함수로 만들어서 유용하게 사용하자.

profile
🔥 from Abstraction to Realization

0개의 댓글