Island Life

2011/02/24

スタックが無かった頃のお話

Abstract Heresies: Where did the stack go?

The IBM 704 didn't have a stack.

This was not unusual at the time. Although stacks were known about for years before, low-level languages did not make much use of them. Early FORTRAN certainly didn't need a stack, so IBM didn't bother with a hardware implementation.

  • IBM704にはスタックが無かった。
  • TSXというインストラクションで、現在のプログラムカウンタの値をレジスタに置いてサブルーチンにジャンプすることができた。
  • でも、レジスタに置いたアドレスへとジャンプする、いわゆる間接ジャンプをするインストラクションが無かった。
  • どうしていたかというと、
    • サブルーチンの最後に無条件ジャンプ命令を置いておく
    • サブルーチンに飛び込んだ時点で、レジスタに呼び出し元のプログラムカウンタの値が入ってるので、それを元に最後の無条件ジャンプ命令の飛び先アドレスを書き換える。

自己書き換えだ。楽しいなあ。

もちろんこれは再入可能じゃない。再入可能にするにはどうしたかというと スタックを自分で作らないとならないのだけれど、当時はメモリアクセスに 比べて演算のコストが高く、スタックポインタを増減させるやり方は重かった。 リンクトリストなら加減算が不要で、しかもあらかじめ貴重なメモリの一部を スタック用に予約する必要がないので、そちらが好まれたとのことだ。

スタックがリンクトリストだと継続の実装も簡単なんだよね。 現代のアーキテクチャではアクセスのローカリティの重要性がとてつもなく大きいので 今使うことは無いだろうけれど… 通常のスタックエリアをNurseryのアロケータとみなして、適宜スタックエリアの ガベージコレクションを行う、という形でSpaghetti Stackを実装することは 今でもできるな。

Tag: Programming

2011/02/15

ぶつけられた

アラモアナSC近くで、Kapiolani Blvdの(片側3車線あるうちの)中央車線を 走っていたら、左折待ちの車の列を抜けようとして左車線から中央車線に 出てこようとした車に横からぶつけられた。幸い向こうは速度がそれほど 出ておらず特に怪我人も無く、 左側リアドアが凹んで開かなくなった程度で済んだ。 それでも、今まで駐車場で擦ったくらいしか経験が無いから、 事故らしい事故は初体験である。

とりあえず近くの駐車場に停めて、まずは相手と顔合わせ。 向こうは若い人だったが過失は自覚していたのでそこは安心。 だが保険が切れてるとかで、「あんたさえ良ければ修理代を直接払うってことで何とか…」と 言ってきた。 んー、とはいえドア一枚いっちゃってるとそれなりの値段になるから 後で揉めると厄介なので、正規の手順を踏む (確か$500以上の損害がある場合は通報しないとならなかったはず…)。 911に連絡。

(以下、会話は記憶で書いてるので不正確)

  • 911: Emergency.
  • 私: We got a collision of two vehicles.
  • 911: Is anybody injured?
  • 私: No, nobody's injured. Just damages.
  • 911: Ok I'll dispatch the police department.
  • PD: Police department.
  • 私: We got a collision of two vehicles near... 1617 Kalakaua (←間違えた). Nobody's injured.
  • PD: Are you blocking the traffic?
  • 私: No. We've moved and parked at a safe place.
  • PD: What are the colors of the vehicles?
  • 私: Ah, mine is silver sedan, and another is brown... um... I don't know how to call that type.
  • PD: Is that an SUV?
  • 私: No, not an SUV... (今考えればtruckで良かったのかな。pickupの荷台の上にがっつり覆いがついてるようなやつ)
  • PD: OK, we'll send an officer.
  • 私: Oh wait, I was wrong. It's Kapiolani. We're at 1617 Kapiolani.
  • PD: OK.

待ってる間に家にも連絡。

しばらくしてofficer到着。免許、保険、車両登録証を見せて、 事故証明 (minor motor vehicle collision report) をもらう。

