3P by neo 3달전 | favorite | 댓글 1개

컴퓨터 프로그램의 구조와 해석이 중요한 이유

SICP의 혁신

  • 지적 수준 향상: SICP는 초급 컴퓨터 과학 교육의 지적 수준을 크게 높였음. 기존의 첫 번째 CS 과정은 특정 프로그래밍 언어의 세부 사항을 배우는 데 집중했지만, SICP는 프로그래밍 과정의 큰 그림을 배우는 데 중점을 두었음.
  • 추상화 강조: 구체적인 문제에서 일반적인 패턴을 찾고, 각 패턴을 구현하는 소프트웨어 도구를 만드는 추상화의 중요성을 강조했음.
  • 함수의 데이터화: 함수가 데이터로 사용될 수 있다는 아이디어를 중점적으로 다루었음. 이는 배우기 어렵지만, 한 번 배우면 매우 강력한 개념임.
  • 다양한 프로그래밍 패러다임: 함수형, 객체 지향, 선언형 등 세 가지 프로그래밍 패러다임을 첫 번째 CS 과정에 통합했음.

Scheme 언어의 선택

  • 단순하고 일관된 표기법: Scheme은 모든 것에 대해 매우 단순하고 일관된 표기법을 가지고 있음. 다른 언어들은 변수 할당, 조건 실행, 반복, 함수 호출 등에 각각 다른 표기법을 사용하지만, Scheme은 하나의 표기법으로 모든 것을 처리함.
  • 다양한 패러다임 학습 가능: Scheme의 단순성 덕분에 다양한 프로그래밍 패러다임을 쉽게 학습할 수 있음. 특히 객체 지향 프로그래밍이 어떻게 구현되는지 이해할 수 있게 해줌.
  • 미래 대비: SICP는 학생들에게 새로운 프로그래밍 언어를 배우는 능력을 길러줌. "미래에 사용할 언어는 아직 발명되지 않았음"이라는 철학을 가지고 있음.

SICP의 낙관적인 접근

  • 높은 기대치: SICP는 대학 신입생이 달성할 수 있는 것에 대해 낙관적인 기대를 가짐. 학생들은 보통 상급생이 다루는 프로그래밍 언어 인터프리터를 작성함.
  • 심도 있는 학습: 텍스트 자체는 읽기 쉽지 않지만, 모든 문장이 중요하며, 각 연습 문제는 중요한 새로운 아이디어를 가르침.

SICP의 영향

  • 지속적인 영향력: SICP 기반의 과정은 소수였지만, 그 영향력은 매우 컸음. 많은 후속 교과서들이 SICP의 기준을 따르려고 노력했음.
  • Scheme의 확장: Scheme을 학습 언어로 사용하는 범위가 중학교부터 대학원까지 확장되었음.
  • 아이디어 중심의 컴퓨터 과학: 컴퓨터 과학이 아이디어 중심이어야 한다는 개념이 널리 퍼졌음.

SICP의 지속성

  • 오랜 생명력: SICP는 25년 이상 지속되었으며, 여전히 인쇄 중임. 컴퓨팅 환경이 크게 변했지만, 그 뒤에 있는 큰 아이디어는 변하지 않았음.
  • 코스의 변화: SICP 기반의 과정은 시간이 지나면서 병렬성, 동시성 제어, 사용자 인터페이스 디자인, 클라이언트/서버 패러다임 등을 추가했음.

MIT의 커리큘럼 변화

  • 응용 중심의 커리큘럼: MIT는 주제 중심에서 응용 중심의 커리큘럼으로 전환했음. 프로그래밍 언어 선택은 그 결정 중 가장 작은 부분이었음.
  • 새로운 접근법의 도전: 새로운 접근법은 가르치기 더 어려우며, 각 과정이 전기공학 및 컴퓨터 과학 교수진의 협력을 필요로 함.

학생들의 반응

  • 후기 인기: 학생들은 수업 중에는 얼마나 많이 배우고 있는지 잘 모르지만, 나중에 가장 인기 있는 과정 중 하나로 평가함. 졸업 후에도 배운 내용을 실무에서 사용하고 있다는 피드백을 받음.

GN⁺의 의견

  • SICP의 교육 철학: SICP는 프로그래밍 언어의 세부 사항보다 큰 아이디어를 배우는 데 중점을 두어, 학생들이 새로운 언어를 쉽게 배울 수 있는 능력을 길러줌.
  • Scheme의 장점: Scheme의 단순성과 일관된 표기법은 초급 학습자에게 매우 유익함. 다양한 프로그래밍 패러다임을 쉽게 이해할 수 있게 해줌.
  • MIT의 변화: MIT의 커리큘럼 변화는 응용 중심의 학습을 강조하며, 이는 실무에 더 가까운 경험을 제공할 수 있음.
  • 교육의 지속성: SICP의 오랜 생명력은 그 교육 철학과 내용이 여전히 유효하다는 것을 보여줌. 이는 교육의 본질적인 가치를 강조함.
  • 실무와의 연결: SICP 기반의 교육은 실무에서 바로 적용할 수 있는 능력을 길러주며, 이는 졸업 후에도 큰 도움이 됨.
Hacker News 의견
  • Prof. Abelson의 강의는 YouTube에서 볼 수 있으며, 시간을 투자할 가치가 있음: 컴퓨터 과학의 깊이 있는 이해를 제공하며, 최근의 과대 광고를 줄이는 데 도움이 될 수 있음.

  • 책의 첫 절반은 가볍고 흥미로운 읽을거리였음: 객체 지향 부분에서 어려움을 겪었으며, 개인적으로는 함수형 사고가 더 잘 맞았음.

  • YouTube에서 80년대 초반의 강의를 볼 수 있음: 유머와 초기 그래픽 시도, 70년대 패션이 포함되어 있어 교육적임.

  • 많은 경험이 있는 프로그래머에게도 이 책이 여전히 읽을 가치가 있는지 궁금함.

  • SICP의 목표가 컴퓨터 과학을 즐기지 않는 사람들을 겁주기 위한 것이라고 생각했음: 실제로는 매우 가치 있는 기초 과정이었지만, 일부 사람들은 다른 전공으로 전향하게 만들었음.

  • 첫 몇 페이지를 넘기지 못했음: 만약 필수 과목이었다면 다른 일을 하고 있었을 것임.

  • Berkeley에서 CS 61A 수업의 조교로 일했음: Scheme 언어의 단순하고 통일된 표기법이 교육에 도움이 된다고 주장하지만, 실제로는 학생들이 혼란스러워했음. Scheme의 모든 것이 동일하게 보이는 특성은 버그라고 생각함.

  • SICP에서 배운 최고의 교훈은 첫 번째 함수를 작성하는 순간 도메인 문제를 해결하기 위한 DSL을 만드는 것임: 이 통찰력이 프로그래머로서의 수준을 높여줌.

  • SICP에 대해 읽을 때마다 Javascript에 대한 좌절감을 느낌: Javascript가 Scheme이었다면 웹 개발이 더 나아졌을 것임.

  • SICP와 PAIP를 비교해달라는 요청: SICP는 함수형 프로그래밍과 컴퓨터 과학의 기초를 다루고, PAIP는 일반적인 프로그래밍 실습에 더 중점을 둔 것으로 보임.