2010-07-25

プログラミングを身に付けるには

http://anond.hatelabo.jp/20100725025127

"どうすればいいか"を教わって、プログラミングが身につく人は多くありません。"なにをやりたいのか"を自分で生み出せないと、詰まってしまうし、なにより楽しくありません。

やりたいことがあれば手段は後からついてきます。これは物作り全般に言えることです特に学び始めにおいてモチベーションを維持し勢いをつけるのに大事なのは"やりたいことがあるか"、もっと具体的に言うなら"作りたいものは何か"です。これがないと始まりません。それがどうしてもないなら、そういう状況に自分を追い込むのも有効です仕事でどうしてもやり遂げなければならない状況に追い込まれれば人間 0 からでも身につきます。実際自分がそうでした。

とかく、プログラミングというのは手段さえ知れば、あとはだれがやっても同じ結果が出る生産業だと誤解されがちです。そういう認識で学ぼうとしても楽しくありませんし、本質を掴みにくいので応用が利かなく上達しにくいです

本質は絵や音楽と同じです言語を覚えるということは道具の使い方を覚えることでしかありません。音楽理論や絵筆の使い方を知っているだけで、すぐに素晴らしい音楽や絵ができるでしょうか。殆どの人がそうは思わないはずですプログラミングもそれと同じです。作りたいものがある人が圧倒的に強いのです

また、やりたい分野によって向いている言語は違います

んー、ここまで読んでも「やりたいことはないけどとりあえず勉強したい」というなら、すぐに動くものをつくりやすい言語お勧めかなあ。

Google App EnginePython をやるとか。 Python のいいところは、明快で作法にあまり迷わなくていいところです自分がまったく言語やったことない知り合いにすすめるとしたらこれ。

