今月の活動 (ミローネ言語、並行リバーシの試作など)
- 前回 (2020-11-30) https://vain0x.github.io/blog/2020-11-30/diary/
ミローネ言語
https://github.com/vain0x/milone-lang
- 最初のバージョン (v0.2.0) のリリースを目指している
- リリース前に必要な作業:
- エラー処理の改善
- 主要な機能のドキュメント
- 自明でないサンプルアプリ
- 実装されていない機能や不具合のある機能にエラーを出すようにしていく
- feat: Support OR patterns including bindings in NameRes など
- エラーが正しく報告されないアプリを使うのはストレスが高いため
- 標準ライブラリを用意している
- 文字列操作など
- 最低限の LSP サーバーを用意した
- コンパイルエラーの報告やシンボル参照の検索とかができる
- フィールドとか入力補完とかはまだ
- 型検査や単相化で微妙に壊れるケースをいくつか見つけたので直したい
並行リバーシ
https://github.com/vain0x/reversi
- ブラウザ上で動くリバーシを実装した
- 並行リバーシも実装した
- 三目並べの各セルが 6x6 のリバーシになっている
- 互いにいずれかのリバーシに1手ずつ指していく
- リバーシに勝ったセルは三目並べの石になる
- それぞれのリバーシからすると片方のプレイヤーが連続で指す現象が生じる
- 複数のサブゲームを並行に進める形式のゲームはいろいろ作れそうと思っていた
- 突き詰めて考えると時間がかかりそう
- 急ごしらえながら形にしておいた
- CPU (AI) 対戦もほしい
その他
.nojekyll
Bypassing Jekyll on GitHub Pages - The GitHub Blog
- GitHub Pages にデプロイするとき Jekyll のビルドがサーバー側で走るらしい
.nojekyll
というファイルを置いておくと抑制されてデプロイが速くなるらしい
データ指向アプリケーションデザイン
「データ指向アプリケーションデザイン」を読んだ。
- 紹介文の冒頭に「現代の分散システム設計においてデータの扱いは重要な課題です」とあるように分散システムや大規模データの話が多い
- 私の場合、分散システムや大規模データに触れる機会はあまりない
- それでも write-ahead ログやエンドツーエンドの ID などのアイディアや書き込みパスと読み込みパスの境界といった考え方は頭に入れておくとどこかで役に立ちそうな感じがある
- 第2章にあるようなクエリ言語は knowbug の実装に応用できそう?
- デバッガーが持つ変数などのデータは一種のグラフデータベースをなしていて、その状態の読み取りはクエリであるため