2008-02-24

プログラミング言語なんて単なる道具

http://anond.hatelabo.jp/20080224122041

推薦図書については末尾に書くけど、その前にちょっとお話。うざいと思ったら読み飛ばして末尾に行ってね。


どの言語がよいか、というのは「ゴルフクラブで一番よいクラブは何か」という問いと同じなので、正直意味のある問いとは思えないなあ。言っちゃ何だけど、言語を覚えて満足してる奴は、高いクラブを買って満足してるだけの奴と同じだよ。大事なのは「何をやりたいか」で、それさえ明確になれば後は単なる慣れの問題に過ぎないし。

一つや二つの言語を扱える以上になれない奴は、ごくごくごくごく少数の例外を除けば、所詮人に使われるだけのやつにしかなれんよ。そんなの、大学出てまでやる仕事じゃない。営業並みの対人能力があるとか半導体の回路を引けるならまた別だけど、それはもはやプログラマと呼べる仕事じゃないしね。


ゴルフだったら、ショートホールもあればロングホールもあるし、バンカーに落としてしまうこともグリーン上のヨセもある。プログラマも同じ。大事なのは、

「適切な言語を選ぶ能力

「必要が来たとき最小限の勉強時間どん言語にも対応できる能力

じゃないかなあ。これがあれば、その時点で知っている言語が一つだろうと十個だろうと大した問題にはならんよ。

世の中にある言語は、アセンブラとか C みたいに低水準(機械に近いところ)でやるのに適したものもあるし、C++Java みたいに大規模なビジネスアプリの開発に向いてるものもあるし、VB とか Perl みたいに細々とした作業を処理するためのお手軽ツールもあるし、Lisp とかみたいに、実用よりも理論的理解を指向したといえるようなものもある。だけど、アセンブラLisp みたいな特殊なものを除けば、どれも基本的な考え方は同じだ。確かに C++Java に出てくる「オブジェクト指向」は多少取っつきは悪いけど、きちんとした本を元にして勉強すれば一週間で理解できるよ。あとは処理速度と書きやすさ・手軽さを天秤に掛けての判断にすぎない。ゴルフでいうなら、パターを除けばどのクラブも基本的には原理が同じみたいなもんだ。ウッドとアイアンとウェッジという区別はあるけれど、基本的には飛距離とコントロールバランスだろう?


どの言語を選ぶかなんてのは所詮は小手先のことなのさ。大事なのは、何をしたいか、何のためにプログラマになりたいかということだ。そのためには、いろんな素養が必要になってくる。

もし、半導体コンピュータOSみたいな低レベルな話に近いところ興味があるなら、電気工学とか形式言語理論とか数理論理学とかそういう知識が重要になってくる。ロボットを作ったり生体認証をしたり他の機械システムを制御したりというような高度な話に興味があるなら、数学とか統計とか信号処理とか制御工学をきっちり勉強した方がいい。業務で扱われる大規模なシステムを扱いたいのなら、理系の知識よりもむしろ世の中の仕組みを広く浅く知っといたほうがいいだろうね。


もはや、「プログラムが書ける」なんてのは、「ワープロ表計算ソフトが使える」というのに毛が生えた程度の技能でしかないんだ。十五年前なら、「一太郎Lotus 1-2-3(当時は WordExcel なんてのはあったのかどうかも微妙)が使える」といえば「即戦力」だったかもしれんが、今更そんなの当たり前の技能でしかないだろ?

大事なのは、「他の奴が簡単には追いつけないもの」を持つことだ。大学での数年間はそのために使うべきだよ。目標を持って真面目にかつ気楽に取り組むことだ。がんばりたまえ。


注意 この文章中でわからない言葉が出てきたらまずはぐぐってほしいが、わからなくても気にすることはない。それらの中身を知っていることは大した問題じゃない。大事なのは全体的な雰囲気だから。


推薦図書その他

まずは、この本をお薦めしたい。

やさしいコンピュータ科学 (Ascii books)

