【D言語】ForwardRangeのsaveとは何か?

今回は、ForwardRangeのsaveについて解説します。

【D言語】動的配列を引数とする関数のメモ化

今回は、タイトルにある通り、動的配列を引数とする関数のメモ化に関する問題を掘り下げます。

【D言語】MessagePackを使う

今回は、D言語でMessagePackを扱う方法をとても簡単に紹介します。

【D言語】std.typecons.Tupleを使う

今回は、std.typecons.Tupleとその用途を解説していきます。

【D言語】なぜ is( typeof( { ... } ) ) は動くのか

今回は、D言語でイディオム的に使われている is( typeof( { ... } ) ) の仕組みについて解説していきます。 まずは、 is( typeof( { ... } ) ) のより一般的な場合である is( typeof( Expression ) ) を見ていきます。

【D言語】dmd 2.060 のリリース

先日、dmd 2.060がリリースされました。 ChangeLogを読んで、気になった項目について詳しく解説していきます。

【D言語】任意のメンバー関数の存在を確かめる方法

前回の記事では”型Tがメンバ関数fooを持っているかどうかを確かめるテンプレート”を紹介しました。 しかし、fooで決め打ちというのは、使い勝手があまり良くありません。 そんなわけで、今回の記事では”型Tが任意のメンバ関数を持っているかどうかを確かめる…

メンバー関数の存在を確かめる方法inD言語

D言語でも、メンバー関数の存在を確かめることができます。 なので、今回は"型Tがメンバ関数fooを持っているかどうかを確かめるテンプレート"を紹介します。

メンバー関数の存在を確かめる方法

Dart vs JSX の記事がうまく書けないので、今回はC++11ネタでお茶を濁したいと思います。 C++11では型周りを扱うコードをC++03などに比べるとかなり簡単に書けるようになりました("C++ SFINAE" 等で検索すると良いです)ので、今回は"型Tがメンバ関数fooを持…

D言語のUFCSを使い倒す

こんにちは。 今回は、dmdに最近実装された機能であるUFCSを使って、AOJの簡単な問題をなるべくセミコロンを打たずに解いていきます。

D言語の動的配列

D言語の動的配列は、C言語などの配列とはかなり違うので、そのへんをつらつらと語っていきます。

Dartで遊んでみよう.2 [vs JSX その1]

こんばんは! 第二回はDartと他の言語との比較ということで、DeNA発のJSXというプログラミング言語との比較を行なってみようと思います。vs JSXです! 1回では纏まりそうにないので、複数回に分けていこうと思います。 それでは、軽くJSXの説明を行います。D…

D言語の標準ライブラリを読む read!(std.functional, 2)

前回に引き続き、今回もPhobosのstd.functionalを読んでいきます。 今回は、 std.functional.memoizeを読みます。

Dartで遊んでみよう.1

――― 「Dartってプログラミング言語知ってる?」「知らない」 いきなりこのような見出しで始まりました「Dartで遊んでみようシリーズ」ですが、今日は最初ということで「Dartの紹介」と「『Dartって新しいくせに特徴全然無いよね』とか言われて悲しい」をテー…

D言語の標準ライブラリを読む read!(std.functional, 1)

D言語を勉強したいなら、標準ライブラリであるPhobosを読めとよく言われています。 D言語の機能の殆どは、Phobos内で使われていると言っても過言ではないでしょう。 そんなわけで、std.functionalモジュールのソースコードを読んでいきます。

関数分けの効用

通常、プログラムを書くときは、処理をただ順番に書き下すのではなく、いくつかの「関数」に分割します。 これによって各ステップの処理が部品化され、再利用が可能になるわけですが、関数分けの効用はそれだけに留まりません。 例え、たった一度しか実行さ…

構造体によるデータ集約

