programming

プログラミング原論・第三章

三章は、結合演算子opを引数として受け取り、opに対するa^nを計算するアルゴリズムを最適化していきます。結合規則を意識しない左右べき乗からはじめて、共通部分式の除去・末尾再帰・ループ処理への変換・ループ式の最適化・蓄積変数の除去・特別ケース手続きへと、まあ見事に最適化していきます。

プログラミングマップを書いてみた

マインドマップ作成ソフト SimpleMindXがなかなか良い出来です。巷数間円からするマインドマップ作成ソフトがありますがわざわざパソコンの前まで言ってうんうん言いながらマップ作成するより、その場その時iPhoneでサクっと書いてみるのが快適です。しかも無料だし。

操作性を試そうとおもってマインドマップじゃないけれど僕のプログラミングライフを書いてみました。

マップ1

『プロダクティブプログラマ』あるいは化石プログラマの行く末

前半戦は読み物としてお気軽に楽しく読めたけど、後半は硬派で、

ソフトウェアの複雑化により技術者は急速に専門化に向かっています。専門化にはアプリケーションの種類別の専門化とプラット-フォーム別の専門化があります。専門化の進む「すばらしい新世界」に対応するためには、多言語プログラミングやドメイン特化言語を取り入れていくべきです。そうしなくては今後多く発生する新たな問題の解決は難しくなるはずです。今後5年の間に、ソフトウェア開発の様相は、今日とは全く違ったものに変わるに違いありません。

のくだりにはちょっとビビってます。

IntelliSenceでイライラするのは退化なのか?

csvの取り込みにはずっと自作のライブラリを使っていたのですが、目先を変えてboost::tokenizerを使ってみました。ちょっとウェブを検索すれば、

boost::char_separator<char> sep(",");
typedef boost::tokenizer<boost::char_separator<char> >tokenizer;
tokenizer tokens(s,sep);
tokenizer::iterator itr=tokens.begin();
while(itr!=tokens.end())
{
  // somothig do
}

ってカンジのおきまりのコードを書くことはできたのですが、これだと、「a,b,c,,e」のようにセパレータが連続したデータの場合、カラムがスキップされてしまいます。僕としては、カラム3番目はnullが来て欲しい。

コンテンツの配信