« 2009年4月 | トップページ | 2009年9月 »

2009年5月31日 (日)

計算機プログラムの詳細仕様書とは

どのようなものか知りたい人は、 自分の PC に、 TeX システム一式をインストールしてから、 tex.web に対して、以下のコマンドを実行すると良いと思います。

>weave tex.web
>tex tex.tex

これで、 tex.dvi というファイルが出来ます。 Donald Knuth 氏 による、tex プログラムの詳細仕様書です。

| | コメント (0) | トラックバック (0)

2009年5月24日 (日)

英語 時制の機能

というものの一つに、文の順番とは別に、文意の時系列や因果律を指定する、というものがあるのではないでしょうかね。

木下是雄著『日本語の思考法』 1 のなかのエッセイ 「言語技術教育に取り組む」 で、以下の問題 2 がとりあげられています。

次の文は、事実の記述か、それとも意見か。

私たちは殺人犯人 (murderer) スニドハートが出納係を射つのを目撃した。

解答は、「意見」で、その理由は、「マーダー (murder) というのは殺すつもりで殺すときにかぎって使うことばだが、ピストルの弾丸が出納係に当たったのを見ただけでは故意か暴発かはわからない」とあります。

ところで、私は上の問題中の例文を、最初、以下のように解釈したのでした。

1) 既に何人かを殺したところの、殺人犯人スニドハートが

2) 出納係を射って、新たに犠牲者を増やした

3) のを、私たちは目撃した

つまり、大量殺人の現場に居合わせた人たちの目撃談だととったわけです。

解答をみて、例文は、文の順序と、因果律の順序が異なっている、ということに気付いたわけでして。

つまり、

1) スニドハートが出納係を射ち、

2) 殺人犯人となった

3) のを、私たちは目撃した

わけですね。

日本語の場合、基本的には、文の順序と、文意の時系列順、もしくは因果律は、一致させるのが基本なのではないでしょうか。文の順序と因果律の順序が逆転していますと、上の例文のように、異なる意味で解釈される余地が生まれてくるのではないかと思います。因果律を逆転させるなら、それとわかるように、接続詞などを用いて、表現を工夫しないといけないでしょう。

英語の場合、 12 種類もの時制が存在し、これは厳格に使われるきまりとなっていますので、文の順序を時系列・因果律どおりにする必要は必ずしもないわけですね。文の時制をみれば、その文意をどの順番でとれば良いかがわかりますから。

Now let's get started. We can iteract with Erlang using an interactive tool called the shell. Once we've started the shell, we can type expressions, and the shell will display values.

Joe Armstrong, "Programming Erlang" 3

上の例文は、以前読んだときに、時制がわかりやすい形で使われているので、記憶に残っていたものです。

Erlang シェルの起動は完了していて、 今現在は、 Erlang シェルに式を打ち込める状態にあり、 その後は、Erlang シェルに式を打ちこむと、式の値が表示されるわけですね。


1. 日本語の思考法, 木下是雄著 -- 中央公論新社, 2009.4 -- (中公文庫 ; き-35-1)

2. 理科系の作文技術, 木下是雄著 -- 中央公論社, 2002.6 -- (中公新書 ; 624) でも同じ問題文がとりあげられている。 もともとは、 米国の「国語」の教科書のもの。

3. Programming Erlang : software for a concurrent world, Joe Armstrong -- Pragmatic Bookshelf, 2007

| | コメント (0) | トラックバック (0)

2009年5月16日 (土)

抽象化のステップ

人間の知識には、3つの基本的な構成要素があります。1つ目は客観的事実(たとえば、そこにいるネコ)、2つ目はネコの観念、そして3つ目は、他人とコミュニケーションをするためにその観念に当てはめた言葉(「ネコ」という名詞)です。

論理ノート D.Q.マキナニー著 ; 水谷淳訳 -- ダイヤモンド社, 2005.3, p.19

人が抽象的な観念を得る方法というのは、おおまかに2つあると思います。