最後に相手とお互いのダメージを確認。事故からここまで45分くらい。

家に戻ってから、ダメージ部分の写真を撮って、 保険会社にクレームをファイル。今はWebでできる。 フォームをsubmitしてものの数分で保険会社から電話がかかってきた。 いくつか質問に答えて、

  • 保: Now you can use your own insurance to repair, or ask the other party's insurance to cover the damage.
  • 私: I'm pretty sure it's the other party's responsibility. But the other party's insurance is expired. How are we gonna proceed?
  • 保: Well in that case we have the responsible person pay full.

うーむ保険会社が取り立てに行くってのはどんな感じなんだろう。 ま、ともあれ今は保険会社に任せるとしよう。 明後日修理の見積りに指定の工場に行かねば。

Tag: 生活

2011/02/15

命令文でのalready

英語話ついでに。こういう感じのalreadyの使い方って学校英語では 目にしなかったように思うのだけれど、こちらではわりと頻繁に聞く。

  • Go home already. (もう帰れ/さっさと帰れ)
  • Shut up already. (もう黙れ/いい加減黙れ)

already=「もう」と機械的に置き換えて意味が通っちゃうから特殊な用法 ではないのかもしれないけれど、「完了した」ってことと結びついてないから ちょっと不思議な感じがした。 もっとも「既に完了しているべきことがされてない」ってことがimplyされてると思えば、 結局は同じニュアンスなのかもしれない。

Tag: 英語

2011/02/13

他動詞のgame

New York Timesの記事を読んでいたら、こんな一文に引っかかった (強調筆者)。

He described the optimization as the most ambitious attempt to game Google’s search results that he has ever seen.

gameが他動詞で使われている。このようなgameの他動詞用法はPaul Grahamの エッセイでよく見かける。

News from the front

The amusing thing is, because some schools work hard to game the system, the editors will have to keep tweaking their algorithm to get the rankings they want.

The Future of Web Startups

In the US it's a national scandal how easily children of rich parents game college admissions.

What happened to Yahoo

I remember talking to some programmers in the cafeteria about the problem of gaming search results, ...

文脈から意味はわかるので大抵は読み流すんだけど、 最近、"What happened to Yahoo"のlionfanさんによる翻訳 『Yahooに起きてしまったこと』に コメントをつけたときにちょっと調べていたんで、引っかかりを覚えたのだ。

簡単な辞書にはgameの名詞、形容詞、自動詞用法は載っているが、他動詞用法は 滅多に載っておらず、載っていても "(通常 game X awayで) Xをギャンブルで擦る" という意味しかない。Longmanにも他動詞用法は無かった。でも上にあげた用例はいずれも circumventに近い意味で、これには当てはまらない。

その時は疑問に思っただけだったけど、今回2回目だったのでもうちょっと粘って 調べてみたら、そのものずばりのQ&Aがあった。オバマ大統領の演説にも出てきたらしい。

システムの裏をかいたり弱点をついて自分の有利なように利用する、ということで良さそうだ。

辞書に出ていないってことは比較的新しい用法なのかな?

Tag: 英語

2011/02/12

教養の効用

On Off and Beyond: 国際人として必要な教養とは(IT業界版)

よく「国際エリートは教養が必要だ」、「日本の歴史や文化をよく知らずして国際人になれない」みたいなことを目にする。

ちょっと聞くと、そりゃそうだ、という気がするが、ホンマかいな。

が、しかし「国際エリート」というのがなんなのかよくわからないので、私の身の回りの観察に基づき、「シリコンバレー的インターナショナルなIT業界」で必要な教養知識は何かを考えてみた。

「国際エリート」はどうかしらないけど、フツウの人にとって教養というのは、 だいたい次の3つの役目があると思う。多分、必要度もこの順番。

  • 楽しむためのツール
  • 理解のためのツール
  • 主張のためのツール

