이맥스와 "자기 강화 성능"


14

간단히 말해, 하드 코어 Emacs 사용자를위한 제 질문은 이것입니다 : Steve Yegge가 말한 이 "자체 강화 성능"을 달성 했습니까?

Emacs는 자체 호스팅입니다. 그 안에 글을 쓰면 환경 자체가 더욱 강력 해집니다. 피드백 루프입니다. 개선을 만들기 위해 사용하는 환경을 향상시키기 때문에 반복되는 자체 강화, 곱셈 효과입니다.

당신이 할 정말 기분이 이맥스가 결국 만든 강조와 것을 10X 배의 생산성 등등 등등, 그리고 생산성이 기하 급수적으로 증가 계속하고?
공유 할 몇 가지 예 / 경험이 있습니까?

나는 Emacs와 Vim을 개발 (현재 Vim과 함께 사용)에 사용 .emacs하고 .vimrc있으며 , 내 요구에 맞게 구성되어 있으며이 두 편집자의 힘을 높이 평가합니다. 그러나 나는이 이멕스의 "자기 강화 루프"를 경험하지 않았으며, 누군가를 만난 적이 없었습니다.

예를 들어 Facebook에서 내 옆에있는 사람은 Vim을 사용했고 그 옆에있는 사람은 Emacs를 사용하고있었습니다. 둘 다 지옥처럼 빠르고 생산적이었습니다. 저는 이것을 사용하는 편집자가 아니라 자신의 지능과 태도에 기인합니다.

어쨌든, 저는 이멕스 지지자들이 저를 이멕스 교회로 돌려 보낼 놀라운 사례들을 보게되어 기쁩니다.

답변:


15

10 배 더 생산적 인가? 아마. 나는 곱셈 요소가 1.1과 비슷하다고 생각하는 경향이 있는데, 이는 잠시 후에 더해진다.

Steve Yegge가 말하고있는 것은 실제로 Emacs 의 전문가 가되는 것에 대한 반성입니다 . 이 곱셈 효과를 달성하는 사람들은 자신의 특정 요구에 맞게 Emacs를 조정하도록 elisp를 작성하여 Emacs 경험을 적극적으로 사용자 정의하고 있습니다. 예를 들어 Yegge는 ejacs를 썼습니다 . Yegge 인용구를 해석한다는 것은 Emacs를 더 쉽게 커스터마이징 / 확장하기 위해 Emacs를 커스터마이즈하고 있음을 의미합니다.

다음은 Emacs에 적용 할 때 다양한 수준의 전문 지식 을 분석 하는 방법입니다 .

  • 초보자는 , 이맥스를 실행 커서를 이동, 약간의 편집을 종료 이맥스를 만드는 방법을 알고있다.
  • 고급 초보자는 자신의 기본적인 정의를 넣어하는 방법을 알고 .emacs, 또는 완전히 다른 사람의 덩어리를 복사 한 .emacs그들의로. 글로 z 키 바인딩, require내장 패키지 작성, 사소한 모드 사용 f} 을 알고 있습니다.
  • 유능한 이맥스 사용자는 큰 .emacs파일을 여러 파일로 나눌 수 있습니다. 비표준 패키지를 다운로드하여 사용하고, 명령, 모드에 대한 설명서를 찾고, 기존 키 바인딩을 확인하고, 부 모드와 주 모드의 차이점에 익숙합니다. 유능한 사용자는 일반적으로 Emacs에서 프로그램을 작성, 컴파일, 실행 및 디버깅하는 일 / 주 동안 단일 Emacs 인스턴스를 유지합니다.
  • 능숙한 사용자는 emacs lisp를 작성하고 대화식 명령을 작성하는 데 익숙하며 마이너 모드를 작성하는 데 익숙합니다. 능숙한 사용자는 emacs lisp 코드를보고 사용중인 모드를 더 잘 이해하고 elisp 디버거를 사용하며 일반적으로 열등한 프로세스 (쉘, lisp 프로세스 등)를 사용합니다.
  • Expert Emacs 사용자는 처음부터 새로운 주요 모드를 작성하고, Emacs의 C 코드를보고 수정하며, 재귀 편집 이 무엇인지 알고 사용하며, 프로세스 간 통신을 사용하여 Emacs를 외부 도구와 통합합니다. 또한 emacs-devel 메일 링리스트를 읽습니다 .

