문제

SICP- "컴퓨터 프로그램의 구조 및 해석"

똑같은 설명이 좋을 것입니다

어떤 사람이 설명 할 수 있습니다 금속적 인 추상화

도움이 되었습니까?

해결책

SICP는 실제로 코드와 데이터를 동일한 것으로 볼 수 있다는 점을 집으로 몰아 넣었습니다.

나는 Universal Turing Machines (UTM에 대한 입력은 프로그램의 표현 일뿐) 또는 Von Neumann 아키텍처 (단일 스토리지 구조가 코드와 데이터를 모두 보유하는 경우)에 대해 생각할 때 이것을 이해했지만 SICP는 아이디어를 훨씬 더 명확하게 만들었습니다. . 프로그램의 구문은 일반적으로 목록의 구문, 즉 S- 표현식과 정확히 동일하기 때문에 여기에서 도와주었습니다.

코드와 데이터의 "동등성"이 있으면 갑자기 많은 것들이 쉬워집니다. 예를 들어, 다른 평가 방법 (게으른, 비 결정적, ). 이전에는 이것이 프로그래밍 언어로의 확장이 필요하다고 생각했을 것입니다. 실제로는 언어에 직접 추가하여 핵심 언어를 최소화 할 수 있습니다. 다른 예로, 객체 지향 프레임 워크를 유사하게 구현할 수 있습니다. 다시 말하지만, 이것은 내가 언어를 수정해야한다고 순진하게 생각했을 수도 있습니다.

또한 SICP가 더 많이 언급 한 한 가지 유형은 유형을 언급했습니다. 확인을 입력하십시오 편집 시간은 놀라운 일입니다. 객체 지향 프로그래밍의 SICP 구현은 이러한 이점이 없었습니다.

다른 팁

나는 아직 그 책을 읽지 않았고, 비디오 과정 만 보았지만 많은 것을 가르쳐주었습니다. 일등석 시민으로서의 기능은 나를 위해 마음을 불어 넣었습니다. "변수"를 실행하는 것은 나에게 매우 새로운 것이 었습니다. 그 비디오를 본 후 이제 JavaScript와 프로그래밍을 보는 방식이 일반적으로 크게 변경되었습니다.

오, 내가 거짓말을했다고 생각합니다. 정말로 나를 강타한 것은 +가 기능이라는 것입니다.

SICP에서 가장 놀라운 점은 실제로 완전한 언어를 만들기 위해 실제로 원시인이 얼마나 필요한지 확인하는 것입니다.

우리는 SICP를 논의하기 때문에 비디오 강의에 대한 표준 플러그를 넣을 것입니다. http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/, 이것은 20 시간 안에 얻을 수있는 컴퓨터 과학에 대한 최고의 소개입니다.

내가 정말로 시원하다고 생각한 것은 스트림 지연된 평가와 함께. 프라임 생성에 관한 것은 내가 정말 깔끔하다고 생각한 것입니다. 다음 프라임을 시퀀스에서 마술처럼 분배하는 "페즈"디스펜서처럼.

A. Rex의 답변은 "데이터와 코드는 동일하다"는 예를 들어 매우 깊은 방식으로 나를 얻었습니다.

러시아에서 LISP를 다시 배웠을 때, 우리 교사들은 우리에게 언어가 목록에 관한 것이라고 말했습니다 : 자동차, CDR, cons. 저를 정말로 놀란 것은 당신이 그 기능을 전혀 필요로하지 않는다는 사실이었습니다. - 당신은 직접 쓸 수 있습니다. 따라서 LISP는 결국 목록에 관한 것이 아닙니다! 그것은 큰 놀라움이었습니다.

내가 완전히 익숙하지 않은 개념은 코 루틴, 즉, 보완적인 작업을 수행하고 프로그램 흐름 제어가 그들 사이에 번갈아 가며 두 가지 기능을 갖는다.

나는 SICP를 읽을 때 여전히 고등학교에 있었고 첫 번째와 두 번째 장에 집중했습니다. 당시 나를 위해, 나는 당신이 모든 수학적 아이디어를 코드로 표현할 수 있고 컴퓨터가 대부분의 더러운 작업을하도록하는 것을 좋아했습니다.

내가 SICP를지도 할 때, 나는 다른 측면에 깊은 인상을 받았습니다. 우선, 코드가 실행 가능한 데이터이기 때문에 데이터와 코드가 실제로 동일합니다. 금속 언어 추상화에 관한 장은 많은 사람들에게 마음을 사로 잡고 있으며 많은 집으로 돌아온 메시지가 있습니다. 첫 번째는 모든 규칙이 임의적이라는 것입니다. 이것은 일부 학생들, 특히 물리학자인 학생들을 귀찮게합니다. 나는 아름다움이 규칙 자체가 아니라 규칙의 결과를 연구하는 데 있다고 생각합니다. 코드의 한 줄 변경은 어휘 스코핑과 동적 범위의 차이를 의미 할 수 있습니다.

오늘날 SICP는 여전히 많은 사람들에게 재미 있고 통찰력이 있지만, 나는 그것이 데이트를하고 있다는 것을 이해합니다. 우선, 디버깅 기술과 도구 (나는 거기에 유형 시스템을 포함 함)를 가르치지 않습니다. 이는 오늘날의 거대한 시스템에서 일하는 데 필수적입니다.

언어를 구현하는 것이 얼마나 쉬운 지 가장 놀랐습니다. 그 사람은 체계에 대한 통역사를 칠판에 쓸 수 있습니다.

SICP의 일부를 읽은 후 다른 의미에서 재귀를 느꼈습니다.

나는 지금 "기존의 인터페이스로서의 시퀀스"섹션에 있으며 절차 개념을 일등석 시민으로서 매우 매력적으로 발견했습니다. 또한 재귀 적용은 내가 어떤 언어에서도 본 적이없는 것입니다.

폐쇄.

주로 필수적 인 배경 (Java, C#등)에서 나오는 것-나는 1 년 정도 전에 SICP 만 읽고 처음으로 그것을 다시 읽고 있습니다), 기능적 용어로 생각하는 것은 저에게 큰 계시라고 생각합니다. 그것은 오늘 내 일에 대해 생각하는 방식을 완전히 바꿨습니다.

나는 책의 대부분을 (운동없이) 읽었습니다. 내가 배운 것은 실제 세계를 특정 수준에서 추상화하는 방법과 언어를 구현하는 방법입니다.

각 장에는 아이디어가 놀랍습니다.

처음 두 장은 현실 세계를 추상화하는 두 가지 방법, 즉 절차와의 추상화와 데이터에 대한 추상화를 보여줍니다.

3 장에서는 실제 세계에서 시간을 소개합니다. 그 결과 상태가 발생합니다. 우리는 과제를 시도하여 문제가 발생합니다. 그런 다음 스트림을 시도합니다.

4 장은 금속 언어 추상화에 관한 것입니다. 즉, 표현의 의미를 결정하는 평가자를 구성하여 새로운 언어를 구현합니다.

4 장의 평가자는 그 자체로 LISP 프로그램이므로 기본 LISP 시스템의 제어 구조를 상속합니다. 따라서 5 장에서, 우리는 추상 모델 인 레지스터 머신을 사용하여 실제 컴퓨터의 단계별 작동을 시작합니다.

감사.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top