2007年10月04日(木) [過去の今日]
#2 マシン語論争にいまさら思いっきり後出しジャンケンしてみる
ある大工親子間での意見の衝突 で、大工の息子が釘なんてホームセンターで売ってる機械で打てるのに基本の釘打ちばかりやらせるみたいな話を紹介している。
で、「これをプログラミングにたとえると」のところが、 マシン語を知らない子ども達 と その反応 そのまんまで大笑い。
まあ実際のところ、時代が変わると求められるものや入り口が変わるのは全然どこにでもあることで、どうってこたない話なんだよね。
昔は車に乗るにもいつ不調になるかわからないから、ドライバーはボンネットをあけて多少なりともいじることができたし、オイルのチェックも普通にできてあたりまえだった。いまでも教習所でやらなくはないけど、さらっと流すだけで、覚えてる奴なんてほとんどいない。
まあそれでもいいんだ。今は素人が手を出すより、JAFとかのサービスに電話した方が早くて確実。定期チェックはガソリンスタンドでやってもらえる。
でも、そんな環境の中でも、エンスーと言われるマニアたちはそういうことにまで手を出して行くわけだ。
もちろんプロならオイルチェックくらい普通にやるだろう。じゃあ町の整備士が今の車の奥底まで知ってるかっていうとそういうわけじゃない。車を自分で作れる整備士なんてほとんどいないだろう。
でも車を作れる人はいる。F1なんかはどこのチームも自分たちで車を作っている。カーボンを張り合わせてシャーシやブレーキを作るんだが、カーボンは繊維なので、この繊維の方向の組み合わせで車の特性が変わるんだそうだ。それを理解しなきゃ車を作れないかっていうと、別にそういうわけじゃないよね。
もちろん、整備士から勉強してそこまでいく人たちもいないわけじゃないだろう。 はてなおやさん のように、ウェブサービスを作ってひたすらPerlを書き続けながら、だんだん カーネルコードを読んだりマシン語を書き始めたり する人がいるようにね。
結局、人は「必要無いもの」は覚えようとしない。俺がなんだかんだでいまだにC言語を覚えようとしないのも、必要無いからなんだよな。マシン語なんて言わずもがな。
まずスクリプトで仕事をする人間に必要なのは、それをいかに効率よく書き上げるか。とにかくこれが最初の目標になる。
しかし、そのスクリプトの速度に不満が出る場面が必ずある。ここが問題。
速度を出すために無駄な処理を洗い出したり、マシンにとって都合がいいような書き方をしたりするようになっていくと、言語の限界が見えて来る。PerlならPerl、RubyならRubyの、処理系の限界が見えて来る。
そうなるとライブラリをCやC++で書いたり、OS側の処理をおっかけたりしはじめるわけだ。まあ俺はまだそこまで行ってないが、そういう人たちがいるのは知っている。
恐らくそこでも満足できなくなったとき、マシン語に手を出して行くことになるのだろう。
俺はそれでいいじゃないか、と思う。別にスクリプトを書くのにレジスタに入れたデータが取りだすときは逆順になってるとか、そんなこと覚える必要は無い。
必要になったとき、隠蔽された風呂敷を1枚1枚はがして行く。それまではよくわからないが16の倍数にしとくと効率がいいんだよとかそういうTIPS的なもので充分だと思う。
それが一生必要無い人もいれば、必要になる人もいる。環境が人を育てるってのはそういうことじゃないか。
そう、マシン語を覚えた方がいいというなら、自分をマシン語が必要な環境に放りこむ方法を教えるべき。
プロプライエタリの「はがせない風呂敷」に慣れてしまった人には、そういう発想は出てこないのかもしれないけどね。
(@611)