夏は早いよぅ

abdev 夏は早いよぅ はコメントを受け付けていません

もうすぐお盆になりそうな今日この頃…ジョニー先輩とのどうでもいい会話です。

ジョニー先輩「山ちゃん、大学4年の夏ってのは、過ぎるのがめちゃくちゃ早いよ。ホントにあっという間だよ。”あっ” て言ってみろよ」

おいら「あっ」

ジョニー先輩「クリスマスになったら、”という間だったろ!” って言ってやるよ」

もう暑いのだけはマジ勘弁なのですが、こんな時期もすぐに過ぎてしまうものだと思うと、ちょっとシンミリとしてしまいます。ウチの店にも秋物が本格的に投入され、そのスピードは加速されたようにも感じます。

レゲエを思いっきり楽しめるのもあと一ヶ月ちょっとといったとこでしょうか。音楽のほうも秋物を仕入れにゃなませんね。2005年秋は大人っぽく、ジャズでせめたいところ。ジャズといっても、クラシックジャズ、サックスジャズ、ジャズボーカルなどがあるのですが、最近のポップスに近い、入り易そうなSMOOTH JAZZの領域に踏み込んでいきたいと思っています。

今から従兄弟とCDショップ行ってくるんで、今のウチにゲトります(^^

演算部分の改良計画 〜作業の様子1〜

abdev 演算部分の改良計画 〜作業の様子1〜 はコメントを受け付けていません

今日は夕方から家業の配達の手伝いがあるので、それまでは開発を進めます。

まずは、問題にあがっているキャストの問題。すぐにキャスト可能な仕様に改良することはできないので、ことはじめとしてコンパイラの演算コード生成部をすべての型に対応させるところから始めます。今まではコード軽量のため、一定の型(Double/Single/Int64/QWord/DWord/Long)のみに制御を絞っていたのですが、今後はInteger/Word/Char/Byte及びその他ポインタ型の識別も可能にしていかなければなりません。

中核部分をいじるのは数ヶ月ぶりなので、ちょっと不安なんですよ(–;;;。コンパイラを製作したことがある方ならわかると思うのですが、コンパイラを記述しているプログラムコードっていうのは、対象となる言語仕様が複雑になればなるほど難解になっていくんです。ABは、仕様を追加しまくる方向できているので、例外事例にムリヤリ対処するためのコードが目立つんですよね(汗)。

まぁ、そういうこともありまして、マイペースに作業を進めているところです。お昼の段階で、演算コード抽出ルーチンで対応できる型を基本型すべてに拡張したところです。今後は型識別コードでは表現しきれない付加識別コードに対応させていきます。

型識別コードとは?

・Char/Byte/Integer/Word/Long/DWord/Int64/QWord/Single/Double

・文字列型

・オブジェクト型

・列挙型

・基本型のポインタ型

・オブジェクトポインタ型

・関数ポインタ型

これらの型を識別すめためのID番号。コンパイラ内部で使用されるため、一般のプログラマーは意識する必要はないっす。

付加識別コード

オブジェクト型、列挙型、オブジェクトポインタ型、関数ポインタ型など、1つの型識別コードだけでは表現できない識別情報を持ち合わせます。

例えば、オブジェクト型、オブジェクトポインタ型の付加識別コードには、クラスを指し示すID番号が振り分けられます。

この文章、読み返してみたら、暗号のようなものになっていますね。コンパイラを作る過程での悩みが相談できる人(かなり特殊なケース!?)ってのは幸せです。おいらはいつも一人ぼっちですから…。

ABの演算部、大改良計画

abdev ABの演算部、大改良計画 はコメントを受け付けていません

キャストの問題が出てきてから色々と考えているのですが、ABの演算部分がかなり簡略化された構造になっとることを再確認させられました。こいつはおいらが1人でABを開発することから、コードの軽量化とその内容のわかりやすさを重視した上でのことであり、言語仕様としては劣る部分でもあります。そこらへんの甘さが、キャストの甘さに繋がっているんですね。

コンパイラの内部構造の話になってしまいますが、ABコンパイラを製作する上で、与えられたBasicの式コードをもとにアセンブラの演算コードを抽出するルーチンがあります。このルーチン、字句解析はもちろんのこと、すべての演算子とすべての型を熟知したものでなければなりません。構造自体はスタックを活用したシンプルなものではあるのですが、扱う演算及び型の種類は日々、多くなっています。この演算と型、掛け算方式で肥大化していくのです。

いわれてもれば、一つの演算をアセンブラコードに変換するためには、右辺、左辺がどのような型なのか、双方の型が違う場合は、どちらの型を優先して演算を行うべきか。足し算だけを見ても、実数演算と整数演算で使用する機械語コードは違うんですね。実数演算ではDouble型とSingle型があるので、2通りに対応するものを作る必要がありますし、整数演算では符号有り無しの考慮、Integer、Word、Char、Byteなど、ビット数が少ないものも考慮しなければなりません。

まだ基本型ならばいいのですが、ポインタ型になるとまたちょっとややこしくなります。ややこしくなる原因はオブジェクトポインタを扱ったときです。AB内部で型を識別するための型コードだけでは、オブジェクトポインタの種類を見分けることはできないからです(オブジェクトポインタはクラスの数だけ存在することになりますから…)。となると、「オブジェクトポインタ」という一つの型コードと、別途クラスコードを管理する必要がでてくるというわけです。

この演算抽出のルーチン、コンパイラ内部のあちらこちらから呼び出されるので、オブジェクトポインタを考慮したものに書き換えるというと大きな作業になってしまうんですね。

こういう問題を抱えつつですが、近日中にキャストの問題をクリアしてより繊細な演算ができるような仕様に拡張していきたいと思います。ウーン、「次回のバージョンアップで…」というのはちと難しいかもしれません。少なくとも、Ver4.1あたりで対応させたいところです(><)

涼し〜い軽井沢、下見という名の日帰り旅行

abdev 1 Comment »

旅慣れしていない山本家を8月末に襲うのは、軽井沢貸し別荘(3日間だけ)移住計画です。こういうのをやったことがないんで、下見が必要だろうということで、従兄弟とその子供を引き連れて下見に行ってきましよ。

片道250km程度、「どうでしょうサイコロの旅」並みのこの計画…時間どおりにことが進むか、ちょっと心配です。出発地は静岡市、駿府公園付近。目的地は中軽井沢駅のすぐ近くのパークコテージになります。

行きは、富士山を見ながらR139号を北上します。←こいつはいつものお決まりルートといったところでしょうか…、牧場あり、公園ありの超定番観光道路ですね☆

精進湖を抜けて中央道へ。せっかくなので、諏訪南I.C.で降りて八ヶ岳で昼食をとることにします。本日のレストランはおいらが過去に一度だけ行ったことのある、超オシャレなところなんです。

その名も、廃材王国「カナディアンファーム」。森の中に外国風チックな木造の建物があり、木々に囲まれながらステーキを食べるというメチャクチャ贅沢なセッティングがたまらないんです(><)。おいらは2回目ながら、カナディアンファームのとりこになってしまいました。もうリピーターと言わせていただくしかないですf(^^;;;

カナディアンファーム:

http://canadianfarm.hp.infoseek.co.jp/

昼食で金と時間を使いすぎてしまったので、あとは軽井沢へ向けてドライブ×ドライブです。R152号を北上後、R141号へ出て軽井沢へと近づきます。

2時間後、なんとか中軽井沢駅周辺に辿り着いたのはいいんですけどねぇ〜、渋滞がですねぇ〜、発生しているんですねぇ〜

中軽井沢駅周辺。アウトレットとか、巨大ショッピングセンターがあるのもここらです。多分、都心から「夏は軽井沢で…」とはしゃぐ連中(まぁ、おいらの家族もそうなんですけど)が列を連ねているんだろうと思います。

山本家が予約しているパークコテージの看板を探しますが、なかなか見つかりません。ついに発見できぬまま、軽井沢を過ぎて群馬県へと突入してしまいました。また渋滞へ戻るのもイヤなんで、R18バイパスを駆使してパークコテージ周辺道路へ戻ります。←ナビに頼らない、我ながらいい判断です(方向感覚×自信過剰)。この後結局、周辺道路を歩いていた見ず知らずのオッサンに場所を聞いたのでしたf(^^;;;

パークコテージへの道順を押さえるという最大の目的が達成できたところで帰り道へと進みます。後はひたすら静岡へ向かって走るだけ。後部座席のお2人は熟睡モード全開だったので、おいらは寂しく、1人ドライブを楽しみながらっつー感じでした。

七輪バーベキュー、大成功

abdev 七輪バーベキュー、大成功 はコメントを受け付けていません

今年初めてのバーベキューをやってしまいました(*^o^*)。集まったのはバイト仲間、総勢16人!ウチの裏庭の草を刈りまくって、バーベキュースペースを確保するところから始まったこの企画。昼間から若い男連中の協力を集います。

これはメチャクチャ暑〜い中、汗水たらしながら草刈をした後の様子です。大の字になっとるのはお決まりのジョニー先輩。このお方はこの直後全裸になったかと思えば、風呂へ入っていったのでした…。

庭がキレイになったところで、昼酒をやってからバーベキューの下準備を始めます。今回のバーベキューは七輪を使うとのことで、準備はとっても簡単。七輪をセッティング後、スミに火をおこすだけです。あとは定期的にスミを追加していくだけ。これで一日中バーベキューができてしまうというワケです。昼間組(草刈&準備組)は5人だけだったので、さっそく昼酒バーベキューを始めますf(^^;;;

これは、もう日が落ちてからの様子。室内の明りを全開にして庭を照らしています。ウチに来てくれたお客全員にはバーベキュー&室内飲み会を楽しんでもらったのですが、クライマックスはなんといってもは花火でしょう。

最初は手持ち花火から始まったのですが、行為はどんどんエスカレート。噴射花火から打ち上げ花火へと…、花火男や花火の上にジャンプしちゃうのまで、とにかく盛り上がりました。最後は線香花火、誰が一番持続できるか大会などなど、「夏」そのものを見れたので、おいら的にはもう大満足です☆

まだまだ夏は長いです。こういうの、もう一発くらいやりたいっすわ

ABのタイプキャスト問題

abdev 1 Comment »

型チェックの甘さが問題になっていることについて、考えをまとめてみます。

元々、Basic言語というヤツはタイプチェックしてないっぽいですよね(–;;;。あったとしても、数値型と文字列型の判別くらいでしょうか…。

10 a=”1″

20 b=2

30 c=a+b

40 Print c ‘3と表示される

元祖Basicでは、上記のようなプログラムが平気で実行できてしまいます。インタプリタBasicでは変数管理がどのようになされていたのか、わからない部分ではありますが、ネイティブコンパイラのそれと比べて柔軟な自動タイプキャストがなされていたことは事実なようです。

で、そういう風潮を受けつつ開発を進めたABなんで、型チェックの甘さがあって当然なんですね〜。元々の言語仕様に「タイプキャスト」という概念が無いんですから。

さてさて、コミュニティフォーラムのほうで話題になったのは、「Long型変数へBytePtr型データを代入するとエラーになるが、パラメータ引き渡し時にはエラーにならない」という問題です。

実はこいつ、結構厄介な問題なんです。一見すると、Long型にポインタ型を強制的に代入しようとしているんだから、ネイティブコンパイラとしてのABではエラーになって当然なのですが、Win32APIとの連携・柔軟性を考えると100%そうともいえないのです。SetWindowLong関数を例にあげて説明してみましょうか…

Declare Function SetWindowLong Lib “user32” Alias “SetWindowLongA” _

(hWnd As HWND, _

nIndex As Long, _

NewLong As Long) As Long

Win32APIの一つであるSetWindowLong関数、第3パラメータ、NewLongというパラメータに注目してみてください。こいつはLong型であることがわかるのですが、ヘルプでは「32 ビット整数値」と記されているんです。32ビット整数値…Win32上で作動するWindows環境では、これに当てはまる値は沢山あるはずです。Long型、DWord型はもちろんのこと、ハンドル、ポインタ、RGB値と、色々挙げることができます。

  • GWL_EXSTYLE 拡張ウィンドウスタイルを変更します。
  • GWL_STYLE ウィンドウスタイルを変更します。
  • GWL_WNDPROC ウィンドウプロシージャのアドレス、またはウィンドウプロシージャのアドレスを示すハンドルを変更します。
  • GWL_HINSTANCE アプリケーションのインスタンスハンドルを変更します。
  • GWL_ID ウィンドウの ID を変更します。
  • GWL_USERDATA ウィンドウに関連付けられたアプリケーション定義の 32 ビット値を変更します。

こういう具合にNewLongには、ウィンドウスタイル(Long型)、ハンドル(DWord型)、プロシージャアドレス(ポインタ型)を指定することになるのですが、肝心のAB Ver4.0にはタイプキャストをユーザーが任意で行える環境が備わっていないんです。となると、ある程度のタイプキャストは自動的に行ってユーザーの負担を減らすというのが自然な流れになり、Win32API呼び出し(関数呼び出し)に限り、タイプキャスト(特にLong型へポインタを…)が甘くなってくるんです。

しかしABには、C/C++、Delphiなどの高級コンパイラ言語に対抗するだけの仕様を持たせたいって願いもあるんですよね。長いことABユーザーをやられている方、またはABウォッチャーの方は私がそういう姿勢でコンパイラ製作に取り組んでいることは薄々感ずいていることと思います。

仕様がなければ、追加すればいい。これにつきます。

しかし、過去のプログラム資産(Ver3.x、Ver4.04.00までに製作されたソースコード)を無効にしてしまうような仕様変更はできないので、注意して取り組まなければなりません。

原案として、#strictディレクティブを再出現させようか検討中です。これを導入したら、CDbl、CSng、CIntなどのタイプキャスト関数をコンパイラに組み込んで演算過程で評価していかなくちゃなりません。

実は、#strictってVer2.xのときにあったんです。覚えてる方、いますでしょうか??当時は暗黙の宣言を禁止する目的で指定するディレクティブだったのですが、Ver3.0から消え去ったので、型チェックを厳密に行うための識別子として利用しようってことです。←またまたC/C++みたいって言われちゃいそうですけど(^^;;;

大掃除、もう後伸ばしできません

abdev 大掃除、もう後伸ばしできません はコメントを受け付けていません

今日は、実家静岡で色々とすることがあるんで、そいつをこなして、午後は大掃除タイムに入ります。というのも、明日はバイト仲間で七輪バーベキューをやる日。当然、おいらのウチが会場となるワケです。人数が意外と多いため、おいらの部屋と庭と、掃除をしなくちゃあなりません。

山ちゃんちでパソコンやらせてよ、という(?)な要望も出ているんで、今日はディスプレイ裏の埃取りなど、普段は手をつけないようなところもやってやろうと思います。掃除は苦手なんすよ…しぁーねぇー( ̄Д ̄)

サーバーダウン!?

abdev サーバーダウン!? はコメントを受け付けていません

今朝、DiscoversoftのWebサイトに接続してみると、「サーバーがみつかりません」エラーが(*д*)

アクセスログを見てみると、どうやら午前3時〜午前9時までの5〜6時間、サーバーが停止していたようです。深夜、早朝というアクセスが低い時間帯ではありますが、長時間に渡っての停止状態はちと痛いです(><)。

こういう場合は、XREAのサーバー障害掲示板にでも書き込んでやったほうがよさそうですね。暑い日でダウンするのは、サーバーも同じだったり…

棚卸、参加せず(~~;;;

apparel 棚卸、参加せず(~~;;; はコメントを受け付けていません

昨日、今日とウチの店は棚卸です。そう、今現在、店舗が抱えている商品をすべて、ストック類もあわせて、数を確認し、商材を確認するという気の遠くなる作業を行う日なのです。この日だけは出勤可能なスタッフはすべて集められることになるのですが、おいらはナゼか不参加部隊(-д-;;;;;

不参加の理由を店長に聞いたら、「山ちゃんは販売部隊専門だから、作業を軽減しておいたよ〜」と甘〜いお言葉が(-v-)。

しかしこの棚卸、気の遠くなる作業ではあるのですが、皆とワイワイいいながら(遊んでるわけじゃないっすけど…)進める作業でもあるんですよね〜。当番になれば「めんどくせぇー」と。でも、いざ外されてみると「俺だけ仲間ハズレかよ〜」という具合にになります。(←ワガママ部分、突出です)。なので昨日は棚卸部隊が夜出勤する前に帰ってやりましたよ、おいらは。

ちょっと気が早いのですが、明後日はバイト仲間で七輪バーベキューを企画しております。場所はウチの庭なんで、ドキドキですわ〜、掃除だ掃除(焦)。多人数お泊り会でもあるアヤしそ〜なこの企画…どんな夜になるんだぁ〜、今から楽しみですわ!

夏アイテムを貪欲に

apparel 夏アイテムを貪欲に はコメントを受け付けていません

昨日は7月最終日ということで(あまり意味はないんですけど…)久々に本気モードショッピングを決行しました。静岡呉服町付近には地元ながらセンスのいいセレクトショップが数店存在します。

本日購入した夏アイテムは以下の三つ。買いすぎました(汗

High Street – ラメ入り白ストライプシャツ:

脇にそって細身ラインが強調されるシャツを探していたんですが、なかなか見つからず、静岡マルイの中にある、High Streetというブランドショップでこのブツにめぐり合いました。お値段はなんと、シャツのクセに13000円とお高くついてます。まぁ、形がめちゃくちゃ気に入ったんで、ラッキーでした。

キレイめトップスにあわせるといったら、ダメージジーンズですね。ズタズタになっているやつはあまり好きではないんで、ポイントごとにちょっとした破れがあるタイプをチョイスしました。こちら、色落ち具合も抜群だったんで、ここぞという夏日に大活躍しそうです。

形は、リーバイス501に近い感じですかね。太さは気持ち細め、太ももにちと余裕ありって感じです。股上が浅いのを探していたんですが、こちらは残念ながら深いです(~~;;;。高校生のガキじゃないですけど、ちょっと落とし気味で穿くしかないですな。

ラストに、最近買い渋っていたクツを奮発。おいらは大のティンバーランド好きなんで、今年の新作を選びました。途中、RED WINGの渋〜い茶系ブーツと格闘してしまったんですが、インナーを折り返せるオシャレさと、何気にリバーシブルになるハイカット部分を持つ、ティンバ―2005モデルが勝ちました。今日はバイトなんで、早速履いてきます。おいらにとって、ベージュブーツは初めて!いい味でるといいなぁ〜(><)

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン