반응형

@자바스크립트로 배우는 SICP

자바스크립트 코드로 배우는 컴퓨터 프로그램의 구조와 해석

 

 

 

 

 

'자바스크립트로 배우는 SICP' 라는 재목을 보고 요즘 자바스크립트가 인기가 많은데, 

또 새로운 방법으로 자바스크립트를 사용하는 SICP라는개 나왔나 보다 하였으나, 

이 책은 제목이 좀 햇갈리게 번역이 된게 아닌가 싶다.

 

이 책의 원 제목은 'Structure and Interpretation of Computer Programs' 으로 줄여서 'SICP' 라고 한것이였으며, 

책의 위에 작게 적혀 있는 '컴퓨터 프로그램의 구조와 해석' 이라고 적혀 있는 이게 실제 숨은 책의 제목인거 같다.

 

 

중간에 작게 적혀 있는 글씨를 보면 'Structure and Interpretation of Computer Programs: Javascript Edition' 이라고 

적혀 있는데, 이 책은 3번째 개정판으로 이전에 출간되었던 첫번째판(1984년)과 두번째판(1996)년은 리스프(Lisp)의 

변종 언어인 스킴(Scheme) 언어를 사용하여 설명이 되어 있었다고 하며, 이번에 출간된 책은 기존에 스킴으로 

되어 있는 코드들을 자바스크립트로 각색을 하여 출간이 된 책이라고 한다.

 

만약 세월이 흘러 개정된 4판이 출간이 된다면, 그때는 파이썬이나 다른 새로운 언어로 각색이 되어 

출간이 되지 않을까도 생각해 본다.

 

 

앞에서도 적었다 싶이 이 책은 자바스크립트를 배우기 위한 책으로 착각을 한다면, 

아마도 바로 책을 덮을 수도 있을 것이다. 이 책은 900페이지 가까이 되는 얇지 않은 책의 분량으로, 

뒤에 참고문헌과 색인을 제외하더라도 824페이지가 되기 때문에 프로그래밍에 대해 깊이 있게 관심있는 

분들이 아니라면 두께만 보고도 부담감이 갈수 있는 책이다.

 

 

 

 

 

@자바스크립트로 배우는 SICP

계산적 과정을 서술하려면 적당한 언어가 있어야 한다. 그런 용도로 이 책에서는 자바스크립트JavaScript라는 프로그래밍 언어를 사용한다. 우리가 일상적인 생각들을 자연어(영어, 스웨덴어, 중국어 등)로 표현하듯이, 그리고 정량적(quantitative) 현상들을 흔히 수학 표기법으로 서술하듯이, 계산적 과정에 관한 절차적인 생각들을 이 책에서는 자바스크립트로 표현한다. 

 

 

이 책을 보기 위해서 꼭 자바스크립트를 알아야 하지는 않으며, 자바스크립트를 모르더라도, 책의 예제들을 

보면서 자바스크립트로된 코드들을 이해할수 있으며, 기본적인 프로그래밍에 대한 경험이 있다면, 

어떤 프로그래밍 언어라고 하더라도 비슷한 구조로 되어 있기 때문에, 이해하는데는 어려움이 없을 것이고, 

다른 언어로 응용도 할수 있을 것으로, 책을 보고 이해하는데는 어려움이 없을 것이다.

 

이 책은 총 5개의 장으로 구성이 되어 있는데, 1장에서 3장 까지는 모든 고수준 프로그래밍 언어에 공통된 개념들을 

다루고 있어서, 프로그래밍을 공부해본적이 있거나 사용해본적이 있다면 한번쯤 들어봤을 것이고, 

작성하고 있는 프로그래밍 코드 안에 포함된 내용들로, 이 책은 자바스크립트와 같은 특정 프로그래밍 언어를 

공부하려는게 아닌 그 프로그래밍 언어의 구조에 대해서 깊숙히 파고들고 이해해보며 왜 그렇게 

