TL;DR
우리는 인간의 일을 대신 시키기 위해 컴퓨터를 만들었다.
하지만 물리적 한계로,
컴퓨터는 인간보다 효율이 떨어지고, 멍청하고 융통성이 없다.
이 한계를 극복하여
인간 발끝이라도 따라갈 수 있게 만드려고
<자료구조>와 <알고리즘>이라는 방법론을 컴퓨터에 이식시켜준거 같다.
이를 통해 컴퓨터는
인간의 기억 능력과 최적화 능력을 모방할 수 있게 되는 것이다.
우리는 컴퓨터를 다루고, 개선시켜나갈 인간이기에
<자료구조>와 <알고리즘>을 열심히 공부해야 되는 것이다.
주니어 개발자인 나에게
자료구조와 알고리즘은
개발 취업 전선에서 중요한 것이지만
수포자 출신인 나에게는
두려움의 대상일 뿐이었다.
그러나
취업 잘하는 것은
두려움을 격파하는 데 도움이 되지 않았는지
학습을 늘 미루고 미루고 미뤄왔다.
그리고
이제 진짜 공부해보려고 마음을 먹고
두려움을 흥미로 바꿔보고자
자료구조와 알고리즘 학습의 이유를 생각해보았다.
아래는
최근 뇌과학에 흥미가 생기고,
개발 공부를 시작하고 주워들은 이런 저런 정보들로 만들어진
나의 순수 뇌피셜이다.
일단 나에게는 동기부여가 되었다.
혹시 나같은 사람이 있다면
내 뇌내망상이 도움 되길 바란다.
우리 인간은
뇌를 대신해 일을 해줄 컴퓨터를 만들었다.
우리 뇌는
눈코입 등 감각기관을 통해서 들어온 신호를 감지하여
어떤 일들을 수행해 낸다.
컴퓨터에게 감각기관은
키보드, 마우스, 마이크 등이 될 수 있겠다.
이로 들어온 신호를
뇌라고 할 수 있는 CPU와 부수적인 하드웨어가
일을 처리해내는 것이다.
우리는
우리 뇌가 어떤 방법으로 입력된 신호를 처리해내는지
알지도 못한 채 잘 살고 있지만
컴퓨터 공학자들은
이걸 컴퓨터에게 대신 시키기 위해
뇌의 작동 방식을 닮은 일 처리의 방법론을
단순한 기계가 처리 가능한 수준으로 만들었을 것이다.
이에 따라 탄생한
기계가 뇌처럼 돌아가는 방법론 중 몇가지(아마도 핵심적 방법론)가
자료구조와 알고리즘일 것이다.
우리 뇌는
일을 처리하기 위해 기억을 하고,
기억을 꺼내고,
(물건을 집는 것에도 기억이 작용을 한다.
내 눈앞에 물건이 있다는 것을 단기적으로 기억하기 때문에 집을 수 있는 것.)
어떻게하면 효율적으로 일을 할지 끊임 없이 고민한다.
(우리 뇌는 생존과 번식이 제 1번 목표이고,
이를 위해 현재 놓여있는 환경에 적응하기 위해 최대로 노력한다.
적응이란 곧, 생각없이 그냥 편하게 무엇인가 할 수 있는 상태인 것이고,
적응하기 위해 우리는 모든 다양한 일을
생각없이 할 수 있는 수준으로
단순화하고 일반화하고 정형화하고 효율화한다.
어린 아이일땐 수저와 젓가락으로 밥먹는 게 인생 최대 난제이지만
현재는 밥먹는 것보다 쉬운일이 없는 것처럼..)
말하자면
자료구조는 우리 뇌가 하는 기억의 방식일 것이고,
알고리즘은 정형화 가능한 일들의 효율적인 일처리 방식일 것이다.
우리 뇌를 대신하기 위해 컴퓨터를 만들었지만,
또 동시에,
컴퓨터를 어떻게 더 잘 사용할 것인가,
어떻게 더 나은 컴퓨터를 만들 것인가 고민하는 인간이기 때문에
컴퓨터의 작동방식을 이해하는 것이 중요하다
그래서 자료구조와 알고리즘을 배우는 것이다.
죽어도 이해하기 힘든 부분이 생기고
그만 두고 싶을 땐 늘 이 목적을 생각하자.
우리는 컴퓨터의 작동방식보다 더욱 뛰어난 뇌를 가지고 있고,
이 뇌를 모방한 컴퓨터를 잘 이해해서,
잘 사용하려고 하고 있다는 걸!
'CS Fundamentals > DSA' 카테고리의 다른 글
[Algorithms] 알고리즘 종류 한꺼번에 훑어보기 (0) | 2024.01.26 |
---|---|
[Graph] 그래프의 종류와 관련 알고리즘 한꺼번에 훑어보기 (0) | 2024.01.23 |
[Algorithms] 백준 2805 풀이 - 왜 이진 탐색(Binary Search)으로 해결할까? (0) | 2024.01.17 |
[뇌피셜] 자료구조와 알고리즘을 배우는 이유 (학습 시작 후) (0) | 2024.01.15 |
[Data Structures] 자료구조의 종류 (feat. ADT, Concrete Data Structure) (0) | 2024.01.14 |