profile image

L o a d i n g . . .

 

책정보

저자: 해럴드 에이블슨, 제럴드 제이 서스먼, 마틴 헨즈, 토비아스 브릭스타드, 줄리 서스먼 공저 / 류광 역
출판사: 한빛미디어
출간: 2022년 12월 30일
원서 : Structure and Interpretation of Computer Programs: JavaScript Edition


책소개

모든 프로그래머는 마법사다

난해한 프로그래밍 언어로 만들어진 컴퓨터 프로그램. 프로그램은 일정한 패턴을 따라 주어진 과제를 해결해 나간다. 즉, 프로그래머는 프로그램이라는 주문을 외워 컴퓨터에 깃든 영혼을 부리는 마법사인 셈이다. 여기 모든 마법사를 위한 마법사 책이 찾아왔다. 이 책은 모든 프로그래밍 언어에서 유용한 사고법과 그 표현법을 소개해 프로그램을 효율적으로 조직화하는 법을 알려준다. 이제 뛰어난 마법사의 비법을 알아보자.


출판사리뷰

SICP, 자바스크립트를 만나다.
프로그래밍의 바이블 『컴퓨터 프로그램의 구조와 해석』(SICP)이 자바스크립트를 만났다. 1985년부터 지금까지 전 세계 수많은 교육기관에서 교과서로 채택되며 컴퓨터 과학 교과과정에 영향을 미친 이 책은 프로그래머 사이에서 마법사 책(Wizard Book)이라는 별명으로 유명하다. SICP는 사실 모든 프로그래밍 언어에서 사용하기 유용하고 강력한 프로그램 조직화 방법을 소개하지만 스킴(Scheme)이라는 언어를 사용해 진입 장벽이 있었다. 이 책은 그런 SICP를 많은 개발자들에게 친숙한 언어인 자바스크립트로 옮긴 책이다. 여러분의 사고법을 바꿔줄 설명과 이를 적용해보는 연습문제를 통해 마법 능력을 한껏 키워보자.

대상 독자

- 프로그래밍적인 사고법을 배우고 싶은 학생
- 효율적인 프로그램을 만들려는 개발자
- 스킴이라는 생소한 언어 때문에 SICP에 엄두를 내지 못했던 독자

배우는 내용

- 고수준 프로그래밍 언어에 공통으로 적용되는 프로그래밍 개념
- 다른 언어를 사용해 새 언어를 확립하는 기술
- 하드웨어 설계자의 관점에서 프로그래밍 요소를 구현하는 법

추천사

“‘더 나은 프로그래머가 되려면 어떻게 해야 하나요?’라고 묻는 이에게 이 책을 추천한다.”
_더글러스 크락포드, 『자바스크립트는 왜 그 모양일까?』의 저자

“뛰어난 재능과 탁월한 교수법, 새로운 내용으로 세심하게 개정하고 현대화한 고전.”
_올리비에 댄비, 예일-NUS 대학

“프로그래밍 서적은 프로그래밍 언어에 얼마나 많은 영향을 받을까? 이 책은 SICP를 자바스크립트로 훌륭하게 옮겼다. 오늘날의 프로그래머에게 탁월한 선택이다.”
_피터 판 로이, 루뱅 카톨릭 대학교


 

자바스크립트를 더 공부하고 싶은 마음에 여러가지 리뷰 가능한 책들 중 '자바스크립트 SICP'를 선택하게 됐다. 책 소개에도 800페이지가 넘어서 긴장하긴했는데, 실제로 받아보니 정말 두꺼웠다. 좀 더 편하게 공부하기위해 근처 제본소에 가서 분철을 했다.

 

책은 내 생각보다 더 어려웠다. 국비 끝내고 자바스크립트 이제 쫌쫌따리 공부를 시작한 나에게는 용어의 장벽이 조금 있긴하지만, 컴퓨팅 과정을 인지심리학이랑 연결지은 부분은 너무 좋았다. 또한 자바스크립트로 예시를 들기위해 자바스크립트 설명부터 시작해, 프로그래밍의 기본 요소, 환경 등 필요한 지식을 차근차근 깊게 깊게 알려주기때문에 꼭꼭 씹어먹게 되는 책이다. (알고있던 삼항연산자도 이 책으로 읽으니 어렵다 ;-; ) 읽다보면 회사에서 들었지만 이해못하고 넘어갔던 용어들이 꽤 나온다. 

 

서평을 하기위해 완독을 하고싶었지만,.. 완독은 어렵고.. 밑줄치고 타이핑하며 넉넉하게 반년이상 투자해가며 씹어나갈 계획이다. 컬러면 더 좋았지만.. 가끔 회색이 있다는것에 감사하며..

/**
 * @description (REPL = read-evaluate-print loop)
 * 복잡한 표현식 문장이 주어져도 해석기는 항상 동일한 기본주기(cycle)로 작동한다.
 * 해석기는 사용자가 입력한 문장을 읽고, 평가하고, 결과를 출력하는 주기를 반복한다.
 */
console.log(3 * 2 * (3 - 5 + 4) + (27 / 6) * 10);

const size = 2;
console.log(5 * size);

const radius = 10;

// 복합연산
const circumference = 2 * Math.PI * radius;
console.log(circumference);

// 복합연산에 이름을 붙여 그 연산을 하나의 단위로 지칭하게 하는 함수선언은 상수선언보다 훨씬 강력한 추상화 기법이다.
// funtion 이름(매개변수){return 반환 표현식(함수 적용 값 산출);}
function circumference2(num) {
  return num * Math.PI * radius;
}

console.log(circumference2(4));
console.log(circumference2(4 + 7));
console.log(circumference2(circumference2(1)));
console.log(circumference2(circumference2(1)) + circumference2(1));

// square 자체를 또 다른 함수의 구축 요소로 사용 가능
function square(x) {
  return x * x;
}

// 스킴버전은 스네이크 많이쓰지만, 나는 카멜로 할거
function sumOfSquares(x, y) {
  return square(x) + y;
}

console.log(sumOfSquares(3, 9));

이런식으로 주석 달아가면서 VSCode로 공부중 *_*

 

중간중간 연습문제가 들어있는데, 난이도가 낮은것부터 어려운것까지 골고루 있어서 좋다. 근데 내가 못찾은건지 ;-; 답이랑 해설이 어딨는지..못찾아서... 코쓱.. 맞게 풀고있는지는 모르겠다 :D 이것또한 사고력증가! 재밌게 풀고있다. 코테연습도 자바스크립트로 배우는 SICP와 함께 하고있는 것 같다 ㅋㅋ

 

 


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

 

반응형
복사했습니다!