« 2009年10月 | メイン

2009年12月

2009年12月 8日 (火)

情報科学苦手の会に参加してきました

今年の情報科学若手の会には参加できなかったので、情報科学苦手の会の方に参加してきました。

幹事のみずしまさん、運営周りをいろいろサポートしていたsyuuさん(ハンドルネーム)、会場提供たけおかさん、その他発表者のみなさん、参加者のみなさん、ありがとうございました。

ボウズマンチョコ

自分はC++が苦手なので、templateでコンパイル時に素数を数え上げるプログラムを作成して自習勉強してみました。苦手な法律の話も勉強したのですが、ピザ到着の時間が近かったので今回は発表をパスさせていただきました。

■ C++テンプレートでコンパイル時に静的に素数を計算する

元ネタ:

  1. C++テンプレートでFizzBuzz - おびなたん☆
  2. Kazuho@Cybozu Labs: C++ テンプレートで(いまさら)FizzBuzz
  3. C++のテンプレートで素数計算 - 西尾泰和のはてなダイアリー

ちょっと古い話題ですが、enumを使うテクニックをherumiさんから教えてもらったので、書いてみました。

#include <stdio.h> 

template<int N, int n=N-1, int m=N%n> struct isPrime {
  enum { ok = isPrime<N, n-1>::ok };
};

template<int N, int n> struct isPrime<N, n, 0> {
  enum { ok = 0 };
};

template<int N> struct isPrime<N, 1, 0> {
  enum { ok = 1 };
};

template<int N> struct printPrime {
  printPrime() {
    printPrime<N-1>();
    isPrime<N>::ok && printf("%d\n", N);
  }
};

template<> struct printPrime<1> {};

int main()
{
  printPrime<MAX>();
}

コンパイルするときに -DMAX=100 のオプションをつけて #define MAX 100 してあげます。

■ 計測スクリプト

さきほどのC++のソースコードを prime.cpp に保存して #define MAX の値を変えて g++ のコンパイル時間を計測してみます。

#!/bin/bash
n="10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200"
for i in $n
do
  echo -n "$i, "
  /usr/bin/time -f "%U" g++ -DMAX=$i prime.cpp
done
■ 実行結果

以下の環境でベンチマークをとってみましたが、MAXの値が大きくなると結構な時間がかかるようです。

Athlon1640B 2.7GHz Memory8GB Ubuntu8.10(AMD64)
  gcc version 4.3.2 (Ubuntu 4.3.2-1ubuntu12)

10, 0.17
20, 0.19
30, 0.23
40, 0.30
50, 0.44
60, 0.60
70, 0.69
80, 0.73
90, 1.17
100, 1.87
110, 2.81
120, 4.00
130, 5.59
140, 7.54
150, 9.97
160, 12.52
170, 16.58
180, 20.55
190, 25.74
200, 32.17

グラフにするとこんな感じになりました。MAX=1000を予想すると絶望的です。

Cpptemplatecompiletime

結論:C++コンパイラは頑張り屋さん

ToDo:もっと早く計算させる方法を勉強する

enum じゃなくって typedef 使えば早くなるのかなぁ。。。

苦手なので誰か教えてください(><)

2009年12月 3日 (木)

ポスドク向けIT業界セミナーを開催します

事業会社で働くことを考えている情報系のドクターコースの学生、研究者に向け、株式会社ディー・エヌ・エーと株式会社プリファードインフラストラクチャー、サイボウズ株式会社がIT業界で働くという事に焦点をあてたセミナーを開催します。

■ポスドク向けIT業界セミナー(共催:DeNA×PFI×Cybozu)

日時:12月20日(日) ※盛況のうちに終了いたしました。ありがとうございます。
場所:サイボウズ株式会社 本社

《第一部》

17:00~
  「事業会社で働くということ」
    山本 泰宇(サイボウズ株式会社)

17:30~
 「研究者と開発者/リサーチャーの生態」
    岡野原 大輔(株式会社プリファードインフラストラクチャー)

18:20~
    DeNA様 エンジニアによる講演

《第二部》※ 第二部は自由参加です

19:00~ 座談会

当日発表するエンジニア以外にも、現役で活躍するポスドク出身のエンジニアが参加します。少人数に分かれて、将来のこと、就活のこと、技術のこと、何でもご相談ください!

Cybozu2010postdocter

サイボウズ株式会社では、2008年6月よりポスドク採用枠を新設し、比較的有利な条件でソフトウェア開発エンジニアの募集を行なっております。

【募集要項】ソフトウェア開発エンジニア(博士後期課程出身者)
2010年4月からの入社を希望される方が対象と記載されていますが、ポスドクの方であれば、特に入社月日にはこだわりません。


アカデミア業界における研究の世界とは違う部分もありますが、実際に世の中やユーザに使われる役に立つ基盤ソフトウェア製品の開発に携わることができ、大きなやりがいを感じられることができるのが大きな特徴です。

もしも近くに興味のありそうな人がいらっしゃいましたら、ご紹介いただけますと有難いです。