2007年06月13日(水) [過去の今日]
#1 C言語のポインタが難しくて挫折した経験
プログラマーになれる人なれない人 という記事を読んでて、ポインタと再帰が難しいという話が出てきた。
俺が昔、プログラミングができなかった頃、C言語にチャレンジして挫折したのは、やはりポインタだった。
解説書を読み、「ポインタはデータのメモリアドレスが参照できるもの」みたいな説明を読んでああなるほどね、と簡単に理解した。プログラミングができないとはいっても、BASICでゲームを作って遊んでた事はあるし、マシン語でメモリの特定番地から何バイトデータをもってくるみたいな事はやってたから、別にメモリアドレス云々はすぐ理解できた。
が、俺はここで悩み込んでしまった。みんなポインタは難しいって言ってる。理解できないって言ってる。俺はポインタをメモリ番地だと理解したけど、それで合ってるのか? メモリアドレス以外の何かがあるのか? もしかして俺はとんでもない勘違いをしてるのか? どういうことなんだ? わからない、ポインタってなんなんだ!
その後、perlでreferenceという概念に出会い、それと同じようなものかと思ったのだが、C言語を理解してる友人には違うものだと言われた。もうさっぱりわからない。
結局いまだにCを使う機会もなく、ポインタという概念を本当に俺が理解してるのかもよくわからない。OpenSSLのソースを追っかけてて、ポインタの参照先が関数になってたりしてるのを見て、いろんな使い方ができるもんだなあと感心した程度。PerlやJavaScriptでも変数に関数を放りこんだりはできるし、そのメモリ番地にロードされてるものがデータかプログラムかなんてたいした違いでも無いだろうから、別にそのへんは不思議に思ったりはしないけども。
とりあえず俺はいま、スクリプトを書いてお金を頂くようになったけども、プログラマに向いてるのかどうか、プログラマになれているのかどうかはよくわからない。Cを書くことがこれからあるのか、それもわからない。
ただ、これからもキーボードを叩いて生きて行きたいと思っている。
(@083)
#2 F1カナダGP 琢磨とSAF1は正しかった
琢磨6位 ワークス全盛のF1に一石投じた というレーシングドライバー片山右京の書いた記事。
個人的な見解だが、もしペナルティー覚悟で給油もやっていれば、ブルツの前でゴール、表彰台に上れていたかもしれない。あくまでタラレバなのだが、十分にあり得たと思う。
片山右京という俺の心のヒーローに対してケチを付ける気は更々無いのだが、これはさすがに無いと思う。
俺も一瞬そう思ったのだが、すぐ否定した。なぜならペナルティを食らったら、次のピットでタイヤを交換できなかったからだ。
「最後のセーフティーカー出動の時、ピットに戻ることにした。セーフティーカー先導下の数周をオプションタイヤで走ろうと思ったんだ。その後、まだセーフティーカーが出ている間にまたピットインして、プライムタイヤに換えた。おかげで他のドライバーたちがソフト寄りのタイヤで苦戦する中、僕は全力でプッシュできたんだ」
という佐藤琢磨のコメントが掲載されている。
今季のF1では、タイヤメーカーが用意した2種類のタイヤを2つとも、決勝レース中に1度は使わなくては行けないことになっている。妙なルールだが、タイヤメーカーのコストに配慮した結果だろう。
そして今回のカナダGPのジル・ヴィルヌーヴ・サーキットは、公園の周回道路を利用したコースということもあり、ソフトなオプションタイヤではすぐダレてしまって速く走れない。
つまるところ、琢磨とスーパーアグリがあのピットでやるべきだったのは、すばやくタイヤだけ交換してセーフティカーの後ろに付き、まだセーフティカーが出てる間にもう1度ピットに入ってタイヤ交換と給油を済ませる、ということだったわけだ。
つまりやるべきことはやっていた、というわけである。いけなかったのは給油するしないで揉めてピットから出るのが遅くなった事だけだ。しかしそれもセーフティカー中にどのみちもう1ピット入らなくてはいけなかったのだから、大きなロスでは無かったのかもしれない。
しかし実にわかりにくいルールである。セーフティカーが入ったら給油してはいけないと一言で言うと簡単だが、実際にあったようにセーフティカーが出る直前にピットに入ったらそれは給油してはいけないのかとか、具体的なタイミングがさっぱり見えない。こういうルールはレースを惑わせ、観客の混乱を招く、最悪のルールだろう。
思い切って給油を禁止してしまった方がいいのかもしれない。軽い方が有利なのだから、燃費も改善されるのではないか?
#3 F1 佐藤琢磨のすごさは、ブレーキとセッティング
カナダGPでの佐藤琢磨6位入賞は、見ていて大興奮だった。
スーパーアグリとホンダと佐藤琢磨という、日本チームが日本のエンジンで日本人ドライバーがポイントを取るというのはそれだけでも前代未聞で、6位入賞までやってのけたのは快挙と言う他無い。「健闘」などと簡単に言ってのけたフジTVの女子アナは腹を割って詫びるべきである。
日本は高度経済成長後、世界第2位の経済大国として、またそれを背景に世界中で日本人の活躍が見られている。特に自動車に関しては、日本車はひとつのブランドを確立するまでになった。
だが、それでもF1で勝った日本人はまだ誰一人としていないのである。エンジンだけならホンダが何度も優勝した事があるが、それももう過去の話だ。チームでもホンダが昨年39年ぶりに勝ったが、それもただのまぐれ、たまたま速い車が全部潰れただけである。ましてやレーサーとしてF1で勝てた日本人など皆無だ。
それだけF1というスポーツは難しいのだ。チームも、エンジンも、ドライバーも良くなくては勝てない。すべてを揃えた者だけが勝利を手にする。
日本人は「勝つ」ことに慣れすぎてしまったのかもしれない。だから6位程度じゃ、喜べないのだろうか。
実際、これほど難しい世界で、佐藤琢磨という才能あるレーサーをホンダが解雇しなくてはならない状況に追い込まれたとき、彼の現役続行のために急造されたスーパーアグリF1チームが、瞬く間にこれだけの成績を残せるようになったのは奇跡的な事だ。
このカナダGP、我々日本人にとって最大の見せ場となった、昨年の世界チャンピオンであり、現在最速のマクラーレン・メルセデスを駆るフェルナンド・アロンソを、佐藤琢磨がオーバーテイクするシーンがYouTubeにあがっていた。どこの局のものかわからないが、アップロードから3日たっても削除されてないようだし、おそらくYouTubeと提携した局の映像だろう。
このオーバーテイクシーンをよく見て欲しい。シルバーアローと呼ばれる銀色のカラーリングを施されたマクラーレン・メルセデス、そのスリップストリームから佐藤琢磨のSAF1が出た瞬間に注目してもらいたい。
気がついただろうか? スリップストリームから琢磨が出たとき、アロンソの横に「並べてない」のである。普通、スリップストリームに付いた後続マシンのほうが余力を残してるはずで、コーナー手前では真横に並ぶものだろう。それがスリップから出てもまだマシン半分ほど負けていて、まったく並べていない。
Yahoo! F1にあるスピードトラップ を見てみると、アロンソの最高速度は324.2km/h、対して琢磨は317.5km/hである。 今季のF1はエンジン開発が凍結され、19000rpmでリミットがかけられているため、各メーカーともさほどエンジンに差は無い。つまるところ、それだけSAF1のマシンが不安定で、最高速度を犠牲にしてでもウィングを立てないと走れないということなのだ。
この速度さにも関わらず琢磨がアロンソを抜けたのは、アロンソのタイヤがぼろぼろだったこともあろうが、何よりそのブレーキングの上手さだ。2004年のアメリカGPで佐藤琢磨が見せてくれたオーバーテイクショーでも、やはりブレーキングの上手さが際立っていた。並べてない相手もガツンとブレーキを踏んだ瞬間、後方にぶっ飛んでいく様は、見ていて非常に気持ちがいい。その時の映像もあった。
こちらなどちょうど1馬身まるまる後ろにいるのに、ブレーキを踏んだ途端に前に出ている。すばらしいの一言である。
また、BARホンダ時代もSAF1時代も、佐藤琢磨がいるチームはマシンがどんどんよくなる傾向にある。おそらく琢磨はデーモン・ヒルなどと同じく、テストドライバーとしても優秀なのだろう。開発能力も高いに違いない。琢磨が2003年にテストドライバーをしていたBARホンダは、2004年にトップ3入りするほどの活躍を見せた。逆にレギュラードライバーになったあと、前任の世界チャンプでもあるジャック・ヴィルヌーヴに付いてたメカニックチームを丸々引き継いだのだが、これが恐らくよくなかったのだろう。
ジャック・ヴィルヌーヴはBARではまったく自分の思いどおりの走りができてなかった。頭のいいレーサーだし、その後ザウバーに移籍した際は短期間とはいえきちんとマシンを前進させていた事から見ても、開発能力のあるレーサーのはずである。BARのジャックチームはそれを活かせてなかったとしか思えない。
そのチームを引き継いでしまった琢磨は、期待通りの成果を挙げることができなかった。2005年のBARから100%ホンダチームとなった時も、やはり沈み込んでいった。それが結局琢磨のキャリアに影を落すことになるのだが、考えようによればそのようなチームに長くいないほうがよかったのかもしれない。
現実に今、SAF1で琢磨は伸び伸びとレースをし、マシンを開発し、今では元いたホンダチームより常に前のポジションにいる。これも琢磨の開発能力の賜物だろう。
また、タイミングモニタを見ていると、カナダGPで琢磨は細かいミスを何度もしているのがわかる。そりゃあれだけ滑る路面だし、不安定なSAF1なのだから当然なのだが、すごいのはミスしても抜かれず、致命的なダメージを負ったりもしてない事だ。
これはミスが致命的にならないギリギリコントロール可能なところに、セッティングの妥協点を見つけてる証拠だと、俺は思う。最高速度などウィングを寝かせればすぐ出るし、実際トヨタ勢やルノー勢は最高速度だけならトップクラスなのである。だがラップタイムはさほど上がらない。要するにトヨタやルノーはセッティングに失敗してるのだ。
しかしSAF1と佐藤琢磨はきちんと高度な妥協点を見つけてる。これがセッティングが上手いと言わずしてなんと言おう。
佐藤琢磨のすごさは、ブレーキとセッティング、そして開発能力にあるのだと、俺は思うのである。
(@741)