個人的な観測範囲内での話ですが、「プログラマ」と呼ばれる人の中には、自分で構造体 (あるいはクラス) を定義することを面倒臭がり、これをしないで済ませようとする人が少なくありません。 彼らは、本来構造体として集約されるべきデータをプリミティブ (…

C++の std::unique と、Ruby の Array#uniq の本質的な違い

配列から重複した要素を取り除きたいとき、C++ では STL の std::unique を、Rubyでは Array#uniq を使うことが出来ます。 C++ Ruby #include <iostream> #include <algorithm> int main(){ int v[] = {1, 2, 2, 3, 3, 3}; int len = sizeof(v) / sizeof(v[0]); int *end = std::u</algorithm></iostream>…

32ビット環境で64ビット整数を扱う (乗法編)

これまでの記事では、32ビット環境における64ビットの加法および減法につい...

Array クラスを作る (size フィールド編)

Java では、配列の要素数をフィールド length を通じて参照するこ...

ビット演算の基礎

ビット演算を使用すると、1つの整数型データをビット単位で区切って、複数の用途に割り当てることができます。 例えば、符号なし整数 (unsigned int) のデータ長が32ビットの環境であれば、一つの変数で32個の真理値 (bool: true/false に相当) を格納するこ…

参照の配列は何故作れないか

さて問題です。次のコードの実行結果はどうなるでしょうか? #inclu...

32ビット環境で64ビット整数を扱う (減法編)

32ビット環境で64ビット整数を扱う (加法編) の続き。 今回は、加...

カウンタ付き参照

C++ では、new を用いてオブジェクト (メモリ領域) を確保したなら...

C++ スタイルのキャスト

C言語では、キャスト (型変換) を以下のような形式で行います。 ( ...

Ruby でローカルスコープを作る

必要に迫られて、ローカルスコープを作り出す関数を作ってみました。 ...

オブジェクト指向のメリット (カプセル化編)

Eyes, JAPAN では、ソフトウェア開発には専ら C++, Java, Ruby などの オブジェクト指向プログラミング言語を用いています。(一部例外もありますが。) ところで、「"オブジェクト指向" とは何か?」と問われたとき、「○○○○のことだ」とはっきり答えることの…

Array クラスを作る (演算子編)

"Array クラスを作る" シリーズの 4回目です。 今回は、各種演算子の定義について解説します。 過去の内容については、以下の記事を参照してください: Array クラスを作る (導入編) Array クラスを作る (コンストラクタ編) Array クラスを作る (デストラクタ…

XFile方言アレコレ

最近 3ds max から独自形式を吐き出すエクスポーターを作成しているのですが、その際 3d, xfile, maxsdk の仕様など学ぶことがいろいろありました。 今回はその備忘録的な内容です。 まずは独自形式の前に一般的に知られているファイル形式を出力したいと思…

エスケープは出力時に

CGIプログラムは、HTMLを出力とすることが多い (というか殆ど) ため...

FBXファイルを読み込む(スキン情報の取得)

3D

松浦さんから依頼を受けて、Autodesk Maya 等の .fbx 形式から...

モーションキャプチャデータの使い方(計画編)

前回予定していましたFBX形式からメッシュやマテリアル情報を抜き出す方法ですが...

32ビット環境で64ビット整数を扱う (加法編)

通常用いられる整数型 (32ビット符号付き) は -2,147,483,6...

連結リストを作る (1)

C/C++ の配列は、そのサイズをコンパイル時に決定する必要があります。 ...

3Dモデルファイルの独自形式制作(1回目)

C++

3D系プログラムをしていると、どうしてもついて回るのが読み込みモデリングファイ...

VertexDeclarationとFVF

私がよく見ている掲示板で気になる書き込みがありました。 プログラマ独自...

Ruby でも型チェック

動的型付け (スクリプト) 言語では、データ型のチェックが実行時にしか行わ...

Medical show and Business expo 2008 レポート

5月28日から31日にかけまして、東京国際フォーラムにてMedical sho...

Office OpenXMLの解説

GPUで並列処理の続きの記事がまだできていませんので、今回は別の記事を用意しま...

GPUでレイトレーシング (補足)

前回のGPUレイトレーシングについてもう少し補足したほうがよさそうでしたの...

GPUでレイトレーシングを並列処理

以前やったGPUで並列処理の続きとして今回はGPUでレイトレーシングを行い...

Haskell でバグの出にくいプログラミング (4) ローカルスコープによる変数代入の模倣

前回は、副作用である変数代入という概念が純粋関数型言語である Haskell ...

変数宣言の位置

C++

C言語では、ローカル変数の宣言を関数の始めに宣言する必要がありま...

0からはじめる計算幾何学 第04回 過去のプログラムの有効活用

昔書いたプログラムをもう一度使えないかと考えることは、多くのプログラマにとって...

コメントつけろよ

プログラマは自分でコードを書くことができるだけでなく、他人が書いたコードを...

Scala で遊んでみました

最近よく名前を聞くようになった Scala という言語で遊んでみました。 ...

平方根を使わないピタゴラス加算

二次元座標上の2点間の距離を求めたいとき、複素数の絶対値を求めたいとき、その他...

動的背景更新とオブジェクトの認識

最近、画像処理についての会話をよく聞くので少し自分でもやってみました。 ...

Haskell でバグの出にくいプログラミング (3)

前々回、前回と、副作用がバグの原因の一つであるということから、Haskell ...

素因数の数を数える

素因数分解は、数論の中でも重要かつ難しい問題のひとつとして知られています。...