그리고 개인적인 경험을 요구하고 있기 때문에, 제가 개인적으로 한 일이보다 생산적인 느낌을주는 예가 있습니다. 참고 : 저는 개발 환경의 최첨단 근처에있는 회사에서 일하고 있습니다. 예를 들어 여전히 CVS를 사용합니다.

  • Emacs를 버그 추적 도구와 통합했습니다. 커밋을하면 파일 이름과 버전이 버그 필드에 기록되고 Emacs에서 버그를보고 할당하고 해결할 수 있습니다.
  • 내 제품 (일일)과 Emacs를 연결하는 브리지를 작성하여 효과적으로 제품을 열등한 프로세스로 만들었습니다. 즉, 소스 코드를 즉시 변경할 수 있습니다.
  • 태그 내에서 찾기 파일을 사용 하여 TAGS 처리를 확장 하여 개발 환경에 적합한 여러 가지 단축키를 제공합니다.
  • 최소한의 키 입력으로 회귀 결과를 가져 와서 실패로 이동하고, 로그 파일을 검사하고, 하나 이상의 테스트를 다시 실행하거나, 디버그 실행을 시작할 수있는 모드를 작성했습니다.
  • 주간 상태 보고서 (예, 이메일에 Emacs를 사용)는 일주일 내내 커밋을 사용하여 자동 생성됩니다.

Emacs를 환경과 워크 플로우에 맞게 특별히 변경했습니다.

내 주변 사람들보다 10 배 더 생산적입니까? 아니.

그러나 일상적인 작업을 위해 다른 사용자가 사용자 정의되지 않은 환경에서 더 오래 일하는 몇 가지 키 입력으로 수행 할 수있는 많은 작업이 있으며 일반적으로 편집기와 웹 브라우저 또는 셸 사이를 전환해야합니다 .

그들은 놀라운 예입니까? 아니요. 내가 한 많은 작업이 Visual Studio에서 이미 제공되고 있다고 확신합니다 . 이 기사를 통해 이멕스 교회로 돌아갈 수 있습니까? 아마 아닙니다.

그러나 개발 환경에서 행동 패턴을 보았을 때 "내가 할 수만 있다면 X / Y / Z를 반복해서 할 필요는 없습니다." 그 가려운 곳을 긁기 위해 Emacs를 사용하는 것이 좋습니다. 그 스크래치는 Steve Yegge가 말하고있는 "자기 강화"경로의 첫 단계 일 수 있습니다.

사소한 참고 사항 : 나는 진정한 (전문가) 많은 Emacs 사용자가 스택 오버플로 사이트를 적극적으로 사용하고 있거나 적어도 Emacs 관련 질문에 대답하지 않는다는 것을 모르겠습니다. 스택 오버플로 에서 emacselisp 태그 의 최상위 사용자를 기반으로합니다 .


+1, Emacs-fu에 Dreyfus 스킬 모델의 멋진 적용. Dreyfus에 익숙하지 않은 독자 : en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition
limist

참고 : 저는 개인적으로 나 자신이 매우 숙달 이맥스 사용자로 간주,하지만 기본 설정을 사용자 정의하는 것이 너무 많은 시스템 발생할 수 있기 때문에 단순히 내 Emacs'en을 사용자 정의하지 않는 역효과 만 작업을 끝낼에 반대합니다.

11

물론이 증거는 일화적인 것이지만, 당신의 질문은 분명히 일화 적 증거를 요구합니다.

저는 과학적 계산과 글쓰기가 많은 학술 실험실에서 연구하는 학생입니다. 이러한 환경 (파이썬, SQL, 아카데믹 특수 목적 명령 줄 유틸리티, 텍스트 파일, LaTeX / BibTeX 등)에서 emacs 학습은 손 흙손과 백호의 차이를 크게 변화 시켰습니다. 이맥스의 년 후 (있는 나 자신에게 고체 평가 해 관할을 로 발가락 찍기와 능숙), 나는 나의 실험실 동료들이 두려워하는 문제를 처리하기를 간절히 바란다. 그들이 게으르고 부지런하기 때문이 아니라, 백호로 산을 찢고 흙으로 산을 긁는 것이 재미 있기 때문입니다. 적어도 두 번은 팀이 보고서 형식을 약간 변경하는 것에 대해 논쟁하기 시작했으며, 누가해야하는지에 대한 논쟁을 마치기 전에 이미 작업이 완료된 것을 발견했습니다. 정규식 교체 + 포함 elisp.

따라서 1 차적인 의미에서 emacs는 나를 훨씬 더 생산적으로 만들었습니다.

