ビジネス WinDbg入門 アクティブなスレッドと非アクティブなスレッド


はじめに

 新しい何かを学んだり、新しい何かに挑戦する場合、"基礎"が大切であるとよく言われます。本連載では、次のような学習事項を取り上げます。

学習項目1:プログラミング言語C++の歴史と特徴
学習項目2:プログラミング言語C++設計者の人柄
学習項目3:技術文書における英語的な発想

 筆者はこれまでコンピュータとプログラミングに関する数多くの専門図書に目を通してきましたが、多くの図書は学習項目2についてはそれほどのページを割いていません。すべてのプログラミング言語は、私たちと同じ、人間によって作り上げられたものです(参考連載)。この事実を直視すれば、学習項目2は避けて通れません。

 また、我が国はソフトウェア輸入大国であることも貿易統計上の事実ですから、学習項目3を外すこともできません。主要なプログラミング言語(とオープンソースソフトウェア)の説明は英語で行われているのが普通です(関連記事)。邦訳があるじゃないか!、と主張される方もいらっしゃると思いますが、人の"思想"、"考え方"、あるいは、"個性"を輸入することはたいへん難しい作業です。CやC++の設計者自らが書いた本のわが国への輸入は成功していると思いますか?

 本連載では、プログラミング言語C++の生みの親であるBjarne Stroustrup氏の発表論文を忠実に読んでいきます。筆者は時折きわめて個人的なコメントを挿入しますが、そのコメントが閲覧者の皆様を好ましからざる方向へ導かないように慎重を期す予定です(筆者とStroustrup氏の意見交換)。「C++生みの親の発表論文を忠実に読むこと(つまり、論文を解釈し、そのエッセンスを理解すること)」は、C++の設計精神を理解するための長い旅といえます。この長旅の途中では、いろいろな新しい発見があります。

 本連載ではプログラミング言語Cの歴史と特徴にも言及しますが、それはあくまでも、"プログラミング言語C++設計思想の奥行きをより深く味わう"ために言及する、という意味を持ちます。筆者は個人的には、プログラミング未経験者や初学者がプログラミング言語Cに(適切な指導者抜きで)挑戦することは賢明ではないと判断しています。C言語は小回りの効く、小さな言語です。言語文法を覚えるだけでしたら、実際、それほどの時間もかかりません。しかし、この連載を一読してみるとはっきり分かりますが、「コンピュータや電気・電子回路の知識があれば、C言語を使えるようになる」というのが実際のところなのです。こうした事情もあり、C言語は、低レベル言語やシステム記述言語と呼ばれることがあります。

 CとC++の間にはきわめて大きな発想上の違いがあります。最近では、C++設計者のBjarne Stroustrup氏自らこの発想上の違いをことさら強調してます。このため、本連載の結論としては、"C++を学んでからCをちょっと眺める"、というアプローチを取っています。Cプログラミング開発経験をお持ちの方は、この筆者の結論に(もしかすると)不快感を禁じえないかもしれませんが、最後までお付き合いください。

 C++の歴史と特徴、C++設計者の人柄などを学習することにどのような意味があるのでしょうか?皆さんの多くは、このような疑問をお持ちのはずです。また、"C++専門図書を何冊読んでも、C++を使えるようにならない"!、"C++専門図書を何冊読んでも、たとえば、Microsoftがインターネットから公開するC++サンプルコードを理解できるようにならない!"、などの問題や不安、あるいは、不満を抱えておられるはずです。

 Bjarne Stroustrup氏は、"C++を習得するのは難しい!"、とはっきり述べています。そして、"現在のC++教育や専門図書には問題が多い"と指摘しています。本連載では、Bjarne Stroustrup氏の生の声に耳を傾けます。設計者の「生の声」というのものは、素朴で分かりやすいものです。MicrosoftのCOM、.NET、あるいは、PHPをはじめとする比較的新しいプログラミング言語の世界は、「素朴で分かりやすい」部分を組み合わせたり、少し発展させて完成させているという性格を持っています。「素朴で分かりやすい」部分の説明は通常割愛されるため、その言語の全体像や設計思想を把握することが難しい!、となります。皆さんは、C++の難しい説明を読んでいるのではありませんか?もしそうなら、時間の浪費、かもしれません。

 筆者は、この連載を用意しながら、C++学習に挫折している人はかなりの数に上るだろうなぁ、と考えていました。また、ほとんどの最近のプログラミング言語はC++設計思想の影響を強く受けているため、C++の設計思想に触れていない人は気の毒だなぁ、とも考えていました。本連載を最後まで読み通してください。時間はかかると思いますが、PHP、Java、C#などの文献やベンダ公開ドキュメント、あるいは、サンプルソースコードを検討する際の皆さんの視点は、劇的に変化するはずです。

他のC++関連連載 | 次へ



 WinDbgスクリプティング講座  ホーム


Copyright©豊田孝 2004- 2008
本日は2008-12-04です。