1) 現実世界のアナロジーから新たに観念を得る

2) 既知の観念から新たに観念を得る

1), 2) のステップを繰り返すことで、観念のレイヤを積み重ね、より抽象化の度合いを高めていくわけです。

1) の現実世界のアナロジーというのは、例えば、初めて算術を学ぶ子どもが、自分の指を使って、足し算や引き算をやるといったもの。現実世界の人間の指のアナロジーとして、自然数という観念が獲得されるわけです。

2) は、自然数の除算という既知の観念から、分数という観念が得られるといった具合。こちらの方が、抽象化の度合いがより高いと考えます。現実世界から、自然数という観念のレイヤを得て、その上に分数という観念のレイヤを作り上げているからです。

分数というのは、子どもが初めて出会う、観念から観念への抽象化の例なのかもしれません。

スタジオ・ジブリの映画 「おもひでぽろぽろ」 に、主人公が、分数の割り算を、ケーキの切り分け(か何か、うろ覚え)のアナロジーで考えようとして混乱する、という場面が出てきます。

その場面で思ったのは、ケーキを切り分けるのに、分数は必要ないだろうということ。ケーキの切り分けのアナロジーは、あくまで自然数の除算なのだと思うわけでして。分数を使うことで得られるものがないように思います。

この場合、自然数と現実世界とのアナロジーで分数を考えようとしているのが敗因かなと。そもそも、現実世界にアナロジーを求めるのが間違いかもしれません。分数は自然数という観念から生じたもので、現実世界から直接生じたものではないでしょうから。

プログラミングを始めようとして何度も挫折した。

教えるプロみたいな人に教えてもらっても駄目だったし、尊敬している人に教えてもらったけどやっぱり駄目だった。

才能以前なんだろうな。必死さが足りないって言われた。でも必死になるってどういう事なのか全然判らない。

あと、前教えてもらったことを自宅で復習しても全然出来なかった。

何がわからないのかもわからない。基礎の問題とか出して貰っても判らない。用語や文法みたいなレベルで既に躓くというか。なんというか、「言葉」って何で言葉って言うの?みたいな変な疑問ばかり湧いてきて進まないんだよね。

http://anond.hatelabo.jp/20070523230747

こういう方は、抽象化というものに慣れていないのだと思うのですよね。プログラミング言語の記号の意味というのは、現実世界から遠く隔たったレイヤで定義されているわけです。従って、自分自身の現実世界での経験から、アナロジーを見出そうとしても徒労に終わるだけでしょう。

| | コメント (0) | トラックバック (0)

2009年5月10日 (日)

X = X + 1 ? 意味わからん

と、人生で初めてコンピュータ・プログラムというものをみたときに思いました。言語は、 MSX-BASIC でした。

しばらくプログラムを眺めているうちに、右辺の X が、”古い X ”で、左辺の X は、”新しい X ”を意味している、X は X でも、違う X を意味しているらしい、ということに気付いたのですが。

X = X + 1 というのは、一文で read-modify-write の 3 つの操作を表現していますから、コンピュータをよく知らない人間には、理解するのは難しい文なのかもしれませんね。さらに、等号というなじみのある記号を、「記憶域への代入」という、別の意味で使われている、というのも理解の妨げになるでしょう。

このことを思い出したきっかけは、「Java 並行処理プログラミング」にある、以下のサンプルコード。

public class Holder {
  private int n;

  public Holder(int n) { this.n = n; }

  public void assertSanity() {
    if (n != n) {
      throw new AssertionError("This statement is false.");
    }
  }
}

assertSanity メソッドを呼び出すと、 AssertionError を投げることがある、というものですが、一瞬、意味がわかりませんでした。

| | コメント (0) | トラックバック (0)

中国の「ソースコード強制開示」

