素歩人徒然 ポン太 我が愛しのポインタ
素歩人徒然
(4)

ポン太


── 我が愛しのポインタ

 世の中では、パワーポイント(注1)と呼ばれる発表方法(プレゼンテーション法)が流行っているようである。パソコンの画面を直接液晶プロジェクタを用いて投影するものである。昔は学会で発表などを行うときは、大きな模造紙に字や図を描いたものをあらかじめ用意しておいて、それを発表直前に慌ただしく黒板などに張りつけてから発表を始めるのが通例であった。

【注1】特定の会社の商品名を一般名称として用いなければならんとは、何とも業腹なことである。そこで、以下ではこれを“PPT”と略すことにしよう。これで腹立たしさが、若干でもやわらぐというものでもなかろうが。

 そのうちに、OHP(オーバーヘッドプロジェクタ)なるものが登場してきた。プロジェクタの上に透明な用紙を乗せて、強力な光で投影するものである。これを私が初めて見たのは、毎年箱根で開催されていたプログラミングシンポジウムの場ではなかったかと思う。IBMの竹下さん(現中部大学教授)の発表がOHPを用いた洗練されたプレゼンテーションだったので、今でもそれが強く印象に残っている。さすがにIBMのやることはスマートで凄いと感じ入ったものであった。

 その後、海外の学会に参加してみると、彼の地では既にスライドによるプレゼンテーションが普通になっていた。それもカラースライドなのである。会場を暗くして画面にライトのスポットを当てて指し示す方法が取られていた。私の知人(アメリカ人)の発表があったので、たまたまお付き合いの積もりで見ていると彼のはモノクロのスライドだったのでかなり見劣りがした(予算を節約したのであろう)。なるほど、色付けというのは結構大切なものなのだと私は思い知ったのであった。

 日本ではOHPの時代がかなり長く続いたが、今やPPTによる発表でないと「遅れている」と見做される時代になってしまった。PPTを使いたければ、Windows環境が必要である。Windows環境でPPTなどのソフトを実用的なスピードで操作したければ、それなりの性能をもつマシンが必要となる。このようにして我々は、最新のプレゼンテーション文化(?)に取り残されないようにしようと思えば、必然的に過去の使い易いマシン環境を捨ててでも最新の高価なマシンと高価なソフトウェアを使わざるを得ない状況に追い込まれていくのである。

 紙やOHPによる発表では、字を指し示すためには必要に応じて指し棒などを用いてきた。PPTでは、マウスカーソルがその役割を果たしてくれる。これを人々は「ポインター」と呼んでいるようである。
           ,  ,
しかもその発音は「ポインター」という感じで、“イ”と“タ”にアクセントがある純日本風の発音(注2)であることが多い。

【注2】日本では、どういう訳かアクセントの位置を後ろの方に(それも複数の位置に)移してしまう傾向があるようだ。
たとえば、  ,  ,    ,  ,          , ,
     リポーター、フリーター、(今話題の)カレシ

 しかし私は慣れないせいか、このマウスカーソルによる「ポインター」がどうも好きになれない。説明者がしゃべりながら、常に画面に表示されているポインターを無意味にあちらこちらへと動かすので、それに振り回されてしまって見ているだけで疲れてしまうからである。ポインタというものを、あのように使い過ぎるのもどうかと思う。PPTのプロジェクターには先端にライトの付いた指し棒が付属品として用意されているから、それを必要なときだけ(ここぞという時に)使うようにできないものであろうか。

 さて、ここで私が触れたかった主題は、実はこのポインタのことなのである(ポインタに辿り着くまでに随分と遠回りをしてしまった)。

 私が初めて“ポインタ”という言葉に出会ったのは、たしかプログラム言語のPL/Iを学んだときだったと思う。
                   ,  ,
 そのとき私は、これを純日本風に「ポインター」と発音していたと思う。しかしアメリカの東海岸(ボストン)
                ,
へ行ってみると、彼らはこれを「ポインタ」という具合に、先頭の“ポ”にアクセントを付けて発音していた。しかも“イ”はほとんど聞き取れないくらいに発音するのである。まぁ「ポインタ」くらいかな。いやいや、“イ”(注3)で表すのもまだ大き過ぎるくらいのもので、「ポ.ンタ」あたりが正確なところではないかと思う。つまり「ポンタ」という感じで発音しているのであった。これが長い会話の中に突然出てくると、最初の頃は聞き取れなくて苦労したものであった。しかし、私は何事につけ人の真似をするのを潔しとしない性格だったので、あくまでも「ポィンター」という純日本風な発音で押し通してしまった(もちろん、アクセントだけは先頭に移したが)。

【注3】“イ”は半角の“イ”の積りである。シフトJISコード以外のコードで読んでいる人にはごみとしか映らないであろうが。

 私がなぜこのように「ポインタ」にこだわるのかというと、それはこの時の経験が頭に焼き付いているからなのだ。当時はまだ、PL/Iのような高水準言語で基本ソフトウェアを記述するなどということは、実現の難しいまさに夢のようなことだったのである。しかし彼の地では、それが現実のものになりつつあった。そういう時に、その最先端の場所で、最先端の技術で書かれたプログラムを読ませてもらって、なるほど高水準言語でのシステム記述とはこういう風にやるものなのかと眼から鱗が落ちるような思いをしたものであった。

 それは要するに、ポインタと based 変数を使って、ヒープ領域に雑多に置かれているデータを自由自在に操作することだったのである。PL/Iの文法を勉強している段階では based 変数とは何のためのものなのか、全く理解できていなかったのである。based 変数というのは、要するにポインタの指す先に定規を当てるようなもので、その定規(based 変数)でカバーされた領域のデータにアクセスする手段だったのだ。こういう使い方を想定して言語仕様を定めた人が、ずっと以前にいたのである。そう思うと、日本のソフトウェア技術は遅れているなあと実感せざるを得なかった(注4)

【注4】当時、日本の学会で発表すると「スタックを利用した automatic 変数では static 変数より効率が悪いでしょう」などと、座長が的外れな質問をしてきたのをおぼえている。

 それ以前に私がアメリカの西海岸に行ったときは、まだアセンブラの時代だったので、番地データは「アドレス」と呼ばれていて、ポインタなどという言葉はまったく使われていなかった。したがって私の頭の中では、西海岸というと「アドレス」を、東海岸というと「ポインタ」を思い出すような仕組みが自然にできあがってしまっていたのである。そして「ポインタ」と聞けば、反射的に私には技術の最先端に触れたときのあの感激がよみがえってくるのであった。

 さて、話は変わる。
 帰国してしばらくすると私は単身赴任しなければならない身となった。家が留守がちになるというので、家人は犬を飼いたいという。それもよかろう。私は生き物は好きな方なので、子供の頃から犬、猫、あひる、金魚、熱帯魚、小鳥などいろいろなものを飼ってきた経験がある。しかし、生き物が死んだときは悲しい思いをするので、それがいやで最近はほとんど飼わないことにしてきた。一方、子供達は動物が好きで飼いたがる。まあ子供にとって、身の回りにいる愛する者の死に直面するというのも、体験教育の一つとして重要なことであろうと考えて私はOKしたのであった。

 早速、もらわれてきた犬は雄の柴犬であった。目鼻立ちの立派なころころとした小犬で、子供達は大喜びである。名前は「レオポルド」とするという。愛称は「ルナ」なのだと。子供達が言うには、この目鼻立ちは絶対に「レオポルド」という高貴な名前に値するというのであった。しかし残念なことに、犬は生涯「ルナ」という名前の方しか理解しなかったようである。

 実は、私はこの犬に「ポン太」という名前を付けたかった。しかし最初に「レオポルド」という案が出てしまったので、とうとう言い出せなくなってしまったのである。説得を試みるには、「レオポルド」という名と「ポン太」という名の間には余りにも越え難い開きがあると実感したからである。もちろん「ポン太」は「ポインタ」のもじりであった。聞くところによると、サンマイクロシステムズ社のスコット・マクネリー会長は、自分の飼い犬に「ネットワーク」という名を付けているというではないか。男というものは、仕事で直接関心のあることを自分の飼い犬に押し付ける習性があるらしい。しかし「ネットワーク」などという愛情のかけらも感じられない名を付ける男に比べて、「ポン太」という名を付ける男の方が数段犬に対する愛情がこまやかだと思うがどうであろうか。

 また、話は変わる。
 プログラム言語の一種で、Perlというスクリプト言語がある。実は、私はこの言語が非常に気に入っている。それは、この言語にポインタがないからだ。ポインタに(好きとは言わないまでも)特別な思い入れを持つ男が、ポインタというデータ属性を持たない言語が好きだというのは一見矛盾しているように思える。しかし私にとっては全く矛盾はない。それは、ポインタというものを若い技術者(の卵)に教えるのに、長年に渡って苦労してきているからなのだ。ポインタを使わずに(連想変数などを用いて)リスト処理の方法を学ばせるのがよいのではないかと以前から考えていたからである。更に、Perlはフリーソフトウェアでバージョンアップの度毎に買い替える必要がないのも利点である。C風のプログラムも書けるし、事務処理向きのプログラムも書ける。強力なストリング処理の機能は大変魅力的である。それに何よりも、細かい点は記述を省略して「良きにはからえ」と処理系の省略時解釈にまかせられるのは、私のような不精者にはこたえられないことなのである。

 しかしその後発表されたPerlの最新版では、ポインタ属性が追加されてしまった。私は「Perlよ、お前もか!」と思ったものである。やはり、ポインタというのは“禁断の木の実”であって、一度使うと簡単には止められないものなのであろう。

 またまた、話は変わる。
 今話題のJava言語には、ポインタ属性がないという。つまりJavaで“ポインタレスプログラミング”が可能だという訳である。それが、Javaで書かれたプログラムが安全であることの裏付けの一つとされているらしい。たしかにポインタは、下手に使うとシステムクラッシュの原因となりやすい。しかし上手に使えばこれほど有用なものはない。場所と使い方をわきまえて、“ここぞという時”に用いれば、こんな便利なものはないと思うのである。

 私は、Javaでの“ポインタレスプログラミング”ができるという話を聞くと、どうしても“GOTO-less Programming”のときのようにポインタ属性の存在しない世界が長年続いたときのことを想像してしまうのである。そして閃くのだ。ある学生が全く新しいデータ属性を発明したという小話を(注5)。そして、その“禁断の木の実”を発明(再発見?)した学生は、多分また日本人であって「ポン太」というニックネームを持つ学生になるのではあるまいか。■

【注5】【素歩人徒然】“Goto”氏 参照