Emacsと「自己強化パフォーマンス」


14

要するに、ハードコアのEmacsユーザーに対する私の質問は次のとおりです。スティーブ・イッゲが語る「自己強化パフォーマンス」を達成しましたか?

Emacsは自己ホスト型です。その中に物を書くと、環境自体がより強力になります。これはフィードバックループです。強化を作成するために使用している環境を強化しているために発生する、再帰的で自己強化的な乗算効果です。

あなたがでください本当に感じるあなたのEmacsが最終的にあなたの作っ強化することを10倍の時間がより生産的ようになどと、あなたの生産性が指数関数的に増加し続け、そして?
共有する例/経験はありますか?

私としては、私は(現在のVimに固執)開発のための両方EmacsやVimを使用していた、私を.emacsして.vimrc、両方のは非常に構成されている私のニーズに合った、私はこれらのエディタの両方の電源を感謝しています。しかし、私はこのEmacsの「自己強化ループ」を経験せず、出会った人にも会いませんでした(もちろん、これは私が本当にハードコアなEmacserではなく、まだ多くのEmacsersに会っていないからかもしれません)。

たとえば、Facebookでは、私の隣の人はVimを使用しており、彼の隣の人はEmacsを使用していました。両方とも地獄のように迅速で生産的であり、私はこれを彼らが使用していた編集者ではなく、彼ら自身の知性と態度に起因すると考えています。

しかし、とにかく、私はEmacsの支持者からEmacsの教会に私を引き返す驚くべき例を見ることができてうれしいです。

回答:


15

10 Xより生産的?ありそうにない。乗法因子は1.1に似ていると思う傾向があり、しばらくすると合計します。

Steve Yeggeが話しているのは、実際にはEmacsのエキスパートであることの反映であり、それらは非常にまれです。この相乗効果を達成している人々は、特定のニーズに合わせてEmacsを調整するelispを作成することにより、Emacsのエクスペリエンスを積極的にカスタマイズしています。例えば、Yeggeは書いてejacsを。Yeggeの引用を解釈することは、Emacsをカスタマイズ/拡張しやすくするためにEmacsをカスタマイズしていることを意味します。

Emacsに適用されるさまざまなレベルの専門知識を分類する方法を次に示します。

  • 初心者には、Emacsを実行周りにカーソルを移動し、いくつかの編集、終了のEmacsを作る方法を知っています。
  • 高度な初心者は、自分の中でいくつかの基本的なカスタマイズを置く方法を知っている.emacs、または完全に他の人ののチャンクをコピーした.emacs彼らに。彼らは、グローバルキーバインディング、require組み込みパッケージ、マイナーモードを有効にする方法を知っています。
  • 有能な Emacsユーザーには大きな.emacsファイルがあり、おそらく複数のファイルに分割されています。非標準のパッケージをダウンロードして使用し、コマンド、モードのドキュメントを見つける方法を知っており、既存のキーバインディングを表示し、マイナーモードとメジャーモードの違いに慣れています。通常、有能なユーザーは、Emacsの単一のインスタンスを数日/数週間実行し、Emacsからプログラムを作成、コンパイル、実行、およびデバッグします。
  • 熟練したユーザーはemacs lispを書いて独自の対話型コマンドを作成し、マイナーモードを書いて快適です。熟練したユーザーはemacs lispコードを見て、使用しているモードの理解を深め、elispデバッガーを使用し、一般に下位プロセス(シェル、lispプロセスなど)を使用します。
  • エキスパート Emacsユーザーは、新しいメジャーモードをゼロから作成し、EmacsのCコードを調べて変更し、再帰編集とは何かを知って使用し、プロセス間通信を使用してEmacsを外部ツールと統合します。彼らはemacs-develメーリングリストも読んでいます。

そして、あなたは個人的な経験を求めているので、ここに私が個人的にやったことの例があります。注:私はたまたま開発環境の最先端に近い会社で働いています。たとえば、まだCVSを使用しています。

  • Emacsをバグ追跡ツールに統合しました:コミットすると、バグのフィールドにファイル名とバージョンが記録され、Emacsからバグを表示、割り当て、解決することができます。
  • 私は自分の製品(デイジョブ)とEmacsをつなぐブリッジを作成し、製品を効果的に劣ったプロセスにしました-ソースコードをその場で変更することができました。
  • 開発環境に適した多くのショートカットを提供するfind-file-in-tagsを使用してTAGS処理を拡張しました。
  • 最小限のキーストロークで、回帰結果を取得し、失敗にジャンプしたり、ログファイルを調べたり、1つ以上のテストを再実行したり、デバッグ実行に入るモードを作成しました。
  • 私の週次ステータスレポート(はい、私はEmacsを電子メールに使用しています)は、1週間を通して行ったコミットを使用して自動生成されます。

これらは、環境とワークフローに合わせてEmacsを特別に調整するために行った変更です。

私は私の周りの他の人よりも10倍生産的ですか?番号。

