最高のプログラミングエディタ? 明確な勝者のいない終わりのない戦い

公開: 2022-03-11

それとは反対の明らかな証拠にかかわらず、プログラマーは人間です。 そして、すべての人間として、私たちは選択の自由を利用するのが好きです。 その選択が赤いピルまたは青いピルを服用すること、ドレスやズボンを着用すること、またはある開発環境を別の開発環境で使用することであるかどうかにかかわらず、私たちが行う選択は私たちをあるグループまたは別のグループに配置します。 選択は、必然的に、オプションの評価の後に行われます。 そして、選択をしたので、私たちは、異なる選択をした人は誰でも間違いを犯したと信じがちです。

インターネットを簡単に検索して、EmacsとVimに関する何百もの議論を見つけることができます。 全部読んでも、客観的に勝者を選ぶことはできません。 しかし、開発環境の選択は、開発者が提供できる作業の品質について何か教えてくれますか? 絶対違う!

優れた開発者は、自分のコードをメモ帳に書き込んでも、優れたものを提供できます。

確かに、専門家が自分の仕事のためのツールを選択するときに考慮することはたくさんあります。 これは、ソフトウェア開発を含むすべての職業に当てはまります。 ただし、多くの場合、選択は個人の好みに基づいており、簡単に具体的なものではありません。

プログラマーはほとんどの時間を開発環境の調査に費やしているので、機能的であると同時にきれいなものが必要なのは当然です。 すべての開発環境には長所と短所があります。 全体として、それらはソフトウェア開発業界の原動力です。

最高のプログラミングエディター

選択したプログラミングエディタのようなプログラミングツールのセットを選択するときに、開発者が評価する必要があることは何ですか? この質問への答えは、聞こえるほど単純ではありません。 ソフトウェア開発は芸術に近く、傑作と高額な収集品を区別する「あいまいな」要素はほとんどありません。

Java、C#、PHP、Python、Ruby、JavaScriptなど、すべてのプログラミング言語には、プロジェクトの構造、デバッグ、およびデプロイに関連する独自の開発手法があります。 ただし、それらすべてに共通していることの1つは、コードの編集です。 この記事では、ソフトウェア開発で最も一般的なタスクであるコードの記述の観点から、さまざまな開発プラットフォームを評価します。

IDEと汎用テキストエディタ

統合開発環境(IDE)(または対話型開発環境)は、ソフトウェア開発のためにコンピュータープログラマーに包括的な機能を提供するソフトウェアアプリケーションです。 IDEは通常、ソースコードエディタ、ビルド自動化ツール、およびデバッガで構成されており、多くの場合、多くの追加のプラグインと拡張機能がサポートされています。

テキストエディタは、より単純なアプリケーションです。 IDEと比較すると、通常、IDEのコードエディタセグメントにのみ対応します。 ただし、多くの場合、それ以上のものです。 IDEはソフトウェア開発の目的を果たすために作成されていますが、多くのテキストエディタは開発者以外の人も使用できるように設計されています。

静的型付け言語は、IDEから多くの利点を得ることができます。 厳密な入力規則により、IDEは、コンパイルする前に、クラスやモジュール間、さらにはファイル間でさえ、バグや名前の不一致をエディターで直接検出することができます。 この機能は多くのIDEに標準で付属しているため、IDEは静的型付け言語で非常に人気があります。

ただし、動的型付け言語に対して同じことを行うことは不可能です。 たとえば、一連の文字列連結から構築されたコード自体によってメソッド名が生成される場合、動的言語で名前付けエラーを検出しようとすると、実際のプログラムを実行するだけで済みます。 IDEの主な利点の1つは動的言語プログラマーには当てはまらないため、IDEはSublimeのようなテキストエディターに固執する傾向があります。 ちなみに、これは、テスト駆動開発の動きが動的言語コミュニティを中心に成長し、静的言語での支持がそれほど強くない主な理由でもあります。

優れたプログラミングエディタを作るものは何ですか?