프로그래밍을 작성하는지를 알아보고 해석하고 연구하는 책입니다.

 

 

 

 

@자바스크립트로 배우는 SICP

다른 모든 인위적이고 창조적인 활동에서 그렇듯이, 어떠한 동작의 결과를 머리속에서 그리는 것(시각화)은 전문 프로그래머가 되는 데 꼭 필요한 능력이다. 예를 들어 전문 사진작가가 되려면 장면을 어떻게 바라봐야 할지, 다양한 노출 설정과 후처리 방법으로 사진을 인화했을때 각 영역이 얼마나 어둡게 나올 것인지 등을 예측하는 방법을 배워야 한다. 그런 것들을 예측 할 수 있어야 그로부터 거꾸로 추론해서 프레임, 조명, 노출, 인화 과정을 계획해서 원하는 효과를 얻을 수 있다. 프로그래밍에서도 마찬가지이다. 프로그래밍에서 우리는 하나의 계산적 과정이 취할 일련의 동작들을 계획하며, 그러한 과정을 프로그램의 요소들로 제어한다. 원하는 행동을 보이는 프로그램을 안정적으로 구축하는 방법은 그런 능력을 갖추고 나서야 비로소 배울 수 있다.

 

프로그래밍이라는게 수학적인 계산을 컴퓨터가 수행하도록 작성하기에 책에서 수학적인 계산 부분을

자바스크립트 코드로 작성을 하고 설명해주고 있기 때문에, 수학이 어려우신 분들은 다시 어려우실수 있으나,

자바스크립트 코드로 이해를 하시고 넘어가시면 되기 때문에, 수학에 대한 큰 부담은 가지시지 않으셔도 될듯 합니다.

 

 

 

 

@자바스크립트로 배우는 SICP

데이터 추상화의 핵심은 복합 데이터 객체를 사용하는 프로그램이 "추상 데이터(abstract data)"에 대해 작동하도록 프로그램의 구조를 짜는 것이다. 다른 말로 하면, 프로그램은 데이터에 관해 최소한의 가정만(주어진 과제를 수행하는 데 꼭 필요한 것만) 두어야 한다. 그와 함게, '구체적(concrete)' 데이터 표현을 해당 데이터를 사용하는 프로그램과는 독립적으로 정의해야 한다. 시스템의 이 두 부분 사이의 인터페이스는 선택자(selector)라고 부르는 함수와 생성자(constructor)라고 부르는 함수들의 집합으로 구성된다. 이 인터페이스는 구체적인 표현을 이용해서 추상 데이터를 구현한다.

 

책에서 함수를 이용한 추상화, 데이터를 이용한 추상화, 메타언어적 추상화로 총 5개의 장에서 3개의 장의 제목에

추상화라는 제목이 붙어 있는데, 추상화란 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을

간추려 내는 것을 말하며, 프로그래밍에 핵심적인 부분이기에 꼭 이해를 해야 합니다.

 

 

 

 

https://web.mit.edu/6.001/6.037/sicp.pdf

 

고맙게도 MIT 대학에서 2판을 무료로 공개하고 있는듯 하니, 관심있는 분들은 참고해보셔도 좋을거 같다.

 

 

 

 

틈틈히 시간을 내서 계속 보고 있지만, 아직까지 책의 많은 부분을 보지를 못하고 있으며, 

프로그래밍을 공부하면서 각 프로그래밍 책에서 간단하게 이렇게 사용하는거다라고만 알려주는 것들을 

좀더 깊이 있게 이해할수 있어서 프로그래밍을 하는데 깊이 있는 이해를 하는데 많은 도움이 되고 있습니다.

 

IT개발자로 준비를 하시는 전공자분들은 아마도 대학에서 한학기 수업으로 수강을 하신 분들도 계실듯 하고, 

아니신분들이시라면 꼭 읽어보시는 것을 추천드리며, 비전공자 분들이시라면 개발자로 취업을 준비하는데, 

큰 도움이 될듯 합니다.

 

 

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

반응형

+ Recent posts