型レベルプログラミングの会

型レベルプログラミングの会 ATND 東京駅から丸の内線に乗ったが、溜池山王駅が屈指の地下ダンジョンであることをすっかり忘れていて、丸ノ内線国会議事堂前駅の最後尾車両を降りてから、ATTの最寄り出口まで20分も歩く羽目になってしまった。しかも途中で2…

例外の多段伝播

例外処理の一例 #include <iostream> #include <string> using namespace std; class Exception { string str; public: Exception() : str("Error0") {} Exception(const char* m) : str(m) {} void message() { cerr << str << endl; } void setmsg(const char* m) { str = m;</string></iostream>…

C++人気?

twitter眺めてると、C++に関するものが突発的に増えた。普段はC++なんて触っていない層から。特にテンプレートメタプログラミングがホットらしい。すっぷせんせのインタビュー記事が出てたので、アンカーを貼っておく。 言語の進化について語る Bjarne Strou…

boost 1.35.0

boost 1.35.0がリリースされた。 http://www.boost.org/users/news/version_1_35_0 GILとMPIが気になるなー。portsとMacPortに乗っかるのは何時になるか。

最もタメになる「初心者用言語」はC++

最もタメになる「初心者用言語」は JavaScript。 - IT戦記 最もタメになる「初心者用言語」は Python! - 西尾泰和のはてなダイアリー ちがうよちがうよ、最もタメになる「初心者用言語」はC++だよ。C++は、 パソコンに限らず、マイコン、ワークステーション…

C++テンプレートでFizzBuzz

これは、1月20日に北海道にて行われた日本野望の会で披露したネタのまとめと解説のエントリーです。 そもそも こんなしょーもないネタを思いついたのは、このブログの昨年の検索キーワードトップ3が C++ FizzBuzz テンプレート だったから。それぞれのキーワ…

Boost本2

cppllのMLで、Boost C++ Libraries プログラミング第二版が紹介されていた。初版のライブラリのほかに、xpressive、String Algorithms、asio、iostreams、serialization、range、fusion、wave、program_options、parameterなどが加わっているそうな。またあ…

distutils with boost.python

昨日のエントリのコメントにて、 nishio『とりあえずインストールしてみたけどなにがいいのかよくわかんない…bjamとかいう独自のビルドツールを使うせいで標準のdistutilが持っている機能(Windows用インストーラがコマンド1行で作れるとか)が使えなくなって…

boost.python

西尾泰和のブログ @ Cybozu Labs: Python拡張の作り方 それ、C++ならBoost.Python使ってもっと簡単にできるお。 Boost.Python こんなふうにね。もちろん、Python.hにインクルードファイルパス通すのは忘れずに。 #include <boost/python.hpp> #include <string> std::string foo() { re</string></boost/python.hpp>…

剰余を使わずにFizzBuzz

新幹線の中の暇な時間を使ってやってみた。 まず剰余を使わない方法 最小公倍数と整数論における法の理屈が分かっていれば、3と5の最小公倍数の15周期で"Fizz", "Buzz", "FizzBuzz"のパターンが現れることがすぐに理解できる。ちうことで、"Fizz", "Buzz", "…

FizzBuzz問題をC++とFIFOLでやる

ただいまはてな界隈でFizzBuzz問題が流行中。 どうしてプログラマに・・・プログラムが書けないのか? 1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場…

配列newでの初期化

大学院のときの研究室の同僚から、コンパイラを変えたら、 error: ISO C++ forbids initialization in array new というエラーが出たので、助けてくれというのが来た。エラー箇所は、 //これ。 i,vcs,outputsはint、configはconstなかたまり。 _vc[i] = new …

プリプロセッサでコメントアウト

最近cppllに流れてたネタ。C言語ないしC++で区間まとめてコメントアウトするのに、/*...*/でなく、プリプロセッサの#if #endifディレクティブを使うというのがあった。コメントというよりは、事実上のコメントといったとことろだろうか。 // コメント boo();…

C++0x video

cppllより。C++0xにつていのビデオがGoogle Videoに。たぶん何かの講義かワークショップのビデオ。どれも一時間前後の長さがあるので、時間をちゃんと確保したうえで観たほうがよろし。

バイリンガルプログラミング

先日の言語融合とはちょっと違いますが、ひとつのプログラムファイルに二種類の言語で同じ文字列を出力するプログラムを書いてみました。バイリンガルプログラミングとでも呼んでみましょうか。次の hw.sh は"Hello, World!"を出力する、Bシェルで書かれたプ…

時代は言語融合

