2017
09.12

0から?それとも1から?

Category: その他
久しぶりに本格的にプログラミングなどをやっていたら、こちらがだいぶご無沙汰にになってしまった。プログラムを書くのは楽しい作業ではあるが、良い考えが浮かばない時などはそれなりに大変でもある。一息ついたので、今回は息抜きも兼ねてプログラミングに関する他愛もない話を書いてみよう。。。

どんな他愛もない話かというと、配列の添え字にからめた他愛もない話である。

言語によって配列の添え字を0から始めるものと1から始めるものの2つの流派があるなぁ、ということが以前から何となく気になっていた。筆者が物心ついた頃(?)に読み書きできたのは Fortran という言語であるが、Fortran での配列変数は A[1], A[2], ... というように添え字は1から始まるようになっている。一方、その後覚えた C や C++ では A[0], A[1], ... というように添え字は0始まりである。

これは確か C/C++ での添え字には「配列の先頭アドレスからいくつ離れているかを表す」という確固たるコンセプトがあるので、必然的に0始まりとなる、といった話だったと思う。ちょっとしたプログラムを書くのに便利な VB や VBA などの他の言語でも"0始まり"がデフォルトであり(デフォルトを"1始まり"とする命令も用意されているが)、コンピュータ言語での主流は"0始まり"のようである。

では Fortran はなぜ1から始めるようになっているのだろうか?その答えを筆者は知らないのだが、数を数える時に1から始めるのが人間にとっては自然であるということに関係があるのかも知れない。眠れない夜に「羊が0匹、羊が1匹、羊が2匹 ... 」と数える人がいたら、その人はかなり病んでいるに違いない。筆者の知人に C++ でコーディングしているのに、頑なに配列を1から始める輩がいたが、そうするとゼロ番目の変数用のメモリー領域は常に空き部屋となって無駄使いである。だが、その知人にとって0から始める方がそれにも増して気持ち悪いことだったのだろう。

この始まりが0か1かの問題は、コンピュータ言語に限らず、広く一般の問題としても存在するようである。それらの中には筆者には不自然と思える方が採用されているものもあるので、C 言語の仕様のような何らかの理由があるのかも知れない。

つい先日、新聞に出ていた感染症についての特集記事を読んでいたら、「患者第一号」という言葉の後ろに括弧して"ペイシャント・ゼロ"と書かれていたので、英語では患者第一号を patient zero というのだと初めて知った。一人目がゼロというのは筆者の感覚では不自然である。

これはとある知人から聞いた話であるが、「0番線ホーム」が存在する駅もあるのだそうだ。その知人が仲の良い友人達と小旅行に出かけた際に、自分たちの乗るべき列車の案内が駅の放送で流れたそうだが、2度聞いてもそれが何番線と言っているか分からなかったそうである。「駅員さんに聞いたら0番線だって言われて。まさか0番線があるなんて思わないから誰も聞き取れなかったわよ」とあきれていた。この命名の理由はよく分からないが、既存1番ホームの隣に新しくホームを作った、といったあたりだろうか。

人は生まれた時が0歳で1年経つと1歳になる。だが、昔は「数え年」という年齢のカウント方法があった。「数え年」では、生まれた時点で1歳で、年が明けると1つ歳を取る。年末に差し迫って生まれた人は、生まれて数秒で2歳になることもあるのだから大変である。特に女性はなるべく年を取りたくない生き物であるから、「数え年」というシステムが廃れて喜んだ女性も多かったのではないだろうか。

こちらは歳の数え方ではないが、中谷宇吉郎が高等学校の時に下宿していた家の「白頭巾のお婆さん」は時間を正しく数えることができなかったそうである。「科学以前の心」という随筆に以下のような話が出ている。

... 私はその頃からよく朝寝をしたらしく、いつも朝飯を半分かきこみながら、学校へとび出して行った。それである日白頭巾のお婆さんが、それでは身体に毒だと言い出した。

「もう一時間はよう起きなさりゃあ、楽やのに、そりゃそと夜は何時におやすみになりみすか」という。まあ十一時くらいでしょうというと、お婆さんは指を折りながら、「十一時、十二時、一時 ..... 」とかぞえ始めた。そして、「それみなされ、七時までなら、九時間もありみすやろ」という。

