2021/05/06

少し先の未来

PWCT 2.0 公開後の Ring はどうなるのだろう。 もしかしたら SuperNova のような扱いになるかもしれないし、 PWCT 2.0 のリリースに合わせて Ring 2.0 になるかもしれない。あるいは、2030年代に別の言語をまた開発するか、 Ring よりも性能の高い言語へと迎合するのも考えられる。

たとえそうなったとしても、 Ring に関われたことは公開しない。それでいいと思う。

連載計画内容

5月の内容はインストール方法などの環境構築。

第一期は Light Release の範囲内を重点的に解説する予定です(自然言語ライブラリなどを追加することも考えています)。それに加えて、対初心者施策のほかに Ring の弱点であるマルチバイト文字や正規表現の改良もできたらしたいところです。

第二期は、 C コンパイラを導入しまして、低水準寄りに踏み込んだ内容にできたらいいです。ブラックボックスを解体してわかりやすくするのが目定です。バグを潰したり、安全性能を向上したり。もっと活用できるようにするために、できることは色々あるはずです。

こうする理由は、あまりにも拡張機能が多すぎて Ring の本質が伝わりにくいのかもしれないと思うからです。ですから Light Release くらいに絞って、そのままの良さを体感してほしいと思いますり

第三期は実用ソフトウエアの制作です。ワープロ、メッセンジャー、あるいは古典的な作曲環境にするかはまだ決めていません。これは 2025年前後の総括になるかと思います。

それ以降は、PWCT 2.0 とほかの処理系と併用するするなどの理由で、それ以上は出ないと思います。

連載期間は一年半程度とします。どの期間もコマ数が余ったら、前倒しをする予定です。

連載方針

真面目に書いたって読まれるか、ちゃんと試していただけるかは別の問題です。自分らしく書きつつ、あまり色を出さないようにあっさり目に書きます。

もちろん。書いてない、わからない、むずかしいは避けます。それでも、書きたくないところや未完成のところがあっても仕方ないです。

目標は緑茶のような読みやすさです。美味しいけど普通に。それでいいと思います。つまり、この機能はすごいんだぞ。は目障りなので、事務的に話を勧めます。

2021/05/01

うん。まあ。

マイナー言語の「Ring」なんかゲフゲフやら「Nim やってくんなくて腹立つわ〜」みたいなことを一部でモヤモヤしているかたもいるかと思います。わかりますが。我慢や耐えるだけではダメなことくらいわかると思います。そんなことよりできたあとにあたふたしないよう準備を進めてください。

今年は仮訳を仕上げます。その間に Qt などのライブラリを整備しておいてくださいな。詳しく言うと Ring の生命線は業界標準のライブラリやフレームワークが使えることですから、 Nim のエコシステムがその水準に達すれば……ちゃんと Nim のほうを続けるでしょう。

Sphinx: サブディレクトリの使いかた

ざっと検索しても出てこないので、 GitHub で conf.py を探すことに。

cpython の docs フォルダを眺めていればわかるんですが、 あれは caption があるとダメです。 sphinx-quickstart で作ったのは、サブディレクトリに index.rst 置いてリンクしてもエラーが出るので、わかってないとハマるかもしれません。

軽量版サイト

pandoc で manpage を変換したもの...は無理でした。自動で分割してくれませんので単独ページだけで 5MB くらいあります。事前に index.txt を整理・分割して make man で出力し続ける面倒なことになりそうです。仕方ないので、軽そうなテーマを。

結論は Pallets Projects 製の Pallets Sphinx Themes を template でカスタマイズしてウェブサイトと統合ですかね(画像は整理・縮小なりします)。

このくらい情報量を落としたほうがいいって人もいますからね。悪くはない選択かと思います。

Lynx for Sphinx のようなプラグインは無いのでボツ。

XMLパーサー

テキスト→tmx 変換ツールを書いていて、XML処理ライブラリが弱いことに気づく。 Web ライブラリにエスケープ関数ないん? →自前で書くことに。

正直 Cコンパイラ入れて cf ファイルを眺めながら tinyxml2 の拡張機能を作ったのほうがいい気がしますが。今回、やっていることはアライメントを合わせた原文と訳文を read と str2list で読み込んで、エスケープ処理後にXMLのテンプレートにはめ込んでいるだけです。そんなこんなで、そこまで高度なことはしていないので別にいいかと。

Jyupter Notebook への対応

あれば「統一学習環境」として便利だけど、無くてもいいような。結構作り込むのは大変っぽい。 Ring には Ring ノートパッドと RingREPL があるので、誰も作りたがらない気がする。できたとして Ring の軽量版に簡易統合開発環境を付けられるくらい。

とはいえ、筆者としては軽量化を使った連載ほ予定もあるので、設定や配付が楽にできる Jyupter Notebook 風のソフトウエアを探してみようかと思います。

PWCT

非常に古いツールが使われていて、ローカライズできない上に相変わらず文字化けするからね。アウトライン形式でソースコードを書きたいなら Code Browser がある。

正直、いつまで Visual FoxPro を使い続けるのだろうか。去年、PWCTのデモ動画が公表されたけど、それ以降の話を聞いていない。

https://github.com/SebastiaanKlippert/go-foxpro-dbf があるけど Go で作り直す野望はない。