拡張子を.abへ

abdev 拡張子を.abへ はコメントを受け付けていません。

突然ですが、AB5では推奨する拡張子を “.ab” へ統一しようと考えています。

現在は

  • “.abp” … ソースコード
  • “.sbp” … ヘッダ

という具合に分かれていますが、ABはプロトタイプ宣言などを必要としないため、特別に “ヘッダ” という概念を設ける必要はありません。よって、ソースコードとヘッダを識別するために2つの拡張子を存在させるのはある意味ナンセンスなのかもしれないのです。

拡張子事典などを調べてみましたが、意外と “.ab” という拡張子は使われていない模様。AB5からは推奨拡張子として利用していきたいと思います。

従来の “.abp”、”.sbp” の拡張子が利用できなくなったりするわけではないので、ご心配なく(^^

ちなみに、(AB5CP3に含まれる)abdev.exeを起動してオプション設定から拡張子を追加することができます。気の早い方は、”.ab” を追加してみるのも良いかもしれません。

カメラとマイク

その他 カメラとマイク はコメントを受け付けていません。

友達に付き添って家電ショップへ行ったついでに、Webカメラ&イヤホンマイクをゲットしました!!

キッカケがあったら、Skypeやらmsn映像チャットやらをやってみたいので、暇な方、お声をおかけくださいm(__)m

おバカな小旅行

その他 おバカな小旅行 はコメントを受け付けていません。

本州最北端を目指して、青森まで遊びに行ってきました~!しかも、20日午後11時に家を出て翌々日の日曜日に帰ってくるという超ハードスケジュールです。静岡~青森は片道950kmくらいあります。

地元の仲の良い連中4人で行ったこの小旅行、とにかく休む暇が無い「どうでしょう」チックなものでした。

↓コレ、本州最北端で撮影したマグロ像とのツーショット写真です。海の向こうに写っているのは北海道!

p1030026.JPG

光ファイバー開通!

その他 1 Comment »

もうすぐ東京へ引越すという際どいタイミングに、実家に光ファイバーが導入されました。まだあまり試していないのですが、体感速度はちょっと速いかなってトコです。まぁ、今回の導入は、実家での高速ネットサーフィンは二の次で、一番やりたかったのはメインサーバーへの外部からの高速アクセスです。これで、ネット環境がある場所からは、自分のLinuxサーバーが自由気ままに使えるようになります。

ネット回線が変わるっちゅーことで、ルーターの再設定と一通りのサーバー・クライアント間の通信テストを行いました。あらかじめ時間を空けておいたのですが、やはり半日はかかっちまいました。

 p1030025.JPG

右手前がCTU(加入者網終端装置、IPv6に対応している模様)です。横にあるのが無線ルーター。配線はキレイではありませんが、頼もしいヤツらです。

なでしこ開発現場の横でグッスリ

その他 38 Comments »

昨日・今日と仕事の関係で東京にきています。本当は昨日日帰りで済むのではないかというスケジュールだったのですが、今日まで延長。

当初はカプセルホテル初デビューを果たす予定でしたが、突如、酒徳さん(なでしこの開発者)のウチに泊まることになりました。

そんなこんなで、昨夜はお決まりの46℃の銭湯(マジで熱いf(–;;;)に行って、これまたお決まりの言語討論なんかもして。

突然押しかけてしまってすみません。助かりました>酒徳ニーサン

AB on Linux

abdev 21 Comments »

ちょっとしたテクニックでActiveBasicがLinux上で動作するようになります。しかもネイティブで。

本日はLinuxでサクサクと動いているABの様子をスクリーンショットでお届けします。

1. まずはGNOME入りのLinux(ここではFedora Core 5)を起動します。

screenshot.png

2. ABをダウンロード&展開(ここではVer4.25を利用しています)

screenshot-1.png

3. ProjectEditorを立ち上げて、簡単なサンプルコードを打ち込んだところです。画面では更にデバッグ実行まで行っています。

screenshot-3.png

4. RADツールでGUIを組むこともできます。フォントの間隔がちょっと怪しいですが、きちんと表示されいます。画面ではAB製のテキストエディタを動作させています。

screenshot-5.png

※これらの実行画面は合成ではありません。詳細方法は後日。ご期待を!

カントリー♪

その他 カントリー♪ はコメントを受け付けていません。

最近はカントリーミュージックを聴きながら作業をしています。

http://www.shoutcast.com/sbin/shoutcast-playlist.pls?rn=7105&file=filename.pls

アーティストや曲名、詳しくはわかんないんですけど、、、イイ曲ばかりですよ♪

タイプセーフなEnumを提供するために

abdev タイプセーフなEnumを提供するために はコメントを受け付けていません。

列挙子を的確に活用することでソースコードの解読性って向上しますよね!?

そこで、AB5ではより高機能な列挙型機能を提供していきたいと思います。まず、AB4に搭載されているEnumステートメントですが、C/C++同様の単なる整数の置き換えだけに過ぎません。当然、定数の右辺値として利用できたりと多様な参照方法があるので便利といえば便利ですが、例えば、Long型にもInteger型にも簡単に代入できてしまうのは欠点です。折角意味のある構造で列挙子を定義しているのですから、意図しない型への代入は避けるべきだと考えるのが筋です。

そこで、AB5では列挙型をEnumBaseから派生するクラスとして捉え、列挙子はそのクラスのインスタンスという扱いにしていこうと思います。

こうすることで、異なる列挙型間のキャストに規制がかかり、各列挙子の意味が明確になります。

また、定数としてしか評価できなかった従来法と異なり、プログラム内から列挙子の名前を取得できるようになるなどのメリットが生じます。例えば、Select文で数値を元に分岐を行い、それに対応する文字列を表示するなどの処理がEnumBaseを継承することで一行で済んだりします。

Enum Test
    a
    b
End Enum

Dim e As Test
e=Test.a

Select Case e
    Case a
        Print "a"
    Case b
        Print "b"
End Select

このようなソースコードは下記のように書き直すことができるようになるというワケです。スッキリ!

Enum Test
    a
    b
End Enum

Dim e As Test
e=Test.a

Print e.ToString()

コンパイラが管理すべき静的変数の初期化タイミング

abdev コンパイラが管理すべき静的変数の初期化タイミング はコメントを受け付けていません。

C/C++、C#、VBなどでStatic宣言による静的変数、適材適所で利用できれば大変便利な機能ですよね。普段は何気なく使っている静的変数ですが、コンパイラを製作する上で、静的変数を取り込もうとすると、なにかと問題が生じるものなんです。一筋縄ではいきません。

静的変数はローカル領域内で参照可能でありながら、一つのアプリケーションでは唯一の存在になる変数です。ようは、任意のローカル領域内からのみ参照できるグローバル変数ってヤツです。

これをバカ正直にグローバル変数として定義していると変数名の衝突が起こりかねませんね。コンパイラは静的変数の名前管理は一ひねりする必要がありそうです。実体はグローバル領域にあるので、対象となるローカル領域がいつ呼び出されようと、アプリケーション内に存在するすべての静的変数はプロセス開始時に初期化され、終了時に破棄しなければなりません(破棄の場合は必要に応じてデストラクタを呼び出してやる必要があります)。

ユーザーの皆さんは直接的に関係ありませんが、ABの静的変数の内部表現は下記のようになっています。

Sub test()
 Static a As Long
End Sub

このような定義があったとすると、この静的変数aはグローバル領域に下記のような名前で管理されます。

Static.[class].test.[id].a

※クラスメソッドの場合はclassにクラス名が入ります。
※idにはすべての関数を識別可能な排他値が入ります。

本来であればクラス名と関数名と変数名ですべての静的変数を表現できるのですが、ABには関数のオーバーロード機能が付いているんですよね。なので、idという排他的付加データが必要になるというワケです。

これで静的変数の表現は可能になりました。あとは、変数名の前についている名前空間データを識別してアクセス規制をかけるだけです。こうすることで、グローバル領域に確保された変数データを任意の関数内から参照可能になります。

さて、もしこの変数aが何らかの実体オブジェクトだった場合、コンストラクタを呼び出すのはいつになるのでしょうか?正解は関数呼び出しではなく、アプリケーション初期化時です。ABはプロセス開始直後に_System_StartupProgram関数がコールバックされる仕組みになっているので、このタイミングで静的変数の初期化をしてしまおうと考えています。

こんな感じで、静的メンバに引き続き、静的ローカル変数の対応もほぼ確実にものになってきました。残るは静的メソッド。今夜じゅうはムリかな~

Staticステートメントを実装中

abdev Staticステートメントを実装中 はコメントを受け付けていません。

静的ローカル変数、静的メンバ、静的メソッドを利用するためのStaticステートメント(または修飾子)の実装を行っています。

なんとか夕方の時間で静的メンバは利用できるようになりましたんで、あとは今夜にかけて静的ローカル変数、静的メソッドを実装し、デバッガ整備とエディタのコード補間を有効にすれば完了です。

些細な機能ではありますが、なかなか根気がいる作業でごわす(汗x2

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