私は慌てて、「お婆さん、十一時にねるのに、十一時からかぞえられちゃやり切れませんよ」と抗議を申し込んだ。しかしその抗議の意味は、どのように説明しても、お婆さんには納得されなかった。「それじゃ、十一時に寝て一時に起きたら、何時間寝たことになりますか」ときいても、「十一時、十二時、一時。三時間ですやろ。」とすましている。

「それなら、十一時にねて十二時に起きたら」というと、「十一時、十二時」とかぞえながら、どうも少し可笑しいと気がついたらしく、「そんなら一時間ねたことになりみすやろ」と答えながら、不安げな顔付であった。

私はやっと安心して、「ですから、十一時にねたら、十二時までが一時間、一時までが二時間だから、十二時からかぞえるんですよ」と言うと、お婆さんも兜をぬいだ。しかしその兜のぬぎ方が実に意外なのであった。「やっぱし学問のある人にあ、かないみしん。うまいことだまかしなさる」と言うのであって、十一時から七時までが九時間という勘定に対する信念は毫もゆるがないのである。


引用が長くなったが、この下りの後にこのお婆さんの「兜の脱ぎ方」が「科学以前の考え方」であるということが語られるのである。数の数え方がここでの主題ではないのだが、これを読んだ時に筆者が思ったのは、お婆さんは「数え年」に親しんでいたせいで混乱してしまったのではないかということであった。つまり、科学云々は関係なくて、現代でも思い込みの激しい人には起きうることではないかと思ったのである。

実際そのような例が、永沢工著「はい、こちら国立天文台 -星空の電話相談室-」という本に出ているので、以下にそれを示そう(「二〇〇〇年、うるう年と二一世紀」)。2000年3月の出来事だそうである。

「人はね、一年経てば一歳になるんですよ。二年経てば二歳にね。二〇〇〇年経ったから二〇〇〇年になったんです。もう二〇〇〇年が過ぎたんですよ。だから、この一月一日から二一世紀なんです。この前天文台からもらった手紙では、二〇〇一年から二一世紀って書いてありました。そんなバカなことないですよ。いまはもう二一世紀なんです。天文台は間違っているんです」

かなり激しい口調で、さっきから五分くらいやりあっている。

「そうはおっしゃいますがね、ローマ帝国の分裂が三九五年とか、フランス革命が一七八九年とか、そういう風に歴史上の事件と西暦年号はそれぞれ対応がついているんです。それは天文台が決めたわけじゃない。昔の人が決めたんです。それを動かすことは出来ない相談です。そういう形で西暦は一年から始まっているんです。そのときは西暦一年とはいわなかったでしょうがね。そうすると、いまは一九九九年が終わったところですから、一年から一九九九年までに一九九九年しか経っていないことがわかるじゃないですか」

(中略)

「西暦一年から始めて一〇〇年ずつ区切っていくとすると、二〇〇〇年は二〇回目の区切りの最後の年になる」という客観的な事実から、国立天文台は「二〇〇〇年は二〇世紀、二〇〇一年から二一世紀」と説明をしている。

(中略)

さきほどの電話の人は、人が生まれてからの一年間を〇歳と数えている。つまり一世紀の最初の年を西暦〇年に振り当てている。ところが西暦〇年に当たる年は存在しない。存在しないというのは、歴史家が西暦〇年という年を設定しなかったという意味である。そのため、一世紀の一〇〇年間は、紀元前一年から始まることになってしまう。それを承知でありさえすれば、自分で二〇〇〇年は二一世紀と考えても、そこに何も矛盾は起こらない。


このように、コンピュータ言語に限らず「二つの流派」が生まれる事例は多くある様である。そのため各所で混乱も起きている。いつから二一世紀かといったことは上記にもある通り、実質的にはどうでもいいことだが、政治が絡むとそうとも言えない例が上記箇所の後に書かれているので興味のある方は同書を参照されたい。

少し建築に関係する話も書いておこう。それはビルなどの建物の階の英語での数え方である。アメリカでは、1階、2階、... を 1st floor, 2nd floor, ... と呼ぶので日本と同じであるが、イギリスでは1階を ground floor と呼び、2階、3階が 1st floor, 2nd floor となる。筆者が中学生の時に使っていた英和辞書では、この違いについて絵入りで詳しく説明されていたのを思い出す。紛らわしいと言えば紛らわしいが、さして問題になるようなことでもないので、何故そこまで丁寧に説明されていたのか今もって不可解である。

