Scheme 대신 Clojure에서 SICP에 접근


11

저는 소프트웨어 엔지니어링 프로그램의 3 학년 학사이며 SICP를 고문에게 읽어서 우리가 엔지니어링하는 모든 소프트웨어의 기본 원리에 대해 더 깊이 있고 근본적으로 이해하는 아이디어를 얻었습니다.

그는 책을 완성하기 위해 계획을 배우지 말라고 제안했습니다 (Lisp의 현대 방언만큼 일반적이지 않기 때문에) 대신 Clojure에서 연습을 수행하십시오.

좀 더 현대적인 Clojure에서 책의 연습을 시도하면 이미 어려운 책입니다. 어떻게 작동합니까? 예를 들어, 실제 솔루션을 찾을 수 없으며 Scheme에 대해 가르치는 구문이 다릅니다.

답변:


14

대학에서 첫 해에 제가했던 첫 번째 프로그래밍 과정은 SICP (1988)였습니다. 그러나 나는 당신과 비슷한 문제를 겪었습니다. 내 자신의 컴퓨터 (실제로 Commodore Amiga)의 경우 그 당시에는 Scheme 구현이 없었으며 다른 Lisp 방언 만이었습니다 (이름을 기억하지 못합니다).

그러나 Lisp의 유연성으로 인해 누락 된 lisp 매크로와 함수를 몇 개의 스크립트에 추가하는 것만으로 Scheme 구문을 "에뮬레이션"하는 것이 매우 간단했습니다. 이것은 실제로 과정 중에 필요한 1 장에서 3 장까지의 모든 연습을 구현하기에 충분했습니다 (SICP에는 실제로 전체 구성표 스택이 필요하지 않으며 작은 하위 집합 만 있으면됩니다).

그래서 Clojure는 현대적인 Lisp 방언 AFAIK이기 때문에 비슷한 것을 할 수 있다고 생각합니다. Scheme 또는 Clojure 또는 두 가지를 혼합하여 자유롭게 쓸 수 있습니다.

물론 Clojure에서 직접 연습 문제를 해결할 수도 있습니다. 두 언어가 매우 비슷합니다. 더욱 중요한 SICP는 언어 구문에 대해 프로그래밍 아닌 , 그것이 추상화 적절한 사용에 대한 프로그래밍에 (예를 들면, 기능, 데이터 및 개체). 따라서 가능한 구문 문제를 너무 많이 생각하지 마십시오. 이것들은이 책의 초점이 아니며 아마도 사소한 문제 일 것입니다.


6
내가 예측할 수있는 유일한 문제는 recur클로저에 1. TCO ( 일반 호출이 아닌 테일 재귀 만 처리 )와 2. 부족이 call-with-current-continuation4 장에 필요 하다는 점이다 .
Daniel Gratzer

2
@jozefg : OP가 1-3 장을 통해 자신을 성공적으로 얻는다면, 아마도 Clojure와 Scheme의 구문 적 차이에 대해 더 이상 불평하지 않을 것입니다. ;-)
Doc Brown

고려 @DocBrown 편집 (당신이 동의하는 경우, 그리고 아마도 제 4 장에 문제를 설명하는 대답에 위의 의견에 1-3 장에 대한 설명을 보내고 의견이 논의 )
모기

@ gnat : 주석은 확실히 맞지만 IMHO는 조금 독창적입니다. 내 대답의 중요한 부분은 마지막 단락입니다.
Doc Brown

0

: 난 그냥 (당신이 개입 개월에 또는 대안을 발견 할 수 있습니다하지만)이 바로 골목까지처럼 보이는이 사이트를 찾은 후 질문을 발견 SICP을 Clojure의에

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.