2007年12月16日日曜日

HSPでの継承

NO.2122
HSPには継承はないのですが
委譲はあるので
継承もやろうとすればできるのだろうけど
やろうとするとこんなかんじになるのかな?
HSPwiki http://quasiquote.org/hspwiki/HSPWiKi
→書き込んだ人のリスト
→y.tack
→HSPでもポリモーフィズムがしたい
→案4モジュール変数を使う
これは継承ではなく、ポリモーフィズムをやろうとしてこうなってますが
つまり、継承したい命令を呼び出す命令を作成すればいいのです

ところが...
さきほど投稿した
HSP開発wiki http://hspdev-wiki.net/
→モジュール
→HSP標準命令と切り離して独自機能を追加するモジュール。
→文字列
→ノートパッド⇔文字列配列変換、操作モジュール
のモジュールが納得いかなくて
リファクタリング案を考えていたら、思いつきました
第一引数に文字列を渡して
その文字列で呼び出す命令を区別すれば
継承される側に、命令を一つ追加すれば、簡単に継承できるのではないか?
HSPwiki http://quasiquote.org/hspwiki/HSPWiKi
→書き込んだ人のリスト
→y.tack
→HSPでもポリモーフィズムがしたい
→案4モジュール変数を使う
それはこのスクリプトとも共通しているんですが
引数とかも全部varでどこかの変数に代入する形にすれば
引数の違いも吸収できます
でも変数は配列にして、スタックしないと再帰呼び出しができないので
そうする予定です
一応、例は
HSP開発wiki http://hspdev-wiki.net/
→モジュール
→HSP標準命令と切り離して独自機能を追加するモジュール。
→文字列
→ノートパッド⇔文字列配列変換、操作モジュール
のリファクタリングが目的なので
スクリプト書きは簡単でしょう
あとは、やる気かなー
でも、たぶん近いうちに、スクリプトを書いて投稿する予定なので
しばし、お待ち下さい

2007年12月14日金曜日

数学嫌いな人のための数学

NO.2121
先日、BOOKOFFをぶら~っとうろついてたら見つけました
結城浩さんのプログラマの数学を読んで以来
簡単な数学の本に興味を持ったからです
と言っても、プログラマの数学を読んで以来
数学の本、読んでないけど
今度、図書館で何か借りてこようか

数学とは(論理学とは)
ユダヤ教より起こるそうです
ユダヤ教における
神と人との争い
そこから、論理が生まれ
論理から数学が発展したそうです

そして、背理法の登場より
仮定方が生まれ
数学はより発展したそうです

僕は中学校の頃、数学で5を取ったことがあるし
中学校の頃、模試の数学で100点を取ったこともあります
数学嫌いは、高校からで
背理法だの
数学の技術だの
その辺で挫折しました

でも、今は、プログラムをやっているせいか
論理学に好感を持っています
哲学も結構好きで
パスカルのパンセも読破しました
哲学に興味があるなら
論理学に興味を持ってもおかしくないですよね

なんか、数学の本なのに、宗教の話が多い気もしますが
わりと宗教の話、好きだからいいけどね

とかいいつつ、僕はこの本をまだ読破していません
でも、読んでて楽しいですね
最近、一日の中でこの本を読んでいる時が一番楽しいです
久しぶりに難しい本を読んで頭が痛くなっています
浪人していた頃は、しょっちゅう、難しい本を読んで
頭が痛くなっていました
3次方程式とか、自力で解こうとしていたし 爆
この頭の痛くほどの、頭脳の酷使を
スクリプト書きにも発揮したいです