さまざまな言語向けのさまざまな機能を除けば、すべてのプログラミングエディタには、きちんと整理されたクリーンなユーザーインターフェイスが必要です。 全体的な美的魅力も見逃してはなりません。 フォントと色を適切に選択できる適切に設計されたエディターは、目の疲れを抑え、生産性を高めるのに役立つため、見栄えだけではありません。

今日の開発環境では、機能セットに関係なく、急な学習曲線は責任を負います。 時間は常に貴重なので、優れた編集者は簡単に慣れることができます。 理想的には、プログラマーは、あまりにも多くのフープを飛び越えることなく、すぐに作業を開始できる必要があります。 スイスアーミーナイフは実用的で便利なツールですが、誰でも数分で習得できます。 同様に、プログラミング編集者にとって、単純さは美徳です。

ユーザーインターフェイス、機能、ワークフロー

UI、さまざまな機能と機能、およびプログラミングエディタの一部である必要がある頻繁に使用されるツールを詳しく見てみましょう。

もちろん、行番号はデフォルトでオンになっていて、簡単にオンまたはオフにする必要があります。

スニペットは、標準化されたテキストブロックを固定レイアウトに挿入するのに役立ちます。 ただし、プログラミングは一度だけ言うことが多いので、スニペットは将来コードを維持するのが難しくなる可能性があるので注意してください。

現在のファイルを起動する機能と同様に、現在のファイルをリントまたは構文チェックする機能は便利です。 この機能がない場合、プログラマーは外部コマンドラインウィンドウに切り替え、正しいコマンドを選択して実行し、エラーメッセージをステップ実行してエラーの原因を見つける必要があります。 ただし、リントによって発生する遅延が重要な瞬間にコーダーを中断する可能性があるため、リンティングはプログラマーの制御下にある必要があります。

インラインドキュメント

インラインドキュメントは、邪魔にならない限り便利ですが、クラス定義でブラウザページを開いた方が便利な場合があります。特に、相互に直接拡張されない関連クラスが多数ある場合はなおさらです。 ブラウザーのドキュメントから記述されているコードにコードを切り取って貼り付けるのは簡単です。そのため、プログラマーのドキュメントに関する知識が増えるにつれて、インラインドキュメントの複雑さが増し、実際にはさらに煩わしくなります。

単語補完は、煩わしさが少なく、高速で、編集中のドキュメントとほぼ同じくらい信頼できるため、便利です。 単語のほんの数文字を入力し、Enterキーを押して残りを取得するのは満足のいくものです。 それ以外の場合は、より長いexponentialFunctionSquaredではなくeeと入力したい怠惰なプログラマーに嫌われて、過剰な入力の負担の下で作業します。 単語の補完は、入力を最小限に抑え、一貫した命名を適用し、邪魔にならないようにすることで満足します。

プログラム全体で変数と関数の名前を変更することは便利ですが、変更を確認し、コードが壊れていないことを確認できる必要があります。 繰り返しになりますが、単語補完は、すべての言語で機能するという点で、便利な中途半端な家です。 入力のオーバーヘッドを発生させることなく、ライフタイムが長いアイテムに長い名前を使用できます。 あまりにも多くの行にまたがる可能性のある式を短縮するために、ローカルで短い名前を介してそれらへの参照を使用できます。 名前を変更する必要がある場合、長い名前は一意であるため、このアプローチはすべての言語とすべてのファイルで機能します。

ソースファイルは時々大きくなることがあります。 コード折り畳みは、長いファイルの読み取りを簡素化する優れた機能です。

スコープをローカル、インクリメンタル、またはグローバルにメタ文字と正規表現で制限して検索/変更することは、構文の強調表示と同様に、最近の最小要件の一部です。

人気のあるプログラミングエディタの概要