まず第一に、 教養とはハイコンテクストなコミュニケーションを楽しむためのものじゃないかなと思うわけだ。 ここでコミュニケーションとは会話に限らず、作品の鑑賞や製作も含めた広い意味で。 適当な日常会話だけなら話題のドラマや最近のニュースでコンテキストとしては十分かもしれないけれど、 小説や映画は過去の作品を踏まえているし、現在の出来事だって過去の歴史の結果として起きている わけで、ある程度時間的に広い範囲の知識を知っておけばより深く楽しむことができるというわけだ。

この目的だと、参加するコミュニティに合わせて必要な教養というのが決まることになる。

『ハッカーになろう』 あたりを読むと、USのハッカーコミュニティでは SFとか音楽が基礎教養だった時もあったようだ。 最近はあんまりそうでもない感じはある。 意外にあなどれないのが聖書。 最多発行の書物だけあって、有名な文句がパロディで使われたりすることはちょくちょくある。 別に知らなくても情報のやりとりに不自由はしないけれど、知ってればより楽しい。 (例: "A Brief History of Hackerdom"の冒頭とか。 まあ、この程度の遊びなら別に聖書を読み込んでる必要は無いし 「教養」とまでは言えないかもしれんけど、 翻訳とかしようと思ったら知ってた方がいいようだ。)

あーでもこういう文化ってMITとかあっちの方発祥だったりするのか。 西海岸では薄まってるのかも。

(ハッカーは関係ないけど、スティーヴン・キングの小説もわりとキリスト教の 背景があると思うな。『グリーン・マイル』について 以前書いたもの。 ネタバレ有りなので注意!)

第二の理解のためのツールとは、バックグラウンドが違う人間同士で話していて、 相手の振る舞いや発想がどこから出てきたんだろう、というのを理解するのに、 相手の文化を知ってると役に立つ、ということ。

異文化コミュニケーションに慣れた人は、自分の出身からくるアンビエントな影響を なるべく切り離して自分の意見を表明するから、そういうコミュニケーションだけしてるなら あんまり関係ないんだけれど。 「うまく言葉にできないんだけど、何となくこう感じる」あたりに 踏み込んで行こうとすると、相手も意識していないかもしれない背景が関わってくる。 あと、人によってこだわるところが違うときに、なぜそこにこだわるのか、 なんて部分も、コンテキストと切り離しては考えにくいものだ。

純粋に技術的な話の時は気にしなくても良いけれど、 ユーザ体験だとか、外観のデザインだとかには多分関係してくる話じゃないかな。

この目的だと、相手に合わせて必要な教養というのが決まることになる。

で、その裏返しが第三の点。自分はなぜそこにこだわるのかとか、 自分の主張がどういう背景に裏打ちされているのか、といったことを説得力を持って 説明するには、自分のその「感覚」がどこから来ているのかを知っといたほうがいい。 日本の文化やら歴史やらっていうのは、ここにきて役に立つんじゃなかろうか、ってこと。 Paul Grahamのエッセイだって、いろんな分野から 引用してきてるところでなんか説得されちゃう気がするし。

尤も、自分も日本文化のバックグラウンドにある仏教やアニミズムについて 説明することになった経験は多々あるけど、だいたい漫画や小説から仕入れた 2次的知識だったりするから、それを教養などと呼ぶのはおこがましいかもな。 まーでもそういう経験してればだんだん興味も持てるもので、 哲学系の本はアメリカ来てから結構増えたような気がする。 日本で学生やってた頃はあんまり興味無かったんだけどね。

この三つの目的って、だいたいこの順番に役に立つ。 コミュニティ共通の文化をすっ飛ばして日本の文化や歴史に詳しくなっても、 それに誰も興味を示してくれなかったら意味ないし。 だもんで、「まず外に出る前に自国の歴史をばっちりやるべき」とかいうのは ちょっと違うかなあと思う。全く何も知らないと興味の持ちようもないから 困るだろうけど、大枠を知ってればあとは興味の出たときに掘り下げるんで 良いんではなかろうか。

Tags: 生活, Communication

More entries ...