レガシーではないちゃんとした JavaScript (http://www.crockford.com/javascript/ この辺にあるような) もいいですブラウザですぐ動きますし、 Firefox 環境なら本格的なデバッガまでありますJavaScript は非常に誤解の多い言語ですが、悪いものではありません。 お手軽にグラフィカルなものを扱える、結果がわかりやすいので初心者向けです。それでいて、拡張性が高く、プログラミングに必要な概念ロジック殆ど再現できる底力も秘めています

Perlレガシー作法がいまだに見受けられる (Perl って CGI のことでしょ的な解説が未だにある) のですが、初めから strict に慣れて、 CPAN にあるようなスタイルを参考にして、初めから OOP に突っ走るなら今からやってもいい言語ですCPAN 等のリソース豊富さとコミュニティの広さが強いです。ただ、懐の広さ、できることの多さゆえに初心者向きではないところもあります

PHPお勧めしません。理由は適当検索してください。 PHP5 でかなり良くなりましたが、逆に言えば 4 と 5 では別言語と言っても良いほどです。古い考え方と新しいスタイルがごったになりすぎていて、かつて同じような状況にあった Perl に比べても、洗練されたスタイルを学びにくいと思います。また、ロジック面白さに感動するような部分が PHP にはちょっと足りないです

MMORPG やそのエミュレーターの中には、 Lua を使って AIマクロイベントスクリプトなどを組めるものがあります。すぐに結果が出て自分の役に立つものが作れるので、既にその手のゲーム趣味ならお勧めです。こうした用途では、自分の望む世界を構築するために嫌でも物事をモデル化して考えるので、自然OOP 的な考え方やデザインパターンが身につきます

VB は簡単に GUI アプリケーションが作れるのでやる人が多いですが、癖が強いし応用がききにくいのでお勧めしません。また、公開されているソースコードが少ないことも学ぶには不便です

Ruby はそれほどやりこんでないのでコメントはしないでおきますが、悪くはないと思います

C++ は何をすればいいのか?を聞いてる人にはすすめにくいです。作りたいものが明確にあり、ロジックを見つけることで応用が利く人ならほっといても覚えるでしょう。自分は、必要に迫られて身につきましたが・・・

個人的には、作りたいものがあってそれにマッチしてるなら、関数型言語最初にやったっていいと思います。一度ロジックを掴み取る能力がついてしまえば、第二第三の言語は猛スピードで身につくので。

人に見せて使わせてレスポンスをもらうことが大事

作ったものを公開して、人に見せたり使わせたりして、レスポンスを得るというのはモチベーションの維持や上達に非常に有効です。むしろ、早く上達したいなら必須と言ってもよいですプログラミング場合はこれがおざなりにされがちです

絵を上達したいなら、 pixiv を薦められますよね。今下手かどうかは関係ない。上手くなりたい人が沢山投稿してる。歌が上手くなりたいなら、人前で歌う事は避けられない。ニコニコ動画などで公開してる人がいるよね。人の作品をみると刺激をうける。これはすごいパワーだってのはわかると思う。

プログラミングだって全く同じです。なのに、プログラミングは引きこもって一人で勉強する人が多すぎる。絵や歌は公開しても人に害を与えないけど、プログラミングバグセキュリティホールがあったら人に害をあたえるかもしれない、といった印象が強いのかもしれません。

それでも、もっとコミュニティに参加したり、作ったものを公開することが学び始めのうちから重視されていいのは事実。そういった面から考えると、バグセキュリティホールが出来にくく、安全で、危険な動作がしようもない実行環境があり、加えて Web に公開しやすい言語が学びはじめに向いています

こちらも参考にしてみて下さい

http://d.hatena.ne.jp/Hamachiya2/20090721

http://d.hatena.ne.jp/Hamachiya2/20080131

学校に行く必用があるのか

学校に行けば一人で学ぶよりは後押しや出会いがあるかもしれませんが、”やりたいこと””必用なこと””作りたいもの”が無い限り、殆どの人は身につきません。

また、残念なことに講師にも大変当たり外れが多いです自分専門学校にいったことはありませんが、講師の知り合いがいるのでよく学生さんの話を聞きます。結局の所、しっかり身につく人は、家に帰っても色々作りたいものを作って公開したり、著名なプログラマ達のブログを読みまくったり、フォーラムに出入りしたり、ML に入ってたり、 twitter で刺激的な知り合いをつくるとかしていて、そういうところでめっちゃ差がつきます

学校に行くなとまでは言いませんが、学校いかないで身に付ける人は本当に多いし、学校いって身につかない人も本当に多いということは考えて下さい。

26日追記

ブクマ増えてた!ありがとう

元増田さんがどの言語をやれば・・という方だったので仕方なくこのような書き方になってしまいましたが、作りたいものが既にある人はあまり”どの言語をやるか”には拘らなくてよいと思います

そんなことよりも、今必用で/気軽に/すぐ結果がわかることをやるのが、始めてのプログラミングには大事。だから本当は、どの言語をやるかよりも何を作りたいのかを先に見つけてほしい。

目の前の意外なところにプログラミングは生かせます。できるだけ身近な、すぐ効果がわかるところからとりかかった方がプログラミングの楽しさにはやく気付けるはず。

みたいな導入口でもいいんだ。

例えば C++ でのプログラミング初心者が 0 からやるのは難しいだろうけど、既存アプリケーションプラグインなら開発のためのテンプレート目的に近い作例があってコードも短いからそれを改造するところから始められる。需要があるから楽しいよ。

目の前に実用的な目標があるってのが大事

トラックバック - http://anond.hatelabo.jp/20100725043438
  • ブクマのコメントや tweet を見て

    http://anond.hatelabo.jp/20100725043438 を書いた増田です。 やっぱ、言語を学ぶのとプログラミングを身に付けるのは別なのが、プログラミングをしたことない人/これからしたい人には理解され...

    • http://anond.hatelabo.jp/20100726172331

      いわゆる関数型言語やScala、Processing、C#の評価も欲しいです クレクレ厨氏ねとか言わないでください

    • http://anond.hatelabo.jp/20100726172331

      C# は趣味というか私生活で必用な時にしか使ってないです。他の方の意見を聞いたほうがいいと思う。趣味でやってる感想としては、まず過去のどろどろがないのがいい。標準ライブラ...

      • http://anond.hatelabo.jp/20100726181636

        確かに関数型言語は勉強になると思う。 俺はSICPをほんの少し齧ってSchemeを知ったレベルだけど、それだけでも勉強になったと感じるね。

  • http://anond.hatelabo.jp/20100725043438

    絵ならルーミス本、ジャックハム本のような道具に依存しない捉え方や基礎力のための著名な初心者向け解説書があるけど プログラミングだとそういうのがあっても初心者向けとされて...

    • http://anond.hatelabo.jp/20100727061108

      自己レスすまん はてブ漁ってたら丁度いいのがあった http://b.hatena.ne.jp/entry/detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1438427284 平山氏の回答は本質を捉えてるし、このスレの内容ともかなり...

  • http://anond.hatelabo.jp/20100725043438

    Webアプリ公開しても自分に知名度がないので(Webアプリの内容もしょぼいですが)、まるで人が来てくれません。 なのでモチベーションが維持できません。 イラストにはpixiv、動画系なら...

    • http://anond.hatelabo.jp/20100727211423

      増田で質問すること自体間違ってると思う そういうのは自分の作品を公開しつつ聞いてみないと

    • http://anond.hatelabo.jp/20100727211423

      自分にも皆にも必用なものを作るんだよ。どういうものが必用なのか、流行るのか考えてる?自分が著名かどうかって今はあまり関係ないぞ。誰でも手をだすような分野はともかく、あ...

      • http://anond.hatelabo.jp/20100728003747

        まったく俺と同じスタンスで生きてる人がいてワロタw

        • http://anond.hatelabo.jp/20100728004345

          イラストやマンガでも同じだね。売れるもの受けるもの描くのを批判する奴も必ずいるけど、やりたいものを作るとしても、それを見てもらえる基盤がないとモチベ維持できない。見て...

  • http://anond.hatelabo.jp/20100725043438

    プログラマーになりたい書いた元増田です。しばらく見てなかったからすごいトラバに驚きました。すごい!!ありがたすぎます。とても為になりました。そんでオラワクワクしてきた...

  • http://anond.hatelabo.jp/20100731025935

    http://anond.hatelabo.jp/20100725043438 http://anond.hatelabo.jp/20090310021107 三桁いったのはこれだけ。 正直増田でなにがヒットするのかよくわからんなー 一端書き終わってから通して文体揃えるので...

  • 作った経験と理論とどちらがプログラマになるのに有利なのか

    作った経験と理論とどちらがプログラマになるのに有利なのか大学生に聞かれた。 「やりたい事があるのが大事。それがあればあとはぶっつけで動いて、否応なしにプログラミング力は...

注目エントリ

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