C# で競技プログラミングを戦う

Code Jam、TopCoder、AtCoder といったプログラミングコンテストの世界では、主要なプログラミング言語から好きなものを選んで戦うことができますが、ほとんどの参加者が選ぶのは C++ か Java のどちらかで、この二つが全体の90%ほどを占めています。C# を使っている人を見かけることはほとんどなく、参加者の割合でいうと5%にも満たないほどです。

C# は戦えない言語なのでしょうか? 今までコンテストで C# を使い続けてきた私の経験から言うと、そんなことはありません。
“C# で競技プログラミングを戦う” の続きを読む

VC++ 2017 で Python モジュールを作る

Python、めちゃくちゃ便利ですね。私も遅まきながら、Python の持つパワーに目覚め始めました。

しかし、その実行速度が気になる場面もあります。Python を取り巻くライブラリ群がそうであるように、どうしても速度が欲しいところはピンポイントで C++ で書きたい。

そこで、Visual Studio 2017 の C++ を使って Python モジュールをビルドするまでの、環境の作り方についてまとめました。
“VC++ 2017 で Python モジュールを作る” の続きを読む

float を解剖する

多くの C++ プログラマーにとって float というのは中途半端な存在です。この時代、ほとんどの環境では double のデメリットは皆無に等しいですし、逆に FPU のないような古典的な CPU で頑張る「マイコン屋」にとっては未だ float は贅沢品です。

ARM の Cortex-M4F や Cortex-R4F のような float に有利な命令セットを持つ CPU を使い、なおかつマイクロ秒オーダーで演算時間を切り詰めたい人たちだけが、float を必要とします(私がそうでした)。

そんな float ですが、取り扱いには注意が必要です。少なくとも float の内部表現ぐらいは知っておかないと、その挙動はまったく不可解なものに映ることになるでしょう。
“float を解剖する” の続きを読む

アプリケーションハンガリアン

以前にも引用したことのあるこの記事では、ハンガリアン記法が世界中のプログラマーから嫌われるようになったのは、一つの誤解が元になっているのだと述べられています。そして、特定の種類のハンガリアン記法には今もなお価値があるのだとも言います。この主張は今ではある程度受け入れられ、その種の記法はアプリケーションハンガリアンと呼ばれるようになりました。

あなたのプログラムで、アプリケーションハンガリアンは使われていますか? もしないのなら、これを導入できる箇所がどこにありそうか、改めて検討してみるとよいかもしれません。そのことは取りも直さず、人間特有の弱さに思いを巡らせるよい機会にもなるからです。
“アプリケーションハンガリアン” の続きを読む

C# でテキストファイルを手軽に読み書き

C#、使っていますか?

Windows 上でちょっとしたテキストファイルを取り扱いたいと思ったとき、C# は凄まじい効率性を発揮します。そのためだけでも、C# を覚えてみる価値はありますよ。

ここではその一端として、CSV ファイルを取り扱う C# のコードを紹介します。
“C# でテキストファイルを手軽に読み書き” の続きを読む

変数名に “g_” や “m_” をつけることの意味

C++ の一般的なコーディングスタイルの一つに、変数名にプレフィックスを付けるというものがあります。細かい点ではチームによってぶれがあるでしょうが、おおむねグローバル変数とメンバ変数に何かを付けるという点では一致しているようです。

私もやはりこれだけは外す訳にはいかないと考えます。実際にそれなりの規模の案件を終えてみて、このルールが果たした意義は想像を超えて大きかったと感じています。
“変数名に “g_” や “m_” をつけることの意味” の続きを読む

暗黙の型変換

暗黙の型変換と聞いて、多くの C プログラマーは「ああ、それなら知ってるよ」と思うことでしょう。そして思い浮かべるのは、次のような場面ではないでしょうか。

確かに型が異なる二者間での初期化・代入・返却で発生するのは、わかりやすい暗黙の型変換です。

ですが、通常の C や C++ のプログラムの中で実際に発生している暗黙の型変換の頻度は、こんなものではありません。その様子は、あたかも「ほとんどすべての変数が int になりたがっている」かのようです。
“暗黙の型変換” の続きを読む

const を使いこなそう

C++ には const というキーワードがあります。さほど難しい概念でもないし、一度覚えてしまえば、逆に使わないことが気持ち悪くなるぐらい、不可欠なものです。料理でいえば、何かを切ったら包丁を拭くことと同じようなもので、プロにしてみれば、当たり前すぎて意識にも上らないような動作の一つでしょう。

ですが、私が今まで見てきたところでは、仕事で C や C++ を書いている人のうち、少なく見積もっても90%の人は、const を使いません。ですから、もしあなたが初心者だとして、このキーワードを使いこなせるようになれば、その時点で上位10%のプログラマーに食い込めることになります。さらに言うと、その使い方を覚えるのに、1時間もかかりません。
“const を使いこなそう” の続きを読む