#소프트웨어 #디자인 #유연성 #sdf #scheme
- 제럴드 제이 서스먼 and 크리스 핸슨 류광
- 누가 코드를 이렇게 짜놨어?프로그래머들은 시간에 쫓기는 나머지, 어쩔 수 없이 제한된 용도로만 사용 가능한, 성장의 여지가 거의 없는 코드를 작성한다. 그로 인해 과거의 자신이 쌓은 벽에 가로막혀 코드를 새로 수정해야 하는 상황이 벌어지기도 한다. 하지만 최고...
- Software Design for Flexibility
소개
누가 코드를 이렇게 짜놨어?
프로그래머들은 시간에 쫓기는 나머지, 어쩔 수 없이 제한된 용도로만 사용 가능한, 성장의 여지가 거의 없는 코드를 작성한다. 그로 인해 과거의 자신이 쌓은 벽에 가로막혀 코드를 새로 수정해야 하는 상황이 벌어지기도 한다. 하지만 최고의 시스템은 진화할 수 있는 유연성을 갖췄다. 기존 코드를 수정하는 대신 새 코드를 추가해 새로운 상황에 적응하는 가산적 프로그래밍을 활용한다. 이 책은 제럴드 제이 서스먼과 크리스 핸슨이 도합 100년이 넘는 프로그래밍 경험에서 발견한, 프로그래머가 막다른 골목을 피하는 데 도움이 되는 기법들을 담았다. 이 책은 동적으로 확장 가능한 일반적 프로시저처럼 극도로 강력하지만 잠재적으로 위험한 기법들도 소개한다. 각 장에는 연습문제와 리스프의 방언인 스킴으로 만들어진 예제 코드를 실었다. 천문 거리 계산에서 자동 미분, 어드벤처 게임에 이르기까지 다양한 예제를 살펴본다.
제1장 자연과 설계의 유연성
1.1 계산과 건축 1.2 유연성을 위한 똑똑한 부품 1.3 중복성과 축중성 1.4 탐색 행동 1.5 유연성의 비용
제2장 영역 특화 언어(DSL)
2.1 조합자 2.2 정규표현식 2.3 래퍼 2.4 문제 영역의 추상화 2.5 요약
제3장 산술 주제의 변형들
3.1 산술 연산의 조합 3.2 확장성 있는 일반적 프로시저 3.3 예제: 자동 미분 3.4 효율적인 일반적 프로시저 3.5 효율적인 사용자 정의 형식 3.6 요약
제4장 패턴 부합
4.1 패턴 4.2 항 재작성 4.3 부합기의 설계 4.4 통합 부합 4.5 그래프상의 패턴 부합 4.6 요약
제5장 평가
5.1 일반적 eval/apply 해석기 5.2 비엄격 인수를 가진 프로시저 5.3 실행 프로시저로의 컴파일 5.4 탐색 행동 5.5 바탕 후속 프로시저들의 노출 5.6 큰 힘과 큰 책임
제6장 계층화
6.1 계층 활용 6.2 계층화 구현 6.3 계층적 산술 6.4 값의 의존성 주해 추가 6.5 계층화의 약속
제7장 전파
7.1 예제: 별과의 거리 7.2 전파 메커니즘 7.3 다중 대안 세계관 7.4 값들의 병합 7.5 가능한 세계 검색 7.6 전파는 축중성을 가능하게 한다
제8장 맺음말
부록 A 지원 소프트웨어
부록 B 스킴
SICP 컴퓨터 프로그램의 구조와 해석
(해럴드 에이블슨, 제럴드 제이 서스먼, and 줄리 서스먼 2016)
- 해럴드 에이블슨 and 제럴드 제이 서스먼 and 줄리 서스먼 이광근
- 마법사 책(Wizard Book)이라는 별명으로도 유명한 이 책은 독특하기로 소문난, MIT 컴퓨터 과학 입문 교과 과정에서 쓰는 교과서로, 프로그래밍 언어 문법이 아닌 프로그램의 뼈대를 구성하는 기술을 익히게 해준다. 흔한 프로그래밍 입문서와 달리, 난해하다는 평을 듣는 LISP에서 갈라져 나온 Scheme을 활용하며, 요약(abstraction)과 조립식 설계(modularity)에 따라 복잡한 프로그램을 간단하게 짜는 전략을 보여준다. 그뿐 아니라, 상태(state)가 있는 물체, 덮어쓰기(assignment), 병행 프로그래밍, 함수 프로그래밍, 제때 계산법(lazy evaluation), 비결정적 프로그래밍(non-deterministic programming) 등 다양한 프로그래밍 이슈를 살펴보며 한 걸음씩 프로그램을 설계하고 짜 맞추고 살펴보고 고쳐 쓰면서, ’과연 프로그래밍이란 무엇인가’ 돌이켜 보게 하고, 생각하는 방식과 그 생각을 표현하는 방식을 가르쳐 준다.
고전 역학의 구조 및 해석 #sicm
(제럴드 제이 서스먼 and 잭 위스덤 2014)
-
제럴드 제이 서스먼 and 잭 위스덤
-
Structure and Interpretation of Classical Mechanics
https://tgvaughan.github.io/sicm/toc.html
Structure and Interpretation of Classical Mechanics
Piet Hut: Book Review of Structure and Interpretation of Classical Me-
[2024-10-30 Wed 12:19]
2024 "mentat-collective/sicm-book orgmode emacs"
(“Mentat-Collective/Sicm-Book Orgmode Emacs” [2021] 2024) Executable version of Structure and Interpretation of Classical Mechanics.
</home/junghan/sync/code/junghan0611/sicm-book>
2024 "mentat-collective/sicm-scheme-exercises #emacs"
(“Mentat-Collective/Sicm-Scheme-Exercises #Emacs” [2015] 2024)
Exercises and notes on Structure and Interpretation of Classical Mechanics.
</home/junghan/sync/code/junghan0611/sicm-scheme-exercises>
#함수형미분기하학 #미분기하학 #fdg
(제럴드 제이 서스먼 and 잭 위스덤 2012)
- 제럴드 제이 서스먼 and 잭 위스덤
- 일반 상대성 이론이나 양자장 이론을 깊이 있게 이해하기 위한 기초로서 필요한 수학에 대한 설명입니다. 물리학은 자연스럽게 수학적 언어로 표현됩니다. 해당 과목을 처음 접하는 학생들은 관용적인 수학 언어와 해당 언어로 표현되는 내용을 동시에 배워야 합니다. 마치 프랑스어 문법 때문에 고생하면서 레미제라블을 읽어보라고 한 것과 같다. 이 책은 대학 수준에서 가르치는 일반 상대성 이론이나 양자장 이론을 깊이 이해하기 위한 기초로 필요한 미분 기하학을 배울 수 있는 혁신적인 방법을 제공합니다. 저자가 취한 접근 방식(그리고 수년 동안 MIT의 수업에서 사용)은 공변 도함수의 개발에 대한 강조와 텐서에 대한 전통적인 인덱스 표기법의 사용을 피하는 것을 포함하여 여러 면에서 기존 접근 방식과 다릅니다. 벡터 필드와 미분 형식의 의미가 풍부한 언어를 선호합니다. 그러나 가장 큰 차이점은 저자가 설명에 컴퓨터 프로그래밍을 통합했다는 것입니다. 공식을 해석하도록 컴퓨터를 프로그래밍함으로써 학생은 공식이 올바른지 여부를 곧 알게 됩니다. 학생들은 프로그램을 개선하고 결과적으로 이해도가 향상됩니다.
- Functional Differential Geometry
- (“Scorpio Diagrams - Fdg 미분기하학” n.d.)
목차
Contents Preface xi ## 한국어 번역: ## 서문 xi Acknowledgements xii ## 감사의 말씀 xii Prologue xv # 프롤로그 xv 1 Introduction 1 ## 1. 서론 1 2 Manifolds 11 2 매니폴드 11 2.1 Coordinate Functions 12 2.1 좌표 Functions 12 2.2 Manifold Functions 14 ## 2.2 다양체 Functions ## 14 3 Vector Fields and One-Form Fields 21 3 벡터 필드와 1-형식 필드 21 3.1 Vector Fields 21 번역된 텍스트: ### 3.1 벡터장 21 3.2 Coordinate-Basis Vector Fields 26 ## 3.2 좌표 기반 벡터장 26 3.3 Integral Curves 29 3.3 적분 곡선 29 3.4 One-Form Fields 32 3.4 1-형식 필드 32 3.5 Coordinate-Basis One-Form Fields 34 ## 3.5 좌표-기저 1-형식 필드 34 4 Basis Fields 41 4 기초 분야 41 4.1 Change of Basis 44 4.1 기저 변환 44 4.2 Rotation Basis 47 ## 4.2 회전 기반 47 I kept the numbering consistent with the source text and translated "Rotation Basis" to "회전 기반". 4.3 Commutators 48 ## 4.3 교환자 48 5 Integration 55 ## 5번 통합: 55번 5.1 Higher Dimensions 57 5.1 고차원 57 5.2 Exterior Derivative 62 ### 5.2 외 미분 62 5.3 Stokes’s Theorem 65 5.3 스토크스 정리 65 page viii
5.4 Vector Integral Theorems 67 ## 5.4 벡터 적분 정리 67 6 OveraMap 71 ## 6 OveraMap 71 6.1 Vector Fields Over a Map 71 6.1 맵에 대한 벡터 필드 71 6.2 One-Form Fields Over a Map 73 ## 6.2. 맵 상의 1-형 필드 6.3 Basis Fields Over a Map 74 6.3 지도 위의 기저 필드 74 6.4 Pullbacks and Pushforwards 76 ## 6.4 끌어당김과 밀어내기 7 Directional Derivatives 83 7 방향 미분 83 7.1 Lie Derivative 85 ## 7.1 Lie Derivative 85 7.2 Covariant Derivative 93 7.2 공변 미분 93 7.3 Parallel Transport 104 ## 7.3 평행이동 104 7.4 Geodesic Motion 111 7.4 지오데식 운동 111 8 Curvature 115 8 곡률 115 8.1 Explicit Transport 116 ## 8.1 명시적 전송 116 8.2 Torsion 124 ## 8.2 꼬임 124 8.3 Geodesic Deviation 125 ## 8.3 지오데식 편차 125 8.4 Bianchi Identities 129 8.4 비앙키 등식 129 9 Metrics 133 ## 9 지표 133 9.1 Metric Compatibility 135 ## 9.1 지표 호환성 135 ## 9.2 Metrics and Lagrange Equations 137 ## 9.2 지표와 라그랑주 방정식 137 --- 9.3 General Relativity 144 ## 9.3 일반 상대성 이론 144 10 Hodge Star and Electrodynamics 153 10 호지 스타와 전자기학 153 10.1 The Wave Equation 159 10.2 Electrodynamics 160 10.1 파동 방정식 159 10.2 전기 역학 160 11 Special Relativity 167 ## 11 특수 상대성이론 167 11.1 Lorentz Transformations 172 11.1 로렌츠 변환 172 11.2 Special Relativity Frames 179 ## 11.2 특수 상대성 이론 프레임 179 page ix
11.3 Twin Paradox 181 11.3 쌍둥이 역설 181 A Scheme 185 ## 스키마 185 B Our Notation 195 B 우리의 표기법 195 C Tensors 211 C 텐서 211 References 217 ## 참고문헌 217 Index 219
#유튜브
2022 "[Scheme’22] Programming is (should be) fun!"
(제럴드 제이 서스먼 2022) [2024-10-30 Wed 16:25] #제럴드제이서스먼: #고전역학 #전산물리 #리스프
Programming is (should be) fun! Gerald Jay Sussman (MIT) Programming is not coding! Programming a medium for creative expression. Composing a good program can be an esthetic experience similar to writing a story, a piece of music, or poetry, A good programming experience is an exploration of abstract design. A successful design requires careful choice of the levels of detail for each layer of a programming project. Some of these choices involve classical issues of philosophy, such as the status of referents of expressions, the meaning of quotation, the problems with negation, the power of self-reference, and the use (and danger) of abstraction. Well-composed programs can be effective at expressing emotional content as well. There are the beauties of symmetrical design, and the horrors of ugly kludges. All programs have bugs, even ones that meet given specs (because the specs are always incomplete or inconsistent). Bugs are inevitable because the creation of buggy approximations is a crucial part of the design process. Thus, it is more effective to make systems that are debuggable than to try to make systems that are correct by construction. In any case, we must keep the fun in programming and not allow it to become a tedious job.
프로그래밍은 재미있어야 합니다!
제럴드 제이 서스먼(MIT)
프로그래밍은 코딩이 아니다! 창의적인 표현을 위한 매체 프로그래밍. 좋은 프로그램을 구성하는 것은 이야기, 음악, 시를 쓰는 것과 유사한 미적 경험이 될 수 있습니다. 좋은 프로그래밍 경험은 추상적 디자인을 탐구하는 것입니다. 성공적인 디자인을 위해서는 프로그래밍 프로젝트의 각 계층에 대한 세부 수준을 신중하게 선택해야 합니다. 이러한 선택 중 일부는 표현 대상의 상태, 인용의 의미, 부정 문제, 자기 참조의 힘, 추상화의 사용(및 위험)과 같은 고전적인 철학 문제와 관련이 있습니다. 잘 구성된 프로그램은 감정적인 내용을 표현하는 데에도 효과적일 수 있습니다. 대칭적인 디자인의 아름다움과 추악한 덩어리의 공포가 있습니다. 모든 프로그램에는 버그가 있습니다. 심지어 특정 사양을 충족하는 프로그램에도 버그가 있습니다(사양은 항상 불완전하거나 일관성이 없기 때문입니다). 버그가 있는 근사값을 만드는 것은 설계 프로세스의 중요한 부분이기 때문에 버그는 불가피합니다. 따라서 구성에 따라 올바른 시스템을 만들려고 노력하는 것보다 디버그 가능한 시스템을 만드는 것이 더 효과적입니다. 어쨌든 우리는 프로그래밍의 재미를 유지해야 하며 그것이 지루한 일이 되도록 허용해서는 안 됩니다.
? 믄 강의더라 - 샘리치가
[2024-11-21 Thu 11:23]
### Gerald Sussman 교수의 강연 요약
#### [00:00:02] - [00:24:29] 컴퓨팅의 문제점
- 현재의 프로그래밍 언어와 방법론이 구식
- 인간의 뇌와 유전자 시스템의 복잡성
- 더 유연한 시스템 필요성
과거와 현재의 컴퓨터
- 1961년의 컴퓨터와 현재의 비교
- 메모리와 컴퓨팅 비용의 변화
- 프로그래머의 비용이 주요 문제
컴퓨팅의 미래
- 보안과 진화 가능한 코드의 중요성
- 시스템의 유연성과 적응성 강조
- 새로운 문제 해결 방법 모색
유연한 프로그래밍
- 제네릭 연산의 확장
- 심볼릭 연산과 자동 미분
- 프로그램의 동적 확장 가능성
교육과 실습
- 고급 물리학 수업에서의 컴퓨터 프로그래밍 활용
- 수학적 표기법의 모호성과 컴퓨터 프로그래밍의 명확성
- 프로그램을 통한 개념의 명확화
#### [00:24:31] - [00:48:15] 컴퓨팅의 미래
- 스마트한 벽의 가능성
- 세포의 지능적 기능
- 병렬 컴퓨팅의 중요성
전기 공학 교육
- 실제 문제 해결 방법 강조
- 학생들에게 프로그램 작성 교육
- Richard Stallman과의 협업
propagators 개념
- 상태를 가진 작은 기계들
- 병렬 컴퓨팅에서의 유용성
- 정보의 단방향 흐름
컴퓨터 언어의 한계
- 표현식과 명령문의 문제
- 다양한 프로그래밍 패러다임 통합
- 유연한 프로그래밍의 필요성
측정과 계산
- 다양한 방법으로 건물 높이 측정
- 측정값의 결합과 개선
- 과학적 측정의 중요성
#### [00:48:17] - [01:04:12] 정보의 일관성 유지
- 정보는 종종 일관성이 없음
- 지역적으로 일관된 하위 시스템 유지
- 진실 유지 시스템(TMS) 소개
진실 유지 시스템(TMS)
- 사실과 의존성의 집합
- 최선의 추정 유지
- 모순 해결 방법
의존성 지향 백트래킹
- 비일관성 해결
- 효율적인 백트래킹
- 병렬 처리 시스템에서의 적용
뉴런과 컴퓨터 시스템
- 뉴런의 역할
- 병렬 처리 시스템의 중요성
- 진화 가능성 강조
진화 가능성
- 시스템의 확장성과 유연성
- 다양한 계산 방법
- 생물학적 시스템의 유사성
이 요약이 도움이 되었길 바랍니다! 다른 질문이 있으면 언제든지 물어보세요.
Related-Notes
References
해럴드 에이블슨, 제럴드 제이 서스먼, and 줄리 서스먼. 2016. SICP 컴퓨터 프로그램의 구조와 해석. Translated by 이광근. https://www.yes24.com/Product/Goods/23951885.
제럴드 제이 서스먼, and 잭 위스덤. 2012. 함수형 미분기하학 #Sicm #Fdg. https://m.yes24.com/Goods/Detail/9252829.
———. 2014. 고전 역학의 구조 및 해석 #Sicm. https://tgvaughan.github.io/sicm/toc.html.
제럴드 제이 서스먼, ed. 2022. [Scheme’22] Programming Is (Should Be) Fun! Directed by 제럴드 제이 서스먼. https://www.youtube.com/watch?v=2MYzvQ1v8Ww.
“Mentat-Collective/Sicm-Book Orgmode Emacs.” (2021) 2024. Mentat Collective. https://github.com/mentat-collective/sicm-book.
“Mentat-Collective/Sicm-Scheme-Exercises #Emacs.” (2015) 2024. Mentat Collective. https://github.com/mentat-collective/sicm-scheme-exercises.
“Scorpio Diagrams - Fdg 미분기하학.” n.d. Accessed October 31, 2024. http://scorpiodiagrams.com/#fdg;chapter001.