しかし、私の日常の仕事には、カスタマイズされていない環境で他の人がはるかに長く費やすいくつかのキーストロークで行うことができる多くのタスクがあり、通常はエディターとWebブラウザまたはシェルを切り替える必要があります。

彼らは驚くべき例ですか?いいえ。私がやったことの多くは、すでにVisual Studioで利用できると確信しています。私の記事では、Emacsの教会に戻ってくれますか?おそらくない。

ただし、開発環境で動作のパターンが見られ、「X / Y / Zを何度も繰り返す必要はありませんが、できれば...」と言っているかゆみがある場合は、 Emacsを使用して、そのかゆみをかき消すことをお勧めします。そのスクラッチは、Steve Yeggeが話している「自己強化」パスの最初のステップになる可能性があります。

マイナーノート:多くの(何?)真に熟練したEmacsユーザーがスタックオーバーフローサイトを積極的に使用しているか、少なくともEmacs関連の質問に答えていないことはわかりません。スタックオーバーフローのemacsタグとelispタグのトップユーザーに基づいていると言います。


+ 1、Emacs-fuへのDreyfusスキルモデルのニースアプリケーション。ドレイファスに不慣れな読者向け:en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition
リミスト

注:私は個人的に非常に熟達したEmacsユーザーであると考えていますが、Emacsをカスタマイズするのは、単に仕事を終わらせるのではなく、デフォルトのセットアップをカスタマイズするのは逆効果になるようシステムに遭遇するからです。

11

もちろん、この証拠は逸話的なものですが、あなたの質問は明示的に逸話的な証拠を求めています。

私は学生であり、学術研究室で研究を行っています。このような環境(たとえば、python、SQL、アカデミックな特殊目的のコマンドラインユーティリティ、テキストファイル、LaTeX / BibTeXなど)では、emacsを学習することで、手こてとバックホウの違いがおおよそ異なります。emacsの1年後(私は自分自身をProficientに浸るつま先でしっかりしたコンピテントに評価します))、私は自分の研究室の仲間が恐れる問題を処理したいと思っています。彼らが怠け者で私が勤勉だからではなく、バックホウで山を壊し、こてで山を引っ掻くのが面倒だからです。少なくとも2回、私のチームは、レポートのフォーマットに複雑な変更を加えることについて議論を始めましたが、誰がそれをしなければならないかについての議論を終える前にタスクが既に完了していることを発見するためだけでした。正規表現置換+組み込みelisp。

そのため、一次的な意味で、はい、emacsのおかげで生産性が大幅に向上しました。

あなたは二次的な意味での生産性からの利益について尋ねているようです:emacsからの私の利益は合成されますか?私は完全に自分自身を評価しませんが堪能、おろかYegge、私は指数曲線の足を見始めて、emacsの私の使用は、さらに一層の生産性emacsing作ることだと思います。これを定量化するためのレポからの簡単な逸話的な統計:

  • 7人のチームで、私はコミットの半分以上を担当しました。年功に合わせて、私はまだほぼ2倍の頻度でコミットしています。私がほぼ2倍すごいからというわけではありませんが、emacsのすべてがバージョン管理を処理しているからです。コミット、更新、マージを簡単に行えるので、私たち全員がそうするように、小さな個別のチャンクでチェックインします。しかし、それは私が「より大きなリスク」をとることをより自由に感じることを意味します(私たちは生産ではなく科学研究のために実験的なコードを書いていることに言及する必要があります)、つまりプログラミングと私の主題についてもっと学ぶことを意味します。

  • 私たちが書いた最後のレポートで、svnの非難は、私が他の2人の著者を合わせた 3倍より多くの行を担当したことを教えてくれます。(これは最後にコミットしたからというだけではありません。しばらくの間これに興味があったので、追跡を開始しましたが、バージョン履歴全体で結果はかなり安定していました。)いいえ:emacsはテキストのチェーンソーだからです。これは、これまで試してみたことがなかった種類のLaTeX手術ができることを意味します。つまり、LaTeXについてより深く理解することになり、将来的に生産性がさらに向上します。

  • ドキュメント(コードと内部研究ノートの両方)の100%は私のものです。私の研究室ではドキュメントを気にしないのですか?まあ、私はorg-modeを見つける前にそれを気にしませんでした。私はこれらのことについて通常はUber-Type-Bですが、org-modeはアウトラインを穏やかな依存症に変えました。Org-modeの見栄えの良いhtmlおよびLaTeXへの即時エクスポートにより、責任のあるドキュメントに対するすべての障壁が取り除かれ、一種のゲームになりました。だから今私はそれをします。もしそうでなければ、私はそうしなかったでしょう、あるいは少なくとも私はそれを恐れて、それを延期し、精神的なエネルギーを浸出させました。

