月別アーカイブ: 2010年06月

2 posts

My Golf

このブログの副題では、「.NET、 LINQ、 XML、CMS そして少しの脱線と」となっていますが、
泥臭くプログラミングしていると、
プログラムのお話で取り立ててご紹介するようなことも思いつかなくて結局「少しの脱線」ではなく、
脱線だらけになっています。

私は50歳過ぎてからゴルフを始めたのですが、
口の悪い級友が「ゴルフのハーフのスコアは、結局始めた年台以上にはならないのだよ」といいました。
(30歳台で始めればハーフ30台、40歳台では同じく40台、50歳台では50台という具合です)

私は「そんなことがあるか。
1年でシングルになった人だっているのだから。
シングルとは言わないが、1年で90(ラウンド)位にはなってみせる」と意気込んで始めたのですが、
それから随分経つのに未だに90を切れないでいます。

理由はいろいろあると思います。

理由1. 
やはり歳をとると体の柔軟性がなくなり、
下半身の安定性に欠けてくるので正確にまた強くボールを打てません。
これはどうにもしようのないことで、それを補うには徹底した練習しかありませんが、
それほど練習する時間も体力もないので、これを改善することはできません。

理由2. 
これまでいい先生に出会いませんでした。
ゴルフを始めたとき、折角だから先生にチャンと付こうと思って、
ある先生に1年くらい毎週見てもらっていたのですが、
私には彼の言うことがわかりません。
ゴルフのスウィングは一瞬のできごとなので頭で考えることと口でいうことと、
実際に体で体現することが異なります。

先生が自分で思いいうことが、実際に彼の動作を正しく表現しているのか問題ですし、
その言葉を聞いた生徒が先生のいうことを正しく理解したか問題ですし、
更には聞いたことをその通りできるかどうか問題です。

人それぞれに体格も体力も体の使い方の癖も違いますので、
「自分流」を口で説明しても相手に伝わらのいのです。

理由3.ゴルファーの性格。

私はゴルフに向いていない性格かもしれません。
私は何事も理詰めで考えます。
これはゴルフに向いていません。

考え、徹底的に練習すればいいのですが、
考えそれに見合った練習をしないのは最悪です。
「テイクバックはこうあげて」
「トップでのクラブの角度はこうで」
「手の位置はこの辺りで」と理屈はよく分かっているのです。

テレビ観戦は好きですし、
ゴルフの「この一冊であなたもシングル!」というような本を何十冊も持ち、
ビデオやDVDをおそらく20本以上は持っていて、練習もそこそこするのですが、
頭で考えることと体ですることとの乖離が大きいのです。

ゴルフのスウィングは一瞬のプレーですので何よりも思い切りが大切なのです。
テイクバックの動作を始めてから色々考えるのは最悪なのです。
スウィングでは頭1、体9位の役割でなければいけません。
私は頭9、体1ですから、これではうまく打てるはずはありません。

私は、昨年秋から近くのダンロップゴルフスクールに通っています。
ここのいいところは、毎回ビデオで自分のスウィングが見えることです。

私は見る目は持っているのですから、
自分のスウィングを見ればいかにひどいものか誰からも言われないでもよく分かります。

問題はここからです、
分かったからできるわけではないので、
自分では言われたことを一生懸命やっているのですが、
ビデオを見るとうまくありません。

「テイクバックでトップの位置はここに上げて」から体が動くのですから、
そこから「ヨイショ」とオーバースウィングが直りません。

毎回毎回先生から同じことをいわれます。

「分かっているよ」

でも、ダンロップゴルフスクールでは一貫した指導方針で分かりやすく、
しかも本人が確認できますので、
欠点を気をつけて練習していけばある程度進歩があるだろうと考えています。

Fortran, Lisp, C そして Java

私がコンピュータの世界に入ってFortranを少しかじった程度のとき、
先輩からLispで人工知能研究用のParserを作るように命じられました。
Fortranの逐語的プログラムは理解していましたが、
ポインタでつながったデータ構造やそれを操作するLispプログラムがいったい何をしているのか理解出来ず、
なにがどうなっているのか混沌の中で仕事をしました。

