担当授業のこととか,なんかそういった話題。

主に自分の身の回りのことと担当講義に関する話題。時々,寒いギャグ。

お手軽数式環境。

2024-04-14 17:49:23 | 情報系
コロナ禍の時期に VSCode で手軽に数式入りのメモを作成する技能を獲得した。

その少し前から,この goo blog に対する大きな不満というか限界というか,ブログ記事内で気軽に数式表示を使いたいという願望が抑えきれなくなり,Terrence Tao 氏をはじめとする現代の名だたる数学者たちが WordPress で数式入りのブログを楽し気に執筆しておられるのを横目に見て大変うらやましく感じておったので,Mathlog や MathWills といった,日本発祥らしき数理系の記事に特化したようなブログサービスに手を出したり出さなかったりしていた。

今調べたところ,Mathlog は MathJax 系らしいが,残念ながら TikZ に対応しようと試みているものの,まだ実現していないとのことであった。ただ,私が参照した文書には日付がなかったので,実は少し古い記事で,現在は対応済みなのかもしれない。

確か私が最初に見つけたのは Mathlog だったと思うのだが,なぜかその後は MathWills に手を出した。MathWills は KaTeX を利用している。

その経験があり,VSCode でも KaTeX が使えると知り,現在ではすっかり KaTeX 派である。

ところが,KaTeX は元から TikZ に対応していないそうなので,その点が困っている。

また,VSCode では Mermaid というダイヤグラムを非常に手軽に描けるスクリプト言語も利用できるが,ダイヤグラム中に KaTeX のコードをラベルとして使用するのは難しそうであった。Mermaid の開発者が開発中と思しき記事をネットでいくつか見かけたし,"\" を含まない,例えば $y=ax$ のような通常のアルファベットや記号のみで記述できるようなものならば Mermaid のスクリプト中で KaTeX がちゃんと動いているようなのだが,$\int f(x)\, \mathrm{d}x$ みたいなコマンドは,私が試した限りではエラーが出てしまってうまくいかなかった。

TikZ で図を描きたいということならば大人しく本家の LaTeX で文書を作成すればよいといわれれば,それは至極もっともでございますけれども,例えばスマホでも利用しやすい授業資料として,文中に練習問題を仕込み,その解答を折りたたみ式ですぐそばに置いておけばとても利用しやすいのではなかろうかと考え,そのような仕組みを実現するには,HTML と LaTeX の機能をごちゃまぜにできる,VSCode で Markdown という選択肢が私の知る限り,現時点で最良なソリューションのように思われるのである。

実際にはそもそも TikZ で図を描いた経験がほとんどないし,これからも習熟度が上がる見込みは全くないのであるが,手軽な数学メモの作成にわざわざ LaTeX を使うのはどうかな,なんて余計なことを考えている今日この頃である。

そんな折,Typst なる新興勢力が存在することを知った。こちらは KaTeX やら MathJax とは異なり,そもそも TeX とは異なる組版システムらしいが,私が VSCode において KaTeX を用いた数式入りメモを作成している程度と同等のことは Typst 単体で可能なようである。だが,やはり TikZ のような描画機能はないらしい。

HTML 寄りで図を描くとしたら,一つの選択肢として SVG があろうかとも思うが,そちらは Rob Janoff 氏が提供して下さっている SVG 版の Apple ロゴに,さまざまな半径の円で齧り跡を追加して芯だけが残った "iApple" ごっこで遊んだくらいで,数式で表された関数のグラフなどを描くのは大変そうである。

そこでも素直に JavaScript に頭を下げればよいと言われるであろうが,将来的にはそうするしかなさそうだとは覚悟を決めている。

ところで,TeX に対して Typst なるものがあるように,Haskell を学んでみたいな~と前々から想いを寄せていたところ,PureScript なるものが存在することを数日前に知った。

Haskell に近い言語で,しかも JavaScript が生成できるらしい。

また,CASL II/COMET II に関連して,符号ありの数として扱う算術演算と,符号なしの数として扱う論理演算の違いというか,演算結果に関するフラグの立て方について,未だに理解が及んでいないのであるが,その悩みを解決する参考書は無いかと探しているところである。

問題はアセンブラ言語というよりも,機械語レベルというか,演算結果に応じたフラグの立て方といった,CPU の動きそのものといった極めて低レベルな部分での話題であるため,computer design ではなくて,computer arithmetic と呼ばれるジャンルの話かなと当たりを付けているところである。

1968 年に日本評論社から出版された一松信氏の『電子計算機のプログラミング』という,今からみてもはや半世紀も前に書かれた本であるが,やはりその内容はどちらかというとプログラミング技法の紹介といった感じのようなので,二進数の演算のような,プログラミング以前の話題は取り上げられていない。

その本のシリーズ第一弾に該当する『電子計算機と二進数』(1965) なる著書もあるそうなので,そちらにならば私が求めていることが書かれているかもしれないと大きな期待を寄せているのだが,あいにく,私がアクセスしやすい図書館には所蔵がない。そのため,ついつい Amaz〇n でポチってしまった。送料も含めて 1,000 円ちょっと。全然高い買い物ではないが,これ以上紙の書籍を増やしてしまってもな,という気持ちがあるせいで,やや気が重い。

実はちょうど 1968 年は Knuth 氏の生涯を賭けたプロジェクトの一つである "The Art of Programming" シリーズの第 1 巻が出版された年でもあったようだ。

CASL II/COMET II のような,今後当分顧みられる見込みがなくなってしまった絶滅危惧言語で遊ぶくらいなら,Knuth 氏がやはり精魂かけて編み出したという MMIX(エム・ミクス)を学ぶ方がうんとマシかもしれない。

ということで,このところ,3 つのジャンルで宗旨替えをしようかどうかと迷っている次第である。

KaTeX → Typst.

Haskell → PureScript.

COMET II/CASL II → MMIX/MMIXware.

なお,プログラミング言語である PureScript と MMIX にはどちらも手厚いサポートが充実している公式サイトがあるが,どちらも参考プログラムとして真っ先に挙げているのは,もちろん,Kernighan 氏による B 源吾のチュートリアルに見られる "hello, world" プログラムである。

余談であるが,たまたま行き着いた Go 言語なるもののチュートリアル・サイトで "Hello, 世界" と書かれていたのにはおったまげた。

余りに驚いて,サンプル・コードを「こんぬつは, 世界~!」に書き換えてしまったくらいである。

今どき,日本語の文字列を表示するプログラム言語は珍しくもなんともないであろうが,メニューや本文が英語で書かれたサイトなのに,見出しに「Hello, 世界」と書かれているのは,改めて見返してみても案外インパクトがあるものである。

ちなみに,我が(?)十進 BASIC なら,専用のソフトウェアを起動し,その編集画面に
PRINT "こんつぬは,世界~!"
END

と書いて実行ボタンを押せば,別窓が開いて「こんつぬは,世界~!」と表示される。事実上,1 行プログラムと言ってよいであろう。実にお手軽である!

Windows ならば Windows キー+r で cmd と打ち込んでコマンドプロンプトを立ち上げた後,
echo こんつぬは,世界~!

と入れて Enter キーを押せば,打ち込んだ文字列がそのままオウム返しに表示される。

こちらは真の 1 行プログラムである。
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ある勇気。 | トップ | 約物 { } の呼び名。 »
最新の画像もっと見る

コメントを投稿

情報系」カテゴリの最新記事