Google
ブログ(iiyu.asablo.jpの検索)
ホットコーナー内の検索
 でもASAHIネット(asahi-net.or.jp)全体の検索です。
 検索したい言葉のあとに、空白で区切ってki4s-nkmrを入れるといいかも。
 例 中村(show) ki4s-nkmr

ウェブ全体の検索

C++テンプレートメタプログラミング2010年05月24日 04時32分58秒

ASAHIネット(http://asahi-net.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
 ずいぶん前に翔泳社の古田島さんから、送ってもらっていたが、やっとちょ
っと書ける。
http://www.amazon.co.jp/exec/obidos/ASIN/4798120391/showshotcorne-22/
C++テンプレートメタプログラミング (Programmer’s SELECTION) (大型本)
アレクセイ・グルトヴォイ (著), デビッド・エブラハムズ (著), 玉井 浩 (翻訳)
 原書は、
http://www.amazon.co.jp/exec/obidos/ASIN/0321227255/showshotcorne-22/
C++ Template Metaprogramming: Concepts, Tools, and Techniques from
Boost and Beyond (C++ In-Depth Series) (ペーパーバック)
David Abrahams (著), Aleksey Gurtovoy (著)

 これは、「お前ら、ほんま、よー、やるわ」な本です。
 C++にテンプレートがあるでしょ。C++コンパイラがテンプレートを展開する
メカニズムは、チューリング完全だと。つまり、それ自体、計算機構として使
えるぞと。
 で、何をやるかというと、C++コンパイラのテンプレート機構を「ハイジャ
ック」して、メタプログラミングをやるぜ、この野郎、文句あるかというお話。
 おれ的に簡単にいえば、C++のテンプレート機構で、Lispのマクロを作って
しまうというお話。
 あ、最近、若いプログラマ、プログラミング初心者もここを読んでくれてい
るので書いておくが、昔から何度も言っているように、Lispのマクロは、C/C++
のプリプロセッサレベルのマクロとは別次元の代物。お間違えなきように。
 「はじめに」には、著者の一人がC++テンプレート・メタプログラミングと
出会ったきっかけがあって、あるときC++のテンプレートを使った数ページの
コードを渡されたと。テンプレートを「ハイジャック」したメタプログラミン
グで完全なLispが構築してあったと。そのうち、この手法が、だんだん整備さ
れ、C++のライブラリとして名高いBoostにも入ったと。
 知らなかったが、Meta Programming Library(MPL)としてちゃんとあるんで
すね。

http://www.boost.org/doc/libs/1_43_0/libs/mpl/doc/index.html
THE BOOST MPL LIBRARY
http://www.boost.org/doc/libs/1_43_0/doc/html/lambda.html
Chapter 11. Boost.Lambda

 さっき、Lispのマクロを作る話と書いたが、そして、上記リンクのタイトル
「Boost.Lambda」の名前をみるだけでも、もろにLispの世界なのがわかると思
うが、本書でも、高階メタ関数やらメタ関数lambdaやらメタ関数applyが出て
きて、笑うわ。\(^O^)/
 そして、こういう仕掛けを使って、DSL(Domain Specific Language)を設計
して実装する。
 Schemeによるメタプログラミングの話もちょろっと出てきて、Schemeの場合
は、ホスト言語とDSLの間を自由に行き来できるからうんぬんという話も出て
くる。
 おれとしては、こうまでしてC++でやるくらいなら、素直にLisp(Common Lisp
かScheme)で書けと思うけどね(苦笑)。
 いまなら、Java仮想マシン(JVM)で動く新世代LispのClojureもあるし、マク
ロもちゃんとある。
 などといいつつ、本書は、プログラミング言語のハックは、こういうレベル
でもなし得るのだということを示した貴重な本。C++のテンプレートの真髄を
味わい尽くしたい人には、大きなプレゼントだろう。
 ただ、C++のテンプレート(STL)について一言、言いたいのは、非互換性はな
んとかしてほしいということ。本書でも付録の最後にあれこれ注意書きがある。
 たとえば、おれがいま勤めている
http://www.antenna.co.jp/
アンテナハウス
では、
http://www.antenna.co.jp/AHF/
AH Formatter
http://www.antenna.co.jp/AXX/
TextPorter
http://www.antenna.co.jp/sbc/
Server Based Converter
といったサーバ製品をC++で書いているが、STLを使っているとマルチプラット
フォーム対応であれこれ苦労するので、だんだん、積極的には使わないように
なってしまった。C++の規格上、正しくても、コンパイラが追いついてない、
バグがあるなどで、あっちで動いたソースが、こっちで動かないといったこと
が、ままあったから。
http://www.antenna.co.jp/designer/
XSL Report Designer
は、ランタイムエンジンはJavaにしたから、その点は、ほんとに楽。テストの
手間、コストだけでも、劇的に楽で安上がり。

 関連書としては、以下くらいでどうだ。
http://www.amazon.co.jp/exec/obidos/ASIN/4894714353/showshotcorne-22/
Modern C++ Design―ジェネリック・プログラミングおよびデザイン・パター
ンを利用するための究極のテンプレート活用術 (C++ In‐Depth Series) (単行本)
アンドレイ アレキサンドレスク (著), Andrei Alexandrescu (原著), 村上 雅章 (翻訳)

http://www.amazon.co.jp/exec/obidos/ASIN/4894714353/showshotcorne-22/
Modern C++ Design―ジェネリック・プログラミングおよびデザイン・パター
ンを利用するための究極のテンプレート活用術 (C++ In‐Depth Series) (単行本)
アンドレイ アレキサンドレスク (著), Andrei Alexandrescu (原著), 村上 雅章 (翻訳)

http://www.amazon.co.jp/exec/obidos/ASIN/479811331X/showshotcorne-22/
ジェネレーティブプログラミング (IT Architects’Archive CLASSIC MODER) (大型本)
クシシュトフ・チャルネッキ (著), ウールリシュ・W・アイセンアッカ (著),
津田 義史 (翻訳), 今関 剛 (翻訳), 朝比奈 勲 (翻訳)

http://www.amazon.co.jp/exec/obidos/ASIN/4894714108/showshotcorne-22/
Effective STL―STLを効果的に使いこなす50の鉄則 (単行本)
スコット メイヤーズ (著), Scott Meyers (原著), 細谷 昭 (翻訳)

http://www.amazon.co.jp/exec/obidos/ASIN/4797354534/showshotcorne-22/
C++テンプレートテクニック (単行本)
επιστημη (著), 高橋 晶 (著)

 επιστημηさんは、あれは、Cマガジンだっけ、「DDJ日本版」だっけ。
 「オブジェクト指向的日常」などというタイトルの連載がとても面白くてた
めになった。
 おお、こういう本もありますね。よさげ。
http://www.amazon.co.jp/exec/obidos/ASIN/4797344369/showshotcorne-22/
C++言語のカラクリ 誕生の秘密と舞台裏 (単行本)
επιστημη (著)
 あ、「オブジェクト指向的日常」は、本にまとまってるんだ。「DDJ日本版」だ。
 じゃ、おれが読書倶楽部を連載していたときに一緒に連載だったんだね。
 「1993年~1999年まで、足かけ6年にわたる長期連載のすべてをCD‐ROMに収録」
だって。
http://www.amazon.co.jp/exec/obidos/ASIN/4881358022/showshotcorne-22/
επιστημηのオブジェクト指向的日常―C++,Java,STL…オブジェクト指
向をめぐるお話あれこれ (DeV Selectionシリーズ) (単行本)
επιστημη (著)

 ほかにC++そのものは、以下くらいでどうだ。
 いずれも入門というより、みっちりな本。
 もっと安い、よくあるC++入門書はいっぱいあるが、そのレベルはネットで
もすぐ見つかる。そこをマスターしてその上を目指すとなると、どうしても、
この辺のレベルを勉強しないといけなくなる。だったら、最初から、この辺の
ものをもっていて、適宜参照するのもいいのではないか。
 特に、
http://www.amazon.co.jp/exec/obidos/ASIN/4798109924/showshotcorne-22/
C++ プライマー 第4版 IT Architect’ Archive クラシックモダン・コンピュ
ーティング (IT Architects’ Archive―CLASSIC MODERN COMPUTING) (単行本)
スタンリー・B・リップマン (著), ジョゼ・ラジョワ (著), バーバラ・E・ム
ー (著), 玉井 浩 (翻訳)
は、
http://iiyu.asablo.jp/blog/2008/07/04/3609430
翔泳社 IT Architects’Archiveシリーズ
でも書いたように、よく出してくれたと思う。ありがたいことです。

http://www.amazon.co.jp/exec/obidos/ASIN/4894714515/showshotcorne-22/
Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES) (大型本)
スコット・メイヤーズ (著), 小林 健一郎 (翻訳)
http://www.amazon.co.jp/exec/obidos/ASIN/4894714760/showshotcorne-22
新訂版 More Effective C++ (単行本(ソフトカバー))
スコット・メイヤーズ (著), 安村 通晃 (翻訳), 伊賀 聡一郎 (翻訳), 飯田
朱美 (翻訳), 永田 周一 (翻訳)
は、
http://iiyu.asablo.jp/blog/2006/06/05/393464
古典的バイナリサーチアルゴリズムにバグ
で紹介した、
http://www.amazon.co.jp/exec/obidos/ASIN/4756118089/showshotcorne-22/
Scott Meyers著、吉川邦夫訳「Effective C++ 【改訂第2版】」
http://www.amazon.co.jp/exec/obidos/ASIN/4756118534/showshotcorne-22/
Scott Meyers著、安村通晃、飯田朱美、伊賀聡一郎訳「More Effective C++―最新35のプログラミング技法」
の改訂版ですね。
 Effecitve C++ 原著第3版の翻訳は、kneoさんこと、吉川邦夫さんの訳じゃないのか。残念。kneoさんのウェブは、
