References
“Eev and Lean4.” n.d. Accessed December 15, 2024. http://anggtwu.net/eev-lean4.html.
Ochs, Eduardo. (2013) 2024. “Edrx/Eev Emacs Maxima.” https://github.com/edrx/eev.
Users should not be forced to see Lisp
M-e execute M-j jump M-k kill this buffer
TODO eev-mode-map
이 녀석이 키 바인딩을 바꾸네?
왜 바꾸는 것인가? 또 바꾸는게 있는가? 자주쓰는 키바인딩을 왜 바꾸는가
Eev and Lean4
(“Eev and Lean4” n.d.)
edrx/eev emacs maxima
(Ochs [2013] 2024)
- Ochs, Eduardo
- a tool for automating almost everything (with Emacs)
2024-12-15 EEV 패키지 대화
@user edrx/eev - github.com 이맥스의 eev 패키지를 소개해줘
@assistant *eev 패키지 소개
eev는 Emacs에서 실행 가능한 문서를 작성하고 실행하는 데 도움을 주는 패키지입니다. 주요 기능은 다음과 같습니다:
-
실행 가능한 문서: eev는 문서 내의 코드 블록을 실행할 수 있게 해줍니다. 이는 문서와 코드가 함께 있는 리터러시 프로그래밍(literate programming)을 지원합니다.
-
간단한 인터페이스: eev는 복잡한 설정 없이도 쉽게 사용할 수 있는 명령어와 키바인딩을 제공합니다. 예를 들어, =M-x find-eev-quick-intro=를 실행하면 빠르게 eev의 소개를 볼 수 있습니다.
-
다양한 스크립트 실행: eev는 다양한 스크립트 언어를 지원하며, 외부 프로그램이나 쉘 명령어를 실행할 수 있습니다.
-
교육 도구: eev는 코드와 설명을 함께 제공함으로써 교육용으로도 유용합니다. 학습자가 코드를 읽고 실행하면서 이해하는 데 도움을 줍니다.
-
문서화: eev는 문서화된 코드를 쉽게 작성하고 관리할 수 있게 해줍니다. 이는 코드의 가독성과 유지보수성을 높여줍니다.
eev를 사용하려면:
-
설치: Emacs 패키지 매니저인 MELPA나 다른 패키지 소스를 통해 설치할 수 있습니다.
-
사용: 설치 후, =M-x eev-mode=를 실행하여 eev 모드를 활성화합니다. 이후 =M-x find-eev-quick-intro=를 통해 간단한 소개를 읽고, =M-x eev-intro=를 통해 더 자세한 설명을 볼 수 있습니다.
eev는 Emacs 사용자에게 문서와 코드를 통합하여 작업하는 새로운 방식을 제공하며, 특히 복잡한 작업을 단순화하고, 학습과 문서화를 용이하게 해줍니다.
@user 이맥스에서 hyperbole과 비교해줄래?
@assistant *Hyperbole과 eev 비교
Hyperbole와 eev는 둘 다 Emacs에서 문서와 코드를 통합하고 실행하는 데 도움을 주는 패키지이지만, 그 접근 방식과 기능에 차이가 있습니다.
***Hyperbole
-
목적: Hyperbole는 문서 내의 링크를 통해 다양한 작업을 수행할 수 있게 해주는 패키지입니다. 주로 문서 간의 탐색과 연결을 강화하는 데 중점을 둡니다.
-
기능:
- Implicit Buttons: 문서 내의 특정 패턴을 인식하여 버튼으로 변환합니다. 예를 들어, URL, 이메일 주소, 파일 경로 등을 클릭 가능한 버튼으로 만듭니다.
- Explicit Buttons: 사용자가 직접 버튼을 정의하여 특정 동작을 수행할 수 있습니다.
- Koutlines: 계층적 구조를 가진 문서를 쉽게 탐색할 수 있게 해줍니다.
- Smart Keys: 특정 키 조합을 통해 버튼을 활성화하거나 다양한 작업을 수행할 수 있습니다.
-
사용 사례: 문서 간의 연결을 강화하고, 문서 내의 링크를 통해 다양한 작업을 수행하는 데 적합합니다. 예를 들어, 문서에서 다른 문서나 웹사이트로의 링크를 쉽게 따라갈 수 있습니다.
***eev
-
목적: eev는 실행 가능한 문서를 작성하고 실행하는 데 중점을 둡니다. 코드와 설명을 함께 제공하여 학습과 문서화를 용이하게 합니다.
-
기능:
- 실행 가능한 문서: 문서 내의 코드 블록을 실행할 수 있습니다. 이는 리터러시 프로그래밍을 지원합니다.
- 간단한 인터페이스: 복잡한 설정 없이도 쉽게 사용할 수 있는 명령어와 키바인딩을 제공합니다.
- 다양한 스크립트 실행: 다양한 스크립트 언어를 지원하며, 외부 프로그램이나 쉘 명령어를 실행할 수 있습니다.
- 교육 도구: 코드와 설명을 함께 제공하여 학습자에게 도움을 줍니다.
-
사용 사례: 코드와 문서를 통합하여 작업하는 데 적합합니다. 특히, 코드의 실행 결과를 문서 내에서 바로 확인하고, 학습이나 문서화 작업을 할 때 유용합니다.
***비교 요약
- *Hyperbole*는 문서 간의 연결과 탐색을 강화하는 데 중점을 두며, 버튼을 통해 다양한 작업을 수행할 수 있게 해줍니다.
- *eev*는 문서와 코드를 통합하여 실행 가능한 문서를 작성하고, 코드의 실행 결과를 문서 내에서 확인하는 데 중점을 둡니다.
두 패키지는 서로 다른 목적을 가지고 있으며, 사용자의 필요에 따라 선택할 수 있습니다. Hyperbole는 문서 간의 연결을 강화하고, eev는 코드와 문서를 통합하여 실행 가능한 문서를 작성하는 데 더 적합합니다.
@user eev가 교육도구로써 사용하는 방식이 새롭네. 여기에는 저자의 교육 철학이 담겨 있는 것 같은데 혹시 여기에 대해서 조사해줄래?
@assistant @assistant eev의 교육 철학
eev 패키지의 저자인 Eduardo Ochs는 eev를 통해 독특한 교육 철학을 구현하고 있습니다. 그의 접근 방식은 다음과 같은 핵심 요소로 구성됩니다:
-
리터러시 프로그래밍(Literate Programming): eev는 문서와 코드를 통합하여 프로그래밍을 문서화하는 리터러시 프로그래밍의 개념을 강조합니다. 이는 코드와 설명을 함께 제공함으로써 학습자가 코드를 이해하고 실행하는 과정을 자연스럽게 연결시킵니다.
-
실행 가능한 문서: eev는 문서 내의 코드 블록을 실행할 수 있게 해줍니다. 이는 학습자가 코드를 읽고 이해한 후 즉시 실행해 볼 수 있게 해주며, 실시간 피드백을 통해 학습 효과를 높입니다.
-
학습자 중심의 접근: Eduardo Ochs는 학습자가 주도적으로 학습할 수 있도록 설계된 도구를 제공합니다. eev는 복잡한 설정 없이도 쉽게 사용할 수 있는 인터페이스를 제공하여, 학습자가 코드와 문서를 자유롭게 탐색하고 실험할 수 있게 합니다.
-
탐구와 실험 장려: eev는 학습자가 코드를 직접 수정하고 실행해 보는 것을 장려합니다. 이는 실험적 학습을 촉진하며, 학습자가 자신의 질문에 대한 답을 스스로 찾아가는 과정을 지원합니다.
-
문서화와 공유: eev는 코드와 설명을 함께 제공함으로써, 학습자가 자신의 학습 과정을 문서화하고 다른 사람과 공유할 수 있게 합니다. 이는 협업 학습과 지식 공유를 촉진합니다.
-
교육적 접근성: eev는 다양한 스크립트 언어를 지원하며, 외부 프로그램이나 쉘 명령어를 실행할 수 있습니다. 이는 학습자가 다양한 프로그래밍 환경에서 작업할 수 있게 해주며, 교육적 접근성을 높입니다.
-
문서와 코드의 통합: eev는 코드와 문서를 통합하여, 학습자가 코드를 읽고 이해하는 과정에서 문서를 참고할 수 있게 합니다. 이는 코드의 가독성과 이해를 높여줍니다.
Eduardo Ochs는 eev를 통해 학습자가 코드를 이해하고, 실험하고, 문서화하는 과정을 자연스럽게 연결시키고자 합니다. 그의 교육 철학은 학습자가 주도적으로 학습하고, 실험을 통해 배우며, 자신의 학습 과정을 문서화하고 공유하는 것을 강조합니다. 이러한 접근 방식은 현대의 교육 환경에서 학습자가 주도적으로 학습하고, 문제 해결 능력을 키우는 데 큰 도움이 될 수 있습니다.
@user 왜 이맥스를 선택한 것일까? 주피터노트북, 구글 코랩 등 다른 도구들도 있을텐데
@assistant @assistant 이맥스를 선택한 이유
Eduardo Ochs가 eev를 위해 Emacs를 선택한 이유는 여러 가지가 있습니다:
-
유연성과 확장성: Emacs는 매우 유연하고 확장 가능한 편집기입니다. 사용자가 원하는 대로 커스터마이징할 수 있으며, 다양한 프로그래밍 언어와 도구를 지원합니다. 이는 eev의 실행 가능한 문서 개념을 구현하는 데 매우 적합합니다.
-
통합 환경: Emacs는 통합 개발 환경(IDE)으로서의 기능을 제공합니다. 코드 편집, 버전 관리, 디버깅, 문서화 등 다양한 작업을 하나의 환경에서 수행할 수 있습니다. eev는 이러한 통합성을 활용하여 문서와 코드를 통합하고 실행할 수 있게 합니다.
-
커뮤니티와 생태계: Emacs는 오랜 역사를 가진 오픈 소스 프로젝트로, 활발한 커뮤니티와 다양한 패키지가 존재합니다. 이는 eev와 같은 새로운 패키지가 개발되고 공유될 수 있는 환경을 제공합니다.
-
리터러시 프로그래밍 지원: Emacs는 리터러시 프로그래밍을 지원하는 도구로 널리 알려져 있습니다. Org-mode와 같은 패키지는 문서와 코드를 통합하는 데 매우 유용하며, eev는 이러한 기능을 확장하여 실행 가능한 문서를 제공합니다.
-
커스터마이징 가능성: Emacs는 사용자가 원하는 대로 키바인딩, 인터페이스, 명령어 등을 커스터마이징할 수 있습니다. eev는 이러한 커스터마이징 가능성을 활용하여 사용자에게 맞춤형 학습 환경을 제공합니다.
-
교육적 접근성: Emacs는 다양한 프로그래밍 언어를 지원하며, 외부 프로그램이나 쉘 명령어를 실행할 수 있습니다. 이는 학습자가 다양한 프로그래밍 환경에서 작업할 수 있게 해주며, 교육적 접근성을 높입니다.
-
문서화와 공유: Emacs는 문서화와 공유를 위한 다양한 도구를 제공합니다. eev는 이를 통해 학습자가 자신의 학습 과정을 문서화하고 다른 사람과 공유할 수 있게 합니다.
-
Emacs Lisp: Emacs는 Emacs Lisp라는 강력한 스크립트 언어를 사용하여 확장됩니다. 이는 eev와 같은 패키지를 개발하고 커스터마이징하는 데 매우 유용합니다.
다른 도구와의 비교
-
주피터 노트북: 주피터 노트북은 주로 데이터 과학과 분석에 중점을 두며, 인터랙티브한 코드 실행과 시각화를 제공합니다. 하지만 eev는 문서와 코드의 통합, 실행 가능한 문서 작성, 교육적 접근성 등에서 더 강조점을 둡니다.
-
구글 코랩: 구글 코랩은 클라우드 기반의 주피터 노트북 환경을 제공하며, 협업과 공유에 강점이 있습니다. 하지만 eev는 Emacs의 유연성과 커스터마이징 가능성을 활용하여 사용자에게 맞춤형 학습 환경을 제공합니다.
Eduardo Ochs는 eev를 통해 학습자가 주도적으로 학습하고, 실험을 통해 배우며, 자신의 학습 과정을 문서화하고 공유하는 것을 강조합니다. 이러한 목적에 부합하는 Emacs의 특성과 기능이 eev의 선택에 큰 영향을 미쳤습니다.
@user 별도의 설정 없이 동작하고 간단한 키 바인딩으로 이맥스를 교육 목적으로 다룰 수 있다는 점이 놀라워. 무엇보다도 수학 도구로써 활용하기 때문이야. 내가 시모어 페퍼트의 터틀기하학과 서스먼의 SICM의 추상적 미분기하학에 관심이 많아. 여기에 이맥스가 학습도구 역할을 하길 바라고 있어. eev로 맥시마의 예제처럼 활용한다면 SICM 학습에도 도움이 될 것 같은데?
@assistant @assistant eev와 SICM 학습
eev를 통해 SICM(Structure and Interpretation of Classical Mechanics)의 추상적 미분기하학을 학습하는 데 도움이 될 수 있습니다. 다음은 eev를 활용하여 SICM 학습을 지원하는 방법입니다:
-
실행 가능한 문서: eev는 문서 내의 코드 블록을 실행할 수 있게 해줍니다. SICM의 예제 코드를 문서에 포함시켜, 학습자가 직접 실행하고 결과를 확인할 수 있습니다. 이는 학습자가 코드의 동작을 이해하고 실험해 볼 수 있게 합니다.
-
간단한 인터페이스: eev는 복잡한 설정 없이도 쉽게 사용할 수 있는 명령어와 키바인딩을 제공합니다. 이는 학습자가 빠르게 문서와 코드를 탐색하고 실행할 수 있게 해줍니다.
-
교육적 접근성: eev는 다양한 스크립트 언어를 지원하며, 외부 프로그램이나 쉘 명령어를 실행할 수 있습니다. SICM의 예제는 주로 Maxima나 Scheme을 사용하므로, eev를 통해 이러한 도구를 쉽게 실행할 수 있습니다.
-
문서화와 공유: eev는 코드와 설명을 함께 제공하여 학습자가 자신의 학습 과정을 문서화하고 다른 사람과 공유할 수 있게 합니다. SICM 학습 과정에서 작성한 코드와 설명을 eev 문서로 저장하고, 다른 학습자와 공유할 수 있습니다.
-
실험적 학습: eev는 학습자가 코드를 직접 수정하고 실행해 보는 것을 장려합니다. SICM의 예제를 수정하거나 확장하여 다양한 시나리오를 실험해 볼 수 있습니다.
-
터틀 기하학과 연계: 시모어 페퍼트의 터틀 기하학은 학습자가 시각적으로 기하학적 개념을 이해하는 데 도움을 줍니다. eev를 통해 터틀 기하학의 예제를 실행하고, SICM의 추상적 미분기하학과 연계하여 학습할 수 있습니다.
SICM 학습을 위한 eev 활용 예시
-
Maxima 예제 실행:
위의 예제는 Maxima 예제를 포함한 eev 문서를 열고, 해당 문서 내의 코드를 실행하는 함수입니다.
-
SICM 예제 문서화:
#+end_src
위의 예제는 SICM의 기본적인 좌표계와 메트릭을 정의하는 Maxima 코드를 포함한 eev 문서의 일부입니다.
-
실험적 학습:
#+end_src
위의 예제는 SICM에서 다루는 라그랑지 방정식을 Scheme으로 구현한 코드입니다. 학습자는 이 코드를 수정하고 실행해 보아 다양한 물리적 시스템을 모델링할 수 있습니다.
eev를 통해 SICM의 예제를 실행하고, 학습자가 직접 코드를 수정하고 실험해 보는 과정을 통해 추상적 미분기하학을 이해하는 데 큰 도움이 될 수 있습니다. 이는 학습자가 주도적으로 학습하고, 실험을 통해 배우며, 자신의 학습 과정을 문서화하고 공유하는 eev의 교육 철학과 잘 맞아떨어집니다.
@user