音楽とかスポーツでは言葉は通じなくても気持ちが通じます。囲碁や将棋も同じです。はじめに言葉があった。それは「光あれ」でした。歌にもあるように Hello-GoodbyeでありYes-NoでありLove-HateでありLight-Darknessです。その方は光であり、いのちであり、愛です。
ペンテコステのできごとが示すことは天の御国では言葉の壁はないということです。それがcamp zionの目指すところです。
RDBなどでシステム構築をするときに、あとになってデータ項目を追加しようとすると大変な苦労があります。ところが、消費税が生まれたり、軽減税率ができたりと、社会からの要求というものがあります。最近は食料品の二年間ゼロなどという意味不明な発言も出ていますしね。システムの仕様は決してフィックスしないものだと考えるべきではないでしょうか。
だとしたら、システム開発の時点でデータ項目を追加可能にしておく、あとのせデータ項目を基本としてシステム開発をしていくべきだという主張があるわけです。その例題として、camp zionというものを提示していこうと考えています。これまでにもいろいろと提案してきましたが、またまた違う実装方法を考えています。内容はたいして変わりませんけどね。
2026.5.24(Sun) ペンテコステですので、言葉の壁について考えます。バベルの塔以来の言葉の壁を越える方法として聖霊の働きがあると示されたのがペンテコステです。これをcamp zionおよびcampus zionとして提示していこうと思いますが、総称としてProject Zと呼ぶことにしようと思います。はじめに言葉ありき、では言葉とは何か。数学のジャンルとして形式言語学(Formal Language)がありますが、これはチョムスキーの生成文法とチューリングのオートマトンの等価性の証明から始まっているわけです。ところで、チューリングは数学者ですがチョムスキーは文系の人なのですね。このギャップを埋めるのは神学(Theology)であるというのが、パスカルの主張です。
さて、プログラムを算譜と呼ぶと音楽の楽譜と囲碁将棋の棋譜と合わせて三つの言葉は言葉の壁を越えるコミュニケーションツールであるとも言えるわけです。以下はプログラミング言語Adamのところで詳しく述べていきたいと思います。
人工知能(AI)にはなくて人間にあるものとは何でしょうか。横軸には遊びと学びの違いがあります。縦軸には楽しみと苦しみがあります。両極端のように見えけど同じ一本のようにも見えます。囲碁や将棋は人間にとっては遊びと学びの両方であり、楽しみと苦しみの両方でもあります。それは人間には見えるけどAIには見えない世界です。どれほどAIが強くなったとしても、人間だけしか知ることのできない世界があるのです。それはプログラミングにも音楽や芸術にも言えることではないでしょうか。
音楽のコンクールでもスポーツや囲碁将棋の大会でも、勝てば勝つほど狭くなる。言葉の壁を越えるコミュニケーションツールと考えれば一つ勝ったら望外の喜びとして堂々と負けることを心がければ良いではないか。そう考えれば、たとえAIに完敗してもどうということはないのだ。
ところで、AdamとEvaというよりAdamとEveではないか、という気もする。そこで、Advanced Data Action ManagerとExpanded Visual Executorの略だということにして、Eveにしようかと考えたが、変更の手間が面倒なのでやめている。どっちでもいいかあ。
今回はプログラミング言語の名前をAdamとして開発ツールの名前をEvaにしました。Adamで作ったアプリをEvaで動かすというイメージです。具体的な展開は、遊ぶcamp zionというところで進めています。まずは、hello zionというところからです。その中身は
Eva(100, 200) : Tab("昼")
{
Case[言語]("日本語")
{
Text("こんにちはシオン")
}
Case[言語]("English")
{
Text("Hello Zion")
}
}
というような感じです。テキストファイルなので、ダウンロードしてメモ帳などで見てください。いろいろと、いじってください。
ここからの予定ですが、今までwin32ベースで開発してきたものをwin64に移しつつ、Evaへの一本化をしています。ポインタとかタイマーが64になっていて意外と手間がかかっています。信号機の話では、押しボタン式という例を作ってみるつもりです。
そのあとは、Data,Event,ObjectをEvaで一元管理するDEO Trinityというような話をもう一度という考えです。下の方にフォームがあるので意見があったら出してみてください。管理情報のメールアドレスも変えたので届くはずですけどね。まあ、このフォームが使われたことが一度もないので、どうなるのかわかりません。
ちなみにブロックされる件については、なんでブロックするんだとしか言えません。まあ、そのように言っていますので。ほぼほぼ言いたいことは言っているので誰も聞いていなくても、いっこうに困らないではないかという話ですね。ははは。
あまりこの話を追及しても大したことになりそうにないので、一休みしてから元のデータベース路線に戻そうかと思います。設計方針にはいろいろとあり得るわけで、毎回少しずつ違うというわけです。
プログラムとしてはたいして進歩していない気もしますが、赤黄青のライトをつけてみました。ちなみに、またまたブロックが出ましたが、リビルドしたらこちらでは動きました。皆さんのことはわかりません。やはり、まっくろソフトは黒ずくめの悪の組織だ。
昔々、銀の弾丸についての論文がありました。それって狼男についての迷信でしょ。それよりも正統な神学を持ち出した方が良いのではというお話です。そもそもプログラミングとは言葉によるデジタル世界での創造です。言葉による創造とは神の世界です。
Eva(Expanded Visual Automaton)を記述するのがA言語です。これはAutomaton Design Action Managerの略です。つまりAdamですね。というのはAdamからEvaが造られたと書いてあるからです。
オブジェクト指向がうまくいかないのは単なる物体(Object)だからです。神の息である霊を受けることでAutomatonとなるのです。というような話になっています。とりあえず、ここまではAutomanがStateを動くことができるという話をしました。信号機といえばカラフルな色が必要ですし、Evaという存在もファッションには興味があることでしょう。ということで、次はグラフィックの扱いを考えてみたいと思います。その先にはデータの管理と活用という話になるのですけどね。
プログラミングの神学の始まりはSystem Genesisとなります。シリコンと呼ばれる高度に純化された土の結晶からAdamなるA言語が創造され、そこからEvaが造られます。Evaの意味は、すべての生きたものの母です。
Visual C++を使ってEva.exeというアプリを開発しているのだが、開発環境からデバッグのために実行しようとしてもブロックされて動かないことがある。ところが、動くこともある。これでは皆さんがダウンロードしても動かないかもしれない。
フィードバックしろという話だが、さっぱり意味がわからない。もしわかる方がいたら、よろしく。ロ
ちなみに、問題になった最新版のEva.exeとテストデータのsignal2b.txtをダウンロードできるようにします。
こちらは開発元なので皆さんがダウンロードしてちゃんと動くかはわかりません。何かあったらマイクロソフトの方へ
5.4 またまた。報告してからリビルドしたら動いた。どういうメカなんだろう。
ついでに信号機の意味論をひとつ。向こうが青なら、こちらは赤にするしかない。つまりタイミングは青を終わりにする方が決めます。この例のようにバトンタッチする方法は人間の手作業と同じです。状況に応じて伸ばしたり縮めたりすることもできます。
またボタンで開始するのは、押しボタン式への応用を考えています。最後に、文字だけでは寂しいので赤黄青の丸を表示させることも考えています。
従来の実時間(Real Time)は将棋や囲碁の秒読みと同じで、早すぎてもオーケーです。シン時間(True Time)とは音楽と同じで早すぎても遅すぎてもアウトです。シン時間は神の時間です。時にかなって美しいのです。
従来のプログラミングでは時間稼ぎにfor(i=0;i<100000;i++)などの無意味なループを書くことがありましたが、これではアプリがフリーズします。三つ数える間にイエスかノーかを答えろと言っても入力を受け付けないのでは答えるすべがありません。待っている間は相手からの返答に耳を澄ませるべきなのです。シン時間は神の時間です。静まって聴くときです。
無意味なループにはもう一つの問題があります。マシンによってスピードが変われば時間も変わることです。シン時間は神の時間であり、唯一絶対の存在です。
シン時間は音楽と同じです。音楽でタイミングを取るには自分でカウントすることとタクトに合わせることの二つのケースがあります。またユーザーからの入力を受け付ける方法としてキーボードとマウスがあります。これらはシステムグローバルであり、パソコン全体で一つしかありません。
どのようにしたらこれらの複雑なイベントに統一的に対処できるでしょうか。この問題の解決のために有限状態オートマトンを拡張したEva(Expanded Visual Automaton)という考え方を提案します。有限状態オートマトン(Finite State Automaton)とは双六(すごろく)のようなものです。いくつかのステートがあり、そこで与えられた入力に対して決められた対応をして次のステートに移動します。
というわけで例題の一つとして、三つ数えるからイエスかノーか答えろというものです。いきなりタイマーが動き出しても困るので、まず待ち状態から始まります。クリックによってタイマーがスタートして三秒以内にエンターかエスケープのどちらかのキーを押すことを求めます。もし時間内にどちらかのキーが押されなければタイムオーバーとなるというものです。
もう一つの例題として信号機を取り上げました。信号機とは赤青黄と変わるもので、一台では意味がありません。二台で使うものです。そして相手が青の間は赤にしなければなりません。もし人間が操作するとしたら相手から「どうぞ」という連絡を受けてから青にするでしょう。同じことをプログラムしてみました。
ここで面倒なのは相互に連絡をする必要があることです。クロス参照ということで、プログラムを作るのに考え込んでしまいました。
まあ、とりあえず動いたので実行ファイルと例題をアップします。もう少し詳しい説明は整理してから。
信号機が二つあったとします。お互いに相手の様子を見てというか、青になっているほうがストップさせて赤にしてから相手にオーケーを出すと、受け取ったほうは一定の時間を待ってから青にします。これをプログラムにすると、受け取るほうはPostであり、送るほうはMailということになります。なんかややこしいですが動くようにしました。
それ以前にホームページの方を整理しないといけないですね。プログラムがややこしくて時間がかかってしまいました。
ここでは従来の書き方で説明しています。そこで指摘した課題を解決するために開発したEvaというツールを次のタブで提供しています。リセットができるようにしました。
ところで、ようやくパソコンを買い替えました。VCも有料版にしたし、ちゃんと動くしぼちぼち仕事をするぞ。
従来の実時間(Real Time)は早過ぎは黙認です。シン時間(True Time)は神の時であり時にかなって美しいのです。従来は時間待ちに無意味なループを回すことがありましたがアプリがフリーズして操作不能になります。シン時間は神の時です。静まって聴く時です。ループの数で時間調整をするとパソコンごとに速度が違います。シン時間は神の時です。唯一の存在です。
と言うことで、例題を作ってみました。
ソースコードの主要部部は次のとおりです。大変に読みにくい。これは、マウスとキーボードとタイマーはシステムグローバルだから誰が相手か分からないからです。Windowsの悪魔の実ですね。非常に強力だけどコントロールが難しい。
マウスとキー入力とタイマーはシステムグローバルということは、処理する関数も相手の変数もグローバルということで、流れもどこから来るのか予測不能という最悪の設定だとは思いませんか。
enum { T_NONE, T_WAIT, T_YES, T_NO, T_OUT };
int state;
int x, y;
SIZE sz;
BOOL bIn;
long long unsigned beginTick;
void OnPaint(HWND hWnd, HDC hDC)
{
if (state == T_NONE)
{
const TCHAR* str = _T("Click Here");
GetTextExtentPoint32(hDC, str, lstrlen(str), &sz);
x = 100;
y = 100;
TextOut(hDC, x, y, str, lstrlen(str));
}
if (state == T_WAIT)
{
const TCHAR* str = _T("yes: Enter no: ESC");
TextOut(hDC, 100, 100, str, lstrlen(str));
}
if (state == T_YES)
{
const TCHAR* str = _T("Hello world");
TextOut(hDC, 100, 100, str, lstrlen(str));
}
if (state == T_NO)
{
const TCHAR* str = _T("Goodbye Honey");
TextOut(hDC, 100, 100, str, lstrlen(str));
}
if (state == T_OUT)
{
const TCHAR* str = _T("time out");
TextOut(hDC, 100, 100, str, lstrlen(str));
}
}
void OnMouseMove(HWND hWnd, int xx, int yy)
{
if (state != T_NONE)
{
SetCursor(LoadCursor(NULL, IDC_ARROW));
return;
}
if (x < xx && xx < x + sz.cx && y < yy && yy < y + sz.cy)
{
bIn = TRUE;
SetCursor(LoadCursor(NULL, IDC_HAND));
}
else
{
bIn = FALSE;
SetCursor(LoadCursor(NULL, IDC_ARROW));
}
}
void OnLButtonUp(HWND hWnd, int x, int y)
{
if (bIn && state == T_NONE)
{
state = T_WAIT;
beginTick = GetTickCount64();
InvalidateRect(hWnd, NULL, TRUE);
}
}
void OnKeyDown(HWND hWnd, int key)
{
if (state == T_WAIT)
{
if (key == VK_RETURN)
state = T_YES;
else if (key == VK_ESCAPE)
state = T_NO;
InvalidateRect(hWnd, NULL, TRUE);
}
}
void OnTimer(HWND hWnd)
{
long long unsigned tick = GetTickCount64();
if (state == T_WAIT && tick - beginTick > 3000)
{
state = T_OUT;
InvalidateRect(hWnd, NULL, TRUE);
}
}
void OnCreate(HWND hWnd)
{
SetTimer(hWnd, NULL, 100, NULL);
}
イベント駆動では制御を手放すのでフローチャートが書けません。無理に書いてもブツ切れの断片だけです。しかし、ある種の自動機械(Automaton)であると考えて、その動作仕様を記述するとしたらフローチャートが書けます。こんな感じです。
あるいはオートマトンの遷移図と考えることもできます。これは、より大きなアプリの部品の1つと考えることができます。従って、動作を標準化して記述することで従来できなかったプログラムの部品化と言うことも実現できるのではないでしょうか。
この自動機械をExpanded Visual AutomatonからEvaと呼ぶことにします。この動作仕様を記述する言語をA言語と呼ぶことにして、これを動かすツールを含めて提供することを考えています。ちなみに自動機械(Automaton)という言葉はパスカルから来ています。
オブジェクト指向ではコードとデータの一体化をしますが、Evaではコードとデータの直交化を目指します。というのはマウス・キーボード・タイマーはシステムグローバルだからです。
ぶどうの木と枝には直交性があります。平面図では枝ぶりは見えるが木は見えない。側面図では木は見えるが枝ぶりは見えない。オブジェクトならぬオートマトンが実を結ぶにはイベントとの直交性が必要です。このようなわけで、弟子たちには十字架が理解できなかった。
ここで、神の時間とEvaの関係を考えてみます。神の時間は時にかなって美しく、静まって聴く時であり、唯一絶対の存在です。これらは旧約聖書にある言葉であり、守るべき律法です。しかしパウロが言うように人間には律法を守ることができません。そこに罪があります。まず自分の罪を認め、救い主を信じなさいとパウロは言っています。
創世記3:12にあるようにAdamは罪をEvaのものとしました。13節でEvaは罪はサタンの誘惑に負けた自分にあると認めています。15節で救いは女の子孫からくると福音(Evangel)の預言がなされます。神学の論文では最後のまとめはローマ書から引用する必要があるとか。そこは専門の方に任せて、とりあえずEvaという名前はEvangel(福音)から来ていますといっておきます。
イベント駆動でのEvaの考え方はワーグナーの楽劇から分かる。マイスタージンガーではEvaの立ち位置は脇役でしかないようだが、すべての登場人物はEvaを中心に動いている。それに対してEvaができることはメッセージを受けるか拒否するかの二択しかない。逆にEvaからメッセージを出そうとしても、ことごとく失敗に終わる。
プログラムの話に戻すとクリック・キーボード・タイマーといった相手役からのメッセージに対して適切に対応することがEvaのプログラミングとなる。YouTubeで見たがワーグナーはとにかく長い。
と言うところで、YouTubeでフィデリオを見た。しかも新着。カラヤンのCDにはなかったレオノーレ三番が入ったのにも納得、そうだったのか。これをライブでやるなんて、ビックリ。コメントにもありましたが、安心してください、字幕があります。英語のですが
昔々、カラヤンの全曲版をLPで買ったときはめちゃ高かった。CDを買ったら格安だった。YouTubeは無料でCMもなし。そういう時代なのか。Hail der Tag
一応フォームを出してあるけど、いままで一件も来なかった。ところで、これまでのメールアドレスがパソコンを新しくしたら継続できなくて、読めない状態になっていたので、もしかすると来ていたのかもしれない。とりあえず、5.2現在で契約内容のメールアドレスを変更したので、もしかすると読めるかもしれない。まあ、来ればの話ですけどね。
プロフィール
システムクリエイター 神野勇気 (Yuki Kamino) 愛称 ゆっきい! (Yukkie!) 境界領域のスペシャリスト 166cm
好きな将棋の駒 歩 座右の銘 と金の遅早 好きな音楽 トリスタン前奏曲とイゾルデの愛の死 あるいは
ワルキューレの第一幕、熱いワーグナーの美味しいとこだけ、シェーンベルクも好きだけど、こちらは冷たい。
学際学の会(Mediological Sociecy)の提唱者 … 単なる任意団体なのだ。提唱者とは言ったもん勝ちということ。