-
SICP (Structure and interpretation of computer programs) : 컴퓨터 프로그램의 구조와 해석 이라는 책을 얼마전 후배로 부터 전해 듣고서는 관심을 갖게 되었습니다. 이름부터 난해한 이책, 무엇을 위한 책일까 궁금했습니다. MIT에서는 신입생들이 이수해야 하는 과목이고, 어느정도 경력을 가진 프로그래머가 프로그램에 대해서 새롭게 접근하고 사고하는 방식을 가르쳐준다 라고 합니다.
추천사에서부터 머릿글을 각잡고 읽어보았습니다. 과거에는 스킴이라는 언어(리스프 인터프리터에 액터 모델을 구현하고 메시징 기능을 추가한 언어)로 SICP를 공부했다고 하는데 학부 시절에도 어렴풋이 들어본 언어이긴 했지만 왜 파이썬도 자바도 아닌 자바스크립트로 다시 해석이 되었는지 궁금해 졌습니다.
사실 자바스크립트를 리스프로 만들었다 라는 이야기는 어디에도 없지만 자바스크립트를 만든 브랜든 아이크는 리스프를 사용하는것을 좋아했고 넷스케이프에서 근무하던 당시 넷스케이프 브라우저에서 웹사이트를 컨트롤 하기위한 스크립트 인터프리터를 제작했다고 합니다. 스킴은 정적 영역 규칙을 사용하는것과 반복문을 지원하지 않고 재귀호출을 이용하여 반복 계산을 하는등 스킴의 대부분은 꼬리 호출 최적화(tail-call optimization)을 수행한다고 설명하고 있습니다. 또한 스킴의 일급 함수를 사용하는 모습과 자바의 람다나 자바스크립트의 익명 함수의 사용성이 닮은 점이 있다고 생각이 들었고, 자바스크립트에서는 모든 인스턴스가 자바스크립트의 원시 객체라는 설명이 스킴의 모습과 닮아있는 점에서 자바스크립트로 해석하기 좋지 않았을까 하는 생각입니다. 머릿말에서는 자바스크립트로 완전히 대체되지 않는 부분이 있었고 난해했다라고 설명되어있습니다만..!
프로그래밍이라는 행위를 실세 세상과 연결 시키려고 하는 사고도 엿보였습니다. 우리가 가지고 있는 문제를 해결한다는 관점에서 문제를 프로그래밍이라는 행위로 해결한다는 관점입니다. 사용자의 문제에 가까워 질수록 문제를 해결해야하는 방식들이 복잡해 진다라고 하는 표현이 마음에 와닿았습니다. 보통 우리가 사용자 경험을 위해 코딩하는 문제에서 가장 난해한 일들이 벌어졌던것 같습니다. 사실 서버에서는 데이터를 핸들링하고 데이터를 해석 가능한 형태로 잘 내려주기 위한 방법들을 좀더 단순한 형태로 고안하고 고민해야 했지만 사용자 경험과 가까운 코드는 항상 그렇지 못했던것 같습니다.
앞으로 이 책을 공부하면서 그때그때 정리하는 글을 써 내려 가보도록 하겠습니다.
'Tech' 카테고리의 다른 글
자바스크립트로 배우는 SICP - 함수를 이용한 추상화(2) (0) 2023.05.25 자바스크립트로 배우는 SICP - 함수를 이용한 추상화(1) (0) 2023.05.24 RCA, XLR, TS, TLS? 라인에 대해서 알아보자 (0) 2023.05.18 디자인 패턴, 파사드(Facade pattern) (0) 2023.05.18 디자인 패턴, 싱글톤(Singleton pattern) (0) 2023.05.18 댓글