トップ «前の日記(2004-04-22) 最新 次の日記(2004-04-24)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2004-04-23

_ 開心果仁

殻が閉じきっているやつがいるが、浅蜊じゃないんだから食えるだろうといろいろトライしてもどうにもならない。爪を剥がすってのは拷問のはずだから、すさまじく痛いに間違いない。だから、あまり素手でムキになるのは下策というものだ。

そこで上策を考えてみれば、専用の器具の利用となるが、あいにくそんなものは無い。そこで中策を取る事にして引き出しからラジオペンチを取り出した。

手加減しながら挟む。スルッと飛び出す。というようなのを繰り返すこと数度、ついに短気を起こして短期決戦を挑む。つまり挟んだ瞬間に握り締めた。

その途端、イヤな感触とバキッという音がして、粉末があたりに飛び散った。ラジオペンチの溝には詰まって取れないわ、椅子の布の隙間に挟まって取れないわ、床は殻の破片が散乱しているし、どうやらとんでもないことをしてしまったようだ。

それでも半分ひしゃげた中身を発見し、食べてみる。

眠狂四郎殺法帖 [DVD](柴田錬三郎/星川清司)

こんなもののために……

( 狂四郎、崖の上に独り立ち、まじまじと手の中の碧玉の仏像――バルバランを見る。)

――眠狂四郎殺法帖

彼はゆっくりとした足どりで岸壁に近づくと、大きなモーションでバルバランを海中に投げ捨てた……ずいぶん遠くに飛んでいった……波の間にポチャンと陽気な音を立てて消えてしまった……

――アンダンの騒乱

ボリス・ヴィアン全集 1(ボリス・ヴィアン/伊東 守男)

語録

_ なんか、みんな同じところにいるな

仕様書で喧喧諤諤

こういう場にしゃしゃり出てくる組み込み野郎は、どうして自分の狭い了見で物事を語るんだろう?

組み込みは、対機械のプログラムだから、仕様は確定可能。エンタープライズアプリケーションは対人間のプログラムだから、仕様は流動的。対機械でシグナルがハイと言ったらそれはハイ。2.5msec以内にACKを返すといったら2.5msec以内にACKを返す。しかし対人間で、OKを選択と言ったら、一体どれだけの可能性があることか。

あと、最初の部分を見ると、機能仕様と実装仕様/外部仕様と内部仕様で議論が噛みあっていないように読めるのだが。で、それを指摘する人間もいるのだが、どうもそういうまっとうな声は小さいようだ。

こういう、人の話も読めない連中が、仕様のような高度に抽象的なものについて語るっていうのは端から見ても滑稽だな。で、人の話も読めないのに、仕様書を読めるってんだから不思議なものだ。(追記:わかった。組み込みと同じことだ。人間じゃなくて機械なんだ)

_ 今日のお言葉

他人が作ったコードは、コメントを頼りに読むしかありません。
なるほど、勉強になりました。
注釈:他人を信用するなという意味に取れば正しい。
 int comp = (int)(Math.random() * 2 + 1);
と書くのではなく、
 // コンピュータの手(グー(0)、チョキ(1)、パー(2))を求める
 // Math.random()はー0.5以上から1.0未満の間のdoubleの乱数を返すメソッド
 int comp = (int)(Math.random() * 2 + 1);
と書きなさいということだ。
こう書けば(何しろコメントを頼りに読むのだから)、るいもさんに笑われることもなかろう。
というか、どうしてこういう事をいえるんだ?
drawメソッドのコメントが「// メソッドの定義」というようにJava言語の構文の説明になっています。 このままでも学習段階では構いませんが、 実用的なプログラムでは「// 描画を行う」のように、メソッドの機能をコメントするようにしてください。
2つのことを言っている。最初のは良い。構文の説明はやめようね、と教えているのは実に正しい。
次のだよ。なんの意味だ? ルビをふれという意味なのか? 対訳をつけろということなのか?
これならまだ理解できる。
// 描画を行う
public void X0E_EYY_00100() {
 ....
}
頼むからコメントを付けてくれ。
こういうのも良いかも。
// 描画を行う
public void a() {
 ...
}
こりゃ楽だね。でもコメント書くのが手間だな? いや、さっさとJavadocの記述方法を教えるべきだろう。
/**
 * 描画を行う
 */
public void a() {
 ...
}
違うな。
/**
 * {@link #x}を幅、{@link #y}を高さに持つ四角を書く。この時、
 * 左上の角は左から{@link #radius}(なぜradiusなのかは謎)、上から10とする。
 */
public void draw() {
 ...
}
とかかな。
考えてみれば、紙上なんで「描画する」としているが、このあたりは現実にはちゃんと説明している可能性はあるな。
具体的な汎化例については出ていないからわからないが、このプログラムのままなら、汎化はインターフェイスによるべきだろう(drawと面積計算しか共通項目が無い)。しかし、描画の開始位置として座標を与えるのであれば、実装継承のほうが良さそうだ(共通の属性として位置が出てくる)。
追記:だからそうじゃないのよ。 という言及しているページを発見。
確かに、最初の部分が無茶苦茶だ。っていうか、コンストラクタも無意味過ぎ(明示的な0初期化は無意味だと思うし)。最低でもコンストラクタに移動すべきだろう(仮に現在の人間が座標を決める方法だとしても)。っていうか、長さ情報がpublicな時点でだめぽだろうな。というよりも、xとかyって なんなんだ? Sankaku s;よりもint xじゃなくてint base、int yじゃなくてint altitudeを指摘して欲しいところ。あと、四角のradius。

_ 層分けの間違い

WRさんのところに書いたコメントは異なる層(分析と実装)をごっちゃにしてるから、だめだめですね。

_ ゲルマン

ア*・ゲルマンという名前を見て、思わず、そこにあったAmazonへのリンクをクリックして、そして少し悲しくなる。

今、わたしが映画をつくることもほとんど不可能に近い。以前は映画をダメにするのはイデオロギーだったが、今では経済状況が映画をダメにしている。

寡作の人に佳作は多いが家作ができた試しがない(なんだっけな?)。

ゲルマンやカネフスキーはどうなったんだろう? 来るのはボドロフばかりなり(嫌いじゃないが)。

本日のツッコミ(全2件) [ツッコミを入れる]
_ xyz (2004-04-23 03:40)

コメントより、正しい変数名!

_ arton (2004-04-23 10:08)

確かに、それが1番の問題だと思います。xとyだったら描画の開始位置を示すとかだったらまだわかるんだけど。あと、フィールド名についてはクラスが異なっても同一プログラム内では同一の意味で使用して欲しい。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|

ジェズイットを見習え