00:02
こんばんは、2024年4月26日の夜です。
いつも日付を覚えていなくて、iPhoneの通知タブを出して日付を確認して、
この講演日記の一番最初の日付のコールをしています。
今日は、awkの話をしたいと思います。久しぶりですね。
以前、この講演日記で、awkのブログアプリケーションの実装をしているという話をしていたんですけど、
それは、gawkというグルームウォークという処理系で動いているものなんですけど、
他の処理系で動かすとしたらどうなるかみたいなことを話してみたいと思います。
グルームウォークというのは、awkの数ある処理系の中でも多機能なので、
そのgawk独自の機能に結構依存している部分があるんですよね。
なので、もし他のawkの処理系でこのアプリケーションを実装するとしたら、
考えなきゃいけないことというのは、いろいろあって、
具体的にどういうものなのかという話をしたいと思います。
一つは、TCPRPのソケット通信ができるというところです。
これは、gawkの機能として、ファイルの読み書きとかと同じような感じで、
基本的には似たような感じで書けるというものですね。
これは他のawk処理系の中で、それに依存しているから、
そのままだと移植できないというのがあります。
他にどういうものがあるかというと、
他には、Shellのコマンド実行と標準で出力の受取というのもあります。
Sixの奥には、システムというコマンドが確か定義されたと思うんですよね。
でも、gawk以外の処理系でも、
Shellのコマンド実行というのができて、
それはシステムという関数があって、
それにShellのコマンドを渡すと、
別のプロセスで、そのShellコマンドを実行するということができます。
ただ、標準による、渡して標準出力を受け取って、
そういう入出力というのがあまりうまくできなくて、
これがうまくできるって、これに依存しているというのがあります。
これが二つ目ですね。
03:03
あと、三つ目が、言語拡張ですね。
C言語でエクステンションがかけられるっていうのがグループに多くありまして、
gawk-extlibっていう言語拡張のライブラリーがあって、
これの一つかに依存しています。
依存しているのは、おすぐれのクライアントと、
JSONのエンコーダーデコーダーかな。
あともう一個、他にもいろいろあるんですけど、
もう一個あるのは、そんなところかな。
ガイドの入出力っていう意味ではそんなところ。
主に三つですね。
APIキー通信とオフィシャルのコマンド追加と、
あとは言語拡張、あとは記法ですね。
そんなに何とでもなるようなところで言うと、
実はネームスペースがあるので、
gawkの要件からネームスペースの機能があるので、
それを使っていますが、他の処理系にこの機能がないんですね。
これは別にそんなになくても書けるので、
何とでもなるっていう感じかなと思います。
あともう一個は連想配列、多次元の連想配列。
これは結構他のウォーク書いててほしいなと思うことがあって、
ジオクにしかなくて結構困るポイントなんですよね。
他のウォークの処理系で連想配列、
多次元の配列っぽいことっていうのも実はできて、
なんですけど、そのときって、
ポイっていうだけで、配列のキーに複数の文字列を渡して、
それをセパレータで区切って、
一つのキーにするっていう感じなんですよね。
なので多次元の配列っていうよりは、
一つの配列、一次元の配列なんだけど、
そのキーが複数のキーによって整理するっていう、
そういうような感じで、
ウォークには構造体もないですし、
高い層でデータを持つっていう機構が全然ないんで、
結構連想配列ないと書けなくはないと思いますけど、
ちょっときついなと思います。
06:02
そんなところですかね。
あとは大体ないですかね。
なので逆に言えば、これらの機能を他のプログラミングゲームで実装できれば、
他の処理系で実装できれば、
他の処理系でも動くってことになりますね。
有望なもので言うと、
LibMorkっていうのは確かあって、