J

2004 | 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 | 12 |
2008 | 01 | 02 | 04 | 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 |

ホーム

日記内の"morihyphen.hp.infoseek.co.jp"へのリンクは切れてます。必要な場合はお手数ですが int.main.jp へ書き換えをお願いします。

TODO: ファイル名確認を忘れないこと > 自分

twitter

 | 

2005-01-28

07:26

あと一日でできるとか書いといて、間にあいませんでした。


まあいいか。とりあえず、今日は超早起き!!午前二時。

しかし、それは早起きではない。睡眠リズムが狂ってるというのだ。


えーと、そろそろ出勤しないと…

[] ちょっとしたUIをさくっと作りたいランゲージ 03:17

ネタ元は、こちら→id:ABA:20050118


もともと、このネタに関しては「HSPとかひまわりとかでいいんじゃないかな」くらいに思ってて、そこらへんの流れで、HSPコンパイラでも書いてみようとするも、「型無し言語をわざわざコンパイルするメリットは薄い」だとか、「サブルーチンの扱いがやばい」とか、そんな感じで、HSPコンパイラネタは放棄。


と、まあ、色々考えたり、考えなかったりして、「やっぱ時代は自作言語だね」ってことで、さくっとちょっとしたUIが書ける言語を作ってみた。

http://morihyphen.hp.infoseek.co.jp/files/sakutto.zip

まだディレクトリ構成が強制されるだとかがあるので、実用にはならないけど、まあ、可能性のひとつとして。


READMEより引用

* ちょっとしたUIをさくっと作りたいランゲージ *

ウィンドウ一個でいいから、ちょっとしたコンフィグ画面をちょろっと出したいんだよねー
とか、そんな場合を想定して作られた、アレのナニ。

こんな特徴を持ってます↓

 ・超簡単、ウィンドウ出現。
--------------------------
funcname WinMain;

BUTTON but("OK",100,100, 100, 20, 1);
popup( this_win );
--------------------------
たった!!たったのこれだけで、(100,100)の位置に100x20のボタンが出てくるウィンドウが作れます。
あと、これやると、WinMainがstdcallとかってWarningが出てくるけど無視!

 ・超現実派、実行バイナリの生成
「スクリプトだとか、Javaだとかが移植性が高い」とか言ってる奴はアレだ、アレ。
まあ、そういうのはどうでもいいんだけど、これで作られたプログラムはランタイムライブラリ一切必要無し。
実行バイナリの力によって、デフォルト状態のWin95とかでも動作するプログラムが生成可能…多分…(確認してない)

 ・超貧乏派、極小実行バイナリ
普通にやっても、10KB以下のバイナリが作れる!!
うまくやれば、5KBまで可能なことを確認済み。

 ・超柔軟性、関数呼び出し
Cの関数が直接呼べます。どのくらい直接かというと、CPUのCALL命令使うくらい直接。

 ・超適当、作りかけ
あんまり真面目に作ってないので使いにくいです。

こんな感じです。

で、プログラムは、

funcname hoge;

extern void *open_file( const char *);
extern void write_line( void *, const char *, const char *);
extern void write_bool( void *, const char *, int );

move( this_win, 300, 300, 320, 240 );

this_win.text = "title";

CHECKBOX check_nanika("use nanika",10,20,100,20);
CHECKBOX check_doreka("use doreka",10,40,100,20);

RADIO radio_a("select A", 120, 20, 100, 20, 1 );
RADIO radio_b("select B", 120, 40, 100, 20, 0 );

BUTTON but( "Ok", 20, 160, 40, 30, 10 );

EDIT edit("please input value", 10, 80, 200, 20 );

popup( this_win );

void *file = open_file("out.txt");

char buf[256];

gettext( edit, buf, 256 );
write_line( file, "edit_value", buf );
write_bool( file, "A", radio_a.check );
write_bool( file, "B", radio_b.check );
write_bool( file, "nanika", check_nanika.check );
write_bool( file, "doreka", check_doreka.check );

こんな感じ。test.exeがこれをコンパイルしたもの。入力された値をout.txtに出力。


えーと、眠くなってきたので、所感とかは明日書く。


あと、mingwかcygwinのbinutils、gccがいります。と、追記

ミスってた。out.txtは削除してからtest.exeを実行してください。と、さらに追記。

ff 2005/01/30 18:34 「さくっとちょっとしたUIが書ける言語を作ってみた」というよりも「さくっと言語を作ってみた」って感じですなぁ(^^) どんどんコンパイラな人になってきた感じが...

w_ow_o 2005/01/31 01:01 とゆーか、全てのプログラマはコンパイラな人であるべきだと思うのですよ。

と、いうような話もあるんだけど、それはどうでもいいとして、実際は他にネタが無いからとか、そんな感じ。

思兼思兼 2005/01/31 22:00  プログラムがどんな形にコンパイルされ、どうやって実行されるのかはできるだけプログラマみんなに
知っていて欲しいけど、どうやってコンパイルするのかってのはどうかなぁ。。。
 とりあえず最終的には、プログラムを使ってどんな価値を生み出すか、どんなサービスを
提供するかが大事で、そこまでつなげない限りは、技術を習得するのはオタク心を
満足させるためだけなんじゃないかと。とか考える漏れは既に会社に洗脳されかかってるかも
しれないと思った。

w_ow_o 2005/02/01 01:54 まあ、それはアレですな。OS屋からしたら、リエントラントなドライバの書きかたとか効率の良いスケジューラーのアルゴリズムくらい全てのプログラマが知ってるべきだ、とか言うんだろうし、ハードウェア屋からしたら、「コンピュータ使ってるやつだったら浮動小数点の回路ぐらい理解すべき」とか言うだろうし、半導体屋からしたら、「超微細技術の基本ぐらい…」とかになるんだろうなぁ…とか、思った。
あと、そういうふうに会社に洗脳されるのは誰でもあることなんだなぁ。とか、思った。僕も数ヶ月前までは、そんな考えになってたけど、真面目さが足りないのが幸いして、今では好きなようにやるのが一番だと学生時代よりも強く思ってたりするのであった。

ここらへんの話は書くとだらだら長くなるのでまた今度、まとまったら書こうかと。書かないかもしれんけど。

トラックバック - http://d.hatena.ne.jp/w_o/20050128
 |