Lispは原則として逐語的コードではなく、すべては再帰コード(リカーシブコール)で処理します。
XSLTの再帰コードを書くとき役に立ちましたが、Lispとはそれ以来縁がなくなりました。

Lispから解放され、
Fortranで3Dグラフィックのプログラムを書いていましたが、
Fortranは何故かあまり好きではありませんでした。
パンチカードで1桁目はコメントフラグ、7桁目は継続行フラグ、
8桁目からコードを書くとかの約束事があまりにもカッタルかったからかも知れません
(今はこの制限は解除されていると思います)。
それとやはりプログラムの分岐の基本はgotoなので、
プログラムが読みにくかったからだと思います。

そういえば一時Prologという言語が人工知能の研究で注目され、
少し書いてみましたが、まとまった成果をあげることはできませんでした。

Wirthの[Algorithms + Data Structures = Programs]を読んだおかげで
Pascalを知ることができましたが、処理系を持っていなかったので、
後にデルファイに接するまでPascalを動かしたことがありませんでした。

その後パソコンが世の中に出現したとき、Cコンパイラも発売されましたので、
カーニハンのCを勉強しこちらは気に入り(多分Pascalの経験があったためと思います)、
始めははパソコンで、後にはUNIXでCのプログラムを結構長く書きました。

Cではポインタが面白く、データヒープの中をポインタを移動し、
そこでキャストするとintでもdoubleでもstructureでも抽出される仕組みが、
とても愉快で得意になって多用しました。
ポインタが関数呼び出しに使うなど痛快の限りです
(ご存知の通り、このポインターがプログラムを暴走される主要な原因でもあります)。

その後UNIXで大きなシステムに取り掛かりましたが、
当時はプログラムはすべて英数字のみで、変数や関数名の長さに制限がありましたので、
概してこれらの名前は無機的になり、コメントを適当に入れる作業は重要でした。

Javaは10年以上前に少しかじりました。
その後私はもうWindows一本で行こうと思っていましたので、Javaにふれることはなかろうと、
Javaの本は本棚の奥に積んいました。

実際私の周りではJavaを使う機会はあまりありません。
イントラネットではJavaを使うことはありますが、レンタルサーバでは大抵Javaは使えないし、
Windowsアプリケーションでは、まずJavaを使うことはありません。

突然(私にとっては突然)iPadが評判になり、私もMacがどんなものなのかと興味を持って、
Mac OSを購入しました。
最近のMacはUNIXベースだということだし、開発環境ではJavaがメインのようなので、
いたずらしてみたいと思ったのです。

しかし、購入した後でインターネットを調べると、MacOSを簡単にDOS V機にインストールできないことが分かりました。
Biosに代わるEFI-Xというブート用ハードを購入すればいいようですが、今のところそこまでやる気はありません
(EFI-XでMacを動作させるのは違法のようです)。

JavaはWindowsでは最近はNetBeansで練習プログラムを書いていましたが、
Eclipseが軽そうなのでEclipseに切り替えて、
暇をみつけてAndroidで携帯用のプログラムを作ってみようと考えています。
Eclipseは簡単にWindows(XP、Vista共)環境にインストールできました。

C#はJavaのいいとこ取りだから、C#を書くのとJavaを書くのと大差はなかろうと考えています。

昔Javaを勉強したとき、何故か習得に手間取りました。
一つは、アプレット等の話題が面白くなかったのと、
自分自身がオブジェクト指向の言語を始めて本格的に勉強したからだと思います
(その前に、C++を少し「勉強」したのですが、
VC++のフレームワークが余りにゴチャゴチャしていて嫌気がさしていました)。
それに何より必要に迫られていなかったので気乗りしませんでした。
加えて、当時はEclipseのような手ごろなIDEがなくて、
すべてコマンドを打っていたことも勉強がすすまない大きな要因だったかも知れません。

それでも「この際オブジェクト指向を習得しなければ」と思い私がとった方法は、
「やる気になるまで本を買う」ということで、次々に20冊程の本を買いましたら、
さすがに後には引けなくなり、なんとかものにすることができました。

勿論これは.NETプログラミングに、大いに役立ちました。

どちらにしても、これからはWindows以外もwatchしておいた方がよさそうだと考えています。