| ビジネス | WinDbg入門 | すぐ落ちるWinDbgコードを書きましょう! |
「C++プログラミング言語の歴史と特徴」連載第7回目の今回も前回に引き続き次の公開論文を精読していきます。
第1回連載資料論文
今回は、「2.2 Design Principles」節の中の、General Rules(一般規則)部分の意味を考えます。論文内には、General Rulesが次のように定義されています。
・C++は現実の問題に対応して進化する
・C++は言語の一つであり、完成されたシステムではない
・C++は完璧な言語を目指さない
・C++は"今このとき"役に立つ機能を提供する
・すべてのC++機能は、適切に実装される
・C++はプログラマに移行猶予期間を与える
・C++はプログラミングスタイルと必要な機能を提供する
・C++はプログラミングスタイルを強制しない
皆さんは筆者の日本語表現とStroustrup氏の英語表現をまず比較してみるとよいでしょう。筆者は、専門技術書の翻訳者という社会的な立場もあるのですが、実は、翻訳という作業は存在しない、と考えている一人です。Stroustrup氏のような、深い教養を持つ知識人の文章や発言内容を翻訳することなどは到底できるものではありません(できたとしても、相当の時間と経費がかかります。また、作業を担当する翻訳者には高度な教養と才能が要求されます)。
表内の個々の項目の意味を吟味してみましょう。上から下まですっと目を通し、すべての意味をその場で理解できてしまう人は、間違いなく優秀な開発者のはずです。そのような人は豊富な開発経験だけではなく、人知れず努力されているはずです。おそらく、その努力は並大抵のものではないでしょう。結論を先に申し上げます。この表内の各項目は、Stroustrup氏の哲学の一部であり、社会を見る視点でもあります。表現を変えると、この哲学の範疇に入らない概念や行動は、厳しく批判されます。たとえば、一番最後の項目は、「C++はプログラミングスタイルを強制しない」というものです。これは、「C++は、プログラミングスタイルを強制する言語は批判する」と解釈可能です。その批判の対象となっているのは、「オブジェクト指向を強要するJavaやSmalltalk」などです。
Javaは確かにオブジェクト指向言語ですが、Stroustrup氏の目には、「オブジェクト指向プログラミングのみをサポートする言語」となります。つまり、汎用プログラミング言語ではない、というわけです。
その他の項目については、これまでの連載各回内容を精読されていれば理解可能かと思います。Stroustrup氏は、プログラマの尊重、現実の重視、観念論の排斥、などを鮮明に打ち出しています。同氏は、C++を実際に使用している現場の(研究者などではなく、平均的な)プログラマからのフィードバックを何よりも尊重すると述べるとともに、C++の進化を支えるのは現場のプログラマであることをはっきり表明します。しかし実際には、プログラマがStroustrup氏に技術論争を挑むことは無理ではないかと思います。論争に勝利するためには、プログラミング技術への造詣だけではなく、異なる分野の教養を身に付ける必要があります。
表内には、「C++はプログラマに移行猶予期間を提供する」という項目もあります。これはたいへん重要なことです。この項目は、時代の流行に押し流されないこと、C++機能の有効性は実際に検証されること、プログラマのスキルを尊重すること、などを含みます。Stroustrup氏は流行や甘言を嫌います。
皆さん、Stroustrup氏と技術論争できる自信がありますか?たとえば、"それは倫理的に好ましい主張ではありません"、などと一蹴されてしまうかもしれません。プログラマに要求されるのは技術だけではないのです。本当に奥が深い人です。皆さんにはすでに常識かと思いますが、JavaやC#はC++を土台として成長しています。筆者は、たとえば、Microsoftがインターネットから公開しているサンプルコードを眺めているときなどに、Stroustrup氏の顔を思わず思い浮かべてしまうことがあります。そのような場合、Stroustrup氏の影響は本当に大きいんだなぁ!、と実感させられます。
前へ | 次へ
| WinDbgスクリプティング講座 | ホーム |