본문 바로가기

소프트웨어,IT,컴퓨터공학 도서리뷰/혁신 서전, 고전 서적(Revolutionary Books)

인사이트 출판사의 프로(Pro) 시리즈 - 밑바닥부터 만드는 컴퓨팅 시스템 - 불 논리부터 컴퓨터 아키텍처, 운영체제까지 - [7/7] [명작이다.]

원저 : The Elements of Computing System

 

프랙털(Fractal)의 구조를 보는 듯한 컴퓨팅 시스템

 

 

추천도 : 명작이다... 컴퓨터 공부를 한다면 시간 내서 꼭 읽어봤으면 하는 책

★★★★★

 

읽은 기간 📅 : 2021년 2월 4일 ~ 2021년 4월 9일. [ 하루 25분씩... 40일 정도? ]

 

이 책을 추천하는 이들 👨‍👧

  • 하드웨어부터 운영체제까지의 흐름을 공부하고 싶은 사람들. [ 대략 학부 2~3학년 ]
  • 하드웨어부터 프로그래밍언어까지 살펴보고자 하는 사람들
  • 인사이트 출판사의 프로시리즈를 좋아하는 사람들.

 

난이도 🦈

 

하드웨어 지식이 있으면 좋을 것 같다.

 

이 책은 내가 본 것중 이론적인 어려움에 대해서 가장 은유적이고 직관적으로 설명했다고 생각되는 책이다.

 

실습 난이도는 최상이겠으나, 책의 내용을 이해하는 데는 복잡한 부분을 빼고는 매우 준수한 편이다.

 

관련된 책들 📚

  1. CODE [ 찰스 펫 졸드 ]
  2. 코딩을 지탱하는 기술 : 원리로 깨우치는 프로그래밍 기법 [ 니시오 히로카즈 ]
  3. 헬로 디지털 월드 [ 브라이언 W. 커니핸 ]

 

한 줄 평 ✍️

이 책은 컴퓨터 공학과 소프트웨어 공학의 경계를 이어주는 책이다.

 

컴퓨팅 세계의 원소까지 살펴볼 수 있는 책

 

개인적으로 학부 3학년 시절에 들은 컴퓨터 구조론보다 1000배는 더 나에게 이로운 책이다.

 

컴퓨터를 이해할 때 필요한 가장 실용적인 정보들만 모아서 사람에게 가장 이해하기 쉬운 메타포를 활용해서 정리한 책.

 

이제는 "컴퓨터 공학"이 저물고 "소프트웨어 공학"이 떠오르고 있다. [ 둘다 구분될 정도로 다른 것은 아니지만... 추구하는 방향이 다르다. ]

 

나는 그 중간에 머물렀던 학생이다.

 

복학하고 3학년이 되자 우리 학과가 "소프트웨어 공학과"로 개편한다는 소식을 들었다.

 

학과의 커리큘럼은 거의 고정적이었으나 팀 프로젝트 베이스로 과목들이 변경되면서 학생들끼리 프로젝트를 진행하여 소프트웨어를 제작하는 과목들이 많이 생기게 되었다.

 

나는 소프트웨어 공학쪽에 가까웠다. 팀 프로젝트로 협업이라는 개념을 배우고, 세분화된 기술 영역에서 자신이 자신 있어하는 기술력으로 서비스를 만들어 보는 것... [ 물론 고된 과정이다.. ]

 

하지만 학부 졸업 때 쯔음이 되자 정작 나의 머릿속에 남은 것은 프로젝트 데드라인에 대한 스트레스와 순간순간 프로젝트를 해결하기 위한 구글링 실력만이 늘었다.

 

컴퓨터 지식에 대한 본질과 깊은 지식들이 뇌에 머무르지 않은 것이다.

 

그와 동시에 취업 준비하면서 휘항찬란하게 쓴 자소서를 보면서 자괴감이 들었다.

 

그 느낌이 싫어서 대학원에 입학하게 되었고.. 지금의 연구실에 있게 되었다.

 

그리고 지금 인사이트의 Pro 시리즈들을 보면서 거목 같은 인물들의 무거운 지식들을 배워나가고 있다.

 

이 책은 실습까지 진행할 수 있다면... 정말 한 단계 초월할 수 있는 지식을 갖추는데 도움을 줄 수 있는 책이 아닐까 한다.

 

읽었던 Pro 시리즈 들 중에서 가장 훌륭한 메타포와 설명이 담겨 있는 책이라고 칭하고 싶다.

 

후반부로 갈수록 점점 복잡해지고 어려워지는 내용은...힘들긴 했지만 말이다. 

 

결국엔 모든게 추상화였다.

 

컴퓨터공학에서 소프트웨어 공학으로 넘어갈 수 있었던 배경은 무엇이었을까?

 

단순히 비즈니스가 빠르게 변화하고, 팀 프로젝트가 기반이 더 중요하기 때문일까?

 

프레임워크, 협업, 소프트웨어 툴, 프로그래밍 언어, 인공지능, 빅데이터 등등.. 활용할 수 있는 소프트웨어들이 너무도 잘 발달해서 이용하기만 하면 되기 때문일까? 

 

소프트웨어를 활용한 과목들은 고개를 들고, 하드웨어의 지식으로 접근해야 하는 네트워크, 운영체제, 데이터 처리, DB, 보안 등등은 고개를 내리고 있다.

 

나도 그랬다. 학부시절 나는 소프트웨어한 지식을 추구했다. 

 

누가 내부 커널을 뜯어볼까?

 

누가 코어한 보안 로직을 짤까?

 

네트워크는? DB는?

 

모두가 잘 만들어진 소프트웨어를 조작하지 않는가?

 

지금 보면 좀 안일했다.

 

컴퓨터공학이 발전한 배경과 지금의 소프트웨어 공학으로 나아간 배경 모두에는 "추상화"가 정답이었으니까 말이다.

 

우리는 직접 인터페이스를 마주하지 않는다. 추상적으로 기능 처리만 이해하면 그만이다.

 

네트워크? OSI계층을 이해하면서 통신 로직을 건드려야 할까? 아니다 운영체제가 알아서 기능을 연결해준다.

 

DB? 내부 트랜잭션을 고려하면서 로직을 짜야할까? DB가 알아서 해준다.

 

보안도 마찬가지다. 통신이랑 암호화는 굵직한 라이브러리가 다 해준다.

 

거기다 프로그래밍 언어도 함수형 패러다임의 힘입어 서술적으로 더더욱 추상적인 코드를 제공할 수 있도록 변화하고 있다.

 

IT기반의 대부분의 서비스에서 구체적으로 건드려야 할 부분들이 사라지고 있다.

 

하지만 내부 로직까지 접근하지 않더라도 발전사까지는 알아보는 게 좋다고 생각한다.

 

현재의 인류는 어떻게 추상화과정을 거치면서 발전해 나가는지 살펴보는 것이다.

 

그 과정에서 우리는 놀라운 추상화 메커니즘들을 살펴보게 된다.

 

진정한 디자인은 보이지 않는 편리함을 제공해야 한다고 배웠다.

 

현재 우리가 프로그래밍하는 모든 편리함의 배경에는 수많은 학자와 엔지니어들의 노력들이 숨어있던 것이다.

 

그리고 그 과정에서 나는 부분과 전체의 구조가 반복되는 것을 보았다.

 

가상 머신(VM)은 하나의 운영체제를 보는 것 같았고

 

HDL(하드웨어 기술 언어)의 경우는 프로그래밍 언어를 보는 것과 같았다. HDL도 추상 화과 구현부로 구성된다.

 

내가 공부하고 있는 매우 놀라울 정도로 추상화된 코드 안에는 그 코드를 처리하기 위한 추상부가 또 숨겨져 있는 것이었다.

 

너무도 놀라웠다. 그래서 재밌게 읽은 책이다.

 

실습은 진행해보지 않아서 아쉬움이 남는다. 1년 커리큘럼으로 이 책을 실습까지 진행해볼 수 있는 과정이 생긴다면

 

정말 좋은 과목이 되지 않을까 생각한다.

 

정말로 놀랍고 고마웠던 책. 

 

이상으로 후기를 마쳐본다.

 

반응형