« 2006年2月 | トップページ | 2006年4月 »

2006/03/30

K&Rの弊害

綺麗なプログラムを書くのは難しい。
そもそも、綺麗の基準が人によって違ったりする。時々、つまらない違いで喧嘩になったりもする。
つまらない例の最たるものが、インデント、{のぶら下げ方、と2単語のつなげ方(fooBarかfoo_barか)、カッコの前後の空白。
これらは別にどのように書いたところで、統計的にバグの数に違いがないという結果が出てる。チームで統一さえ取れてれば別にたいした問題ではないんだけど、どいつもこいつも自分の感情だけでギャーギャーわめく。案外科学的じゃないんだなソフトウェア業界って奴は。

他にも、Cの場合で意外とケンカになるのが、K&R発祥のいかにもCっぽい書き方
例えば、こんなのとか

if ( (fp = fopen("file.txt", "r")) != NULL ){

こんなの
while (*p++ = *q++);

K&Rはそもそも、Cの特徴を際立たせるため他の言語(COBOLとかPascalとか)と違う部分を強調した書き方をしてる。「Cではこんな書き方も出来るんだよ」という例を載せているのであって、「こういう書き方が優れている」と言ってるわけではない。それなのに、聖書であるK&Rがこう書いてるからと、思考停止して受け入れる原理主義者が実に多い。

ま、私なんかがとやかく言ったところでK&Rの権威にかなうわけでもなし、もう、どうしようもないくらいに広まっちゃってるんで、ある程度は受け入れるしかないんだけど。

2006/3/30 追記:
トラックバックでご指摘を受けたので追記。

K&RはCのリファレンス的な本であって、綺麗なプログラムを書くための本ではない。文法の例のために載せているサンプルコードもあり、妄信して真似すべきではない。

では、どうしたらいいのか?
簡単な話だ。綺麗なプログラムを書くための文献を参考にすればよい。
プロの人ならば、職場でコーディング規約が決まっているだろうから、多少自分の考えとは違っていても、まずはそれに従うべき。

一般書籍なら、取り合えずお勧めは「Code Complete」。分厚すぎるので「通勤通学時間=勉強時間」な人には持ち運びがつらいけど、それ以外は文句ない。


 

「センス・オブ・プログラミング」もお勧めできる。文体がすごく読みやすい。
今日、本屋で見つけて衝動買いしたんだけれども、偶然にも、細かい違いで宗教論争はすべきではないとか、上記の2つの例題とモロに同じものが載っていた。

Java専門だと 「超図解 Javaルールブック 」がある。立ち読みしただけだけれど、こちらは若干初心者向けな印象。各ページの見出しが一部不適切と感じたのと誤字が目立ったが、Amazonでの評価は悪くない。

 

| | コメント (0)

2006/03/29

副落面子と点数の集計プログラム作成中

とりあえず、一面子鳴いて和了したときの、見えてる飜数(役牌とドラ)と和了点数の集計を取るようにする。
部品になるソースはある程度揃ってるので今回は結構楽に作れそう。

| | コメント (0) | トラックバック (0)

2006/03/27

得点ベースで解析してみるか

2鳴きのデータ取る前に、1鳴きで点数についてのデータを取ってみる。
その関係でドラがらみの部分の解析部を作成。

なんか、麻雀ゲーム本体より、ログ解析作ってる時間のほうが長くなってるな最近。

| | コメント (0) | トラックバック (0)

2006/03/23

Version0.8.7出しました

otsuneさんに指摘してもらった件を踏まえ、COM雀士の鳴きアルゴリズムを修正しました。

| | コメント (3) | トラックバック (0)

鳴き条件修正中

otsuneさんに指摘してもらった変な鳴きを含めた、鳴き条件の修正作業中。
通常手から混一への移行のとき、ゴリゴリと力ずくのプログラミングをしてる箇所がある。その箇所に考慮漏れのパターンがかなりあった。修正自体は終えて今テスト中。明日か明後日には修正版を公開したい。

| | コメント (0) | トラックバック (0)

2006/03/21

1フーロー和了集計

1面子だけさらして和了した場合の、さらした面子の種別と複合役の集計した。
集計したはいいけれど、むう……これをどうアルゴリズムに活かすんだ!?
なんかこれだけではなんともいえない。
ま、当たり前か、そんな簡単に分かるんだったら苦労はしないな。

グラフに出来ないんでEXCELシートのまま登録。
「naki1.xls」をダウンロード

| | コメント (5) | トラックバック (0)

2006/03/17

大きめ牌

ログ解析も作りつつ。大きめの牌(41x31)の絵も描いてる。
私は全然絵心ないんで、まつセンパイの絵を機械的に拡大したものをベースに形を整える程度だけど。
bigger


| | コメント (0) | トラックバック (0)

2006/03/16

Borlad Developer Studio 2006試してみる

評価版が出てたんで1週間くらい前から試しに使ってみた。
試したのはC++Builder(Win32)だけ。
かなりいい感じ。悪しき伝統とまで言われてたエディタの使用感がかなり向上してる。
っていうかVisualStudioっぽい感じになってる。安定度も結構よさげ。

むう、やべ、欲しくなってきた。でもなあ。金がないしなあ。

| | コメント (0) | トラックバック (0)

2006/03/12

Version0.8.6出しました

たびたび申し訳ないです。国士無双の和了判定にドデカイバグがありました。
修正したVersion0.8.6を出しましたので入れ替えてください。

* * *

しかし、でかいバグを出しすぎだな私。
国士なんてプログラミング上、注意すべき役の典型なのに……
情けない……Orz
次こそは、強さUPか機能強化のバージョンアップをしたい。

| | コメント (0) | トラックバック (0)

プログラム整理中

次の作業のために、今までのプログラムの汚い箇所の整理などを実施。
まだまだ、気に食わない点は多いけどきりがないので、そろそろ次のデータ集計用の作業をしていく予定。

| | コメント (0) | トラックバック (0)

2006/03/04

聴牌率集計

東風荘のログで副落した面子数別の聴牌率を集計した。
1打ごとに手牌解析をしてるから集計に20時間近く掛かった。

結果は以下。案外高い感じがする。もう少し低いかとおもってた。

tenpai
※誰も立直していない局面のみを集計。役なしの形式聴牌も聴牌扱い。暗槓 も副落扱い


明日以降は副落面子と役の関係についてデータを取ってみるつもり。

| | コメント (0) | トラックバック (0)

2006/03/01

ログ解析部作成

東風荘のログを再生しながら、聴牌チェックする部分を作成。
問題なく動いてる模様。あとは、チョロチョロっと集計処理を入れてデータを取ってみる。
logana


総ステップ数:1345

| | コメント (0) | トラックバック (0)

« 2006年2月 | トップページ | 2006年4月 »