emacs 컴파운드에서 내 수익을 얻습니까? Yegge 는 물론 완전히 능숙 하다고 평가 하지는 않지만 지수 곡선의 발자국이 보이기 시작하고 emacs를 사용하면 더 많은 생산성을 얻을 수 있다고 생각합니다. 이를 정량화하기위한 리포지토리의 간단한 일화 통계 :

  • 7 명의 팀에서 나는 커밋의 절반 이상을 담당했습니다. 선배를 조정하면서도 여전히 거의 두 배나 커밋합니다. 내가 거의 두 배나 컸기 때문에가 아니라 emacs가 모두 나를 위해 버전 제어를 처리하기 때문입니다. 고통없이 커밋, 업데이트 및 병합 할 수 있기 때문에 우리 모두가해야하는 것처럼 더 작은 이산 청크를 체크인합니다. 그러나 그것은 "더 큰 위험"(생산이 아닌 과학적 연구를위한 실험 코드를 작성하고 있다는 것을 언급해야 함)을 자유롭게 느끼는 것을 의미하며, 이는 프로그래밍과 주제에 대해 더 많이 배우는 것을 의미합니다.

  • 우리가 쓴 마지막 보고서에서 svn blame은 다른 두 저자가 합친 것보다 세 배나 더 많은 책임을 맡았다 고 말합니다 . (이것은 내가 마지막 커밋을했기 때문이 아닙니다. 잠시 동안 이것에 대해 궁금했습니다. 그래서 추적을 시작했고 결과는 버전 기록 전체에서 꽤 안정적이었습니다.) 나는 6 배 더 빠른 작가입니까? 아니요 : emacs는 텍스트를위한 전기 톱이기 때문입니다. 이것은 내가 전에 시도한 적이 없었던 종류의 LaTeX 수술을 할 수 있다는 것을 의미합니다. LaTeX에 대해 더 많이 이해하게되어 미래에 생산성이 높아집니다.

  • 문서의 100 % (코드 및 내부 연구 노트 모두)는 내 것입니다. 실험실 동료들은 문서에 신경 쓰지 않기 때문에? 글쎄, 나는 org-mode를 찾기 전에 실제로 그것에 대해 신경 쓰지 않았다. 나는 일반적으로 이러한 것들에 대해 uber-type-B이지만, org-mode는 약한 중독으로 바뀌 었습니다. org-mode를 쾌적하게 보이는 html 및 LaTeX로 즉시 내 보내면 책임있는 문서에 대한 모든 장벽을 제거하고 일종의 게임으로 만들었습니다. 이제 해냈어요 그렇지 않다면, 나는 그것을 두려워하지 않을 것이고, 그것을 두려워하고 그것을 벗고 정신 에너지를 흡수하게 할 것입니다.

다른 의견 제시 자들은 인과 관계가 정확히 후진 할 수 있다고 제안한다. 아마도 이멕스는 생산성이 높을 것이며, 이는 중간 사용자가 어떤 이득을 누릴 것이라는 가설에서 확신을 얻지 못할 것이다. 나는 이맥스가 나를 더 생산적으로 만들 었는지 여부에 관계없이 일종의 자체 이행 위약 효과를 제안 할 수 있습니다 ( 이맥스 를 배우지 않은 쌍둥이가 없기 때문에 우리는 결코 알지 못할 것입니다). 구조화 된 텍스트와의 관계에서 분명히 주현절을 경험했습니다. emacs를 사용하게되어 매우 기쁩니다. 즉, 더 많이 사용한다는 의미입니다. 즉, 그것에 대해 더 많이 배우고 더 흥분하게됩니다. & c. BibTeX 모드를 발견했을 때 첫 데이트에서 방금 소녀에게 물었던 것처럼 느꼈습니다.

당신이 그것을 놓친 경우 : emacs는 서지 데이터베이스 편집의 생각에 나를 미치게 만들었습니다. 내 작품에서 뭔가 가치가 있다고 생각합니다.


8

예를 들어 Facebook에서 내 옆에있는 사람은 Vim을 사용했고 그 옆에있는 사람은 Emacs를 사용하고있었습니다. 둘 다 지옥처럼 빠르고 생산적이었습니다. 나는 이것을 사용하고있는 편집자가 아니라 자신의 지능과 태도에 기인합니다.

이 말은 매우 사실이며 모든 종류의 생산성 팁에 어느 정도 적용 할 수 있습니다.

생산성 향상 / 최적화에 관심이있는 사람들은 생산성 팁 자체의 효율성에 관계없이 삶의 초점이나 행동 때문에 생산성이 높아지는 경향이 있습니다.