とかいいつつ、この本のせいで、スクリプト書きが進みません(ぉ

2007年12月12日水曜日

NO.2120 ノートパッド←→文字列配列変換、操作モジュール

久しぶりにHSP開発wikiに投稿しました
HSP開発wiki http://hspdev-wiki.net/
→モジュール
→HSP標準命令と切り離して独自機能を追加するモジュール。
→文字列
→ノートパッド⇔文字列配列変換、操作モジュール
にて、モジュールを投稿しました
作成の動機は、デバッグ用マクロを集めたモジュールを作成していて
ログの管理にノートパッド命令を使用していたのですが
ノートパッド命令をログの管理にずっと使っていると
ノートパッド命令の使用に制約が出るので
array2note、note2array、arraysave、arrayload命令を使用してみたところ
note2arrayがnotemaxのサイズでメモリを確保していまい
配列に要素を追加できなかったので
少し悩んでいると、モジュールの構想が出来たので
思い切って、array2note、note2array、arraysave、arrayload命令を改造して
ノートパッド←→文字列配列変換、操作モジュール を作成してみたら
簡単に出来ました
肝となる
array2note_at_multi_str_array命令
note2array_at_multi_str_array命令
arraysave_at_multi_str_array命令
arrayload_at_multi_str_array命令。の4つは
array2note、note2array、arraysave、arrayload命令のソースを読みながら書いたので
それが簡単にモジュールを作成できた要因です

hoge_at_multi_str_array という命名は
hoge@multi_str_array と書くつもりで書きました
命令/関数はグローバルな名前空間に存在しますが
僕はその仕様に否定的なので、こうしてます

いちおうwikiに簡単な文も書いたけれど
作成に全然、苦労していないので
命令の理解が浅いんですよね
ま、テストも載せといたので
他の人もモジュールを載せるだけでなく、テストコードも載せた方がいいのではないか?
なんて、思ってます
テストを載せないと、動作確認ができませんからね
つきもののバグはどこでも潜んでいるだろうし
何が動作しているのかは、載せといた方がいいのではないか?
なんて思ってます

よし!これから2、3日かけて、必要なモジュールも完成したことだし
ログ出力モジュールを作成しよう

2007年12月2日日曜日

NO.2119 デバッグ用マクロを集めたモジュール

今、作成している(とは言っても最近サッパリですが(苦笑))
ゲームでログ出力をさせたことに味を占めて
もっと詳しいログを出力させるマクロをいくつか作成中です

ログをノートパッドに出力させることで、ログをファイルに書き出す処理を
書いていて、だいたい形になったのですが
ノートパッド命令は同時に一つしか使用できないので
arrayload、arraysave(hsp3util.as)を使用して
ログの出力をしようとしたのが、運の尽き
arrayload、arraysaveの動作がよくわかりません

それでも、昨日、少し試行錯誤して、一応、使えるメドはたちました
arrayload、arraysave、note2array、array2note(hsp3util.as)は
関連する命令で、スクリプトを読んでみると
arrayload、arraysaveの内部でnote2array、array2noteを呼んでいるみたいです
しかし、note2array、array2noteは何を行なう命令なのかは、全然わかりません
わからないけどarrayload、arraysaveを使えば
今、作成している、スクリプトは動きそうなので
気にしない。気にしない。(しろってw)

arrayload命令はnoteload命令と違って
読み込んだのの最後に追加することができないので
そこをどうやって最後に文字列を追加するか、試行錯誤しているところです
最後に特定の文字列を、設定しようか?とも、思ったけど(やったけどw)
文字列を追加するたびに、毎回、最後の文字列を検索するのも
高価(CPUが)そうなので、やっぱり、最初に行の数を数えておいて
文字列を追加するたびに、それを+1しようかなと考えています(たぶんやるw)
それが終わったら、使用している、マクロの中で呼び出す命令を
(たぶん、マクロの中でしか、呼び出さない)
長めに(衝突しそうにない名前に)改名して
マクロ郡をモジュールで括って、一応完成
そうしたらwikiに投稿しようかな。と考えています
コメントと説明文は余力があれば、書くかな
なんか、やってることが、ややこしくて、上手く書ける自信、ないけどさ

それが終わって、しばらくして、頭の中が整理されたら
ログの集計プログラムも作成しようかな。と考えています
このマクロも集計プログラムも、誰も使わないかもしれないけれど
動機は自分で使うことだし
たぶん、自分はガッチリ使うし
いいかなってさ