私は5年前にコーディングを始めました。私はJavaとEclipseを通じて導入されました。どちらもプログラミングコミュニティに大きな汚名が付いています。現在インターンしている会社の多くの人々はemacsまたはvimを好みます。基本的なテキストエディタは、一般的にIDEよりも高速または簡単です。ただし、ビルドのようなものはコマンドラインから高速になる傾向があります。
これは「オールドボーイズ」クラブの場合ですか、それともこの方法でプロジェクトをプログラムする方が効率的ですか?
実証するためのいくつかのユースケースを提供できますか? Eclipseを提唱していた場合、リファクタリングとオートコンプリートは非常に便利なツールだと思います。
Gav
EclipseのようなIDEで始めましたが、約2年前にVimに切り替えました。
テキストモードエディターを使用する理由:
本当に頑張れば、このようなエディターでの作業がやがて速くなり、実際には一種の「筋肉の記憶」として染み込んでいくことがわかります。これは、処理を遅らせることなくコーディングできることを意味します。
Vim/Emacs
Eclipse
それらすべて
通常、vim
を介して大量のコードを記述し、IDEを介してデバッグタスクを実行します。 IDEは、なじみのないソースコードをジャンプして学習するための優れたツールであるため、コードベースに精通していることは確かに要因です。
引数「Eclipse for Java」は、「Eclipse for [Javaではないもの]」とは異なる引数です。 EclipseはJavaに対応しています。
つまり、viはドライバーのようなもの、またはスイスアーミーナイフのようなものであり、Eclipseは大きなCNCコンボミルとアスファルトスプレッダーのようなものです。それらを正確に比較するのではなく、両方を使用するだけです。
また、あなたはほとんど知らないが、Eclipseが理解できる巨大なものの中で働いていますか?例としては、Eclipse自体での作業があります。ここで、Eclipseは完全な可視性と完全な言語サポートを備えており、トーストプロンプトとドキュメントリンクが必要です。
しかし、SQLデータベースを変換するために100行のRubyプログラムを入力している場合、Eclipseは、特にその荷物を考慮すると、あまり価値を追加しません。
Viを正しく設定することも重要です。そうしないと、魅力を理解できません。自動インデント、showmatch、タブ処理、およびその他のさまざまなオプションを設定する必要があります。タグファイルを生成する簡単な方法が必要です。 Googleは、数行のシェルコードとsed(1)を使用して、タグジェネレーターを見つけるか、ゼロから作成することができます。
リファクタリングを基準とは考えていません。それはあなたが1時間に1回や1日に1回もすることではありません。もちろん、リファクタリングが必要なときは大きなIDEを起動します。ああ、Java以外の自動リファクタリングは期待しないでください。
最後に、viは、IDEが始められない多くのことを実際に行うことができます。グループ化された正規表現のグローバル置換は、一種の一般的なリファクタリングエンジンです。ライン( ":")モードを学習する必要があります。簡単に言えば、これはエディター内にsed(1)があるようなものです。
それはすべてあなたが望む/期待するものとあなたの使用モデルに依存します。
Java IDEを探している場合、Eclipseは勝ちにくい。JavaのJavaで、Java人々によって書かれている。
コマンドラインからファイルをすばやく編集するツールを探している場合、Emacsまたはviの両方が適切です。
必要なこと(メールの送信/読み取り、プロジェクトの管理、todoリスト、コンパイル、デバッグなど)を実行できるため、離れる必要のないツールを探している場合は、Emacsの方が優れています「効率的」。
エディターを切り替える理由を探している場合は、必要なものを見つけてください。より良いEclipseが必要な場合、viとEmacsはそれを提供しません。Eclipseに固執します。
小さくて機敏なエディターを探しているなら、viがぴったりです。
最終的に拡張可能なエディターを探しているなら、Emacsが最適です。
どちらのツールを使用する場合でも、自分に浸る。すべての詳細を学習し、ニーズに合わせて拡張します。それをその限界まで使用し、その使用において効率的になります。
Emacsは強力なIDEになることができますが、EmacsからEclipseに移行したため、私は決して戻らないと言わざるを得ません。 Eclipseは、Emacs内では取得できない非常に多くの機能を提供するだけです。
Mylynと、使用しているデータとファイルのスコープビュー、デバッグUI、CVS UIはすべて組み込まれており、簡単に取得して使用できます。少しマウスを使って取得します。
まず最初に。 VIMは、Eclipseよりもプログラミングの方が生産的です。VIMの個人的な生産性はひどいかもしれませんが、VIM =ははるかに高いこれは事実です。
VIMは武道です。初めて使用するときは不自然に感じます。そして、それを機能させることさえできません。徐々に生産的になるには何年もの練習が必要です。最初は少し詳細をマスターすることに集中します。指先から画面にテキストが楽に流れるまで、マスターするこれらすべてのビットがゆっくりと加算されます。同僚がため息をつく複雑な編集は、息を吐き終える前に手から飛び出します。 VIMを使用できる人はほとんどいません。 productivleyを使用できるユーザーが少なくなります。そして、あなたは一生のうちにマスターに会うことは決してないかもしれません。しかし、彼らは存在すると噂されています。
VIMは、ホームロウで手を保つように設計されています。キーボードからマウスに手を動かすと、意気消沈します。それは運動量の多い運動です。腕を動かすと、心理的効果があり、モチベーションが低下します。 VIMを使用すると、誰かが手首をキーボードに固定できますが、ファイルを開いたり、ウィンドウを分割したり、タブを開いたり、プロジェクトを構築したり、検索/置換、フォントを変更したり、色を変更したりすることも簡単にできます。
VIMはモーダルです。つまり、Ctrl + Shift + Keyを押したままで複雑なキーの組み合わせを行う必要はありません。これは、長期的には手を傷つけます。代わりに、コマンドを実行します。モーダルの性質により、キーコンボの必要はありません。
コンピューターと同様に、メモリにデータを保存します。私たちのメモリは、一度にいくつかの値しか保持できません。頭から離れていく前に、いくつの整数を保持できるかを確認してください。ものを書き留めることで、この人間の制限を克服します。データがメモリから落ちた場合、書き戻した内容を簡単に確認して、それを取り戻すことができます。あなたの時間が総運動量に費やされている場合、あなたの脳内のデータの処理に費やされている可能性のある時間を失っている物理的なもの。まったく努力することなく、あなたの心が画面に流れ込むことを望んでいます。大したことではないように思えるかもしれませんが、VIMが頭の中にあるものを簡単に画面に転送できるので、生産性が大幅に向上します。私が言いたいことを言葉にするのは難しい。
VIMはコード補完をサポートしています。テキストベースとルックアップベースの両方。複数のファイルからテキストを取得できます。希望するものはすべてVIMで使用できます。自分で作るか、誰かが調理したものを使用してください。
VIMは、ctagsによる定義への統治をサポートします。アイテムのすべての参照を見つけることもできます。繰り返しますが、あなたが望むものは何でもVIMに含めることができます。
VIMのスクリプトは巨大です。数千の配色をダウンロードまたは作成し、瞬時に色を変更できます。MicrosoftVisual Studioでフォントまたは色を変更しようとすると、20秒間ハングしますデータをロードします。カラースキームを保存することはできず、風景を変更するたびに色とフォントを微調整するために30分を費やす必要があります。VIMに行間隔を設定できます画面上により多くのコード行を収めるためにゼロ.80行を超える.Visual Studioはすべての行に2ピクセルの間隔を使用し、調整できない!!!行数が少ない=スクロールが多い=生産性が低い=強制的に使用するより多くの行のフォント=眼精疲労。
VIMのインスタンスで分割ウィンドウが開きます。入力している場所から遠く離れたコードのあるセクション(または別のファイル)のデータを調べる必要がある場合に便利です。ウィンドウのサイズ変更に時間を費やす必要はありません。また、GUIウィンドウが互いに重なり合って遅れることを心配する必要もありません。関連のないコードウィンドウは、画面スペースを占有しないようにタブで開くことができますが、すばやく切り替えることができます。
IDEとしてのVIM: http://www.youtube.com/watch?v=MQy2rVOf-z0&feature=fvwrel VIM the revenge: http: //www.youtube.com/watch?v=lQNFfhC4QI8
さまざまな言語のコードを編集するために、長年viを使用してきましたが、本当に気に入っています。しかし、Java開発ではEclipseのようなIDEの方が優れていることがわかりました。今ではほとんど完全にEclipseで作業する傾向があります。主にEclipseで自動化されていない特定の種類のローテット編集を扱う著作権表示の一括挿入などのアクティビティ。また、Windows .Javaファイルタイプをviにマッピングして、 Eclipseが開くのを待っています。
Eclipseの魅力的な機能は次のとおりです。
一般的にviよりもはるかに効率的であることがわかっているので、試してみて、それがあなたにも当てはまるかどうかを確認する必要があります。
実際には常にそうとは限らないが、人々知覚キーボードショートカットがマウスよりも効率的であるという研究をどこかで読んだことを覚えています。
別の心理的効果は、高価なものに価値を付けることです。つまり、Emacsはそれを学習するのが難しいためですmust何らかの方法で良くなる。
これらの効果は、一部の人々がEmacs/Viに対して持っている極端な愛情の多くを説明できると思います。
ただし、Eclipseの場合、非常に遅く、ときどきクラッシュすることさえありますが、それはIDE全般には当てはまりません。
Eclipse、VS、Emacsの両方を定期的に使用しています。 TextMateも使用しますが、Macはもうありません。それは私が何をしているか、より具体的には、どのシステムが私の言語とツールを最もよくサポートしているかに依存します。
編集者のプログラミングにかなりの時間を費やしている人々は、何か役に立つことをするよりも知っています。彼らの中には、チャレンジのためだけにそれを行うことを認めている人もいます。他の人々は、Emacs/ViはIDEよりもはるかに多くのことができると主張することがよくあります。まあ、ほとんどのIDE(Eclipseを含む)もスクリプト化できます。その意味で、ほとんどすべてのエディターは同等です(ただし、一部のエディターは他のエディターよりも簡単にスクリプト化できます)。
IDEが好きなら、私のアドバイスはそれを使い続けることです。 One True Editorはありません。
編集:
これ はNick Bastinが言及している記事のようです。私はそれが決定的なソースからほど遠いことに同意します。しかし、認識されている生産性と実際の生産性が同じものではないという点は今でも変わらないと思います。
言語に依存します。
Javaまたは.Netの場合IDE(Eclipse、Netbeans、Visual Studio ...)を使用します。
私の意見では、他のほとんどすべての言語(C、C++、Ruby、python、haskell、LISP ...)ではviとemacsの方が優れています。
Vim/emacsが提供する効率は、主にキーボードを頻繁に使用することで得られます。これらのプログラムでは、ほとんど何でもキーボードから直接実行でき、マウスを停止して使用する必要はありません。
実際のvim/emacsエディターは、提供するショートカットの点でEclipseテキストエディターよりもはるかに優れていると思います。ただし、リファクタリングについては完全に同意します。
ほとんどの人は、Eclipseで可能なリファクタリングのレベルを実行するためにスクリプトを作成する必要があります。私はそれの一部が権利を自慢しているまたは人々がちょうど彼らがいつも持っているのと同じ方法でそれをしていると思います。
私はいつでもEclipseではなくemacに行きます。また、素の骨のemacsはそれほど素晴らしいものではないことを言わなければなりませんが、少し調整した後、あなたはそれを手放したくないでしょう。特に、修士論文の執筆中にemacsがどれほど役立つかを説明します。これは、Eclipseの汎用性が低いという理由だけで、Eclipseが劣っている理由を明らかにするはずです。
私は修士論文を次のプログラミング言語で作成しました:C++、Python and R. Complementary、私はLaTeXを使用した論文を書かなければなりませんでした。さらに、束を書かなければなりませんでした。シェルスクリプトとcmakeスクリプトのすべて。推測しますか?Emacsはすべてをサポートしています。特に、LaTeXドキュメントを作成するためにAuCTeXと連携することは喜びでした。 Pythonの機能を提供します。C++コードをビルドするためのcmakeスクリプトを作成したら、with emacsからコンパイルを呼び出すだけで完了しました。Eclipseはこれをすべて実行できないため、多くの異なるプログラムを使用することを学ぶ必要があります。メモを取るために、そのための組織モードがあります。
そして、私のプログラムには非常に強力なコンピューターが必要でした(ラップトップとは異なります)。したがって、emacs内からすべてをリモートで実行できます!!!! trampを使用して、Rコードのリモートインタラクティブ評価、C++コードのリモートコンパイル、実行、デバッグ、および使用していたのと同じローカルemacsウィンドウ内のすべてを実行しました。対照的に、すべてに個別のツールを使用した私の友人は、別のコンピューターで実行することを意図したソフトウェアの開発がはるかに遅かった。
このように、他にもいくつかの話がありますが、Emacsでできることについて良いアイデアが得られると思います。全体として、(学習曲線にもかかわらず)emacsを使用することを選択したことが、私がこれまでに行った最も生産的な決定であったと思います。
それが役に立てば幸い。
IDEを好む唯一の場所はデバッグ用です。デバッグ用にvim環境をセットアップしましたが、使用するのが非常に苦痛で不格好だったため、デバッグが必要なときにIDE(Netbeans)に切り替えるだけです。 vimはテキスト編集に最適で、IDEはより複雑なもの(デバッグやプロジェクト管理関連のタスクなど)に最適です。
私たちは最近、この議論に取り組んでいます。私の考えでは、これなしではできなかった1つの機能はEmacsのオートコンプリートです。 Eclipseのオートコンプリートは構文解析に基づいています-コードが解析され、コードを入力すると、補完の選択肢が提示されます。 Emacsのオートコンプリートは、単純なテキスト分析に基づいています。つまり、プレーンテキスト、コメント、ドキュメントなど、どこでも機能します。 Emacsのオートコンプリートは、成長したときにIntelliSenseが望んでいるものだと言い続けています。
更新:
EclipseはAlt- /を提供しますが、これはEmacsに似ているはずです。しかし、どれだけうまく機能するのかはわかりません。
上記の投稿のいくつかと同様に、私はIDE(Eclipse)から始めました。そこからEmacsに移動し、リッチテキストエディター(TextMate)に戻りました。
私にとって効率とは、インターフェイスレベルでエディタを使用できることでした。私が構築した他のサービス(または他のサービス)を擬似IDE環境に統合できるようにします。