WindowsでVisual StudioのようなIDEを使用するよりも、テキストファイルまたはターミナルを介してプログラムを作成する方が(読みながら)より良いオプションなのはなぜですか?IDEが提供する機能はそこにありますか(コンパイルエラーの表示など)、それとも手動プロセスですか?
WindowsでVisual StudioのようなIDEを使用するよりも、テキストファイルまたはターミナルを介してプログラムを作成する方が(読みながら)より良いオプションなのはなぜですか?IDEが提供する機能はそこにありますか(コンパイルエラーの表示など)、それとも手動プロセスですか?
回答:
この種の仮説は、Programmers.SEの方が優れている可能性があります。そうは言っても、私は数年間.NET開発者であり、Visual Studioに依存するようになりました。それはあなたのために多くのことをし、はい、私は特に統合デバッガが好きです...しかし、私は人々がLinuxを選ぶいくつかの理由があると思います:
Ubuntuは無料です。WindowsとVSは非常に高価になる可能性があります。
Ubuntuは無料です。WindowsとVSでは、それらの使用方法をほとんど制御できません。
Ubuntuは、すぐに使用できるプログラミング環境です。バッシュのようなツール、grep
、sed
、awk
。歴史的に、Windowsはスクリプトを作成する上で大きな苦痛です。バッチファイルはひどく、PowerShellを使用した場合でも、Windowsのコマンドラインエクスペリエンスは、BashやGNUツールと比較すると重要ではありません。その一部をWindowsに移植できますが、同じ体験ではありません。
複雑なセットアップはapt-get
、Puppet、Chef、Juju、Fabricなどのツールおよびシンプルなスクリプトを介して自動化および複製するのが簡単です。
複雑なIDEを必要としないものもあります。私は最近、Python開発者であり、独自の組み込みツールとデバッガーに完全に満足しています。テキストエディター、コマンドライン、およびファブリックを使用します。. 単一のFabricコマンドでwebappをビルド、テスト、コミット、デプロイできます。
だからといって、モノリシックなIDEがないわけではありません。EclipseおよびNetbeans。MonoDevelop。KDevelop4およびQT Creator。彼らはすべて、彼らに誓うユーザーを持っています。
Ubuntu はあなたにとってより良いですか?知るか。これは、非常に機能的でカスタマイズ可能なシステムです。機会を与えて、ワークフローを変更して、それがあなたを助けることを許すなら、あなたはそれを固くすることができるはずです。
even PowerShell scripts lack the power of Bash
-私はあなたがPSをあまりよく知らないと主張します。それは非常に強力であり、PSでできないことをBashでできることは何もありませんでした
ただし、もう1つの重要な理由を追加します。Ubuntuは、新しいライブラリ、言語、IDE、コンパイラを試すのに最適です。すべてが簡単に逃げられます。
あなたはHaskellと呼ばれる派手な言語について聞いたことがあります:
sudo apt-get install ghc
nano hello.hs
<copy-paste hello world example>
ghc -o hello hello.hs
./hello
Hello World!
ああ、Haskellの素晴らしいエディターを聞いたことがあります:
sudo apt-get install <fancy-editor-for-haskell>
同じC / C ++ライブラリは、あなただけのapt-get install
彼らとバイナリとヘッダは、右のフォルダに移動し、することができますだけで#include
も、彼らが置か取得場所を確認するために必要とせず、ソースファイルでそれら!
本質的には、日々の作業環境をどれだけ速くセットアップできるかということではありません。また、実験環境を非常に高速にセットアップできることも重要です。それがLinuxでの学習体験を加速するものだと思います。
apt-get
、そしてすべてがそのようにインストール可能でなければならないという考え方は、おそらくLinuxの最高のものです。OSXもWindowsもここでは比較しません。
The MacPorts Project currently distributes 17699 ports
。1つの違いは、常にコンパイルされることです。
yum
、pacman
、emerge
、petget
、pkgadd
...
主にマイクロソフトのプラットフォーム開発者からの意見です。.NETエコシステムを対象としていない場合、最善の選択肢はUbuntuであると主張します。WindowsではなくUbuntuを使用している場合、他のほとんどすべてのプラットフォーム/言語のツールを入手、構成、および使用するのがはるかに簡単になります。
Microsoftのツールチェーンの価値は、高度に統合されていることです。IDEからソース管理、プロジェクト管理、ビルド、展開、データベース、クラウドインフラストラクチャ、悪心まで。マイクロソフトは、プラットフォームを徹底的に使用する場合に非常に簡単にします。
一部の人が述べたように、Microsoft Wayから逸脱することは苦痛です。コードに.NETを使用し、データベースにOracleを使用するのは大変です。
.NET Webアプリケーションを作成して、それをAmazon Web Servicesにデプロイしたい...それほど単純ではありません。
しかし、マイクロソフトエコシステム内にとどまると、その赤ちゃんはあなたのためにm笑の鳥のように歌います。有能なソフトウェア開発者の手にとって、Microsoftプラットフォームは才能あるアスリートのPEDのようなものです。アマチュアのプログラマーが次のFacebookを作成できるようにするつもりはありません。しかし、それらがどのように適合するかを理解している才能のある開発者に優位性を与えます。
Ubuntuを開始するための無料(ビールなど)のコストの議論は出ていません。Microsoftがツールを無料で開始できるプログラムがいくつかあります。スタートアップ企業に3年間のライセンス(ツールの製品使用ライセンスを含む)を付与するBizsparkを含みます。そして、学生に無料で提供するDream spark。
そうは言っても、新しい言語とプラットフォームを探索して学習したい場合は、Ubuntuを使い始めるためのより良いツールが見つかります。Microsoftエコシステム以外の仕事を探しているなら、慣れる必要があります。 Ubuntuで。
私はツール、IDEやテキストエディタの両方を使用してC ommand- Lの INE 私は nterface(怒鳴ると呼ばれるCLIプログラムを書くために、)。
Linuxが提供するものは、デフォルトのインストールから始まる便利な CLIです。あなたがそれを必要とせず、とにかくIDEを使用しているだけであれば、もはや違いはあまりありません(IMHO)。
私はしばしばテキストベースのツールを使ってプロトタイピングを行います。後で、管理するファイルが増えると、IDEが提供するリファクタリングツールを高く評価します。
grep
は、引数、stdin、およびstdoutです。この言葉は、グラフィカルまたは擬似グラフィカルを意味するものではありません。他のタイプのインターフェイスには、Web API、シリアルプロトコルなどが含まれます。
私は答えをリングに投げます(これらはすべて良いものでもあると思いますが)。
あなたが得ることができる最も基本的な答えは、それはすべて哲学に関するものだということです。
マイクロソフトの世界では、それは少し宗教的です-あなたは山に神を持っています。あなたが何かを実装したい場合は請願しなければならないレドモンド。時々彼らは耳を傾け、他の時にはあなたの犠牲と嘆願は耳が聞こえなくなるでしょう。おそらく彼らは狩りに出ていたのでしょう。マイクロソフトは、エコシステム全体を制御します。OSを所有し、IDEを所有し、SEネットワークで話すにはおそらく不適切な方法でそれらを結合します。IDEの各部分は密結合されています- 統合と呼ばれることもありますしかし、カップリングの方がより正確だと思います。少し変更したい場合、Gatesは、WindowsまたはVisual Studioのデザイナーが明示的に許可していない方法で何かを変更することを禁止しています。そして、IE、IIS、Microsoftサーバー、MS SQL Server、Officeなどのテクノロジーを投入します。すべてが素晴らしい幸せな家族です。しかし、あなたが家族の一部を置き去りにしたいのであれば?震え!
一方、あなたはLinuxを持っています。Linuxは、各ピースがそれ自体の小さな責任範囲に責任を持つべきであるというUnixの哲学を継承しています。それは一つのことをすべきであり、うまくやるべきです。そして、できれば、テキスト文字列を介して通信を行う必要があります。他の人が指摘したように、sed
、awk
、grep
、など本の完璧な例です。彼らは、彼らがするように設計されている一つのことを行い、彼らはそれを非常にうまくやっています。2つのことを行う必要がある場合は、2つのツールを組み合わせます。これは非常に簡単です。
sed
入力されるテキスト以外は何も期待しないため、テキストを生成できるものはすべてホイールを再発明する必要はありません。彼らは単に使用することができますsed
。また、sed
テキストを生成するため、テキストを読み取ることができるものはすべて、からの出力を使用できますsed
。テキストは非常に普遍的であり(これにはいくつかの例外があります)、これらのタイプのものを組み合わせるのは非常に簡単です。
それらを組み合わせるのは簡単であるだけでなく、それらを分割することも非常に簡単です-ストリームを編集する必要がなくなったと判断した場合、テキストをsed
に渡すのではなく、結果をフィルタリングしたい場合、それへのgrep
代わり。
現在、これはLinux環境での開発の背後にある基本的な哲学です。したがって、そこから進んでも、多くのツールが同様の種類のインターフェースを提供します。これらを使用すると、それらを部分に分解したり、コマンドライン、ポート、またはHTTPを介してインターフェイスしたりできます。
そして、そうでなかったとしても、あなたはオープンソースソフトウェアも持っています。Linuxプラットフォーム上のほとんどの(すべてではないにしても)ソフトウェアはオープンソースです。したがって、その記述方法が気に入らない場合は、完全に、完全に、絶対にソフトウェアを自分で変更できます。これは非常に強力です。そのIDEを思い通りに分解することはできませんか?変更を行ってアップストリームに送信するか、プロジェクトを分岐します。何かがそのように振る舞う理由がわかりませんか?ソース、ルークを使用してください!コマンドラインから何かを自動化できるようにする必要がありますか?プロジェクトをハックして、変更を反映します。バグやセキュリティの問題に遭遇しましたか?推測できます-自分で修正できます。SP3.432vb89234.startdate1eQがリリースされるのを待つ必要はありません。
必要なツールを組み合わせることができます。そして、あなたの邪魔をしているものがあれば、それを100%変えることができます。あなたが能力を持っていなくても、その変化を開発するために誰かにお金を払うことができます-あるいは、ノウハウを持っている他の誰かにそれを提案することさえできます。
これがプログラミングに適している理由は、摩擦に出くわすと、ワークフローからそれを排除できるからです。開発は難しいので、成功したプログラマーになるために考えなければならないことがたくさんあります。そして、他のことを考えるのが難しくなるほど考える必要があります。
摩擦をなくすことが重要です。
したがって、Microsoft ecostystemの宗教が自宅にいるような場所であり、ツールを非常に楽しんでいるので、あまり/何の摩擦も与えない場合は...まあ、それはおそらく大丈夫です。
しかし、特許申請中のMicrosoft Mold(tm)に適合しない場合は、摩擦が発生します。開発は苦痛になります。希望するたびに、何かできることはできますが、できないことは、貴重な認知リソースを浪費します。その場合は、おそらくLinux開発環境が最適です。
私は質問に対するより一般的な考えを提供したいと思います:
「なぜLinuxはプログラミングに適した環境なのですか?」
Linuxで開発する最も重要な理由は、ほとんどのソフトウェア内部を完全に把握しているからだと思います。興味があれば、物事が実際にどのように機能するかを学ぶことができます。これにより、実際の動作を確認することで、良いプラクティスまたは悪いプラクティスを学び、適応させることができます。これにより、アイデアの多様性が高まります。
ほかのVisual Studioの彼らの特定の目的を果たすとXcode、最も人気のIDEはマルチプラットフォームです。数十の言語用の膨大なIDEがあるように見えるかもしれませんが、最終的にそれらのほとんどはEclipse、IntelliJ IDEAまたはNetBeansに基づいています。共通点は、すべてJavaベースであるということです。Javaは、同じハードウェア上の他のOSよりもLinuxでより効率的に動作します。実際、JavaのLinuxは、同じハードウェア上のOS Xよりも20%も高速です。これらのIDEの多くは、Ubuntu Software Centerでワンクリックでインストールできます。
GCCは非常に業界標準になりました。疑いの余地なく、その主要なプラットフォームはLinuxであり、最もよくサポートされています。そして、無料でロイヤリティフリーです。
Linuxは、Valgrind(メモリデバッグ、メモリリーク検出、プロファイリング用のツール)など、他のプラットフォームでは利用できない独自のツールを提供します。Linuxには、straceやltraceなどのデバッグツールも付属しています。これらのツールを使用して、本番コード(デバッグシンボルでコンパイルされていないコード)でさえデバッグできます。Windows用の同等のツールは、存在しないか非常に高価であり、同じ機能を提供しません。
Ubuntuには優れたパッケージマネージャーがあります。ほとんどの場合、ソフトウェアのインストールはただですapt-get install package-name
(Ubuntu Software CenterまたはSynapticのGUIでも実行できます)。一度インストールすると、バグ修正リリースでシステムによって自動的に更新されます。また、パッケージシステムは自動的に依存関係を追跡するため、他のパッケージが必要かどうか心配する必要はありません。それらは自動的にインストールされます。
一方、Windowsでは、パッケージを手動でダウンロードしてインストールする必要があり、他のパッケージが必要な場合は、手動でパッケージをインストールする必要があります。システム全体の更新もありません。各ソフトウェアパッケージは、独自の迷惑なアップデータを実装するか、まったく更新しません。
バックエンド、Web、クラウドなどのプログラミングを行う場合、ターゲットマシンがLinuxである可能性が非常に高くなります。ターゲットマシンと同じ種類のOSで開発している場合、意外な驚きはほとんどありません。
もちろん、Windows用のデスクトップアプリケーションを開発しているかもしれませんが、今日ではプログラマーにとってはニッチな仕事市場のようなものです。
WindowsでVisual StudioのようなIDEを使用するよりも、テキストファイルまたはターミナルを介してプログラムを作成する方が(読みながら)より良いオプションなのはなぜですか?
そうではありません、私はそれが全く反対だと主張することができます。しかし一般的に、人々は得意なツールを好む傾向があります。使用するツールの種類は、プログラムの作成が簡単になるという利点があります。したがって、たとえば、vimを使用してJavaプログラムをうまく作成できますが、EclipseやIntelliJのような本格的なIDEとは対照的に、実に非生産的です。Jon Skeetは、なぜIDEを使用するのかという質問に対して素晴らしい答えを与えました。
元の質問に戻りますが、Linuxの長所はCプログラミングだけです。LinuxでできることはすべてWindowsでもできますし、その逆も可能です(プログラミングが賢明です)。Cプログラミングは歴史的な理由でLinux上で優れており、優れたツールセットを提供します(Windows BTWで入手できますが、Linuxをセットアップする方がはるかに簡単です)。同様に、C#を作成していて.NETを好む場合は、明らかな理由からWindowsの方が適しています。他のすべては完全に主観的であり、両方の長所と短所を聞くことができます。
apt-get
、C開発に関しては素晴らしいことです。あなたはすぐに例のためのツール、ライブラリおよびデバッグシンボルを取得することができsudo apt-get install libcurl4-openssl-dev
、sudo apt-get install valgrind
、sudo apt-get install libz-dbg
簡単に物事を試してみてください。
プログラミングに使用するツール(テキストエディターまたはIDE)は選択の問題です。一般的に言えば、初心者や非常に小さなプロジェクトでは、崇高なテキストやgeditの修正版など、より優れたテキストエディターを使用する傾向があります。プレーンテキストエディターを使用する場合にさらに多くを学ぶからです。IDEは、物事を自動化することで学習プロセスを台無しにすることができます(Visual Studioのように;)
多くのツールや言語をいじり回す専門家の場合、IDEを使用すると、より多くのことができるので便利です。プログラミングする言語に応じて、選択できるIDEが多数あります。より優れたIDEがありますが、利便性が低いものもあります。
私の個人的な経験では、Ubuntu OSはWindowsよりもはるかに速く、開発用のセットアップが簡単です。これは、使用しているツールとプログラムのほとんどがLinux上でビルドされているため、インターネットでお気に入りのプログラムへのダウンロードリンクを検索する必要がないためだと思われます。「apt-get install program1 program2 program3」だけです。それに比べて、プログラミングに必要なものすべてを含む新しいWindowsインストールをインストールして構成するには3営業日必要です(プライベートではなく、会社の方が高速です)が、Ubuntuでの同じタスクの場合は1日です。
私の経験では、プログラミングのためにLinuxに切り替えたプログラマーは、(ほとんどの場合)技術的なコンテキストと基本がどのように機能するかをより深く理解しています。MacとWindowsのユーザーは、何かがこのように機能する理由とそうでない理由を知らない傾向があります。Linuxを使って実際に何かを学ぶことができるのか、それとも単に学習意欲のある人がLinuxに切り替えるのかどうかはわかりません。
私の「blafasel」が少し役立つことを願っています...
Linuxディストリビューションは IDE であると主張します。
最初に、Unixは開発環境として最初から設計されました。それはプログラマーのためにプログラマーによって書かれました。ほとんどのUnix、およびLinuxには、デフォルトの構成で開発ツールが同梱されています。また、不足している部品はわずかapt-get
(または同等)離れています。一方、WindowsはIDEをインストールするまでひどい開発環境です。IDEは安価ではなく、簡単なプロセスです。
IDEは、GCC、Git、Viなどを使用するよりも密に結合されているという意味で、より統合されています。密結合により、「インテリセンス」などの機能が向上します。しかし一方で、疎結合には多くの利点があります(柔軟性、互換性、ロックインの欠如など)。
また、コンパイラー設計(LLVMなどの簡単に分離可能なフロントエンドを備えたコンパイラー)の進歩により、ゆるやかに結合した環境でも構文エラーの強調表示などの機能のサポートが改善される可能性があります。
哲学の問題:Ubuntu / Linuxでは、コンピュータープログラマーが内部およびハードウェアに直接アクセスできますが、Windowsは一種のゲートキーパーです。これは、プログラミングに関しては重要な哲学的問題です。したがって、哲学的に言えば、この機能が利点であるかどうかは、ユーザーがその重要性を十分に知っているか技術的に認識しているかに依存します。
プログラミングの問題について:Ubuntu / Linuxのシステムアーキテクチャ全体は、1つのことを実行してから、より複雑なことを行うためにそれらをパイプで接続するというUnixの伝統に基づいています。 プログラマーにとって、このアーキテクチャは非常に強力であり、私の考えでは、Unixがすべてのプラットフォーム上の他のすべてのソフトウェアアーキテクチャに対して長期的に勝つ理由です。Unixが現在支配的でない数少ない場所の1つはデスクトップですが、それは時間とともに変化します。Ubuntuのようなディストリビューションは、この進化を見るのに役立ちます。
ただし、Windowsには非常に優れたプログラミング環境があることについては異議を唱えません。企業環境内でのプログラミングでは、これらが支配的です。
速度がソートの答えです。
Visual StudioやQtCreatorのようなグラフィカルIDEでは、ショートカットを使用する必要があるときにマウスを使いすぎていることがわかりました。コンテキストを切り替えるたびに、脳を一時停止し、ターゲットに集中し、アクションを待つ必要があります。F5を押すと、無限に速くなります。
今、vim、Emacs、または見栄えの良いボタンを持たない他の何かを使用している場合、キーを押すことに集中するでしょう。
エラーはコマンドラインインターフェイスでより詳細に表示されますが、これは私が好むものであり、コンパイル中にフィードバックを提供します。Visual Studioで私が嫌いなことの1つは、デフォルトではコンパイルを実行していることを示す小さなアイコンで、エラーリストが表示されることです。
狭いビューでは、読みやすくするために80列幅を維持しますが、200列幅に及ぶコードを見てきました。80列に適合するコードを使用すると、一度に4/5のウィンドウを開くことができます。
CLIエディターを使用すると、Visual Studioへの遅い(テキストと比較して)RDPセッションを必要とせずに、リモートでコーディングできます。GSMリンクを介してコーディングできます。
視覚的なフォーム開発の一種の悪口。GUI IDEを使用する利点の1つは、画面をより速く描画できることです。ただし、私の経験ではプロトタイプとしては問題ありませんが、多くの場合、コードで手動で行うとより良い結果が得られます。VS2012コードアナライザーは、今朝、Visual Studioによって自動生成されたコードに関する200以上の問題について警告しましたか?!?!?
vim
好みに合った編集者を見つけるかもしれません。これは非常に主観的な領域です!ただし、多くの人がLinuxでIDEを使用しているため、ここで複数のことを混同しています。