"Emacs 나 Vim을 사용하고 있기 때문에 더 나은 개발자는 아니지만 이러한 도구를 익히기 위해 헌신하는 사람들은 좋은 개발자 인 경향이 있습니다"[1].

  1. 이것은 끔찍한 일반화이므로 절대 진실이 아니며 어쨌든 많은 의미가 없습니다 (좋은 / 나쁜 개발자는 무엇입니까? 등)

4

저는 약 20 년 동안 이맥스 사용자였으며, 그 시점에 도달하지 않았다고 말해야합니다.

은 "emacsvana"그는 대한 얘기를 얻으려면, 당신은 정말 자신 확인해야 elisp 전문가. 나는 약간했지만 실제로 내 기술은 다른 사람이 작성한 새로운 모드를 구성 할 수있는 수준에서 거의 끝납니다. 다른 사람의 생략을 디버그 (또는 신 금지)하려고 시도하는 것은 저를 약간 넘어서고 생각조차하지 않고 처음부터 내 자신을 쓰는 것입니다.

이것은 실제로 이전에 lisp를 사용해 왔으며 20 년 이상의 전문 소프트웨어 개발 경험이있는 사람이 만든 것입니다.

어쩌면 나는 단지 wuus 또는 무언가 일 뿐이지 만, Emacs 사용자가 그가 말하고있는 시점에 도달하는 사람은 거의 없다고 생각합니다 .

실제로 아무 문제가 없습니다. 매크로를 만드는 방법을 알고 있는데, 다른 텍스트 편집기를 사용할 때보 다 Emacs를 사용하여 생산성을 높일 수 있습니다. 때로는 생산성보다 10 배 이상 높습니다. 그러나 vi를 동등하게 잘 알고있는 사람 (매크로도 할 수 있기 때문에)보다 나을 더 잘 만들지 못합니다.


재 : 당신의 텍스트는 굵은 글씨로, 20 세의 베테랑 Emacs 사용자의 대다수가 홀수 매크로를 수행하는 방법을 알고 있다면 훨씬 더 놀랄 것입니다. Emacs가 그 잠재력을 너무도 행복하게 알지 못하는 것은 모든 일에 대해 혐오로 보입니다.
ocodo

4

아뇨, 몰랐어요. 누구도 들어 본 적이 없습니다. 나는 그렇게 생각하지 않습니다. Steve Yegge는 인기있는 블로거가하는 일을하고 있다고 생각합니다. 나는 그가 그것을 의미한다고 생각하지 않습니다. 그가 의사 소통하고자하는 것은 이것이다. "이맥스는 시작하기에 정말 효율적이며, 그것을 많이 사용자 화하면 더 효율적으로하는 방법을 배우게 될 것입니다.

만약 그가 그렇게 말했다면, 당신은 혼란스럽지 않을 것이며, 독자의 절반이되지 않을 것입니다.


4

이런 식으로보십시오 : Emacs와 Vim은 텍스트 수술과 반복적 인 키 스트로크의 자동화에 탁월합니다. 설교는 좀 더 설득력이 있지만 Yegge가 말하는 것입니다.

모든 줄의 시작 부분에 줄 번호를 추가해야하는 10000 개의 줄 파일이 있다면 메모장에서 수동으로 반나절을 보낼 수도 있습니다.

또는 이런 종류의 작업에 매크로를 실행하거나 내장 된 Emacs 기능을 사용하십시오. 그런 다음 반나절의 작업 시간을 절약하고 생산성이 10 배 이상 향상됩니다.

반복을 감지하고 제거하는 것입니다. 이를 위해서는 지능, 경험, 연습 및 기술이 필요하므로 Emacs를 사용하는 모든 사람이 생산성 이점을 볼 수있는 것은 아닙니다.


또는 간단한 텍스트 처리를 수행 sed하고 쉬는 날을 쉬게 할 수도 있습니다.
Josh K

@Josh K : 또는 Perl 또는 awk 또는 shell with paste. 가장 잘 아는 도구는 무엇이든.
잔 Lynx

5 분 이상 걸리지 않는 C 프로그램 작성
user281377

2
Emacs는 매우 큰 파일을 다루기에 적합하지 않습니다. 너무 느려집니다.

2

"N 배 더 빠름"에 대해서는 잘 모르지만, 유틸리티 기능을 신중하게 추가하면 Emacs가 템플릿을 작성하는 데 상당히 도움이됩니다. 이를 약간의 대상 언어 인식과 결합하면 "기능을 생성하고자하는 emacs를 말하고, 입력 인수 (언어, 유형 정보가 필요한 경우 유형) 및 반환 값을 말하고, emacs가 추가로 골격을 만들도록합니다. 으로 채우다".

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.