他の評論家は、因果関係は正確に後方にある可能性があることを示唆している。おそらく、emacsは生産性の高さに報いている。私は一種の自己実現プラシーボ効果も提案するかもしれません:emacsが私をより生産的にしたかどうか(そしてもちろんemacsを学んでいない一卵性双生児がないので、私たちは決して知りません確かに、構造化テキストとの関係にひらめきがありました。emacsを使うことに興奮しています。つまり、emacsをより多く使用することを意味します。つまり、emacsについてより多くを学び、より興奮することです。BibTeXモードを発見したとき、最初のデートで女の子に出かけたばかりのように感じたのを覚えています。

あなたがそれを見逃した場合:emacsは書誌データベースを編集するという考えに私をうんざりさせました。 私の仕事では、何か価値があると思います。


8

たとえば、Facebookでは、私の隣の人はVimを使用しており、彼の隣の人はEmacsを使用していました。どちらも地獄のように迅速で生産的であり、私はこれを彼らが使用していたエディターではなく、彼ら自身の知性と態度に起因すると考えています。

この発言は非常に真実であり、あらゆる種類の生産性のヒントにいくらか当てはまります。

生産性の向上自体に関係なく、生産性の向上/最適化に関心がある人は、人生の焦点や行動により生産性が高くなる傾向があります。

「EmacsまたはVimを使用しているため、あなたは優れた開発者ではありませんが、これらのツールを習得するのに十分な熱心な人は優れた開発者である傾向があります」[1]。

  1. これは恐ろしい一般化であるため、絶対的な真実ではなく、とにかくあまり意味がありません(良い/悪い開発者とは?)

4

私は約20年間Emacsのユーザーであり、いや、その点に到達していないと言わざるを得ません。

彼が話している「emacsvana」に到達するには、本当に自分をelispエキスパートにする必要があります。私は少しやってみましたが、実際には私のスキルは他の誰かが書いた新しいモードを設定できるレベルでほぼ終わります。他の誰かのelispをデバッグ(または修正を禁じる)しようとすることは、私を少し超えており、考えさえせずにゼロから自分自身を書くことです。

これは、実際にLispを使用した経験があり、20年以上のプロのソフトウェア開発経験があります。

たぶん私はただのwuusか何かに過ぎませんが、彼が話しているポイントに到達するEmacsユーザー非常に少ないと思います。

それは本当に悪いことではありません。マクロの作成方法を知っているので、それだけで他のテキストエディターよりもEmacsの生産性が高まります。場合によっては、生産性が10倍以上になります。ただし、viを同等によく知っている人よりも優れているわけではありません(マクロも実行できるため)。


再:あなたのテキストを太字で、20年のベテランEmacsユーザーの大多数が奇妙なマクロをどうやってやるか知っていたらもっと驚いただろう。Emacsがその可能性を至福に知らないことは、すべてのものに嫌悪感を抱いているようです。
オコド

4

いいえ、私は聞いたことがないし、持っている人のことは聞いたことがない。私はそれが起こるとは思わない。Steve Yeggeは人気のブロガーがやっていることをやっていると思う。彼は論争の的となる、トップの声明を出して、彼の主張を理解し、より目立つようにしている。彼がそういう意味だとは思わない。彼がおそらく伝えようとしているのは、「Emacsは最初から非常に効率的であり、多くのカスタマイズを行うと、それをさらに効率的にする方法を学ぶことができます。これはすごいですね。」

彼がそれを言っただけなら、あなたは混乱しないでしょう、そして彼は半分の読者を持っていません。


4

このように見てください:EmacsとVimは、大量のテキストのナビゲーションは言うまでもなく、テキストの手術と反復的なキーストロークの自動化に優れています。これはYeggeが話していることですが、もっと説教的な方法ではありますが。

すべての行の先頭に行番号を追加する必要がある10000行のファイルがある場合は、メモ帳で半日かけて手動で行うこともできます。

または、マクロを起動するか、このようなことのために組み込みのEmacs関数を使用します。その後、半日分の作業を節約でき、生産性は10倍以上になります。

繰り返しを検出し、それを排除することです。それには知性、経験、実践、スキルが必要なので、Emacsを使用するすべての人が生産性のメリットを享受できるわけではありません。


または、いくつかの簡単なテキスト処理を使用sedして、休みの時間を過ごすこともできます。
ジョシュK

@Josh K:または、Perl、awk、または貼り付けシェル。あなたが最もよく知っているツール、本当に。
ザンリンクス

でも、それが5分以上かかりませんでし行うためにCプログラムを書く
user281377

2
Emacsは、非常に大きなファイルを扱うのには適していません。動きが鈍すぎる。

2

「N倍高速」については知りませんが、ユーティリティ関数を慎重に追加すると、Emacsでテンプレートの入力がかなりうまくなります。それをターゲット言語の認識と組み合わせて、「関数を作成したいemacに伝える、入力引数(言語に型情報が必要な場合は型)を伝え、値を返す、emacsにスケルトンを作成させる」などの操作を行うことができます塗りつぶし」。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.