はてなキーワード: 統合開発環境とは
現代のコンピュータにとってネットワークの利用が大前提になったように、人間の「能力」が演算装置や外部記憶の利用を抜きに語れなくなったという点については同意してもらえると思う。
そういう時代状況の下で、スタンドアローン(Stand Alone)という制約を課した状況での能力測定に、「縛りプレイ」的なお遊びとして以上の意義は本当にあるんだろうか。
今、俺は統合開発環境を使って中規模ソフトウェアの開発の仕事をやってるんだが、もうオフライン環境のPC98で、テキストエディタとにらめっこしてコードを書いてた時代には戻れないと感じている。
そもそも、グーグル先生が0.5秒でAPIマニュアルやベストプラクティスを提示してくれる時代に、APIの暗号みたいな引数の順番を暗記する必要性はどこにもない。また、統合開発環境が提供する静的解析や単体テストなどの支援機能をフル活用することで、つまらないバグを作りこむことは本当に減ったし、見通しの良いプログラムを書きやすくなった。実際、俺のプログラミング「能力」は、スタンドアロンでやってた頃と比べて確実に向上していると思う。
コンピュータによる支援が当たり前となった現代、我々が本当に競うべきフィールドは、「コンピュータにできない、人間にしかできないこと」が求められる領域へと確実にシフトしている。そんな時代に、いまさら暗算力や暗記力なんか競ってどうすんの? というのはかなり真面目に思う。
丁度,同じようなこと書こうとしていたところだ.
昔,IT系の学校に行って,情報技術やプログラミングなど勉強していたんだけど,
それで何が出来るのか分からなくて,卒業はしたが今は全く別の仕事をしている.
最近,それが懐かしくなって,頭もあまり使ってないし,日曜プログラマにでもなろうかと思っていたところ.
# 以下,何年も前の話で,うろ覚えなので些細な間違いは見逃してほしい.
学生時分は,プログラミングだったら C, Java, はとりあえず一通り勉強した.
C だと手続き型で.変数の宣言の話から配列,ポインタ,構造体と進む.
Java ならオブジェクト指向で,手続き型と違って,汎用的なクラスを作成すれば
再利用できて…とか,それを継承できて…とかで開発効率・生産性が高い云々とか,
そういう話から,で実際それをプログラムにするとこうなりますよ.という流れ.
これで一通り言語自体の知識は身に付くのだけれど,で?っていう状況になったのは,
元記事の増田と同じだ.結局,それらの言語にどういう特徴があるのかは,
仕事などで本格的に開発をする人たちにとっては重要なことかもしれないけれど,
初心者にとっては,とりあえず,そんなことはどうでもよくて,何が出来るのかが分からない.
逆に言えば何を作りたいかが分からなければ勉強しても何の意味もない(これが昔の私かも)
でも,とにかく何か作りたい.何故だかよく覚えていないけれど,
C でテトリス作りたいと思っていたのは今でも記憶に鮮明に残っていて,
当時も試みたのだけれど,コマンドプロンプトでしか動かせないようなプログラムしか書けなくて
どうしてウィンドウを作って表示するようなプログラムが書けるのか分からなかったし,今でも分からない.
(今もあるのか知らないけれど)VB とか Visual Studio とか Eclipse みたいな統合開発環境を使えば
そんなこと知らなくても,ウィンドウは作れたし,ボタン配置したり,その他色々簡単にできるんだろう.
でも,先に言ったように,開発効率などどうでもいいし,出来ればいいということでもない.
どうしてウィンドウが出来るのかが,分からないのが気持悪くて統合開発環境使う気になれなかった.
仕事ではないのだから,ただひたすらキーボード叩いて全部一から手打ちでプログラム書きたい.
タイプ数カウントするプログラム常駐させて今日は何千何万打も叩いたぜ!!というただの自己満足だけ.
とにかく,ソース汚くてもいいから「これを作りたい」ってのがないと続かないんだろうなと思う.
別にプログラムだけでなく,何に関しても言えることかもしれないけどね.
全然質問の解答になってないな.長文失礼.
ちまたじゃ、みんなフレームワークのことを当たり前のように論じててすごいなーと思うんだ。尊敬するぜ。だから、ミーハーなオレもフレームワークが気になって仕方ない!
だから、30歳近いプログラマのオレがプライドを捨てて優秀なハテナ住人に聞くが、
だが、そこまでだ。
Javaだと、Struts、Spring、Seasar、Wicket等をよく目にするけどよぉ、ドキュメントの量どんだけだよ。
入門ドキュメントだけ見ると簡単そうに思えるけど、仕事で使えるレベルまで理解が深まるまでどんだけ時間かかんだよ。
起動遅い、動き遅い、定型パターンを外れたら、やる方法が見つかんねー。
で、苦労して作ってもよぉ、結局は、HTMLがピロッって出力されるだけで、見てくれが変わるわけでもなく、全然努力が報われん。
これって、どゆこと?
Servlet+JSP+簡単なライブラリ 程度で十分じゃね?
PHPだと、Zend Framework、CakePHP、symfony等をよく目にするけどよぉ、ドキュメントの量どんだけだよ。
入門ドキュメントだけ見ると簡単そうに思えるけど、仕事で使えるレベルまで理解が深まるまでどんだけ時間かかんだよ。
デバッガの使い方分かってねーオレが悪いとは思うんだが、開発効率悪いぞ。(フレームワーク以前の話だが…)
統合開発環境何使えばいいの?わざわざクラス名や関数名覚えてられんぞ。(フレームワーク以前の話だが…)
何で、拡張子変えたがる。何で、変なテンプレートエンジン使う。エディタで認識されねーから開発効率悪いじゃねーか。デザイナがコーディングした分かりくいHTMLコードをよ、何で編集してるわけ?
ついでに聞くけどよぉ、ORマッピングライブラリって使えるの?
確かに書くコード量は少なくなっていいんだがよぉ、目に見えて遅いと思うのはオレだけか?
ディスクアクセスは明らかにボトルネックになるのに、巨大なライブラリのコードを毎回走らせるんだよ。普通のサーバじゃ余裕なの?
話題がそれたが、
実は、みんな、上司や先輩に言われて使ってるだけなんじゃないの?
ハテナ住人の優秀なエンジニアは、どんな目的でフレームワーク使ってんだ?教えて偉い人!
ま、誰も見ないんだろうけど。
さあて、viでも使うか……
さあて、これからの時代はやっぱ、Kateだよな。
どっかの統合開発環境みたく、プロジェクトごとに開くファイルを設定できるんだぜ。
いやー、Emacsがもてはやされたのは歴史の流れだから。歴史の視点で見ないとわからないよ。
viが比較的エディタの世界にとどまったのに対し、emacsはシェルにヒストリ機能をつけてみたり(bshにはなかった)、gdbにきちんとしたUIをつけてみたり(gdbの生のコマンドはひどい)、マルチウインドウを提供((テキスト画面で!))したりした。
だから、それらが全部洗練されたGUI環境で提供される現代、Emacsが統合環境だとかいっても通じない。結局、Emacsの今の利点は、統合開発環境すら作れそうなくらい強力なEmacs Lispマクロを持っている、ことだけだと思う。それが欲しい人は、それだけでEmacsを唯一絶対神と認めるよ。
Cはお勧めしない。なぜかと言うと、Cは言語使用があまりにいい加減だから。特に型関係がひどいのだが、型の概念をきちんとつかめないと、問題をプログラムに落とすのが下手になるので、俺はCはお勧めしない。
C#かJavaがいいよ。どちらもC言語に似ているといわれるが、とっつきやすいように字面を似せているだけで、どちらもCとはまったく違う言語になっている。Cの悪いところはばっさり切り落としているので、その分勉強しやすい。これはC++を薦めない理由でもある。C++はCと互換性を維持しているので、ぐちゃぐちゃになってしまった。CとC++は本当にそれじゃないとダメな局面にきたときに勉強すればいい。
C#もJavaも入門コンテンツがネットに転がっているので、好きな奴を読めばいい。
C#とJavaを薦める別の理由は、そのライブラリが極端に充実していることがある。Cでプログラムを書いていると、たまに、何で俺がこんなことをやらないといけないんだ?世の中で何万人が同じことを回転だよ?、と思うようなことがある。言葉を変えると、非常に基本的な機能が無かったりする。C#とJavaは、基本的な機能の膨大なライブラリを含むのでそれを利用できる。
C#もJavaも良質の統合開発環境がある。C#にはVisual Stuido .Net Express for C#が、JavaにはEclipseが無料で提供されている。Javaには.net版もあるが、もうサポート停止だし互換性もよくないのでお勧めしない。
C#もJavaも型に厳しい。世の中には型に寛容な言語というものもあって、そういう言語が活躍する局面もあるが最初にきちんとした型を覚えておくというのは、スポーツや他の勉強と同じく他の言語と同じ。
Visual Studio express for C#には膨大な日本語オンラインヘルプが付いてくる。これは心強い。言語の基本からライブラリまでカバーしているので、旅先に本を持っていかなくてもPCがあればプログラミングには事足りる。