話をプログラミングに戻すと、筆者は"0始まり"が理屈から言ってスッキリしていると感じる。だが、A[10]と宣言するとA[9]までしか無い(実際は密かにA[10]のアドレスまで保証されているとどこかで読んだ気もする)のは直観的には間違いやすいかなとも思う。慣れればそんなことで混乱することは無いとは思うけれど。。


スポンサーサイト
Comment:0  Trackback:0
2016
11.12

構造が意匠になる時?

Category: その他
もう数年も前のことになるが、インドネシアの某施設建設プロジェクトに参加された土木系のとある先生から完成した施設の写真を見せてもらったことがある。青々とした美しい山の斜面に巨大な配管がむき出しで敷設されていて、これぞ環境破壊と呼べるような様相を呈していた。

その先生が仰るには「彼らはこういうのがバーンと見えてる方が「どや、俺たちはこんなすごいもん作れるんや」と誇らしい気持ちになるんですよ」とのことで、景観保全などそんなに気にしなくてもよいという口ぶりであった。

筆者はその時その意見には賛同できなくて「先進国目線で勝手に決めつけていないだろうか?」と内心訝しく思ったのだが、その後だんだんと筆者の心境も変わってきた。その先生が仰っていたことも強ち外れてはいないのかも、と思うようになったのである。

もちろん環境破壊が良いとかいうことではなくて、人々が建物や構造物の外観に求めるものは、社会的な背景などの影響を知らず知らずのうちに受けているのだなと今更ながら思い至った訳である。

以下は"社会的な背景"の影響というわけではないので性質が異なるかもしれないが、意匠センスが変わってきている例と言えないだろうか。

一つ目の例は、某所で撮影した商業ビルの写真である。

art139_fig1.jpg

ショーウィンドウであるガラス張りの大きな開口部にブレースが目立つように設置されている。まるでブレースを展示しているのかと見紛うほどである。光を浴びたその外観はスッキリとしていて、美しいと言えなくもない。見せることを意識してデバイスが選択されたのではないだろうか。

次の写真は某大学内で撮影したものである。

art139_fig2.jpg


見ての通り鋼ブレースで耐震補強されている。ブレースを隠そうと思えば隠せると思うがそうしていない。それどころか目立つ赤色である。敢えて見せるようにしていると思われる。

小学校などでも後付けのブレースを配置した校舎を最近よく見かける。教室の窓を太い部材が斜めに塞いでいるので、中にいる生徒は眺望が遮られて嫌な思いをしているのではないかと気になるが、力強く頑丈そうに見えるので案外父兄受けはいいのではないだろうか。

本来無粋であったものが格好よく見えるほどに美的感覚が変わってきた、とまでは言えないかもしれない。だが、安心感ならぬ"安心観"を無意識に優先するようになってきているとも思えるのである。



Comment:0  Trackback:0
2016
02.12

ライトの3本脚の椅子は安定か

Category: その他
今回は、フランク・ロイド・ライトにからめた脱線話。。。

山中伸弥氏と益川敏英氏というノーベル賞受賞者同士の対談「「大発見」の思考法」という本に、山中氏が学生時代に解けなかった数学の問題が紹介されている(下記)。

山中 益川先生の前で言うのもなんですけど、私、数学の才能はけっこうあったんじゃないかと思います(笑)。中高六年間の試験で唯一、解けなかった問題が、「椅子の脚は、四本脚と三本脚では、三本脚は安定するが四本脚は安定しない。なぜか」という問題です。中二の時にこの問題に出会った時は、「えっ?」と当惑してしまって。でもこれ、そんなに難しい問題じゃないんですよね。

益川 平面は三点で決まるから。四点では平面は決まらない。椅子の脚が四本あると平面から出てしまう可能性がある。

山中 いまだに、これが答えられなかったことが悔しくて。あとから考えたら、とんちみたいな感じがしないでもないですけど。iPS 細胞と同じで、答えを聞いたら「なーんだ」と。でも、その時はわからなかった。「平面は三点で決まる」ということは知っていたし、そんなことは当たり前なんですが、椅子にひっかけられると、「えっ?」と思ってしまった。


