2010-06-01から1ヶ月間の記事一覧

デジタル信号処理まとめ

MindMapでまとめてみました。

C++によるバイトコード生成可能電卓作成

いきなりコンパイラは大変なのでまず、バイトコード作成可能な電卓を作ろうかと int a; a=10+20; print(a);みたいに書く仕様にする予定。

C++/boostでminiコンパイラ製作日記

とりあえず、関数呼び出しはややこしいのでパスして超単純なコンパイラを作る。boost::spritを使うと簡単に構文解析ができる。イメージはこんな感じ。バイナリを出力するほうがいいが、難しいかもなのでまず中間言語を出力してそれをインタプリタが実行する…

winpp

C++

win32ラッパーのシンプルなC++ GUIライブラリを見つけた. http://sourceforge.jp/projects/sfnet_winpp/releases/ winppと言うらしい。これにもう少し機能を追加して実用的にしようかと+

MingwでのBoostのインストールと使用まで

C++

boostのファイルとbjamをダウンロードする bjamはboostのコンパイルに必要なツール http://www.boost.org/で探せばすぐに見つかる bjamを使ってmingw用のライブラリをコンパイル bjam --prefix=C:\boost toolset=gcc installでOK 使用する 例えばregex(正規…

USING MONTE-CARLO SIMULATION FOR AUTOMATIC NEW TOPIC IDENTIFICATION

検索エンジンでユーザーが入力する単語のトピックを変えたことを検出する。 検出には検索エンジンのログデータを用いる。アルゴリズムはこんな感じ 検索クエリーの分類 前後のクエリーの関係を分類する。 例えば、一般化、特殊化など 間隔時間の取得 どれほ…

Compiler-Directed Run-time Monitoring of Program DataAccess

データアクセスをソースコードを書き換えてモニタに指令を出して記録するという内容の論文。既存のモニタリングと違い、アーキテクチャに依存せずにモニタが行える特徴がある。

effective C++を読む(14)

C++

ダウンキャスト(継承の下層方向へ下るキャスト)は避けよう ダウンキャストの弊害 例えば銀行口座BankAcountクラスと普通預金口座SavingAcountクラスがあった場合。利息を加算するメソッドcreditInterestはSavingAcountクラスに定義されてるものとする。すべ…

effective C++を読む(13)

C++

インターフェイスの継承と実装の継承 純粋仮想関数を宣言する目的はインターフェイスを継承すること。 純粋仮想関数しか含まないクラス=プロトコルクラス 一般仮想関数を宣言する目的はインターフェイスとデフォルトの実装を継承すること インターフェイスと…

effective C++を読む(12)

C++

コンパイルするファイル間の依存性はできるだけ減らそう ファイル間の依存性が強い場合、コンパイルに長い時間が掛かってしまう。例えばクラスを変更した際にクラス内で別のクラスを用いている場合にはそのクラスのあるファイルもコンパイルされる。 オブジ…

effective C++を読む(11)

C++

関数は良く考えてからインライン化しよう インライン化のメリット オーバーヘッドがなくなる 最適化を助ける デメリット プログラムの容量が大きくなる 命令キャッシュのヒット率が低下する バイナリアップデート(関数だけをアップデート)ができない デバッ…

effective C++を読む(10)

C++

自分よりもアクセス制限がきついメンバへの非コンスト参照を返してはならない。 これをやるとアクセス制限の意味がなくなってしまう。 関数はローカルオブジェクトへのリファレンスや関数の中でnewで初期化したポインタを返してはならない。 ローカルオブジ…

Mapping Parallelism to Multi-cores: A Machine Learing Based Approach

機械学習でスレッド数などを決めてやるという論文よみました。 要旨を簡単にご紹介。 これまでのスレッド数決定アプローチ data scheduling / runtime dynamic task 問題点:プログラムに依存 Online learinig プロファイルを要求しすぎ 新しいアプローチ 機…

C++のcastの話

C++

dynamic_cast(expression) 実行時に型の情報を使う(実行時型情報) static_cast(expression) reinterpret_cast(expression) コンパイラに型の解釈を指示するだけで、実行時にはデータをなにも変換しない const_cast(expression) const を取り除くのに使う

effective C++を読む(9)

C++

暗黙の内に生成される不要なメンバ関数は使用を禁止しよう Arrayというクラステンプレートを書きたい場合 C++では配列の代入は禁止されてる double values1[10]; double values2[10]; values1=values2;//エラーそのため、Arrayで代入を禁止するためには=をpr…

H8マイコンをeclipseで遊ぶ

H8マイコンをeclipse上でプログラムするためのメモ書き 必要なツール KPIT GNU TOOLS 開発環境です。コンパイラ、リンカ等が含まれます。 eclipse C/C++にも使えるIDE cygwin Linux風にwindowsを使うツール。これを使ってeclipseからKPITを呼び出す。 FDT マ…

effective C++を読む(8)

C++

ポインタと整数型のオーバーロードはやめよう void f(int x); void f(string *x);f(0);//呼び出されるのはどちら?この場合にはintの方が呼ばれるが、プログラマがそれを意図してるとは 限らない。そこでNULLを工夫する。 class NullClass{ public: template…

effective C++を読む(7)

C++

値渡しよりリファレンスを使おう 不要なコンストラクタ呼び出しを避ける 基底クラスの型に値渡しで継承された型を渡した場合に基底型に変換されてしまう かといって無理にリファレンスを返すようにするのはやめよう 関数のオーバーロードとデフォルト付きパ…

effective C++を読む(6)

C++

データメンバをpublicにするのはやめよう 使えるときはconstを使う 値を変えてはいけないということを全ての開発者に伝える const char *p="hello";//データはconstポインタはconstでない char const* p="hello";//上に同じ char * const p="Hello";//ポイン…

ニューラルネットワークの基本

ニューラルネットワークについて勉強する 参考になるサイト http://www.neurosci.aist.go.jp/~kurita/lecture/neuro.pdf http://www-ailab.elcom.nitech.ac.jp/lecture/neuro/menu.html http://kaz.cyteen.nagoya-bunri.ac.jp/ai/NN.html まとめ 神経細胞を…

当面の間勉強したい事

確率統計 ニューラルネットワーク デザインパターン FFTによる多倍長演算ライブラリの開発

effective C++を読む(5)

C++

クラスのインターフェイスは完全かつ最小限にせよ 最小にすることでユーザーにクラスの内容をわかり易くする メッソドのみをインターフェイスとし、データを含めない メンバ関数・非メンバ関数・friend関数の使いわけ 暗黙の型変換 class Rational{ public: …

effective C++を読む(4)

C++

メモリを動的に割り当てるクラスではコピーコンストラクタと代入演算子を宣言しよう これらを宣言しない場合、デフォルトのコピーコントラスタ・代入演算子は オブジェクトの内容をそっくりコピーする。よってメモリを確保するクラスでは 確保したメモリへの…

C++の基本

new演算子を使って作成したクラスはスコープを抜けても削除されない mallocと同じ。 virtualを付けた場合と付けない場合の違い virtual無し オブジェクトの型によって呼び出される関数が決まる virtual有り オブジェクトの型ではなく、実体によって決まる テ…

boostで時間計測

C++

boostを使うと簡単に時間計測できる。 #include : : boost::timer t; p.exec(); cout みたいに書くみたい。ただし精度はイマイチかな?gettimeofdayの方がしっかり してるような気も

effective C++を読む(3)

C++

今日はメモリの最適化について この章は中々興味深い。簡単に言うとメモリを何度も細切れで確保せずに 巨大なリストとして確保してそこから切りっとって使うということ。 メモリプールとか呼ぶらしい。そういえば学部の時mallocで先生がそんな コードを書い…

effective C++の続き読む

C++

メモリ管理 newがメモリ不足で例外をスルーする場合に備える。 newはメモリが足りないと例外bad_allocをスルーする set_new_hadler関数でメモリ割り当て失敗時に呼ばれる関数を指定可能。 メモリ割り当て失敗時の処理(new_hadlerの処理) より多くのメモリを…

effective C++を読む

C++

effective C++をamazonで1000円でgetする(普通に買うと4000円もする) 自分のC++のコードはCっぽい古臭い書き方だったのでちゃんとした書き方を勉強しようかと 1章の要約 #defineを使わない、constとinlineを使う #defineを使うとシンボルが値で置き換えられ…

C++のライブラリboost

C++

boostというライブラリを使ってみた。 自分は知らなかったんですけどC++使いの間では常識のライブラリらしいです。 解説サイトはhttp://www.kmonos.net/alang/boost/が参考になりました。 とりあえず、boostの勉強で素数の生成プログラムを書いてみた。 まず…