easy-C (2023.02.09版)
easy-C とは?
- 「easy-C」はC言語をもっと手軽にできたらいいんじゃないかな?というただそれだけの思い付きで始まった開発プロジェクトです。2023年1月10日から始まりました。
- その後、作って使っているうちに、あれこれとやってみたいことが増えて機能をつけ足していきました。また結局この機能はいらないとなって、消えていったものもあります。
- easy-Cは毎日のように改造されつつあって、easy-Cとは何か?も二転三転しているのですが、現状では「C言語の文法が使えるシェル(を目指した何か)」になっています。
- 出発点のアイデアはこうです。・・・#includeとかmainとか、そういうのは初心者にとっては「よくわからないおまじない」でしかありません。いや、それが何を意味するのか、なぜ必要なのかを説明してわからせることもできるでしょうが、結局は毎回同じことを書くだけであって、手間を増やしているだけにすぎません(もちろん上達すれば、#includeを変えたり、mainではない関数も書くようになるのですが)。・・・そうであるならば、いっそ「mainの中身だけ書けばよい」というモードがあったらどうでしょうか。#includeに関してはもう面倒なので標準関数は全部インクルードしておきます。もしこれではかえって不便ということになったら、それはもう初心者卒業だと思うので、このモードを脱して普通にC言語のソースコードを書けばいいと思います。
ダウンロード
easy-C でできること [シェル編]
- 起動するとコンソール画面にプロンプト HL9> が出ます(これはeasy-CがHL-9の改造版として作られたことに由来します)。それでこんなことができます。
HL9>printf("hello, world\n"); ← 一行で書けるなら、C言語でワンライナーできます。
hello, world
HL9>j = 0; for (i = 1; i <= 10; i++) { j = j + i; } printf("sum=%d\n", j);
sum=55
HL9>AWin *w = aOpenWin(256, 256, "graphics"); for (j = 0; j < 256; j++) { for (i = 0; i < 256; i++) { aSetPix(w, i, j, aRgb8(j, i, 0)); }} ← acl1ライブラリを使ったグラフィックもできます。

HL9>run kcubei.c ← runコマンドを使えば1行では書けないプログラムも実行できます。ちなみにkcubei.cは33行のテキストファイルです。キューブが回ります。

HL9>$type kcubei.c ← 先頭に$をつけるとシェルコマンドが実行できます。
static int sqr[24] = { 7,6,2,3, 6,4,0,2, 1,0,4,5, 7,3,1,5, 3,2,0,1, 7,5,4,6 };
int vertx[8], verty[8], vertz[8], vx[8], vy[8], vz[8], sx[8], sy[8];
int centerz[7], b0[160], b1[160], thx, thy, thz, xp, xa, yp, ya, zp, za, xt, yt, zt, t;
AWin *w = aOpenWin(256, 160, "kcube-i"); int y0, y1, x, y, c, dx, *b, yk;
for (i = 0; i < 8; i++) {
vertx[i] = ( (i >> 2) * 2 - 1) * 50;
verty[i] = (((i >> 1) & 1) * 2 - 1) * 50;
(中略)
HL9>$dir hl9.exe
ドライブ D のボリューム ラベルは KIOXIA です
ボリューム シリアル番号は 884B-20D6 です
***** のディレクトリ
2023/02/08 23:09 31,232 hl9.exe
1 個のファイル 31,232 バイト
0 個のディレクトリ 158,890,967,040 バイトの空き領域
HL9>play "cdefedcr efgagfer crcrcrcr c8c8d8d8e8e8f8f8edcr"; ← 「かえるのうた」が鳴ります。
HL9>!run kray.c ← 先頭に!をつけると、gccでコンパイルしてから実行になります。

- テキストファイルにC言語で適当に関数を書いて、保存してそのファイル位置を設定ファイルに書いておくと、
char *myfunc(int a, int b)
{
char *s = malloc(100);
sprintf(s, "hello: a+b=%d\n", a + b);
return s;
}
- コマンドラインから簡単に利用できます。イメージとしてはスクリプトファイル(バッチファイル)を書いている感覚です。だだしこれは(現状のバージョンでは)gcc実行モードでしか機能しません。
HL9>!puts(myfunc(2, 3));
hello: a+b=5
- [まとめ]
- C言語で気軽にワンライナーができる。
- インタプリタ実行だとコンパイル時間がない分だけ速いが、gccとは多少動きが違うところもある。まだfloat/doubleが使えない。
- gcc実行だとコンパイル時間の分だけ待たされるが、実行に入れば速い。
- C言語でスクリプトが書ける。
- シェルコマンドも自由に使える。
easy-C でできること [プログラミング入門編]
easy-C に関する技術的な説明
- easy-Cのhl9.cはC言語で791行のプログラムでしかありません。hl9.exeも30.5KBしかありません。このhl9.exeがあれば、本家のacl1ライブラリを持っていなくても、acl1ライブラリにある機能は一通りインタプリタ実行モードから使えます。Windowsが標準で持っているもの以外はhl9.exeがすべて自前で持っています。結構な働き者で、子供用のPCへのインストールは楽です。
- (準備中)