西尾君のブログより 西尾泰和のブログ: 言語融合の時代 ついかっとなってコメントしてしまった。C++がマルチパラダイム言語であることが伝わればそれでよかった。いまは別に反省していない。 世代を言語の進化でなく、プログラマの考え方の変化で捉えている…

Stroustrupのインタビュー

Technology Review に Bjarne Stroustrup へのインタビュー記事。C++への批判に対するコメント。 The Problem with ProgrammingBjarne Stroustrup, the inventor of the C++ programming language, defends his legacy and examines what's wrong with most …

C++でSICP

朝起きたら、西尾さんからこんなのがあったよー、とメッセージが来ていた。 memologue - C++ で SICP これはひどいwいや、おいらも「Scheme や ML, Haskell で書くんなら boost::bind とか使って書いてもいいよねー」なんて考えた事はありましたが、実際には…

C++テンプレートだけでLisp アンサー

C++テンプレートとマクロでLisp eq と atom について、あぁなるほど、こういうやりかたもあったのか。atom の定義の仕方は、ユーザ定義アトムを作りやすくするため。とのことですが、純Lispの(おいらの勝手な)考え方というか醍醐味は、「nil と T だけのア…

メタテンプレート

C++のテンプレートをメタプログラミングできるテンプレート(メタテンプレート?n階テンプレート?)みないなものができないかと考えていたけど、何もできず。構造体テンプレートをネストすればできそうな気がしたが、名前をつけなきゃいけないのが壁。やろ…

C++のテンプレートだけで

先日の「C++テンプレートでLisp」*1の続きは、いまも続いています。とりあえず、条件分岐(if関数)と、以前Schemeでこちょこちょとやった*2、自然数、整数まわりをやっているところ。if関数を作ったので、これを使うと表現の幅がぐっと広がるのだが、それを…

C++テンプレートでLisp

一昨日のエントリー(d:id:earth2001y:20060929:p2)でC++のテンプレートがチューリング完全性を備えているということを、見つけた論文から言及した。で、C++テンプレートだけでBrainfuckインタプリタを書こうとして一旦挫折したが、テンプレートの記述が宣…

C++テンプレートは計算完備

KEMURIをチューリング完全にするためにはどうしたらいいか、あるいはどうすればチューリング完全性を判定できるのか、ヒントを探していたら「C++テンプレートはチューリング完全だよー」という論文にたどり着いた。 C++ Templates are Turing Complete(PDF)

C++テンプレートの型推論

C++のテンプレートの動作について、確認のつもりでちょっといろいろやってみたら、いままで知らなかった動作に出会えた。 template<class T> T op(T (*fun)(T, T), T s1, T s2) { return (*fun)(s1, s2); }; template<class T> T add(T s1, T s2) { return s1 + s2; }; とテン</class></class>…

C++ D&E

先日買ったC++ D&E をほぼ毎日、通勤時に電車中で読つづけ、三分の二弱くらい読んだ。シーケンシャルに読んでいるわけではないので、同じところを何度も読んだり、未読の部分がとびとびたったりするが、全体像は見えた(と思う)。特定のパラダイムに忠実に…

買った

C++の設計と進化作者: Bjarne Stroustrup,ビョーンストラウストラップ,επιστημη,岩谷宏出版社/メーカー: ソフトバンククリエイティブ発売日: 2005/01/19メディア: 単行本購入: 2人 クリック: 322回この商品を含むブログ (160件) を見るC++の進化は止まらない…

C++の人気

C++はなぜ人気がないのか | 日経 xTECH(クロステック) C++でプログラムを書く人間からすれば、なんでこんなに人気がないのかとちょくちょく疑問に思う。よく気になるのが、書店とかで売っているC++入門書の多くが「C++=オブジェクト指向言語=クラス設計…

stringstream

C++を8年近く使ってて、今日初めてstd::stringstreamの存在を知った。今まで高機能な文字列操作が伴うプログラムをほとんど書いてこなかったので、ろくに調べてなかったってのもあるが・・・へへへ、sprintfだのsscanfだの、std::strstreamだのを使うのがア…

テンプレートで型と演算を指定

昨日の続き。 演算の前後の処理が共通で、対象となるデータの型と演算が違うとき、どうやってコードを短くしてやろうか。型が違うだけなら素直にテンプレートを使えばいいが、演算も違うときにどうするか。 結局、C++のテンプレートは演算子をテンプレート引…

続・C++でvariant型型自由

「variant型」ばかりに注目していたからいけなかった。boost では any というクラスが定義され、それが型自由なオブジェクトを提供してくれる。 any a=100; int i; i=any_cast(a); a=string("hoge"); // エラーにならない any から値取り出すときは、明示的…