何年にもわたって、私は多くの編集者を経験しました、そしてこれは私が彼らについて考えるものです:

  • Emacs:世界で最も人気のあるエディターの1つ。 Emacsの最大の特徴は、拡張言語が複雑であるにもかかわらず、その拡張性です( Mx tetrisを使用してTetrisを再生することもできます)。 Emacsファンはその端末ベースのインターフェースを素晴らしい機能だと考えていますが、他の人はそれが欠点だと議論するかもしれません。 私の個人的な経験では、採用して学ぶのは多すぎると感じました。 Emacsの使い方を知っていれば、他に何も使うことはないと確信していますが、文化全体を引き受けて学ぶことは、私がやりたかった以上のことでした。 それにもかかわらず、開発者の間でのその人気は、それが昔の遺物とはほど遠いことを証明しており、私たちの未来の一部でもあり続けています。

  • Vi / Vim:Vimはもう1つの強力な端末ベースのエディターであり、ほとんどのxNIXオペレーティングシステムに標準で付属しています。 Emacsとは異なるインターフェースを持っていることを除けば、私の見解は実質的に同じです。 あなたがそれで育ったなら、私はあなたが他のものを決して使わないだろうと確信しています。 Viスキルを身に付けると、SSHやその他の狭い場所で操作するときの生活がはるかに簡単になり、キーストロークに慣れれば速度に問題はありません。 Emacsほど侵入するのは難しいことではありませんが、学習曲線はまだかなり急であり、ウィンドウエディタのいくつかの優れた機能を確実に使用できます。

  • SublimeText:その名の通り、SublimeTextはたくさんの機能を備えた美しいテキストエディタです。 一部の同様のエディターとは異なり、SublimeTextはクローズドソースであるため、低レベルで変更することはできません。 SublimeTextは、無駄のない高速なUIを備えた、従来のテキストエディターのシンプルさを提供します。 多くの開発者はVimよりも使いやすいと感じています。これは特に初心者に当てはまります。 学習曲線はそれほど急ではありません。 UIは最小限でわかりやすいものですが、SublimeTextは、UIの右側にある縮小された表示コードなど、いくつかの優れた機能を提供します。これにより、ユーザーはコードをすばやくスクロールして、比較的簡単にナビゲートできます。 完全に無料ではありませんが、機能が制限されたデモバージョンは無料です。 すべての機能のロックを解除すると、70ドルかかります。

  • Atomは、新世代の開発者向けのプログラミングエディターを作成するためのGitHubの取り組みの結果です。 まだ作業中ですが、Atomは非常に有能なエディターであり、新しい拡張機能やJavaScriptライブラリなどに熱心な開発者の活気に満ちたコミュニティがあります。 欠点には、いくつかのUIの癖、一部のアドオンパッケージが誤動作する可能性、(非常に)大きなファイルを操作する際のパフォーマンスの問題が報告されていることが含まれます。 しかし、プロジェクトは活発に開発されており、現在の欠点は改善される可能性があります。 Atomはオープンソースプロジェクトであり、ニーズに合わせて簡単にハッキングできます。

  • Nano:タイトなコーナーでは優れていますが、コメントを並べたまま、キーストロークを介してコードのブロックをインデントするのに苦労しているため、これを行うためのより速い方法が必要であるという避けられない考えが頭に浮かぶのを防ぐのに十分な機能が豊富ではありません列80にアップ! テキストの強調表示すらありません。設定ファイルの変更以外には使用しないでください。

  • TextMate2:TextMateの最大の欠点は、Macでしか動作しないことです。 作成者が述べているように、「TextMateは、オペレーティングシステムに対するAppleのアプローチをテキストエディタの世界にもたらします。」 UNIXの基盤とGUIを橋渡しすることにより、TextMateは、専門家のスクリプターと初心者ユーザーの両方の利益のために、両方の長所を選択します。 これは、多くのRuby、Python、およびJavaScript開発者に最適なエディターであり、BashまたはMarkdownも強力にサポートしています。 この記事を公開した時点では、TextMate 2はまだベータ版ですが、Emacsの拡張機能を超えて拡張することを約束する非常に成熟したプラグインエコシステムがすでにあります。

  • jEdit:Javaベースで、一部の人は遅いと考えています。 すぐに使用できる構成では、特定の人を遠ざける可能性がありますが、jEditは、適切に構成されていれば非常に高速で、見栄えも非常に優れています。

  • Eclipse:もう1つの広く使用されているIDEであるEclipseは、Java開発者の間で非常に人気がありますが、多くの異なるプラットフォームに適応されています。 そのモノリシックアーキテクチャは、それを水中に引き込む岩であると主張することができますが、それでも開発者の間で最も人気のあるプラットフォームの1つです。

  • Aptana Studio:包括的なオープンソースのWebアプリケーションIDE。 Eclipseプラグインとして利用できるため、一部のJava開発者の間で人気があります。 スタンドアロンバージョンはさらにスリムで、さまざまなテーマとカスタマイズオプションを提供します。 Aptanaのプロジェクト管理機能は、Eclipseでスキルを磨いたコーダーにも役立つ可能性があります。 以前のバージョンでは一部のハードウェアプラットフォームでパフォーマンスの問題が発生していましたが、これらの問題はAptana Studio 3で対処されており、過去のものになるはずです。

  • NetBeans:クロスプラットフォームをサポートするもう1つの比較的人気のあるオープンソースIDE。 SublimeTextのような無駄のないエディターよりも起動がやや遅く、アドオンの選択肢はいくつかの選択肢に比べて制限されています。 多くのJava開発者は、シームレスなSCM統合とHTML5サポートのおかげでNetBeansを愛するようになりました。 PHPに対するNetBeansのサポートも、最新のリリースで改善されています。

  • JetBrains:Java、Ruby、Python、PHP用のIDEファミリーを提供します。 それらはすべて同じコアエンジンに基づいています。 JetBrains IDEは、それ自体が非常に有能であり、ますます多くの支持を得ています。 ただし、30日間の試用版が利用可能であり、価格も手頃ですが、無料のオープンソースソリューションではありません。

  • Komodo Edit:Komodo Editには大きな可能性がありますが、直交性の欠如によってイライラする可能性のある厄介な小さな「落とし穴」や特異性に満ちています。 コモドエディットは雑然と感じますが、それは明らかに巨大な能力を持っているので残念です。 組織化の原則を逃したことを期待してコモドエディットに戻り続け、毎回、無秩序な能力のウェルターに殴られています。

  • Geany:Geanyは、このリストの他の多くの編集者のように主要なパワープレーヤーではありません。 それは「それが何であるか」よりも「それが何でないか」によってより定義されます。 それは遅くはなく、昔からの多くの遺産を持っていません、それはマクロ機能、またはバッファ機能のマルチウィンドウの多くを持っていません。 それでも、それが行うことは、十分にうまくいきます。 おそらく、私が試したすべてのエディターの中で最も要求が少なく、プログラマーのエディターに期待することの90%を実行できます。 GeanyはUbuntuで十分に見栄えがするので、私がUbuntuを好みのエディターとして選んだ理由の1つです。

私の結論

これらの優れたツールの中で最高のプログラミングエディタとして1つだけを宣言するのは思いがけないことです。 そして、私が試したことのない編集者もかなりいます。 万能の解決策はありません。 これが、私がさまざまなエディターを試してみることを余儀なくされた理由です。 エディターの寿命にもっと興味がある場合は、RobenKleeneによるコードエディターの評価も読むことをお勧めします。

私は現在Geanyを使用していますが、それは私が持っている要件に適合しているためです。 Geanyと、Perl / Gimp / Audacity / Soxの多くの支援により、開発したAndroidアプリのJavaコードベースを開発および保守し、複数のディストリビューター、ソース、lintのさまざまな構成でコンパイルできるように準備することができます。 、コンパイル、デックス、 .apkファイルの作成を行い、これらのアプリをグローバルに配信します。

あなたの開発ラインは異なる一連の要件を規定しているかもしれません、そして私はあなたが最も適切なプログラミングエディタを研究するのに時間を節約したことを願っています。

関連: Language Server Protocolチュートリアル:VSCodeからVimへ