« 2005年10月 | メイン | 2005年12月 »
2005年11月09日
日常の出来事
[ネコラジ]
なんかラストがなにあれって思った。
別に奇をてらったラストにして欲しいとは思いませんが、何だかちょっとがっかりしたかもしれませんね。
なんだかこう、コーディングをしていて、仕様書も曲りなりにも一応作って、各々の機能を果たす部品も作成して、さあ、後は結合するだけだってなった時に何かもうどの部品もそれなりに動いてるし結合するのも面倒だなあってなって、
まあ、一応せっかく作ったんだから結合して、ちゃんと動いたけどあーなんかもっと違う物作りたいなーって思ってほったらかしにされたガラクタがその辺に散らばっている感じ。
いや、別に、何度か書いてるPerlのBBSモドキの事じゃないですよ。あは、あはは。
あれはそんな立派な物ですらないし。
[Perl]
結局、乗り越えなきゃならない壁って物があるんですよね。
そりゃーまー、動くだけなら作れますよ?
いや、そんな事言っても3Dエンジンとかコンパイラとかぱっと思いつくだけでそんな物作れないし!と思うような物はいくらでもありますけど、そこまで突っ込んだ意味でもなく。
でも、そうじゃなくて、言語習熟とか以前に、設計論とかを全然知らないし知ろうともしていない部分が大問題。
勉強すべきだし、自分がプログラミングをもっと知りたいなら、JAVAだC++だPerlだPHPだ言う前にまずやらなくてはならない部分であるのに。
あるのに。
……あるのに…。
本を、探すだけ探してみようか。探すだけは。
ネットゲームで心が折れても単に止めたらいいだけですが、
リアルで心が折れても人生を止めるわけにはいかないので、
一応希望となりそうなリストを残します。
0.当たり判定に必要なデータ構造とアルゴリズムについて勉強するぞ!
1.簡単なインタプリタを作成するぞ!
2.インタプリタを使って外部スクリプトから制御できる一発ネタを作るぞ!
3.DirectX9を使ってグラフィカルな何かを作るぞ!
4.DirectX9を使ってグラフィカルで内蔵したインタプリタでスクリプトを実行して実用可能範囲で拡張が容易なデータ構造とアルゴリズムを用いたシューティングゲームを作るぞ!
0.例のPerlプログラムを完成させるぞ!
1.データを単純に1ファイルだけに記録するのではない、拡張と保守と処理が容易なデータ構造を考えるぞ!
2.コメントを付ける事ができ、複数のユーザーが同じスクリプトから使用でき、画像を添付できるような日記もどき(所謂BLOGのような物)を作るぞ!
3.MySQLを使ったデータ保存/処理の為の自分なりの枠組みを作ってみるぞ!
4.何らかの要請があった場合にいつでも最小限の労力でシステムを組めるようにライブラリを作り、整備するぞ!
0.デザインを決めるぞ!
1.データ構造を決めるぞ!
2.スクリプトを書くぞ!
3.管理するぞ!
4.某同人サイト
0.空の軌跡をクリアするぞ!
1.SCをクリアするぞ!
2.XANADU NEXTをクリアするぞ!
3.FEをやるぞ!
4.GWをやるぞ!
ほら、こんなに楽しい事がこれからも待ち受けてるんだし、頑張らないとね。
ゼミ?バイト?バイト?バイト?知らない。そんな物は知らない。最初から存在していない。
時間にルーズでメールにぞんざいな口調で全然関係無い内容の返信を送ってくる社長なんて知らない。
[ゼミの説明会]
そんなわけで、今日はゼミの説明会に行きました。
といっても、教授vs学部生*2という小規模な面談ですが。
http://www.pro.or.jp/~fuji/computerbooks/c/c.modula2.html
その教授は、酷評されているこの本を書かれた方で、ついでにナップサックの厳密解がどうとか昔日記に書いた記憶があるその人です。
なんでも懸命な営業の結果、アメリカの研究機関が食いついてきて、今日自宅に記者を呼んでプレゼンをしたらしいですよ。
その研究の内容が果たしてどれほどの物なのか、凄いのか凄くないのかさっぱりわからないですが、もしそれが全て本当の事なら、割と凄い事をやっているんだと思うんですけどね。
誰もやらない、やろうとしない事を、そのやろうとしない理由がどうであれやろうとする所は結構凄いと思うんですよね、私は。
で、本なんですけど、その教授は評判が大層悪い事を知っていて、もう二度と本なんて書くものか!と憤慨されていました。
本の内容についてレビューでは意味がわからないと書かれていますが、直接話を聞いたら納得しましたね。
つまり、この教授はプログラミングで壁にぶち当たって、試行錯誤した結果がこれだったわけです。
背景には研究者の間ではFORTRANが使われていたけれど、その教授はどうも上手く馴染めなかったか亜種に慣れてしまっていたかなんかそんな感じの理由で、とにかくFORTRANじゃ勝てない、という事で色々やった結果、自分の武器としてこのヘッダファイルを手に入れた、という事だそうです。
そして、自分のような悲劇を後から来た人にも繰り返させないためにも自分にとっての解決法を提示しよう、と、まあ、そんな感じの意図でこの本を作ったようです。
それでまあ、今の年齢になってもコードが組める、そして動く、と、教授の必要としている範囲での力を確保できているのだから、それはそれで一つの方法として間違っていない事は明白でしょう。
問題は、それが他人に受け入れられるかどうかって事で、少なくともそのようなマクロまみれのC言語が他人にとって使いやすいか、使う事によってどれだけの利益が得られるかというと、まあ、無理でしょう、色々と。
ライブラリとかじゃなくてマクロって時点でかなりピンチですしね。
なので、酷評は仕方ないと思うし、私も正直この教授が講義で課題に使う事を要求してくるこのマクロ入りヘッダファイルは好きではないですが、教授の意図は良くわかったし、主張する事も好感が持てる(力でコーディングしていては結局30代で記憶力が衰えてくると行き詰る、最終的に使い捨ての人間にしかなれない)ので、割と話を聞きに行ってよかったなあと思いました。
でも、この教授の講義は全然良くないと思うけど。
2005年11月03日
baseutil.pl
自分用汎用関数ライブラリ BaseUtilityTools
■関数ライブラリ
#---ファイル操作関連---------------------
#---ファイルロックに関しては呼び出し元が責任を負う
#-------プライマリーキーによる操作関数群
■file_replace_line_by_key(filename,key,separator,line,locate)
指定プライマリキーのデータを入れ替えるfilename,key,separator,line,locate ex)'text.log','3','\t,"test\tdata",0'
■file_delete_line_by_key(filename,key,separator,locate) {
指定プライマリキーのデータを削除するfilename,key,separator,locate ex)'text.log','3','\t,0'
■file_read_line_by_key(filename,key,separator,locate)
指定プライマリキーのデータを読むfilename,key,separator,locate ex)'text.log','3','\t,0'
#-------ファイル読み込み関数群--------------------
■file_read_line(filename,linenum)
指定ファイルの指定行目を読み出す
■file_read_all(filename)
指定ファイルの全行を読み出して配列を返す
#------ファイル書き込み関数群--------------------
#------全て改行は自分で入れる事
■file_inser_line(filename,string,num)
指定ファイルのnum番目にstringを挿入
■file_add_bottom(filename,str)
指定ファイルの最下行にstrを挿入
■file_add_top(filename,str)
指定ファイルの最上行にstrを挿入
#---フォーム作成関連---------------------
■insert_form_date(%date)
全時間データが格納された連想配列を受け取り、年月日の入力フォームを表示
■insert_form_day(%date)
現在の年"$date{'year'}"を持った連想配列を受け取り、今年を既選択とし、去年と来年を指定可能なプルダウン要素を表示
■insert_form_month(%date)
現在の月"$date{'month'}"を持った連想配列を受け取り、今月を既選択とし、1月から12月までを指定可能なプルダウン要素を表示
■insert_form_year(%date)
現在の日"$date{'day'}"を持った連想配列を受け取り、今日を既選択とし、1日~31日までを指定可能なプルダウン要素を表示
(月による日数の変化には対応していません)
#---時間関連-----------------------------
■hash2time
nowtimeと同じ形式の時間からtime形式に変換
■time_by_data(time)
time値を受け取り、%TIME形式に変換
■nowtime
現在時間を連想配列で返す。 キーは、 sec,min,hour,day,month,year,week
#---ヘッダ送信---------------------------
■send_locater($url)
$urlへジャンプするヘッダを送付します
■send_htmlheader()
text/htmlのヘッダを送信します
#---HTML特殊処理関数----------------------
■htmlspecialchars(str)
指定文字列のHTML特殊文字をHTML特殊文字化
#---表示関数-----------------------------
■my_error($code,$message)
codeとmessageを埋め込んだエラー画面を表示します
■insert_html_head($title)
$titleをタイトルに持つ共通ヘッダを挿入
■insert_html_foot()
共通フッタを挿入
利点:
・これらをフラットに1ファイル内で書くと可読性が著しく低下する
・なんだかいいきぶん
欠点:
・バージョン管理が面倒
・そもそもちゃんと動くの?