kwatchさんから「よくわかりません」というツッコミをもらいました。
「プログラマーのためのプログラマー日記」の最終日*1にも同様のことを書いておられたのを読んではいたのですが、 「もう少し解説してほしい」と頼まれれば、書くしかないでしょうね。
まず、「数学の概念とあまり合致しない」という点ですが、それはたぶんあまり重要ではないと考えています。 私が数学苦手なせいかもしれませんが。
そもそも数学の概念を持ち出しちゃうと、 プログラミング言語の代入って許せないものじゃないですか。
x = x + 1
とかありえないわけですし。よって数学における変数や代入のイメージに厳密に沿うと、
という関数型言語みたいな代入と変数しか許容できないような気がします。
え? 「そういう意味じゃない、そこまでは言ってない」ですって?
そうでしょうとも。では、「数学における変数や代入のイメージ」とはどんなものでしょう。
変数とは「関数のパラメータ」か「一時変数」であり、 「値(計算の途中結果)」に後で参照できるために名前をつけたものでしょう。 また、代入とは「値」に名前をつける行為です。
つまり、これは名札モデルです。 kwatchさんの直観とは反対に、名札モデルは数学の概念に合致しているわけですね。
たぶん、kwatchさんは「数学における変数や代入」という言葉で違うものをイメージしていらっしゃるとは 思うのですが、そのイメージは普遍的なものではないかもしれません。
「同じ説明は箱でもなりたつだろう」という指摘があるかもしれません。 もっともです。
問題は箱は名札と違って名前と強く結びついていないと言う点です。 現実世界の箱はむしろ入れ物としての性質が強く、変数よりもオブジェクトに近い性質を持ちます。 実際にCやC++では箱はオブジェクトです。
これを変数の説明に使ってしまうと後でオブジェクトと変数の区別が難しくなるんじゃないかと 心配しているんです。余計な心配かもしれませんが。
追記:
なんかフォローもらってますね。残念なことにどれもよくわかりませんでした(脳力が足りない?)。
Lisp だと箱に相当するのはシンボルでしょうか?
伝統的なLispのグローバル変数はそうでしょうね。
しかし、たとえ伝統的Lispでもローカル変数だと環境リストに格納されちゃうんで、 実装も名札モデルですよね。
「値に名前をつけたものが変数」というのは変ではないでしょうか。 実行時のある時点の文脈においてはそのように見えるかもしれませんが、 私の感覚だと「仮の名前(変数名)をもつ、後に与えうる未来の値が変数」というか。。
えー、なんで変なのかな。プログラム上のどこの地点で考えるかによるのでしょうか。 「仮の名前をもつ、後に与えうる未来の値」ってことは宣言した地点で考えているように 思われるのですが、Rubyには宣言はないしなあ。
名札モデルだと、代入っていうのは、名札を付け替えるのに相当するのでしょうか? これって、変数aとbがリファレンスで同じものを指していて、 b=1としたときに、aも1になるような場合の説明が難しいのではと思います。
えーと、C++にはリファレンスがあるのでそういうことが起きますが、 「もっと良い言語」であるRubyではそういうことは起きませんよね。 今は、Rubyの変数の話ですから、C++のリファレンスについて考える必要はないと思います。
CやC++の変数は確かに「箱+名札モデル」で説明するのがよかろうとは思いますが。
*1 「プログラマーのためのプログラマー日記」、終わっちゃったんですね、残念。
9月になったら、論文が終わったら、やろうと思っていたことがいくつかあったような気がするのだが、 追い詰められている時には自分を励ますために「ああしよう」「こうしよう」と考える割に、 いざ終わってみれば、ぼーっとしてしまって、あんまりやる気が出ない。ちょっと抜け殻っぽい。
その「やろうと思っていたこと」のひとつが、 メールオーガナイザーに返信機能を付けることだ。 これができれば、gmailもcmailも使わなくてすむ。
とはいうものの、返信機能はかなり大仕事のような気がしていて、 なかなか手がつけられなかった。cmailの返信機能を実現しているcmail-reply.elは、 じつに1432行ある。1日や2日じゃ完成しなさそうだ。
と、思っていたのだが、実際にやってみれば、わずか半日、たった54行で実装できてしまった。 今までやっていたことはなんだったんだろう。
まだ、いくつか足りないところがあるけど、私が日常使うぶんには最低限の機能を確保したかな。
後はこれを公開するのをどうするか、だな。
いままでcmailでもgmailでも反応が鈍かったのだが、 メールオーガナイザーは私の非力なマシンでもきびきび動く。 ブラウザが鈍かったのは風博士で改善されているし、 昨日のエントリに書いたようなマシンの不具合さえなければ、 買い替えなくても当分大丈夫な気がする。
いや、実際は買い替えなくちゃだけど。うう、そろそろ決心のしどころか。
子供たちの夏休みも終わり、今日から給食も始まる通常日程だ。 自分が子供のころに比べてスタートが早いような気がするが、 きっと完全週休二日制の影響だろう。
で、「鬼の居ぬ間に」ではないが、私の夏休みを取ることにした。 夏休みの間、妻は結構ストレスが溜ったので、それを解消という目的もある。 あと、もう使わなくなった子供用品や服を実家に預けてしまおうという目論見も。
で、米子へ。
まず、昼食。両三柳にある「Pretre Bakeri Cafe」へ。パスタかスープの付いたパンのバイキング。サラダのドレッシングが私にはちょっとすっぱすぎた以外は大満足。基本的にパン好きだしね。末娘もパンをかじっていた。今日は平日なので「子供連れのおかあさん(のグループ)」のような客層がメインであった。
実家に移動。物置にベビー布団やら使わなくなった洋服やらを置いてくる。 また、姪っこや甥っこが使うかもしれないからね。
そういえば、ベビーカーがあったよね、と探してみると、 なんと4台も見付かる。なんでこんなにあるんだ。 そういえば高校時代、文化祭でイオンクラフトを作るから*1電源としてテレビが必要だ、 ということになって、うちの物置を探したらほこりをかぶった 白黒テレビばかり5台くらい見付かったことがあったなあ。謎の物置屋敷。
その後、米子駅前のサティへ。4階の手芸用品店がビーズの品揃えが豊富なんだそうだ。 最近、ビーズ細工に凝っている妻は御満悦だった。なんでもビーズ細工は流行しているということで。 そういえばうちの息子の夏休みの自由研究もビーズ細工であった。 息子はああいう手先の細かい作業が好きらしい。
しかし、米子は松江よりも人口は少ないはずなのに、 面白い店が多い。デパートやショッピングセンターの類も米子近辺の方が発達しているし。 いったいどういうことだろうか。
殿様商売と言われる松江と商人の街である米子の住民気質の違いか。
*1 そういえば、イオンクラフトを作ってるときに感電したことがあったぞ。というか、持ってたピッケルに空中放電してきたんだけど。1万ボルト以上だから十分AC体験か
宣教師(アメリカ人×2)を招いて夕食会。
楽しかった。いっしょに友人も呼ぼうと思ったのだが、都合が悪かったそうだ。 とはいえ、当日になってから呼べる別の知人もいないので、宣教師たちといっしょに楽しむ。 子供はお客さんがうれしくてはしゃいでいた。というか、ちょっとヒートアップ気味。
また、誰か呼ぼう。
Symbian OSで動くRuby。実際には確かめてないんで完成度とかはわからない。
正直、当初UNIX系のことしか考えずに実装されたRubyが、 Symbianで動くとは驚きである。PDAということならZaurusで動くわけだけど。
そのうちPalmとかでも動くようになるかもしれない。 Palmの絶滅とどっちが早いか。
実際の受賞候補者のプレゼンテーションとそれを受けた最終審査。
詳細は(まだ)書けないが、印象に残ったことを
ま、それでも、それなりの結果を出せたのではないか、と思う。
SmalltalkにならってSymbolをStringのサブクラスにしてみた。 東京からの帰りの飛行機の中で実装できちゃった。
どのくらい影響があるのかなあ。
(追記)
ある程度予想していたが、結構広いようだ。 さて、これもどうするかな。
金曜あたりにnil.to_sが"nil"を返すようにしたんだけど、 その影響は意外に大きいようだ。
で、ruby-devでいろいろ議論が持ち上がっている。 実際にはこの変更に固執するつもりはないんだが、 議論の結果
などについて考察が進めばよいと思っている。
しかし、言語のあるべき姿について頭をつきあわせて考えるのは楽しいな。
私の愚痴に対して、 mputさんが突っ込んでおられる。
mputさんのところはコメントできないようなので、こちらで書くことにする。
さて、私の読んだところ、mputさんの主張は以下のようなものだと考える。
合ってるかな?
で、私自身はこれに対して極端に反対しているわけではない。 さすがの私だって「リリースが遅れると社会的信用が目減りする」ことは解っているし、 リリースがちゃんと行われているプロジェクトの方がきちんと運営されている印象を与えることだって知っている。
ただし、(大方の人には意外かもしれないが)私はリリースの技術的動機がなくなったとか、 減ったとか全然思っていない。ほとんどの人はCVSリポジトリを直接アクセスしたり、 スナップショットをコンパイルして使ったりなんてしない。 リリースされていないバージョンは98%の人にとって存在しないのと同じなのだ。
そうすると、天秤が発生する。 つまり、リリースが遅れることによる社会的信用の目減りと リリースにバグが含まれていることによる社会的信用の目減りだ。
「期日通りのリリース」を選ぶか「期日は遅れるがいくつかバグが少ないリリース」を選ぶか、だ。 期日通りのリリースには社会的信用を勝ちえるというメリットがある。 一方、バグにはその存在自身に社会的信用を失わせる働きがある。
もちろん「期日通りにバグのないリリース」がもっとも良いのだが、 なかなかそれは実現しない。かならずどちらかを選ばなければならないとしたら?
私自身は後者の方がより重要だと思う。
しばらく経ってしまえば1.8.0がいつリリースされたかなんて誰も気にしない(覚えてる?)。 だけど、1.8.0に含まれてたバグに突き当たった人の何人かは それ以降Rubyの品質を信じられないだろうし、「だから、もう使わない」って人もいるだろう。 そしたら「期日通りのリリースによる社会的信用」なんて簡単に吹っ飛んでしまう。
さらに今回のリリースについては、以下のような条件もあった。
さらにさらに言えば、リリースってのは(特にRubyのように複数のメンテナがいて、中には反応の悪い人もいる場合には)異常に面倒な上に、実際の作業者(この場合は私だ)にはなんにもいいことないんだよなあ。バグが残ってても、遅れても、文句言われて。開発じゃないからつまんないし。細々とした作業ばかり多くて、気は使うし。
受益者負担? なにそれ?
ま、イシュートラッキングの品質が低くて、 ずっとほったらかしになってた問題もあったのは事実なので、 誰かも指摘しているように、そろそろ誰かが「仕事として」そゆことをやることが 求められるようになってるのかもしれない。
私自身もいろいろ画策してるんだけど、なかなか実現しない。 先立つモノが必要なんだよなあ。
(追記1)
上記の文章を読んで「バグの根絶は現実的じゃないんだから、いつまでたっても出せないじゃないか」という批判は当たらない。
私が言っているのは、すでに分かっているいくつかのバグを放置するかどうかだから。 まだ見つかってもいないバグも含めて全て直してからリリースする、なんて 非現実的な話じゃない。
(追記2)
MoonwolfさんからTrackbackがふたつ。 でもなんかおかしいよ(Trackback内容とリンク先が対応していない)。
そのいち。
Devlog:[Ruby] 1.8.0に対してAppleの連中が全然本気じゃなかったのはBefore Railsだったからでしょ
After Railsだったら、プレッシャーかけてきたと思いますよ。
えーと、いつから「After Rails」なんでしょうか。 ごく最近だった直前のOSXのリリースでもAppleからなんのコンタクトはありませんでしたが。 まあ、コンタクトがあったら1.8.5がそれに間に合うように出せたかというと かなり疑問ですけど。
そのに。
Devlog:[Ruby] Ruby1.8.xのリリースエンジニアリング引き受けます
そろそろ誰かが「仕事として」そゆことをやることが 求められるようになってるのかもしれない。 Matzさんが言ったので、立候補してみる。 報酬はPayPalでよろ。
えーと、DevlogでPaypal経由の寄付を集めていらっしゃるようですが、 それってMoonwolfさんが自分でお金を集めて自分でリリースエンジニアリングの仕事をする ということですか?
(追記3)
otsuneさんのブックマークのコメント
気持ちは分かるが、Matzさん。あなた当事者だから! 「先立つモノが」と愚痴る立場じゃない。まぁパフォーマンスかもしれないけど
よくわからない。私がRuby開発の当事者なのは確かだけど、それだと「先立つモノが」と愚痴ってはいけないのかな。好きでオープンソースを始めたのだが、自分のソフトウェアが世界中に使われるようになったのだから、責任がある。どんなにイヤなことでも我慢して粛々とやるか、それが我慢できいないなら自費持ち出しで人を雇え、と?
(ちょっと怒ってる)
あと、mputさんは、 「Ruby 1.8.0 のリリース」について皮肉られているけど、私はアレで良かったと思う。
そもそもAppleの連中は1.8.0を10.3に含めることに全然本気じゃなかったと思う。 「入れたい」という話は間接的に聞いただけでAppleから直接連絡はなかったし、 だから10.3のためのスケジュールについても「8月のはじめ頃」としか聞いてなかった。 で、8月4日にリリースして、蓋を開けたら入ってなかった、と。
もっと早く出せなかったのは、別に怠けていたからじゃなくて、 その間ずっとバグを直していたからなのだから、仮に正確なスケジュールを聞いていて、 「スケジュールに間に合わせるためにここでリリース」のようなことをした日には バグが一杯残ってて、 Macユーザの間で「Rubyは使えねー」という評価が定着してしまってた可能性が高い。 *1
そしたら、Macユーザの、あるいはAppleのRubyの評価は今よりも低くて、 今日のRubyCocoa標準添付とかいう話にはなってなかったんじゃないかなあ。 単なる憶測だけど。
それに、たとえ間に合ってたとしても、 Appleとしてもメジャーバージョンアップ直後のソフトウェアを取り込むのには 勇気が要ったと思うなあ。
*1 実際には「Ruby古いぞー」という評価があったわけだが、それはそれとして
司会はビショップにお願いした。
日曜学校は聖餐について。 毎週聞いている聖餐の祈りの言葉の意味を改めてふりかえる。 微妙な言葉の違いに意味が隠されている、とかいうような話。
おなか空いた。
米子空港から出発。 しかし、最近米子空港の搭乗ゲートで日記をアップロードすることが多いな。
本来、羽田から直接成田に向かうはずだったのだが、 仕事を入れられてしまう。でっかいスーツケースを引きずって都内を歩くのはイヤだなあ。
飛行機は満席でつらかった。腰が痛い。
今回は、出発直前になんか悪いものでも食べたのか、 お腹やら頭やらも痛くなってくるし。体調最悪。 末娘も吐いたって聞いた。
体調悪くて、なかなか寝られなくて、映画ばかり見てた。
インディアナジョーンズはそれなりに面白かった。 ストーリーとしては今までで一番破天荒。破天荒すぎかも。
ドラゴン・キングダムは原題は「forbidden kingdom(禁じられた王国)」なのね。 ドラゴン出てこないじゃん。途中からだれもかれも英語を話し出すご都合主義に吹いた。 最初にジャッキーが「聞かないからだ」という一言の元に、セリフが英語になるということは ほんとは中国語をしゃべってるんだけどなんらかのマジックで伝わるようになったという解釈?
英語に苦労している身としては、わが身にもそんなご都合主義が起きてほしい。
ストーリーは陳腐だが、それなりに楽しめた。本当はジャッキー+ジェット・リーについて 語るべき映画(というかそこ(だけ)が主眼の映画)だが、 すごいのはすごくて、本当に感心したのだが、最近はCGが発達してきて 才能にびっくりしなくなってしまったなあ(あいかわらずジャッキーに愛がない)。
敵味方両方に登場する女の子がどちらも超美人なのに 驚いた。いや、美人って言うより単に私の好みと言うだけか。 検索してみたら
だそうで。個人的には白髪魔女の方が好み。悪役ということでひどい扱いだったけど。 リー・ビンビンは女の子って年齢じゃないね。スクリーンではすっごく若く見えたけど。
そういえば、深夜枠で見た「ザ・ワン」は(ぶっとんでて)好きだったなあ。
近距離恋愛は..どうでもいいや。どうも恋愛映画はダメだ。
それから、アイアンマン! 今年観た中ではサイコーの映画。
ただ、最後のアンアンマン(オリジナル) vs アイアンマン(コピー)の戦いは エキサイトしたけど、冷静になってストーリーを考えると 必然性全然ないよね。今の地位や組織を全部捨ててパワードスーツだけ手に入れてどうすんのよ、 って感じ。地位や組織なしでは自力ではメンテナンスもできないだろうし。 自暴自棄になるのもいいかげんにしろと。 その割に態度がでかいし。
と、映画三昧。 体調悪いのになにやってるんだ、寝ろよ。
で、へろへろになって昼前にロサンジェルス空港に。 長い一日だ。
入関を過ぎ、荷物を再び預けてから、乗り継ぎ便を待たされる。
係員から「ターミナル4に行け」と言われたが、 それがどこにあるのかよくわからない。どうやら今いるビルの外にあるらしい。 インフォメーションのおばさんに「ターミナル4にはどう行くの」と尋ねると 「建物の外に出て、あっちに歩く」ということだった。 「あっち」という方向が、係員が指差した方向と正反対なのはどういうこと?
まあ、いいや。慣れないととてもわかりにくい空港である。
バーガーキングでwhopperを食べて(ああ、チープな昼ご飯)、 アメリカン空港のラウンジで時間をつぶす。 持ってて良かったJALのサファイアカード。
でも、admiral clubの番号がないと無線LANが使えないんだってさ。 だめじゃん、サファイアカード(笑
tmobileのために1日$9.90払うのもイヤだったので、 手元に取り込んだメールなどを処理することにする。 NTT系のホットスポットと契約してるとローミングできるらしいけど。
本当はLone Star RubyConfキーノートのスライドを準備しようと思ってたのだが、 ラウンジで寝込んでしまったりしたので、かなわなかった。 少なくとも寝不足はやや回復したけど。
7時に飛行機はオースチンに向けて出発。到着は深夜。 飛行時間がほぼ3時間、さらに時差が2時間で、約12時というわけ。 国内に時差がある国は大変だなあ。
Jim Freeze(LSRCの主催者の一人)にピックアップしてもらって 今晩は彼のうちに泊めてもらう。立派なうちでびっくりした。 日本では考えられないサイズ。プールこそなかったけど。
しかし、長い1日であった。朝8時(+900)に出発して深夜(-500)に到着したのだから、 移動時間は(途中の会議や空港での待ち時間も含めると)実に30時間移動してたことになるのか。 いまいち計算に自信がないけど。