日記

「20歳を過ぎてからプログラミングを学ぼうと決めた人たちへ」を見て

http://www.ustream.tv/recorded/17318760
話者のキャラも好きですし、内容も興味深い点があってなかなか面白かったです。
それについて書いていきたいと思いますが、その前に僕が何者かについて。

小5でプログラミングを始めました。
といっても親父がどこからかMSXマシン(CF-3300)を貰ってきて、ゲーム機だ〜!と喜び勇んでスイッチを入れたものの、いきなりBASICのプロンプトが出るだけでサッパリ???な感じでした。
よく覚えてませんが、なんか数字を入れたら計算出来る事が分かって、巨大な電卓として使ってたような気がします。

小6、図書館で調べたらあれはMSXという種類のパソコンでBASICというプログラミング言語でプログラミングすればゲームが作れるということを知り、幾つか簡単なゲームのソースが載ってる本を借りて帰り、写経でもするようにそのまま打ち込むということをやってました。
キーボードに触るという事さえ慣れてなかったので一文字一文字キーがどこにあるのか探しながらなので大変でした。
あまりにも大変なので姉と一行交代で打ち込んだりしてましたが、子どもがしかも手打ちでやってるからSyntax Errorの嵐で。
ゲームが動いたときは達成感がありました。
でも当時持ってたゲームボーイのゲームに比べたらショボくて完成したゲームはあまり遊ばなかった気が。
姉と共同作業するのが楽しかったし、たまに打ち間違いはしたけれど運良くSyntax Errorにはならなくて、ゲームがバグる、っていうのがもの凄く楽しかった記憶があります。

中学時代は部活(陸上部・短距離)に明け暮れててあまりプログラミングはやりませんでした。
ちなみに3年間学年で一番100m走が速かったです。
さらにちなみに塾も行かず宿題もろくにせず授業以外ではまったく勉強せず授業中もろくにノートも取らず、ってな調子でしたが成績は安定して2番でした。
1番は両親が高校の教師をやってるかわいい女の子でその子もガリ勉タイプではなくて仲よかったです。
というかみんなと仲が良かったです。

3年の頃、親父が仕事のためにPC-9821V10を買ってそこでWindows95を使い始めました。
Windowsは高機能でMSXと比べたら別ものって感じでした。
ふと新しいパソコンでもMSX使ってたときと同じようにBASICでゲーム作りたいなと思って色々調べてたら、BASICのフロッピーが付属してるのを発見し、そのフロッピーから起動すると前みたいにBASICが使える事が分かりました。
前打ち込んだプログラムを新しいPCに打ち込んでみると、動きが早すぎてゲームにならなくて、どうしよう…とちょっと途方に暮れつつも物凄い性能向上だとワクワクした記憶があります。

高校に入ったら卓球部に入りました。そして半年で辞めました。
部活は楽しかったんですけど。
中学の部活がキツすぎて、一生分の辛さを味わった気になってました。
あと当時は怠惰な方向に進むのに憧れてたんでしょうね。それは今もあまり変わらない気はしますがw

高校時代は主なプログラミング活動としては、ベーマガ読んで載ってるプログラムを打ち込むってのをやってました。
あと自力でゲームを作ったり。
物理が好きで、星が2個しか出てこない星の重力のシミュレータを作ったり、3Dにも興味があって、擬似?ワイヤフレームの3Dハンググライダーゲームとか作りました。
今ではもうその時作ったデータが入ったフロッピーは多分ないです。
あとお年玉かなんかでVB6を買って(いや姉に買ってもらったのかも)Windows環境でのプログラミングを始めました。
BASICでにVisualが付いただけだから似たようなもんだろと思ってましたが、プログラミングモデルの概念から全然違ってて呆然としましたね。
VBについては良い書籍・雑誌と出会わなかった事もありあまり活動しませんでした。

プログラミングを勉強するために国立の某工業大学に入りました。
第二希望の大学だった(第一希望は親に反対された。かなり遠いところだったから気持ちは分かる)ので最初からあまりやる気が出ず。
授業も実践的なものを期待してたんですが、超抽象的だったり学術的だったりして退屈してしまい、ろくに授業も受けず昼夜逆転で友達と夜遊び&ゲーム三昧の日々を過ごしました。
今は勿体無いことしたなーと思ってます。
一応Pascal, C, C++とかUnixとかVerilogの授業は興味があってそれなりにちゃんと受けてました。
それで自分のプログラマとしての底力がグンと上がった気がします。

3年で中退して、とりあえず親父の会社でブルーカラーの仕事をすることに。
これが僕の社会人デビューです。
ここで自分の仕事に感謝されると嬉しいという事が分かりました。
仕事はだいたい定時に終わるので、このころはプライベートな時間でVBやC#やらやってました。
Cマガのパズル問題をC#で解いたりしてました。
この仕事で全然うまくやっていけると思ってましたが、飽きっぽい性格なのとプログラミングを仕事にするということが頭から離れないのとで、2年で辞めました。

そして地元のSIerに就職しました。
いろんな企業に常駐させてもらったりして色々経験になりました。
自虐的な業界あるあるネタもこのころたくさん仕入れさせていただきました。
大人数で働いたりして、自分のレベルというものもなんとなく分かりました。
プログラマと非プログラマの間に深い溝がある事も知りました。
でもプログラマ人生という観点からはこのころが一番楽しくなかったです。
非合理的なプロジェクトの進め方、汚い設計、汚いソース、デスマーチなどなど。
続けてもたいした経験にはならなさそうと感じたので、ここも2年で辞めました。

次はWeb系のIT企業に就職しました。
今はもうない会社です。
自社サービスを自社で作るという方針で、やりやすかったです。
でもプログラマが自分一人しかいなくて、予算もないので、体勢的な限界を感じていました。
色々プロトタイプを作って提案したりプログラマを新たに雇い入れるよう働きかけたり色々やりましたが、あまりうまくは行かず、ゆるやかに死んでいく会社を立て直すことはできませんでした。
経営側に技術への理解、というか自分の会社が売りにしてるものへの理解がないとやはり厳しいようです。
このころにPHPやLinuxについて勉強しました。

そして今は独立し会社の社長をやってます。
といってもひとりだけの会社なので、全然会社って感じではないです。
前の会社のお客さんを抱えつつ、サーバの管理やったり、ちょっとしたアプリを作ったりして細々と暮らしています。
今は個人プログラマでもマネタイズの方法が色々あっていいですよね。
だらだらとやってますが、プログラマ人生の中では子供の頃に次い楽しいです。
色々自由に出来るので色々学んでますが、代表的なのはPythonですね。
もっと早くに出会いたかったです。

はい。ということで前置きが長くなりましたが本題です。

高校の頃から経験を振り返りながらなんとなく同じこと考えてましたが、知識のグラフが大事というのはホントそうだと思います。
プログラミングだけじゃなく学校の勉強とかでもそうです。
知識のグラフを作る = 学ぶ事そのもの と言っても過言ではないのではないでしょうか。
詰め込み学習は脳の容量を消費しますが、知識のグラフを作ることは脳の容量を増やす、そんな感じがします。

関数に注目してる点については、なるほど!と思いました。
自分にとっては当たり前で空気のような存在だからこそ着目しづらいところでした。
最終的に手続き型言語を使うとしても、設計や学習を関数型言語で行うと効率がよかったり上手くいったりするなんて話をどこかで聞いた記憶があります。

自分が学んだ経緯からどうしてもハードウェアに近い層から積み上げるべきと考えがちでしたが(もちろん一流になるなら避けて通れない所だと思いますが)、ハードウェアと表層のプログラムの間にはネットワークを含むような巨大な層が横たわり、いっぽう軽量言語全盛でライブラリが充実してる現在においては、言語学的に抽象的なところから入った方が、とにかく自力でコードを書けるようになる、って事への近道かもしれないと思いました。

初心者プログラマに向けてのメッセージとして自分が漠然と思ってた事が明確になってて、動画をみながらうんうんとうなずいてしまいました。
ただ、chibicodeの宣伝も兼ねてるようで初心者プログラマ向けとしてはちょっと蛇足な部分もあったかなと思います。
具体的にはMapReduceの部分が他の重要トピックと同列に扱われてる点ですかね。

MapReduceは大規模なデータを分散処理するのに適したアルゴリズムで、最近流行ってるというか、大量のデータを捌く必要がある場面では必須と言ってもいいくらいにはなってますし、そんなにデータが大量じゃなくてもコードをスッキリ書くためにその考え方が使えたりはしますが、言語学的に特別な意味があるわけではなくて、あれはあくまでも星の数ほどあるアルゴリズムの中の一つでしかないです。

関数に着目してるのでそれを使って何か驚きを与えるために今流行のMapReduceを持ってきたのは必然だと思います。
でもそれを専門でやるプログラマでなければ、そんなのがあるよね程度で頭の片隅に置いておけばいいという程度の事だと思います。

プロが初心者向けのレシピを作ってそれをプロが実践したらパフォーマンスが落ちた、という話も面白いです。
確かにそうかもしれません。
勉強を教えるにしても、相手に分かりやすいように説明してもなかなか響かないとき、自分が発した言葉を冷静に思い返すと逆に分かりづらいなと感じるときが多々あります。
自分の思考プロセスを細かく観察して、細かくステップに分けて伝わらないだろうなと思っても勇気をもって伝えるのがいいのかなと思いました。

SIerの頃は中国やインドに仕事を奪われるから、早くプログラマを脱却して偉くなりなさいなんて言われてましたが、それ以上に現在はパイが増えてきているので楽観してます。
まぁプログラマは大丈夫でも日本のSIerはだめでしょうけどね。

コンピュータサイエンスではOSが一番難しいってのはやっぱり向こうでもそうなんだw とちょっとおもしろいなと思いました。

20年ぐらいプログラミングやってきて、最初の10年は一番知識の吸収力がある時期にも関わらずあまり伸びませんでした。
それは周りに聞ける人が全くいなかったからだと思います。
誰か教えてくれる人がいたらよかったのにと思います。
だから今、周りに聞ける人がいるなら存分にその人を利用して欲しいと、そう思います。

コメント

ブログを拝見させていただきました・・・。以下、ネットのコメントに対し、自分のコメント
—————————————————————————————
ネットの文)→親父がどこからかMSXマシン(CF-3300)を貰ってきて、ゲーム機だ〜!と喜び勇
—————————————————————————————
自分のコメント)→小5の時に、自分はMSXマシン(CF-2700)←パナソニック!(オヤジがくれ

た!)自分→うぁ!ゲームできる!←単純な思考!

—————————————————————————————
子どもがしかも手打ちでやってるからSyntax Errorの嵐で。
—————————————————————————————
自分もMSXBASICやってまして、Syntax Errorの嵐!

—————————————————————————————
ゲームが動いたときは達成感がありました。
—————————————————————————————
MSXだったら、スプライトとか使ったんですか?you tubeで、この時代の画面動画みたら!!!で

すよ!

—————————————————————————————
ゲームがバグる、っていうのがもの凄く楽しかった記憶があります。
—————————————————————————————
そっ?そうですか?自分はゲッ!って感じ

—————————————————————————————
Windows95を使い始めました。
Windowsは高機能でMSXと比べたら別ものって感じでした
—————————————————————————————
自分は、カルチャーショックを感じました。
今まで、キーボードでカチカチ・・・。コマンド入力し、コンピューターが反応(OK)←MSXは点滅すらしない!そっけなさを感じた印象から、一気に、マウスで、グリグリ・・・。やってボタンをポン!って押して、命令実行するのが、・・・・。でした。

—————————————————————————————
高校に入ったら卓球部に入りました。
—————————————————————————————
中学ん時は、卓球部!(バタフライのシート(←これの名前わすれた!(ラバー?)))

—————————————————————————————
高校時代は主なプログラミング活動としては、ベーマガ読んで載ってるプログラムを
—————————————————————————————
ベーマガありましたね!よく読んでましたが、LOGINいうの私は、よくみてました!

—————————————————————————————
擬似?ワイヤフレームの3Dハンググライダーゲームとか作りました。
—————————————————————————————
ワイヤーフレーム・・。うーーむ、そうなんです。当時、家庭用のPCで、3次元画像といえば、ワイヤーフレームなんです・・・。
自分)→当時、フルカラーのリアルタイム3次元映像なんて、夢のまた夢・・・。

—————————————————————————————
VBについては良い書籍・雑誌と出会わなかった事もありあまり活動しませんでした。
—————————————————————————————
VBやりましたが、わたしも、イマイチな感じでした。これ、従来のコマンドベースのヤツと異なり
、ユーザーが何かしら、actionを発生させると、それに対応した、コード(画面に)を記述するとい
う感じで、小学校時代の感じと違う感じでした→結果としてイマイチ!

上記にありますように、自分と非常に、にかよった人生を送られてきた方と思われます。
これからも、ブログ更新がんばってください。
それでは。

BINGE/binge2.web.fc2.com

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です



※画像をクリックして別の画像を表示

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください