プログラミングの勉強という幻想

ネットだったり会社の新人だったり、いろんな人から「プログラミングの勉強」という言葉を聞くけど、それってどうなのかなと常々思っている。
また挫折者が出たみたいなのでちょこっと書きます。
以下の引用はどっちかのエントリからです
http://d.hatena.ne.jp/hrkt0115311/20110216/1297837415
http://d.hatena.ne.jp/hrkt0115311/20090720/1248041988

「楽しい!!」と思えなくなった時点で、先に進めなくなった。
http://d.hatena.ne.jp/hrkt0115311/20110216/1297837415

もともと日曜大工的に始めているのだから、ここは辞めどきだと思います。仕事じゃないんだからつまらないこと続けてもしょうがない。
このエントリには「やるき出せ!」「続けろ!」という意図がないことを先に断わっておきます。

C言語はやっとけorz

C言語でしか学べない基礎はC言語でしか役に立ちません。
というのはいささか暴論かもしれないけど、C言語でしか知りえない事はほかの言語では必須の知識ではないです。
C言語でよく「ポインタで挫折した」とか聞きますけど、じゃあポインタ知らなかったらJavaで挫折するかって言ったらしないです。メソッドへの引数が byvalかbyrefかなんて知ったこっちゃないです。

正規表現もやっとけorz

手作業でやることの効率UPに感動してのコメントみたいですけど、だったら正規表現なんて別に知らなくてもいいです。
正規表現使ったら1行で書けることをループや条件判定を使って20行で書くなんてナンセンス」と言う人もいるでしょうけど、実行するプロセッサにしてみればどっちでも大差ないんじゃないでしょうか。
実行時間がミリ秒単位で遅くなったって不都合ないでしょう?秒間1万回くらい処理するとかのレベルだと話は別ですけど。
というか、プログラミングを勉強する(≒アルゴリズムを考える脳を鍛える)って意味では、正規表現を使わない書き方ができたほうがいいんじゃないかと。

プログラミングのテキストって「次に何を読むか」、自分の力量に合わせて、テキストを見つけてくるのがすごく難しい。

根本的な話になりますけど、「力量」じゃなくて「目的」にあわせてテキストを探すべきではないかと思います。
545日時点のまとめにも目を通しましたが、「結局何が作りたいんだろう」という印象。ゴールもなくただ「日本地図」を頼りにあてもなく走り続けてるような感じ。
「作りたいものがある」→「こういう処理をするにはどうすれば?」→「これを身につけよう」
こういうはじめ方の方が続けやすかったのではないかと思います。
作りたいものもなくただノコギリやカンナの使い方だけ勉強する日曜大工なんていません(たぶん)が、ことプログラミングに関しては「道具」だけ先に揃えようとする人が多く、「プログラミングの勉強」という実態のない怪物にとらわれているんじゃないかと。

「やりたいことに適した言語を使う」
「やりたいことが変わったら、当然それに適した新しい言語を学ぶべき」
最後までその言語一つだけでやりたいことが全部できるとは思わない方がいい

古いほうから。
コメント欄で指摘されていますが、一つの言語に集中した方がいいです。
というのも、「よっぽど高度なことをやる」か「面倒なとこは既存のライブラリに頼る」のどちらかをメインに据えない限りは、どの言語でも大体同じことができます。ある言語では1行で書けることがある言語では20行になったりとかそういうレベルでの差は出ますけど。
「この言語でやりやすい=この言語でのみ可能」
ということではないです。
また、言語の選択は環境に依存する場合の方が多いです。「レンタルサーバ上での制約」とか、「クライアントがどうしてもVBでと言うから」とか。
Perlerに憧れてはじめたのであれば、初心にかえってPerl一筋で行くのが良いのではないかと思います。


また、明言されてないですけど、いきなり「きれいなソースコード」を目指しすぎているように感じました。
すごい人たちがすぐ見えるところにごろごろいるせいかと思いますが、最初からあまりきれいなソースコードを目指す必要はありません。
まず「汚くてもとにかく動いたらOK」の方が楽しさを持続させやすいのではないかと。


今はとにかく「作りたいものが特にない」のであれば無理に再開する必要はないと思います。
むしろ「何か作りたいものを思いついた」ときに、「どういう部品を揃えればいいのか」「どうやってそれ実現したらいいのか」それを考えるだけの基礎ができてしまっているようにも思います。