이번에도 한당

졸라 요약한거니까 이것만 보고 SICP 다봄 ㅎㅎ 이러면 안 됨 ㅋ


SICP를 읽으신 분들이 많은 거 압니다.

이상한 부분은 지적해주세요


https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/video-lectures/1a-overview-and-introduction-to-lisp/


수업 요약임

책을 읽어감에 따라 업데이트 될 수 있음




COMPUTER SCIENCE는 HOW-TO 관한 학문이다.

 

어떤 일을 어떻게 하는지 논한다. 

우리는 "어떻게 하는가? 대한 지식을 formalize한다.

 

그런데 진짜 문제는 HOW-TO 아니다.

진정한 문제는 거대하고 복잡한 시스템을 만드는 것이다.

시스템은 너무나 크고 복잡하여 어떤 사람도 한번에 모든 부분을 이해할  없다.

그런 시스템을 우리는 만든다.

 

그러기 위해 우리는 복잡성COMPLEXITY 관리해야 한다.

복잡성을 관리하는 기술이 바로 ABSTRACTION이다.

 

 

이번 코스에서 우리는 3가지 ABSTRACTION 다룰 것이다.

 

BLACK-BOX ABSTRACTION

어떤 일이 일어나는 과정(HOW-TO) 세부사항을 숨기기

그리고 이름 붙이기.

함수와 메서드가 하는 그것이다.

- scheme에서는 procedure 한다.

 

CONVENTIONAL INTERFACES

하나의 operation 다른 것들을 끼워 넣어 동작하게 하는 방법

general operation 만드는 방법

- OOP 흔한 그것이다.

 

MEALINGUISTIC ABSTRACTION

새로운 언어를 만들어 복잡함을 다루기

이건 뭐임처음 보는 거다개꿀

 

 

ps.

SW system 다른 공학과는 달리 제한사항constraints 적다.

결국 소프트웨어 시스템의 한계 생각의 한계이다.

(뭔가 내용이 튀어서 따로 빼놓음)

 

 

 

그렇다면프로그래밍 언어는 어떤 식으로

HOW-TO, 혹은 process 관리하는가?

 

가장 일반적으로훌륭하게 설계된 프로그래밍 언어는 다음 3가지를 반드시 갖는다.

  1. PRIMITIVE elements
  2. means of COMBINATION
  3. means of ABSTRACTION

 

이후 앙리슾띠의 문법을 설명하지만 자세한 설명은 생략한다

SICP 펴라

 


86 스킴 인터프리터 보구가 ㅎㅎ

viewimage.php?id=3dafdf21f7d335ab67b1d1&no=29bcc427b28b77a16fb3dab004c86b6fdc843afe757eec57bf7102ec3efadaa9fafd0ec78e854a781dd59d3191758351c80d413b8e9de8212c80a271a1e51b0891

퍄퍄

 

LISP에서

primitive  3   19.5   +   *    이런거다.

combination (  ) 괄호를 통해 이루어진다하나로 묶어버림

abstraction define 통해 이루어진다.


viewimage.php?id=3dafdf21f7d335ab67b1d1&no=29bcc427b28b77a16fb3dab004c86b6fdc843afe757eec57bf7102ec3efadaa9fafd0ec78e854a781dd59d3191758351c80d413b8e98e87a27d2a827ace51b0888

퍄퍄퍄퍄퍄

define 아니라 DEFINE 쓰네 사스가 68년 스킴…

 


viewimage.php?id=3dafdf21f7d335ab67b1d1&no=29bcc427b28b77a16fb3dab004c86b6fdc843afe757eec57bf7102ec3efadaa9fafd0ec78e854a781dd59d3191758351c80d413b8eceb72324d6a471a7e51b0817


viewimage.php?id=3dafdf21f7d335ab67b1d1&no=29bcc427b28b77a16fb3dab004c86b6fdc843afe757eec57bf7102ec3efadaa9fafd0ec78e854a781dd59d3191758351c80d413b8ecdb9777785a92aa2e51b082e

 보면 정의한 함수는 호출(괄호로 감싸면)하면 그것을 apply 값이 나오지만

감싸지 않으면 그대로 (함수) 나온다.

COMPOUND-PROCEDURE SQUARE 이렇게

 

viewimage.php?id=3dafdf21f7d335ab67b1d1&no=29bcc427b28b77a16fb3dab004c86b6fdc843afe757eec57bf7102ec3efadaa9fafd0ec78e854a781dd59d3191758351c80d413b8e9cea7772d2f473a5e51b08bf

앙리슾띠 혹은 스킴의 핵심은

사용자가 정의한 procedure(SQUARE)

미리 정의된 procedure(+)

똑같은 방법으로 사용할  있다는 것이다.

새로 정의한 procedure 마치 primitive처럼   있다!

 

built-in compound 사이의 차이는

compound abstraction wrapper wrap하고 있는  .

 

 

define lambda if cond 자세한 설명은 생략 귀찮다

찾아보면 알아먹는데 하나 당 3분도 안 걸림

 

 

 

여기까지 가르친 다음 애들 머가리를 터뜨린다

 


viewimage.php?id=3dafdf21f7d335ab67b1d1&no=29bcc427b28b77a16fb3dab004c86b6fdc843afe757eec57bf7102ec3efadaa9fafd0ec78e854a781dd59d3191758351c80d413b8e93bc7225d0a52aa1e51b0862

 

(define (try guess x)

  (if (good-enough? guess x) guess)

                            (try (improve guess x) x)))

 

ㅋㅋㅋㅋㅋ?

 

viewimage.php?id=3dafdf21f7d335ab67b1d1&no=29bcc427b28b77a16fb3dab004c86b6fdc843afe757eec57bf7102ec3efadaa9fafd0ec78e854a781dd59d3191758351c80d413b8eceea2072d0a073a6e51b086b

 

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

 


http://blog.naver.com/rhdnfka94/221039023694