http://www.asahi-net.or.jp/~fw9k-yskw/
Room KNEO
http://www.asahi-net.or.jp/~fw9k-yskw/resume.html
翻訳家 吉川邦夫のプロフィール

 ついでに、Effective Java
http://www.amazon.co.jp/exec/obidos/ASIN/4894714361/showshotcorne-22/
Effective Java プログラミング言語ガイド (単行本)
Joshua Bloch (著), ジョシュア・ブロック (著), 柴田 芳樹 (著)
の第2版
http://www.amazon.co.jp/exec/obidos/ASIN/489471499X/showshotcorne-22/
Effective Java 第2版 (The Java Series) (単行本(ソフトカバー))
Joshua Bloch (著), 柴田芳樹 (翻訳)
は、
http://iiyu.asablo.jp/blog/2009/02/08/4108038
Javaスタイルブック、Effective Java 第2版
で言及していますね。

 C++の設計者Bjarne StroustrupがMargaret A.Ellisと共著で書いた
The Annoted Reference Manual(ARM)は、C++を知る上でとてもためになる本だった
が、絶版になったものが2001年に復刊してますね。
http://www.amazon.co.jp/exec/obidos/ASIN/4901280392/showshotcorne-22/
注解 C++リファレンスマニュアル (-)
Margaret A.Ellis (著), Bjarne Stroustrup (著)
 ぎええ、プレミアがついて、めちゃ、高い。中古が、いま、9,259円からだ