ノーベル賞受賞者が、どちらかというと簡単な問題が解けなかったという微笑ましいエピソードだと読んだ時は思っていたのだが、改めて読み直してみると、中二の時の問題と書いてあるので、"「えっ?」と当惑して"しまった。筆者が中二の時には、平面の方程式などまだ知らなかったと思う。

ただ、上記で山中氏の言う"安定する"とは、"ガタつかない"といった意味であることに注意したい。四本脚と三本脚との椅子では、四本脚の椅子の方が安定している(転倒しにくい)に決まっている。

三本脚の椅子が"不安定"なことを身をもって示してくれたのが、フランク・ロイド・ライトである。ライトは建物だけでなく、家具などのインテリアを含む様々なもののデザインを手掛けていることは、建築を学んだ人ならご存知だと思うが、この三本脚の椅子はその中でもよく知らているものではないだろうか。

ライトが三本脚の椅子をデザインした時、「三本脚だと倒れやすくて危ない」と周囲の人に忠告されたそうだが、例によって自分の考えを曲げずに三本脚で押し通したそうである。それでこの椅子は、"自殺椅子(suicide chair)"とか"転倒椅子(tippy chair)"とか不名誉なあだ名を頂戴している。

だが、この椅子も四本脚に改められる日がやってきた。ライト自身がこの椅子に座っている時に、床に落とした鉛筆(だったかな?)を拾おうとして転倒してしまったのである。それでさすがのライトも、自分のデザインの非を認めて四本脚にしたとのこと。これが椅子であって建物でなかったのは幸いである。

三本脚の椅子に文字通り足元をすくわれるのはライトくらいのものだろうが、四本脚のガタつきの問題は多くの人の興味を引くらしい。こちらはフィールズ賞の受賞者である広中平祐氏が中学生向けに書いた本「広中平祐の数学教室」でもこの話題が取り上げられている(「くらしの中の数 - 机のガタつきを直すには」)。

...レストランなどに行くと、よく4本脚の丸いテーブルがありますね。このテーブルが、ガタガタしてどうも落ち着きが悪い状態を想像してください。(中略)みなさんは、どうやってこのガタつきを直しますか。(中略)右回り、左回り、どちらでもいいのですが、床の上をすべらせながら回していくと、4分の1(90度)回転するまでの間に、必ずピシッと安定してしまいます。だれがやっても、うまくいきますから、みなさんも機会があったら、試してみては......。

この部分に続けて、ガタつきが直る理由が説明されているのだが、それを引用しようとすると長くなってしまうのと筆者自身がこの説明で理解できていないところがある(本文と説明の図があっていないなども含めて)ので、興味のある人はご自身で参照願いたい。ただ、この説明が高校一年くらいで習う"ロール(Roll)の定理"と同様であると書いてある所だけ示しておこう。

いかかですか。この発想はみなさんが将来、微分、積分を勉強するときに登場する「ロールの定理」と共通する考えなのです。(中略)微分学で重要なこの定理と、上で述べたテーブルの問題との関連が見当つきますか。ちょっと難しいだろうと思います。

数学者だけでなく、物理学者もこの問題に頭を突っ込んでいる(しかもかなり本格的に)ことも紹介しておこう。Andre Martin氏による"On the stability of four legged tables"と題した文献を見られたい(Cornell University Library から入手可能)。

ざっと読んでみただけなので、詳細は理解していないが、それほど難しい概念を持ち出した議論ではないようである(ロールの定理は出てこない)。面白いのは、Martin氏が加速器で有名な CERN に勤めていることである。CERN で採り上げるテーマとして相応しいのか?などとは思わずに、興味の赴くまま"研究"してしまったようである。Martin氏は寺田寅彦のような考え方の持ち主なのかもしれない。

さて、工学者はガタつきが直ればそれで十分であるかというとそうでもない。四本脚のガタつきの問題は、構造設計における有名なパラドックスを提供するのである。だが、脱線につぐ脱線をするわけにもいかないので、その話はまた別の機会に書いてみたい。



Comment:0  Trackback:0
back-to-top