C++設計者の姿
Bjarne Stroustrup氏(Mr.BS)のインタービュー記事を読む連載第1回目の今回は、インターネットから公開されている次の記事を取り上げます。それほど分量のある記事ではありませんから、お時間のあるときにプリンタから印刷し、本連載を読まれるときには、手元に置いておくとよいでしょう。
1996年3月25日インタービュー記事(新リンク先)
本連載では、この公開インタービュー記事を時間をかけて、ゆっくり、かつ、じっくり、読んでいきます。学習の進行速度を下げることにより、表面的な理解を避けるとともに、私たち自身を見失わないようにしたいと思います。自分自身と学習内容がかけ離れている場合、そのまま学習や研究を続けることは大変危険です。それは暗記学習であり、自分を発展させることにはなりません。Mr.BSの公開記事を継続して読んでいくとわかりますが、知識のみを効率よく吸収しようとする姿勢は拒否されます。Mr.BSの発言内容に目を通しながら、常に自分を振り返ることを忘れないようにしたいものです。本日は、インタービュー記事の第1段落の内容を味わいます。
Mr.BSの考え方はわが国に正確に伝わっているのでしょうか。このようなページを一読した限りでは、伝わっていないと思われます。筆者は社会的には海外技術文献や書籍の翻訳者という立場もあるのですが、Mr.BS著作物の翻訳は引き受けないでしょう。Mr.BSの用いる用語とそこに含まれている意味を理解することは、平均的な英米人技術者にとってもかなり困難なはずです(筆者とMr.BSの対話)。筆者は、Mr.BSの公開記事はほとんど読んでいますが、インタビューする人はかなりの実力者であり、Mr.BSの理解者(表現を変えれば、心酔者)、です。
実際の講演では、次のようなトピックが取り上げられた模様です。
・プログラマとプログラミング言語の役割
・C++の誕生背景、目的、設計基準
・C++の主要な機能と設計
・プログラミングテクニックサポート
取り上げられたトピックリストから分かるように、かなり抽象的な内容となっています。Mr.BSは、プログラミング言語C++を紹介する場合には必ずといってよいほど、「抽象」(abstract)、「概念」(concept)、「汎用性」(generality)などの、かなり抽象度の高い用語を多用します。C++を設計するという作業は、同氏にとっては、自分自身を確認し、その確認内容を表現する行為だったのです。同氏はこの著書の中で、"C++は自分の世界観の表現である"、とはっきり述べています。この設計視点を理解していないと、Mr.BSの発言内容とC++設計思想の奥行きを理解できません。筆者が知る範囲では、同氏の"思想"は、最近のオブジェクト指向を名乗る多くの言語と技術に多大な影響を与えています。裏を返せば、C++設計思想に触れておけば、最近の多くのプログラミング言語とIT業界の流れは比較的簡単に理解できてしまうことになります。
C++は確かにプログラミング言語の一つではありますが、それは一人の人間が創作した"表現道具"といえるものです。道具には、その創作者の人生観や好みが反映されるのが当然ですし、反映されないのはむしろ不自然といってよいでしょう。道具と創作者の関係は、プログラミング言語の場合、「設計規則」(design rules)として文書化されるわけですが、この面でのより詳しい説明はこの連載に譲ります。「設計規則」文書内には、Stroustrup氏の人柄、好み、人生観が生き生きと輝いています。
第1トピック「プログラマとプログラミング言語の役割」に関しては、個人的に大変興味があります。おそらく、皆さんも筆者と同じ気持ちではないでしょうか。Mr.BSは「プログラマとプログラミング言語の役割」などの、どちらかといえば、哲学的な命題を懐に入れながら、C++設計を開始しています。この連載を併読するとはっきりしますが、Mr.BSはコンピュータやプログラミングだけではなく、"人"というものをきちんと見ています。同氏は、"規則よりプログラマの実際の経験を尊重する"や"コンパイラライターよりプログラマを重視する"という姿勢を表明しています。また、C++は平均的な開発者のための言語であることも表明しています。最高スペックを誇る高級マシンと環境を利用できる(恵まれた)開発者の数は限られています。
第2トピック「C++の誕生背景、目的、設計規則」は、おそらく、通常「D&E」と呼ばれている、著書「The Design and Evolution of C++」(1994年発行)の内容を敷衍するものだったのでしょう。Mr.BSは、この書「D&E」に相当の誇りを持っています。筆者も目を通しましたが、その内容は哲学書であり、"感動"に満ち満ちています(2005年1月19日に翻訳書が出版されました)。Mr.BSはこの書籍の中で哲学者キルケゴールやカントに触れながら、C++の"思想"を熱く語っています(観念論を排斥し、何よりも経験を重んじる姿勢を鮮明にしています)。
第3トピック「C++の主要な機能と設計」と第4トピック「プログラミングテクニックサポート」には、"設計"(design)という用語が見られます。この用語は、ソフトウェア開発工程の「上流」に属する開発過程を指していると一般にはいわれていますが、Mr.BSはどちらかといえば、自然な開発行為の一部を単に"設計"と呼んでいると思います。同氏は、自分自身を(設計と実装を重んじる)"プログラマ"と定義しています。
なお、ソフトウェア開発工程というのは、ソフトウェア開発を計画的、組織的に行うことを指します。自動車製造工場などの風景を想像されるとよいでしょう。工場では、各作業班は担当作業を流れるように行っています。ソフトウェアもこのように開発できれば(計画的に部品を用意できれば)と願い、多くの開発現場では開発工程を組んでいます。
Mr.BSは、C++はハイブリッド(ごっちゃ煮)プログラミング言語ではなく、マルチパラダイムプログラミング言語である、と繰り返し述べています。ちょっと難しい表現になっていますが、これはどういうことかといえば、C++は複数のプログラミングスタイルをサポートしている、ということなのです。JavaやC#などが採用するオブジェクト指向プログラミングスタイルは、数あるスタイルの一つを採用(強制)しているにすぎない!、ということなのです。このため、C++プログラマは採用するスタイルを適材適所で選択する必要があります。正しい選択を行なえるようになるためには、1つの前提条件があります。それは、"何をどのようにプログラミングするか"という問題を事前に考えておく必要があることです。
この場合の"何を"は問題の分析であり、"どのように"は設計に当たります。分析や設計というプロセスを経ずにいきなりコーディングを始めるのではなく、自分たちが解決すべき問題を多少時間をかけて考えてみることが大切ですよ、とアドバイスしているのです。何かとても難しいことが述べられているような印象を受けておられると思いますが、冷静に考えて見れば、ごく当たり前のことが述べられているにすぎません。
小さな子供たちが"おままごと"遊びをする際、彼らは、集合場所、集合時間、あるいは、配役を決めたりと、きわめて真剣です。彼らの真剣な議論は、ソフトウェア開発の「分析と設計」に当たります。彼らはそれに気づいていないだけです。複数の人間が関与するあらゆる出来事には、必ず、「分析と設計」が存在します。(大きな)ソフトウェア開発もそのような出来事の一つにすぎません。
前へ |
次へ
Copyright©豊田孝 2004-
2008
本日は2008-12-04です。