プログラマ(というよりコンピュータ)が関わるあらゆる分野を、本質を押さえて入門程度に書いた本。「やさしい」という題名だけれど、高校生の基準で考えると「難しい」と思う。大学では、「やさしい」「難しい」の基準が何段階も格上げされるから気にしないように。これが「やさしい」と思えるようになったら大学卒業レベルと思っていい。だから余り気負わず、頭から読もうとせずに適当に面白そうなところを眺めて、興味が出たら他のところも拾い読みするという感じで十分。

その上で、興味を持った分野の本を探したいと思ったら次はこれがお勧めだ。

改訂新版 コンピュータの名著・古典100冊

これを見て、適当にぱらぱらめくって、読みたいものから読めばいいよ。この辺の本なら大学図書館にはあると思うし。ただし、ここに出ている本はどれも本格的だから、難しすぎると思ったら適当に放り投げていい。そうやって、いろんな分野をつまみ食いしていく間に全体像が見えてくるはずだ。

あと、それとは別に基本情報技術者試験を受けるのもいい。大学の授業についていくための基礎力としては十分なはず。これが易しすぎると思ったら、ソフトウェア開発技術者試験でもいい。もっとも、これに通るぐらいなら大学2年か3年ぐらいの力はあると思うけどね。

記事への反応 -
  • 明日から東京で受験で、試験後もう一泊するので次の日は本屋でいろいろ(買うものは試験の手ごたえ次第で変わるけど)買ってこようと思っている。 もし手ごたえが良かったら、プロ...

    • http://anond.hatelabo.jp/20080224122041 どの言語がよいか、というのは「ゴルフのクラブで一番よいクラブは何か」という問いと同じなので、正直意味のある問いとは思えないなあ。 一つや二つの...

    • 情報系学部の学生ですが・・・ 1.本をざーっと読む 2.とりあえずサンプルソースを打ってみるorコピペ 3.自分なりに改造してみる 4.わからない点があればサンプルソースなど...

    • もし行き詰まるようなことがあっても、いつか必ず道は開けます。 他のソースやプログラミング言語やコンピュータサイエンスも貴方に力を貸してくれるはずです。 http://anond.hatelabo.jp/200...

    • Cの勉強は一週間でいいと思う。 終わったら、C++に進むなり、Javaにすすむなりしてとっとと実用的なアプリをつくるにに適したものを使うのになれたほうがいい。そこで数個アプリ作った...

    • Cはお勧めしない。なぜかと言うと、Cは言語使用があまりにいい加減だから。特に型関係がひどいのだが、型の概念をきちんとつかめないと、問題をプログラムに落とすのが下手になるの...

      • #はCや++より遅そうなイメージあるけど同なの?

        • 遅い。これはJavaも同じ。スピードならネイティブ・コンパイラ系の言語にはかなわない。じゃ、耐えられないかと言うと、これは何をさせるかによる。で、何をしたいの?

      • おもいっきり同意しかねる。オリ増田はこれから情報系の大学生になる人だろう? C#やJava、その他 lightweight 言語などのメモリアロケーションを自動でやってしまうような言語から入門し...

        • 増田はボトムアップ派か。 俺はトップダウン派…じゃなくて筋のいい取っ掛かりから薦める派だ。そもそもコンピュータの構造も勉強する必要があるのなら、それはコンピュータの構造...

          • おれもトップダウン派(?)に賛成 ボトムアップ派とかがプロジェクトにいると頓珍漢なことになりやすいのでちょっと嫌だ。 基礎理解と道具として使いこなせるかどうかはまったくの...

    • プログラマとなるためにプログラミングの勉強をしたいのであれば、重要なのは言語ではなく、なぜ、どうやってプログラムがコンピュータの上で動くのか、を知る事だと思う。

    • http://anond.hatelabo.jp/20080224122041 とりあえず英語からだ それからK&R本を読め そして組んでは読み組んでは読みして CodeCompleteあたりを読んで 次にスタンフォードかどっかのネットに落ちて...

    • 当方現役のWeb(もやる)システム屋ですよー。 細かい突っ込みを入れてあげよう。 cから入ろうかと思っている。いろんな言語の根っこにあるという話を聞くし、俺が社会人になるころ...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん