そのうちBASICみたいな簡単な構造の言語ならともかく、そこそこの構造化言語をjavascriptで書くなどはほぼ不可能に近いのではないかとさえ思えてきました。どうりで世の中にjavascriptで書いたまともな(長時間かかるループやプログラムと同期した入出力がちゃんとできる)構造化言語のインタプリタが存在しないはずだ。いうごく初期のBASIC程度のものしか見たことはない。)プログラム遊びをしていれば当然似たようなことを考えてやる人がいるはずですが、今まで多くの人がここらあたりで涙をのんで諦めたのでしょう。ここで諦めてはおもしろくありません。仕事だったらとっくに諦めているところですが、これは遊びですからそうもいきません。(ん、逆か?)会社で仕事をするふり...じゃなかった...仕事をしながらも方策をあれこれ考え、帰ってはそれを試す日々がしばらく続きました。...、ついに、不可能を可能にする年寄りの知恵、な、なんと秘伝の最高奥義と秘技まで繰り出して、やっと何とかこれをのりきったのでした。プログラムはほとんどそっくり書き換えになりました。結局やったことと言えば、プログラムを一要素ずつこまぎれに実行し、都度こちらのスクリプト(処理)を終わらせておきます。あとは必要に応じて(input時)、あるいは時折(1ms毎にとか)システム(javascript&ブラウザ)に戻るということです。システムに戻ったときにブラウザとのやりとりが実行され、その都度画面表示やデータの入力、ボタン操作のチェックなどがなされます。そのあと今度はまたこちらに戻してまた続きを実行します。した処理がなされているように見せかけるわけです。言うと簡単なようですが決してそうではありません。これがためにこのインタプリタのコードはとても複雑で奇々怪々なものになってしまっています。(私がこういう場合のうまいプログラミングの仕方を知らないだけかもしれないけれど。)さらには昨今の記憶力減退が響き、少し前に書いたことや決めたことは忘れるし、まだほかが決まらないからと仮コードなどを書こうものなら最悪でそのまま忘てしまい、エラーになったりおかしな動作をするのでやっと気がつく始末です。老眼でスペルミスにもなかなか気づかないなどという状況が続出。このへんまでくるともうあとは意地でしかありません。外は猛暑でどうせ出歩く気にもならないので、せめてクーラーの効いた部屋で悪戦苦闘していました。...こうして暑い夏は過ぎていきます。お彼岸のころになってやっと通常の制御や入出力などの部分がそこそこ完了。...例年どおり彼岸花が咲いています。お彼岸になると咲くから不思議です。グラフィックの段に入りました。SVGとかCANVASとかいうのを使います。予想通り今度はブラウザの互換性に悩まされます。(MSIE10以下はないのでわからないがたぶん全くだめ。Operaなどはみな一発でOK!。Microsoft系は相手にしたくないけど知人友人で使っている人がいるから仕方なく何とかEdgeだけは対応しました。MacintoshのSafariはわかりません(近くに全然ないんだもん)。"魔法の数"虚数」に載っていたマンデルブロ集合というのを描いてみます。百数十行程度のプログラムですが、これを描くにはけっこうな繰り返し計算が必要でプログラムの速度テストにも使われるようなもの。やってみると、インタプリタでインタプリタを動かすだけあって予想通り予想もできないほど遅い!?。あまりに遅くて不評だったので少しずるして高速化しておいたがあまりこういうのには向かんかな(マンデルブロ描画)。ふつうのちょっとした計算やグラフなら全然問題はないし、そこそこきれいなグラフィックが描けたからよしとしよう。そんな苦労をしながらもやっとの思いでとにかく何とかそこそこ動くものを書き上げたのでした。思えば開始してからずいぶん長い時間がたってしまいました。言っても当初自分なりにやろうと思ったことはだいたいなんとかやりました。"CalcPad"」(以下CALCと略)と名付け、ここに公開させていただきます。普通に計算や既存言語の勉強をしたいならプログラムソースを書けば専用サーバーでしっかりコンパイルしたり実行して結果を表示してくれるオンラインサービスも多々あるのでそちらを使っていただくことにして、こちらは言語そのものから自分でつくる、より純粋で高度なプログラム遊びの世界として見て楽しんでいただければと思います。単なる遊びでただそれだけかというとそうでもありません。自分で言語をつくってみるというのはすさまじく勉強になります(やりきるには相当の覚悟が必要だけど)。自分の用途に合った言語を作成すれば楽に高度な処理を書くこともできそうです。プログラムや余計なボタンなどを隠してオートスタートをかけてしまえば、自分でつくった自分好みの言語でインタラクティブな相当おもしろいページもつくれると思います。ターゲット言語は最初なるべくC言語互換を目指していたのですが、ついつい楽をしようとjavascriptの処理系をそのまま使った部分も多々あり、多少javascriptに引っ張られています。javascriptなどのどれかを知っている人ならほとんどすぐに理解できると思います。機能としては本当に基礎的なもののみで、たとえば構造体やオブジェクトのような高度なデータ処理機能はありません。やりのこしていることなどもいくつかあります。いわゆる構造体やオブジェクトのようなより高度なデータ構造はありません。私自身がほとんど使わないせいです。しても必要なら関数や配列、new、copy、アクセス演算子(.)などを使えば同等のことはできるでしょう。そもそも数学計算からスタートしたので文字列操作系の関数はあまり充実していません。これらは言語によっても非常にちがうため、とりあえず後回しにしてそのままになっているふしもあります。欲しくなったら追加すればいいし。プログラムエディタやステップ実行、トレースモードなど、よりプログラミングをしやすい機能はほしいところです。これで本格的にプログラム開発しようなどという人もいないだろうから、ま、いいか。(→その後プログラムエディタについてはAceというのを組み込んだ版もつくりました。)...今後は暇を見てもう少し改良を加えてみるつもりではいますが。多大なるご協力と叱咤激励を頂きました。ここに御礼申し上げます。...山はもみじに色づきはじめました。冬眠の支度をしなくてはなりません。(追記:2016.12.30)年賀状をやってみたでもまだ今年最後の大仕事、年賀状が残っています。グラフィック機能をつけたので試しに年賀状を書いてみようと思い立ってやってみました。座標をいちいち数字で指定して絵を描くというのはけっこう大変だったけど何とか間に合うよう完成!ただし絵はおもしろさを出すためわざと下手っぽく描いているのでその点くれぐれも誤解なきよう。...ではよいお年を。(追記:2017.7.30)プログラムエディタをつけてみた実際にこれでプログラムを組んでみるとちとやりにくい。ふだんはパソコン(Linuxサーバー)のテキストエディタを使っているが、それには言語のキーワードを色付けしたり語句の検索や置換をする程度の機能はあり、せめてそれくらいの機能はほしい。Aceというブラウザ上で動くプログラムエディタが公開されていたので、これをCALC用に少々改造して組み込んでみた。ほんの一部の機能しか使ってはいないがそれ以外の使わないと思われるコードもそのままになっており、結果、Aceエディタのコードが大部分でエディタのおまけにプログラム実行機能がついたような感じになってしまったけど。プログラム作成はだいぶやりやすくなったので、Ace組み込み版をメインにアップしておいた。ここまでいろいろやってきたけど、プログラムもだいぶ大きくなり、もう今の劣化した頭ではそろそろ限界に近い。このあたりでいちおうよしとしよう。だれか続きをやってくれるという人でもいれば嬉しいけど...。