中国側は、ソフトの欠陥を狙ったコンピューターウイルスの侵入防止などを制度導入の目的に挙げる。しかし、ソースコードが分かればICカードやATMなどの暗号情報を解読するきっかけとなる。企業の損失につながるだけでなく、国家機密の漏洩(ろうえい)につながる可能性もあるため日米欧の政府が強く反発。日本の経済界も昨秋、中国側に強い懸念を伝えた。

ソースコード開示、中国強行...知財流出の恐れ YOMIURI ONLINE(読売新聞)

技術を盗むためとか、海賊版作るためとか、いわれているらしいですね。

技術盗んだり、海賊版作ったりするのに、別にソースコードなんて要らないんですけどね。

製品を解析すればすむ話でしょう。ソフトウエアの世界では、リバース・エンジニアリングと呼んでいて、通常は、ライセンスで禁止されている行為だったりします。ソフトウエアの解析は、ハードウエアより、はるかに簡単に出来てしまいます。マスコミが好んで使うたとえを使うと、製品そのものがあれば、製品の設計図にある情報はすべて手に入るわけでして。

ま、技術オンチの下衆の勘繰りといったところですか。

ついでに、読売の記事に突っ込んでおくと、ソースみたって、暗号解読はできません。もともと、現代の暗号では、そのアルゴリズム − ソースに書いてあるもの − は広く公開されていますし。逆に、ソースみて暗号解読できるなら、セキュリティ上、重大な欠陥のあるソフトウエアといえますね。

日経は、まともな意見載せてますね。こういうところは、いい意味で「日経らしい」と思います。

メディアがそれぞれのルートで調査を行い、事実関係に基づいて筋の通った分析や報道をするのであれば何ら問題ないが、この件については各メディアが横並びで世論を煽ろうとしているようにしかみえない。「たら」「れば」が充満している報道が何の解決にも繋がらないことはいうまでもない。ましてや世論を誤って誘導しお互いの国益を損うとなればなおさらだ。

本当に中国が悪い? IT製品情報の強制開示に先進国がNO インターネット-最新ニュース IT-PLUS

もう少しまともな憶測をしてみますと。

以前より、外国企業の、「クローズド・ソース・ソフトウエア」 − ソースコード非開示のソフトウエア − を、政府機関が使うということに対する、危機管理上、あるいは安全保障上の懸念は、中国に限らず、日本・欧州各国の政府も示すところであったわけです。

外国企業ってのは、要は米国企業なわけでして。ソフトウエアの分野は、ほぼ米国企業の一人勝ちになってますからね。ま、その米国でも、州政府が「いち企業」のクローズド・ソース・ソフトウエアを使うことに対して、似たようなことが言われたりしているわけですが。

そうしたわけで、政府関係機関は、クローズド・ソース・ソフトウエアではなく、オープン・ソース・ソフトウエアを使うべきである、という主張がなされているわけです。

それで、 Microsoft − 「いち企業」ね − は、 Microsoft シェアード ソース イニシアティブ なるものを提供するようになったわけですね。さすがに、ぬかりがないというべきでしょう。

ガバメント セキュリティ プログラム (GSP) は、世界各国政府の固有のセキュリティ要件に応えるためのマイクロソフトの活動に不可欠な要素です。GSP は、マイクロソフト製品のセキュリティを評価するうえで役立つ情報を各国の政府に提供します。

...

GSP に参加している政府は、Windows 2000、Windows XP、Windows Server 2003、Windows CE、および今回追加された Microsoft Office の最新バージョン、ベータ リリース、および Service Pack のソースコードにスマートカードを使用して無償でオンライン アクセスできます。また、米国の輸出承認などの要件を満たしている GSP 参加者は、暗号コードおよび開発ツールにもアクセスできます。

ガバメント セキュリティ プログラム (GSP) microsoft.com

中国政府も、 政府機関での Linux 利用を進めたりして、この種の主張を熱心にしていたわけですから、今回のIT 機器の認証制度とやらも、この延長線上にあるものなのでしょう。

| | コメント (0) | トラックバック (0)

« 2009年4月 | トップページ | 2009年9月 »