別の質問では、 Mark はIDEを高く評価しており、「一部の人々はまだ「なぜ」使用すべきかを知らない...」と述べています。プログラミングにvimを使用し、ほとんどすべての同僚がすべての作業にvimまたはemacsを使用する環境で働く人として、IDEの利点は何ですか?なぜ使用する必要があるのですか?
これは一部の人々にとっては有償の問題であると確信しており、火炎戦争を開始することに興味がないので、IDEベースのアプローチが優れていると思われる理由のみを返信してください。 IDEを使用してはならない理由について聞くことに興味はありません。すでに使用していません。いわば「フェンスの向こう側」からの話に興味があります。
IDEが特定のタイプの作業には適しているが、他のタイプの作業には適さないと思われる場合は、その理由も聞きたいと思います。
実際に使用している言語に依存しますが、C#およびJavaでは、IDEが次のことに役立つと思います。
これらはすべて時間を節約します。それらは私が手動でできることですが、より多くの苦痛を伴います:私はむしろコーディングしたいと思います。
コード補完。コードの探索に大いに役立ちます。
IDEを使用する理由に関する簡単な答えは、怠lazです。
私は怠け者で、代わりに簡単な方法があるのに難しいことをしたくないのです。 IDEは人生を楽にし、怠け者にアピールします。
コードを入力すると、IDEがコードの有効性を自動的にチェックします。メソッドを強調表示してF1を押すとヘルプが表示され、右クリックして[定義に移動]を選択するとすぐにジャンプします定義済み。 1つのボタンを押すと、デバッガーが自動的に接続されたアプリケーションが起動されます。そしてリストは続きます。開発者が日々行うすべてのことは、1つの屋根の下に集められます。
IDEを使用する必要はありません。それはそうしないことだけではるかに難しい仕事です。
「テキストエディタ」が本当にemacsであるときに、古典的な「テキストエディタとコンソールウィンドウ対IDE」を実行するのは公平ではないと思います。 IDEに典型的な機能のほとんどは、emacsにもあります。または、おそらくそれらはそこから生まれたものであり、最新のIDEは主にインターフェースの改善/単純化です。
これは、元の質問の答えがそれほど明確ではないことを意味します。それはhow問題のサイトの人々がemacsを使用しているか、主にテキストエディターとして使用している場合、またはすべてを使いカスタムスクリプトを使用している場合、関連モードのコマンドを学び、知っているコードのタグ付けなどについて。
私は反対の方向からこの質問に来ます。私は、Makefile + Emacsの土地で非常に少ないピットストップでプログラミングで育ちました。 DOSの最初のコンパイラであるMicrosoft Quick Cから、自動化するIDEがありました。私は長年Visual C++ 6.0で働いていましたが、Enterprise Javaを卒業したとき、Borland JBuilderで働いてからEclipseに落ち着きました。これは私にとって非常に生産的になりました。
私の最初の自己教育、大学、そして現在の職業経歴を通して、IDE内でのみ行われる主要なソフトウェア開発は逆効果になることを知るようになりました。これは、ほとんどのIDEがtheir独特のI-control-how-the-world-worksスタイルで作業することを望んでいるからです。プロジェクトをその線に沿って細かく切り刻む必要があります。奇妙なダイアログボックスを使用して、プロジェクトのビルドを管理しました。ほとんどのIDEは、プロジェクト間の複雑なビルド依存関係の管理が不十分であり、依存関係を100%動作させるのは難しい場合があります。私は、すべてをクリーン/リビルドしない限り、IDEがコードの作業ビルドを生成しない状況にありました。最後に、ソフトウェアを開発からIDEからQAやProductionなどの他の環境に移行するためのクリーンな方法はめったにありません。通常、すべてのデプロイメントユニットを構築するのはかわいらしいイベントです。または、IDEベンダーが提供するものをまとめてくれる厄介なツールがあります。繰り返しますが、このツールは通常、プロジェクトとビルド構造がルールに完全に準拠していることを要求します。プロジェクトの要件に合わない場合もあります。
チームで大規模な開発を行うには、IDEを使用してコードを開発し、すべてのビルドを手動で作成したコマンドラインスクリプトを使用して行うと、最も生産性が高くなることがわかりました。 (Java開発用のApache Antが好きです。)IDEからスクリプトを実行することは、クリックフェストまたは複雑なビルドの自動化の悪夢であることがわかりました。 (および混乱を抑えるため)Altキーを押しながらTabキーを押してシェルに移動し、そこでスクリプトを実行します。
手動ビルドでは、バックグラウンドコンパイルのような現代のIDEの優れた点をいくつか見逃す必要がありますが、得られるものはより重要です。複数の環境に対応できるクリーンで簡単なビルドです。これらのアジャイル男たちが語る「ワンクリックビルド」とは?私たちはそれを持っている。ビルドスクリプトは、継続的インテグレーションシステムからも直接呼び出すことができます。継続的インテグレーションを通じてビルドを管理することで、コード展開をより正式にさまざまな環境にステージングおよび移行できます。また、ビルドまたはユニットテストに違反する不正なコードを誰かがチェックインするとすぐに通知されます。
実際、IDEからビルドの役割を引き離しても、私たちをそれほど傷つけることはありません。 Eclipseのインテリセンスおよびリファクタリングツールは、まだ完全に有用で有効です。バックグラウンドコンパイルは、単にこれらのツールをサポートするのに役立ちます。そして、Eclipseのプロジェクトの独特なスライスは、誰もが理解できる方法で問題セットを精神的に分解する非常に良い方法として機能しました(ただし、私の好みには少し冗長です)。 Eclipseで最も重要なことの1つは、優れたSCM統合であると思います。それが、チーム開発をとても楽しいものにしているのです。私たちはSubversion + Eclipseを使用していますが、これは非常に生産的であり、専門家になるために従業員を訓練するのは非常に簡単です。
あなたがあなたの質問で強調する応答の著者であり、確かに少し遅れてこれに来ることは、私はリストされている多くの理由の中で、プロの開発者の生産性が最も高く評価されているスキル。
生産性とは、可能な限り最良の結果で効率的に仕事をする能力を意味します。 IDEはこれを多くのレベルで有効にします。私はEmacsの専門家ではありませんが、主要なIDEの機能が欠けているとは思いません。
設計、文書化、追跡、開発、構築、分析、展開、および保守、エンタープライズアプリケーションの重要な踏み台は、すべてIDE内で実行できます。
選択肢があるのに、なぜそれほど強力なものを使用しないのですか
実験として、たとえば30日間IDEを使用して、自分の気持ちを確認してください。経験に関するあなたの考えを読んでみたい。
IDEを使用すると、次の利点があります。
まだまだあります。試してみてください。
IDEは基本的に次のとおりです。
単一のパッケージにすべて。
これらすべて(およびそれ以上)は、個別のツール、または優れたプログラマブルエディターとEmacs(VimでもIDEbility IMOが少し少ない)などの追加のツールを使用して実現できます。
あるユーティリティと環境に統合できる次のユーティリティとを頻繁に切り替えることに気付いた場合、またはここにリストされている機能の一部が不足している場合(さらに完全に他の投稿にある場合)、おそらくIDE(またはマクロを追加するなどして、環境のIDE能力を向上させます)。複数のプログラムを使用して「IDE」を作成した場合(上記の意味で)、実際のIDEに移行する必要はありません。
Eclipse:
コードをハイライト表示し、バックグラウンドでコンパイルし、進行中にエラーを指摘します。
Ctrl-Spaceで変数名を提案するjavadocとの統合。
コンパイルすると、すぐにエラーが発生します。エラーをダブルクリックすると、適切な行が表示されます。
JUnitと本当にうまく統合されたctrl-F11はテストを実行し、テストが失敗したことを教えてくれます。出力ウィンドウに例外がある場合、行をダブルクリックして、失敗した行に移動します。それだけでなく、ctrl-F11は、テストを実行する前にすべてがコンパイルされていることを確認します(つまり、忘れることはありません)。
Antとの統合。アプリケーションをビルドおよびデプロイするための1つのコマンド。
Webサーバーのリモートデバッグを含む、デバッガとの統合。
コードのセクションへの参照を検索する素晴らしいリファクタリングツール。変更の影響を知るのに役立ちます。
全体として、それは私をより生産的にします。
Emacsを開発とメール/ニュースの両方の主要な環境として約10年間(1994-2004年)使用しました。 2004年にJavaを強制的に学習させたときにIDEの力を発見し、実際にIDE(- IntelliJ IDEA )が好きだったことに驚いた。
それらの多くがすでにここで言及されているので、私は特定の理由には触れません-ただ、異なる人々が異なる機能を愛していることを覚えておいてください。私と同僚は同じIDEを使用しましたが、私たちは使用可能な機能のほんの一部を使用し、IDEを使用する他の方法を嫌いました(しかし、私たちは両方ともIDE自体)。
しかし、私が注目したいEmacs/Vim関連の環境よりもIDEには利点が1つあります。必要な機能のインストール/構成に費やす時間が少なくて済みます。
Wing IDE (Pythonの場合)を使用すると、インストール後15〜20分で開発を開始できます。 Emacs/Vimで使用して実行する機能を取得するのに何時間かかるかはわかりません。 :)
それは間違いなく私にとって生産性の向上につながります。 LinuxアプリケーションをVista上のVisual Studioでコーディングし、Linux仮想マシンを使用してそれらをビルドするまでです。
関数またはメソッド呼び出しのすべての引数を記憶する必要はありません。入力を開始すると、IDEが必要な引数を表示します。ウィザードを使用して、プロジェクトのプロパティ、コンパイラオプションなどを設定します。現在のドキュメントやフォルダー内のファイルだけでなく、プロジェクト全体で検索することができます。コンパイラエラーが発生した場合は、ダブルクリックすると問題のある行に移動します。
モデルエディタ、外部データベースへの接続と参照、コード「スニペット」のコレクションの管理、GUIモデリングツールなどのツールの統合時間を短縮し、開発プロセスの流れをより効率的に保ちます。
人によって異なる理由があるかもしれません。私にとってこれらは利点です。
1日の終わりに、メモ帳やワードパッドでできるよりも速くコーディングできるようになります。それはIDEを好む私にとってかなり良い理由です。
IDE canは、開発者が達成しようとしていることに応じて「優れた」選択になります。
IDEは通常1つ(または少数の選択)の言語を対象としているため、テキストエディターcanは「優れた」ものです。
開発者が1つのOSで単一の言語または関連言語(C#やT-SQLなど)の「クラスター」にほとんどの時間を費やしている場合、GUIデザイン、デバッグ、インテリセンス、リファクタリングなどのツールが提供します優れたIDEは非常に魅力的です。たとえば、ほとんどの時間をVB.NETで、おそらくWindows環境で少しのT-SQLで作業する場合、Visual Studioや同等のIDEを見ていないのはかなりばかげているでしょう。
IDEやテキストエディターを好む人たちに偏見はありません。どちらも非常に生産的で便利ですよく学べば!
それは主に開発者の意識の範囲に関係していると思います。 IDEは、開発者の作業コンテキストの巨視的なビューを提供します。クラス階層、参照リソース、データベーススキーマ、SDKヘルプリファレンスなどを同時に表示できます。また、キーストロークの影響を受け、影響を与える非常に多くの要素、および拡大するアーキテクチャとアーキテクチャの交差点により、ますます困難になります。一度に1つのコードアイランドからのみ動作します。
OTOH、「私とvimとmanページだけ」は、私の作品をよりスリムに-しかし、強烈で正確に-見せてくれます。これは、1つの言語で構築された適切に設計され、適切にパーティション化され、まばらに結合された非常にまとまりのあるコードベースと、動作する静的ライブラリのセットがあれば大丈夫です。特に開発チームのサイズが大きくなり、コード構造が変更される場合、時間、距離、および個人の好みに応じて。
現在、Flexと.NETのプロジェクトに取り組んでいます。 Flexの優れた点の1つは、データベースからデータを取得したり、ファイルを開いたり、閉じたり、読み込んだり、書き込んだりするなど、標準的なことを実現するためのさまざまな方法があることです(まだFlex Builder/Eclipseを使用していますIDE-VSのような典型的なヘビーウェイトの例です。まだ基礎を学んでおり、トレーニングホイールが必要だからです。パターンに自信が持てれば、vimに戻ることを期待しています。ビュー、私はいくつかのことを本当によく知ることによって、専門的に行う必要があることを行うことができます。
OTOH、.NETでそのポイントに到達することを想像することはできません。なぜなら、私が維持する予定のビューは拡大し、変化し続けるからです。概念的な整合性ははるかに低く、プロジェクトの数か月にわたる開発者は数か月にわたって一貫性がはるかに低くなりますが、IDEはそれをサポートし、それを促進する可能性があります。そのため、開発者はさらに多くのことを適切に知る必要があります(より簡単に知ることができます)。また、StackOverflowの質問のはるかに高い割合に回答する(または理解する)こともできます。つまりより深い知識スタックを持つことができます。そして、私たちはさまざまなヘルプが必要な広告に対応できます。
物事は両方向に行き過ぎる可能性があります。 「エディタのみ」のスコープでは、「ハンマーしか持っていない場合、すべてが釘のように見える」ようなものかもしれません。 IDEアプローチを使用すると、一緒に固定したいものに合わせて、さまざまなファスナーと関連ツールから選択できます-ナル/ハンマー、ネジ/ドライバー、ボルト/レンチ、接着剤/接着剤-銃/クランプ、磁石、そしてオン-オン-すべてあなたの指先で(あなたが始めるのを助けるウィザードで)。
IntelliSense 、統合デバッガ、およびイミディエイトウィンドウにより、生産性が大幅に向上しました( Visual Studio 2008 )。すべてを指先で操作することで、コードを記述しながら、膨大なプロジェクトの大部分を頭の中に収めることができます。 MicrosoftはOSにボールを落とし続けますが、Visual Studioはこれまでに開発された最高の製品の1つです。
排他的だと考えないでください。 IDEを使用すると利点が得られ、真剣に取り組む必要がある場合はvim /優先テキストエディターに切り替えます。
IDEは、リファクタリング、ブラウジング、デバッグ、およびwhatを実行するのに適しています。その後、IDEで小さな作業を行い、大きな作業をvimに切り替えて作業を完了します。
あなたが何を求めているのか分かりません。 「...ではなくIDEを使用すべきですか?」と尋ねますが、代替手段が何なのかわかりません- Vim そしてEmacsは多くの機能を果たしますIDEはあなたに与えます。大きなIDEがUIデザイナーのようなものである可能性があるという、彼らが処理しない唯一の側面です。それから、あなたの質問は、VimとEmacsのより単純な領域のために作られた引数とともに、単に「何IDEを使うべきか」に要約されます。
Visual StudioやEclipseなどのGUIベースのIDEには、表示機能があるため、EmacsやvimなどのテキストベースのIDEよりもいくつかの利点があります。
基本的にGUIベースのIDEを使用すると、画面上でより有用な情報を一度に取得でき、アプリケーションのグラフィカル部分をテキスト部分と同じくらい簡単に表示/編集できます。
開発者が体験する最もクールなことの1つは、一部のデータを計算するメソッドを編集し、アプリの実行時にユーザーに表示されるように、コードのライブ出力を別のウィンドウにグラフィカルに表示することです。これがWYSIWYG編集です!
EmacsやvimなどのテキストベースのIDEは、コード補完やリファクタリングなどの機能を長期にわたって追加できるため、長期的には主な制限はテキストベースの表示モデルです。
また、私はほとんどすべての開発にVimを使用しています(ほとんどemacsを学ぼうとしているためです)。 (もちろんGUIからの)まったくの直観性が、人々がIDEを使用することを好む主な理由だと思います。直感的であるため、ツールの学習オーバーヘッドはほとんどまたはまったく必要ありません。学習のオーバーヘッドが少ないほど、より多くの作業を完了できます。
IDEを使用することで考えられるいくつかの理由:
そして率直に言って、私はマウスが好きです。純粋なテキストベースのエディターを使用すると、孤独になります。
IDE を使用すると、より速く、より簡単に作業できます...単純なテキストエディタでコードをナビゲートするのに多くの時間を費やしていることに気付きました...
優れたIDEでは、IDEが関数、前の編集位置、変数へのジャンプをサポートしている場合、その時間は短くなります...また、優れたIDEは、実験時間を短縮します起動時間が短いため、異なる言語機能とプロジェクト。
私にとって、IDEの方が優れているのは、コード内のより高速なナビゲーションが可能になるためです。 IDEを使用しない場合、目的地に到達するまでに時間がかかります。あなたの考えがより頻繁に混乱するかもしれません。より多くのクリック/より多くのキーを押す必要があることを意味します。物事をどのように実装するかという考えにもっと集中する必要があります。もちろん、物事を書き留めることもできますが、設計と実装の間をジャンプする必要があります。また、GUIデザイナーは大きな違いをもたらします。手作業で行うと、時間がかかる場合があります。
開発時間を節約
統合デバッグ、インテリセンスなどの機能を提供することで、生活が楽になります。
多数ありますが、使用することをお勧めします。それらは明らかです。
私にとっては、ターミナルの古き良き時代に行ったすべてのGUIバージョンにすぎません。 IDEは、特にリンクに関するものを多く隠しているため、あまり優れていませんが、Qtなどの特定の開発プラットフォームでは、顕著な利点があります。
他のビジュアルのような一部のIDEは、入力時にコードを解析し、コンパイルする前にエラーを検出するようです。IDEのみがコンパイラと密接に連携して問題をすぐに検出できるロジックのようです入力されたソース内。
IDE /コマンドラインフレームウォーが存在するという私のワイルドな答えは、D言語とは異なり、C/C++実行可能ビルドが標準化された観点からあまりうまく処理されていないからです。すべてのプラットフォームは独自の方法でコンパイル/リンク/などを処理するため、面倒を少なくするためにIDEを作成します。
あなたの観点からは、コマンドラインを使用する方が簡単かもしれません。標準オプションを備えたコンパイラが1つだけであれば簡単だったでしょうが、実際にはC/C++は柔軟であるため、最終的にはすべてのプラットフォーム独自の方法で実行するため、IDEは実行方法の説明を無駄にしないようにします。
実行可能ファイルがカーネルとどのように通信するかを学習できる場合、またはコンパイラの設計について何かを知っている場合は、適切なコマンドラインで作業する方法があるかもしれませんが、あなたが持っているとは思えません。
MicrosoftまたはAppleは、彼らが悪であるすべてのことを、詳細を入力せずにアプリケーションを構築する簡単な方法を提案する必要があります。アプリケーションの構築はOSのアーキテクチャに直接依存するため、コマンドラインは。
シンプルで大きくて複雑なアプリケーションを、それが何をするのか深く掘り下げたくない場合-> IDE、小さなソフトウェア、またはシンプルなシステムソフトウェア設計->コマンドライン。もちろん、Makefileを埋め込んだ気の利いたライブラリを除きますが、それは別の話です。
また、IDEは、皮肉なことにGUIまたはインターフェイスを持つ、またはOSに直接バインドされているアプリケーションと関係がある場合に使用されると思うので、UIを使用する人のためでもあります/ GUIはどのように機能するかを知らなくても、システムをプログラミングする人はすべてを必要としません。
IDEは単なる現代のたわごとですが、100年後もコマンドラインはまだ存在すると思います。
コードを使用する主な理由は、コードが100ファイルを超える場合です。
Ctagsは作業を行うことができますが、 一部のIDE は、ファイルを超高速で簡単にナビゲートするための非常に優れた方法を備えています。
多くの作業が必要な場合、時間を節約できます。
テキストエディタとIDEの間に明確な境界線があるかどうかはわかりません。スケールの一方の端にメモ帳のようなものがあり、もう一方の端に最新のIDEがありますが、その間に多くのものがあります。ほとんどのテキストエディターには構文の強調表示があります。プログラマー向けのエディターは、多くの場合、簡単なコードナビゲーションやオートコンプリートなど、さまざまな機能を備えています。 Emacsでは、デバッガーを統合することもできます。 10年前のIDEでも、最近の本格的なテキストエディタに期待するよりも、プログラマを支援する機能がはるかに少なかった。
それはあなたが何をしているのか、そしてあなたがそれをしている言語に大きく依存します。個人的には、IDE(または「my IDE vim、データベースクライアントを実行するもの、bashプロンプトまたは末尾のログを含むもの」、「IDE」をどの程度広く定義するかに応じて)、ほとんどの作業で使用しますが、プラットフォーム固有のGUIを開発している場合その後、すぐに言語に適したIDEに到達します-IMO、IDE、およびグラフィカルフォームの編集は、互いに明確に行われます。
IDEは、時間を節約する無骨な作業を処理します。
関連するすべてのプロジェクトファイルをまとめて保持するため、共同作業が簡単になります。
通常、ソース管理をIDEに統合して、より手間のかからない作業を節約し、コラボレーションをさらに強化できます。
オートコンプリート機能がある場合、選択した言語を探索し、入力を節約できます。
基本的に、IDEは、プログラマーの非プログラミング作業を減らします。
IDEが好きなのは、多くの機能を手元に置いているからです。プロジェクト内のファイルの編集/コンパイル/可視性は、IDEで私が大切にしていることです。現在Visual Studioを使用していますが、以前はSlickEditを使用しており、使用していないときよりも開発プロセスが合理化されていることがわかりました。
IDEの使用で完全に販売されているわけではありません。ただし、 Eclipse などの優れたIDEの最も価値のある側面は、 Cscope -スタイルの機能が大規模なコードベースをすばやく理解できることです。
たとえば、Eclipseでは、メソッドがFooBar型の引数を取ることがわかりますが、その意味がわかりません。難しい方法で定義を見つけるのに時間を浪費するのではなく(そして、途中であらゆる種類の注意散漫の危険を冒す)、FooBarを選択して、 F3、FooBarが定義されている行に関連するソースファイルを開きます。
私の意見では、IDEの欠点は、絶対にデフォルトの構成を使用する場合を除き、学習曲線が大きくなることです。 (これはEmacsにも当てはまります。)
IDEを使用するかどうかを決定する際に考慮すべきことは1つだけです。それが生産性を高めるかどうかです。
短い質問なので、短い答え:)
とても簡単です。しかし、この答えは少し逆説的であり、私は、これまでに開発者レベルの開発者だけが遭遇することについて議論しています。これが奇妙な見方である理由は、率直に言って組み込み作業を行っていたとき(短い時間で本物のお金を稼いでいたとき)IDEは右下になり、同僚のほとんどがなぜあなたができるのか疑問に思うだろう SNMP / ASN.1 、またはただあなたの仕事をするために扱っていたプロトコルについて十分に覚えていない。しかし、私の知る限り、 microcontroller が「IDE」のない/ real time /のようなものでグラフィカルなシミュレーションを実行することはできません。
IDEの方が好きです。これは、編集/コンパイル/デバッグを1クリックでエラーから行にジャンプして統合できるためです。さらに、OS標準インターフェイスが情報を表示する複数の情報ペインを許可します。要するに、1970年代の技術とインターフェイスに頼らずに、ユーザーに最新の出力インターフェイスを備えたマウスベースの入力インターフェイスを提供します。
IDEにはもっと洗練されたユーザーや用途がありますが、それらを使用したり、それらすべてを知っているとは言いません。必要に応じて、それらを学びます。
簡単に言えば、IDEは、単純なエディターよりも時間を節約する機能を追加します。