今日は土曜日なのでセンタクをした。 地下のコンランドリーに行き、洗剤を入れてセンタクモノをつっこむ。 この時点で、もしこの洗濯機が故障していたらどうしよう、とふと考える。 3台ある中でこの機械だけは特別古く、液晶表示も何もない。 もしそうだったら、ほかの 2台は使用中なので、しばらくしてからまた来なければならない。 ああ、めんどくせー。しかしそんなはずはない。なんせこいつは単純なのだから。 25セント硬貨 6枚をスキマの上に並べてガッチャンと押しこむと、 それらは下に落ちて洗濯機がまわりだす。故障してなかった。当然だ。 オレは単純なキカイが好きだ。複雑なキカイは嫌いだ。複雑な人間関係はもっと嫌いだ。 今日はあったかいな。先週はやや寒くてほとんど真冬日だったし、先週の月曜日なんぞは 最高で -8℃だった (最低は -13℃)。 今日はいまのところ 1℃ ある。 サムい日ばかりが続くと、氷点を超えただけでありがたいと思ってしまう。 これは真夏に 36℃ぐらいの気温がつづくと、30℃ でも涼しく感じるのと同じようなものか。 東京はあったかいらしい。NY は、これでようやく平年並というところか。 そして今日もよく晴れている。
新山が想像するに、これは「人民に奉仕し、毛主席を擁護するための文学」のようなもんだと考えられる。
p
の中身が変数 x へのポインタだとすれば、*p
は変数 x への参照。
*a = *b;
において、
左辺の *a
はポインタ a の指定する参照、
右辺の *b
はポインタ b の指定する値に評価される。
a = b;
において、
左辺の a
は変数 a への参照、
右辺の b
は変数 b の値に評価される。
int& x = y;
において、
y
は変数 y の値ではなく参照。
なお、この後は x
という項も変数 y への参照となる。
int func(int x);
において、
x
はこの関数 func の実引数への参照。
int func(int& x);
において、
x
はこの関数 func に実引数を渡している変数への参照。
procedure f(x : integer);
と
procedure f(var x : integer);
も上と同じ。
(setf (accessor x) 1)
において、
(accessor x)
はオブジェクト x 内の特定のフィールドへの参照。
たいていの人は、無意識のうちに参照と値を区別している。たとえば Pascal で、
というコードがあったとして、
最後の行を「数値 1 に 2 を代入する」と読む人はほとんどいない。
しかしこれはよく考えてみればすごいことだ。
a := 1
b := 2
a := b
いまふいに「(汗)」のかわりの表現としてただのセミコロン;を使うことを思いついたっ。 これなら誰も気づくまい!
新山はよく 辞書.iteritems()
なぞのメソッドを使うんだけど、
これってハッシュをただ片っぱしから取り出してるだけで、順序が保証されてないんだよね。
ところが今回のバグはここで返される要素がある順序で現れたときのみ発生するバグだったんだけど、
デバッグ用にコードを 1行追加すると、そいつがなんらかの形で
内部のハッシュ初期値に影響を及ぼしてしまい、起こらなくなってしまうのであった。
よーするに「観測しようとすると消えてしまう不確定性バグ」だったのである。
ヤーね。一体なんなんだろう??
どーでもいいが、いつのまにか (いつもなにか) Google 日本の地図がアウトラインになっていた。 すばらしい! と、いうか、この使用料のために毎月いくら払ってんだろうね、この会社は。
ネット上のコンテンツ (コンツンテ) について。 本当にカネを払ってでも読みたいと思う人がいれば、人はカネを払うのだろう。 だってその証拠に、エロ画像配信サービスはいまだに商売になっているように見える。 ただ「人がカネをかけてでも読みたがるもの」というのは、 (エロ画像を除けば) 実はほとんどなかった、ということだろう。 いや、それは本当かな。なんか違うような気がする。 オレならネット上のものに金を出すくらいなら本を買うけど。
きょうの結論: Semantic Web を流行らせるにはエロをやる必要がある。 (ぜんぜん上と関係ない結論ですが、なんかここに書いておきたかったんで)
どうでもいいが (どうでもよろ)、捏造と誇張の境い目について。 毎度のことだが、捏造でつかまったり叱られたりした人は気の毒だよなあ、と思う。 そりゃ捏造は悪いのだが、彼らはただ人から期待されたとおりのウソをついていただけで、 ある意味では真面目に仕事してたわけじゃん。そして彼らの最終的な依頼者は テレビ局でもスポンサーでもなくて、消費する側、つまり視聴者なわけじゃん。 連中にしてみりゃ、期待どおりにやってたのに叩かれて、人間不信になっちゃうだろうね。
しかし、完全な捏造でなくてもひどい誇張や偏見というのは、どこでもありうる。 たとえば紅白でハダカに見える演出した連中だって、ほとんど精神構造はほかのマスコミと一緒でしょ。 ほかにも「10秒ぐらい考えれば本当のことがわかるが、なんとなく聞いてると誤解するような言い回し」ってのは どこでもやってそう。もっと微妙な例としては、きょう発見した 「NHK子会社の社員がわいせつで逮捕」というニュース。 どこの新聞を見ても必ず「NHK子会社」「NHK関連会社」っていってるが、 これ NHK の名前を出す必要ゼンゼンないじゃん。逮捕されたのが「東京MXテレビ社員」だったら たぶんわざわざ社名を出して報道しなかっただろうし、 「電通社員」だったらもっと別の意味で報道されないだろうけど (宮内庁の職員だったらどうなのかな? 微妙だ… 赤旗なら電通でも宮内庁でも報道するだろうケド)、 こういう見出しを見て、 「おっ、NHK だ」と思ってウキウキしながら見る人というのは、ある程度の割合 (つまり、人数としては相当) いるのだろう。 そういう人間が「捏造はけしからん」といったところで、まったく説得力ない。 そもそもどこで線を引くんだ、センセーショナルな報道が好きなのは自分だろうに。 で、新山の場合はその線引きがもっとずっと手前のところで 起こっているので、結局のところ (ケッキョキ) そういうマスメディアは 最初からいっさい見ない、という結論になる。(でも、ちょっとは見てるけどね…)
しかし、これがネットになるといくぶんマシになるかというと、そんなことはぜんぜんないだろう。 ネット上ではテレビや新聞よりも人気コンテンツを持ち上げるのがはるかに簡単で、 しかも自動的にできるので、ある意味、テレビなんかよりはるかにタチが悪くなりそう。 将来のネット社会では、自分の好みと偏見が助長されるような コンテンツばかり提供されるようになるのだろう。すでに delicious や ○○○ブックマークではそういう傾向があるものと推測される。 彼らはテレビに騙される人のことをとやかく言えないよね…。 当然、新山はどっちも使ってないので、いくらでも言えますケド。ばーかばーか。
(訳注) 言いがかりをつけてくる人のことを言いがかリャーという。ナギャーー!!
-o soft,intr
でマウントしているからね。
通常はこれでオッケーだが、soft は負荷がかかると勝手にタイムアウトしちまうのだ。
しかしオプションをいきなり変えてもみんな怒るだろうから (気づかないか…?)、
それはできない。困ってのう。
てゆうか、オレはあの hard のときにでる
"nfs server fungaaa not responding
" というメッセージが嫌いなのよ。
あれが出ると 3秒間は寿命が停止するね。
客観的に見ると、こんなのはちっとも大したことではないという気がする。 しかしどうも客観的に見れてないというのは、なんでかね、こりゃ。 なにをオレはそんなに心配しているんだ…? いつから自分はそんなに偉くなったのか。 しょせん「オレの人生ひまつぶし」って感覚はどこいった! こういうときに人は自分よりもっとひどい境遇にある人をみて有機づけられるのだろう。
だが、そんな時代はもう終わった。 主観的人生ばんざい。
英文がほとんど苦にならなくなった今になっても、 やはり英語はこの業界でやっていくには重要だと思う。 なんしろ英語で一次情報に当たれるのと翻訳を読むのでは情報の質・量ともに全然違うから。 新山はあいかわらず読むのは (日本語より) 圧倒的に遅いし、 会話も得意でないが、「なんでも英語で見る」というクセがついてしまったために (たとえば google で検索して日本語と英語のページが出てきたら、たいてい新山は英語のほうを読む、 こっちのほうが質がいいことが多い)、躊躇がなくなった。 はっきりいって、英会話や TOEFL ではこういうことは鍛えられないと思う (たとえば H嬢は GRE verbal の点数は新山の倍近くあったらしいが、 いまの英文を見ると明らかに…アレだ…)。
どうでもいいのだga (どうでもよろ)、 さいきんマうスを新しく買うべきかどうか迷っている。 新山はほとんどマうスを使わないのだが、たまに使うとすぐにローラーにゴミがたまるのだ (いまだに古い機械式なので)。こないだいーかげん頭にきて、分解してネジを完全にはずしてしまった。 だからこのマウスは今は「上ブタを持ち上げるとパカっと開く」ようになってる。 こうすると掃除するのは簡単なのだが (フタを開けてからボールをとりだして、ローラーを直接ふけばよい)、 あいかわらずしょっちゅうホコリがたまるので (部屋がホコっているせいもあると思う、 こっちはみんな土足なのでホコリがたまりやすいのかもしれない)、もういーかげん光学式のマウスがほしーなー と思う。それでもマウスはほとんど使わないので敗北だ。いっそ、まったくマウスのいらない生活になれば それはそれでいいのだが。
<p
どうでもいいのだga (どうでもよろ)。
昨日、セキネさんと議論になったことを書いておく。 この人と話すといつも激しい議論の応酬になってしまうのだが、 最終的に意見の相違がどこにあるかをつきつめていったら、こうなった。 ようするに、自然言語処理に対するセキネさんの立場は、極端にいえば次のようなものである:
新山はこれには反対だ。とりわけ 2. に反対。少なくともノウハウは工「学」ではない。 学問を名のるからには、単なるノウハウの集合をこえたものがなければいけないと思う。 研究をやっているときに、専門的な細部にとことんまでこだわるのは一向にかまわない。 しかし、ミクロな方面を追求する一方で、同時に研究者というのはそこから より一般化された「世界観」のようなものを得ようとしなければならない、と思う。 ようするに、ひたすら自然言語を追っているうちに、 最終的には自然言語から世界を語れなければいけないのだ。 細かい部分の探求と、より広範囲な理論の演繹は一緒に起こるはずなのである。 Ph.D が (たとえ工学をやっていても) “哲学博士”なのは、最終的にはやはり自分の研究分野から 自分なりの「思想」を見つけなければならないからだと新山は信じている。 思想を持たない研究者というのは研究者とは呼べない。
もちろんこれは理想論であり、古くさい教養主義かもしれない。 でも、これはどの学問にもあてはまると思う。学問だけじゃなく、じつは何をやるにしてもそうだ。 あるひとつのことを追求していったら哲学のようなものが生まれなければおかしい。 職人は自分のつくっているモノを通じて世界を認識しているだろうし、 キャバクラで働いてるねーちゃんは接客を通じて独自の世界観を構築しているはずである。 ただし彼らにとって「書かれたもの」による議論はべつに重要ではないので、 わざわざ論文を書いたり学会で議論したりする必要がないだけだ。 ほとんどの職業は、ただスタイルが違うだけで、最終的にやっていることは同じだ。
では、なぜ思想の構築が重要か? というと、それは価値判断のためだと思う。 そもそも簡単に「売れる」とか「役に立つ」という言葉を使うが、 実際のところ何が本当に「役に立つ」ものなのかを見きわめるのは簡単ではない。 他の人がそういってるから、というのは理由としては弱すぎる (ただし、この弱すぎる理由に 必死にしがみついている哀れな人も多勢いることは確かなんだけど)。やはり自分の考えを持たなければ、 自分のやっていることは正当化できない。と同時に、研究者…をふくむすべての職業人は、 自分の仕事をすることで自分を表現し、ある意味、自分の思想を「社会に問わ」なければいけない。 そして、別の思想をもった他人と衝突しなければいけないと思う。 これは結局のところ (ケッキョキ)、社会の意思決定プロセスに間接的に参加していることになる。 そしてこれは成人した人間の義務…というか、人間は嫌でもそれを永久にやっていくしかないんだよ。永久にね。 これはべつに政治運動に参加しろということじゃない。あくまで「意識」の問題だ。 だから一日中コードとにらめっこしていても、そういった意識があればそれは「社会的な行為」と言える。 総体的な「知識のリポジトリ」に関与しているという意識が学問と呼ばれるんじゃないだろうか。
しかしこうした自覚がまったくない「研究者」はすでに沢山見てきており、 実のところオレは彼らを研究者などとは思っていない。そういう連中にとっては「知識のリポジトリ」とは、 「すなわち web」ということになってしまっている。なんてウスっぺらいんだ…。 まあ、他人を変えるのは不可能だからどうしようもないがね。
lookup
がある。
これは与えられたキー x に対して、getit1
, getit2
, getit3
の
各関数を試し、その結果を加工したものを返す。もしすべての関数が失敗したら例外を出す。
でも、どうもこういうロジックの書き方は好きじゃないんだよな。 実際にはdef lookup(x): a = getit1(x) if not a: a = getit2(x) if not a: a = getit3(x) if not a: raise KeyError(x) b = func(a) return b
getit1
, getit2
, getit3
の部分は
もっと長いので、みにくいのだ。
できればこうしたい (以下妄想):
しかし Python には goto がないので、こうするのはどうか:def lookup(x): a = getit1(x) if a: goto FOUND a = getit2(x) if a: goto FOUND a = getit3(x) if a: goto FOUND raise KeyError(x) FOUND: b = func(a) return b
def lookup(x): def find1(): a = getit1(x) if a: return a a = getit2(x) if a: return a a = getit3(x) if a: return a raise KeyError(x) b = func(find1()) return b
あるいは while を使ってみたりして:
def lookup(x):
while 1:
a = getit1(x)
if a: break
a = getit2(x)
if a: break
a = getit3(x)
if a: break
raise KeyError(x)
b = func(a)
return b
うーーん。どうだろう?
try: 〜 except: で値を渡すというのがある。昔やった。(でも今はキタナイからやめた。)
class GotValue(Exception): pass
def lookup(x):
try:
a = getit1(x)
if a: raise GotValue(a)
a = getit2(x)
if a: raise GotValue(a)
a = getit3(x)
if a: raise GotValue(a)
raise KeyError(x)
except GotValue, a:
b = func(a)
return b
goto 好きの Knuth もいっているように、 「抜け出し文」としての goto は実はそんなに悪くないのである。 どうでもよろ。
まあ、ATHF を知らない人には何だかわかんないだろうけど、 Mooninites の人を喰ったキャラクターを考えるとこれはとにかくオカシイのよ。
youtube のコメントで誰かが言っていたように、 この程度のことで恐怖のあまりパニックになるようでは、 すでにテロリストの勝ちだという話。そうかもね。
Document ID: b68e0740986511d45bf689fd09b0569d
Yusuke Shinyama