って。

 ボンビーになったら、売ろうかな。おれのサイン入りで。\(^O^)/

追加:
 上で、ClojureやLispのマクロのことを書いたので、関連。
http://iiyu.asablo.jp/blog/2010/02/17/4883520
Stuart Halloway著、川合史朗訳「プログラミングClojure」
http://iiyu.asablo.jp/blog/2010/03/12/4938899
また出るClojure本
http://iiyu.asablo.jp/blog/2010/03/01/4913323
初めての人のためのLISP[増補改訂版] 、売れまくり\(^O^)/

コメント

_ 仕様書作成係 ― 2010年07月09日 14時57分29秒

読ませていただきました。
大変参考になりました。
これからも、良い情報の発信をしていだければと思います。
ありがとうございました。

仕様書作成係
http://www.hotdocument.net/

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
一富士、二鷹、三は? ひらがなで。

コメント:

トラックバック

_ ホットコーナーの舞台裏 - 2012年10月14日 12時22分01秒

ASAHIネット(http://asahi-net.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
http://iiyu.asablo.jp/blog/2012/10/03/6591288
週刊ダイヤモンド、日本を呑み込む

_ ホットコーナーの舞台裏 - 2013年06月05日 08時53分41秒

ASAHIネット(http://asahi-net.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
 献本ありがとうございます。

http://www.amazon.co.jp/exec/obidos/ASIN/47981284

_ ホットコーナーの舞台裏 - 2014年09月26日 10時33分24秒

ASAHIネット(http://asahi-net.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
 なかなか書けなかったから、もう1ヵ月くらい前になるかな。
 オ

_ ホットコーナーの舞台裏 - 2014年09月28日 08時53分15秒

ASAHIネット(http://asahi-net.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
 Effective C++, Effective Javaなど、Effectiveシリーズのリストを作って
なか

_ ホットコーナー - 2019年02月28日 01時57分30秒

ASAHIネット(http://asahi-net.jp )のjouwa/salonから。
---
 アンテナハウスのメイン言語は、C++。次にJava。
 あとは、社内で使う分は、Scala, C#, JavaScript, Python, Ruby, Perl, PHP, Objective-Cなどなど、