前回F#で作るとか書いていましたが、
使いやすいライブラリを作るには言語の文法を熟知しないといけないので、
やはりC#で。
新人時代に会社で作ってから、
似たようなものを作り始めたのは3回目です。
1度目 7年前
オブジェクト指向を学びつつC#の文法の解析を行う。解析結果はオブジェクト指向化できたが、解析のロジック自体をオブジェクト指向化できなかったため保守性が悪い。
2度目 3年前
解析のロジックをオブジェクト指向化。それも事前設計ではなくテスト駆動開発で設計を進める。ロジック記述のライブラリができた時点で満足してしまってC#の解析は中断。
3度目 今
前回ライブラリは作ったものの、使い勝手が今一つだったので、きっちりと使い勝手を考えたDSL化することを考える。
こう見ると、プログラマー始めたころから同じことをやっているように見えて、着実に進歩はしていますな。
機能的には同じようなプログラムですが、拡張性を考えると、
複雑なロジックをかけるようになることではなく、
インターフェースを設計すること自体が重要なので、
そっちの方向に進歩しているのはよいことなのでしょう。
長年構想しているだけあって、なかなか良いインターフェースになったと思います。
最近になってPerl6のgrammarやboost::spiritなども見ていますが、
だいたい似たようなインターフェースになっているのを見ると、
この方向が正解みたいですな。
現在そっちのほうも参考に細部を詰めているところです。
作ってみたところ、言語を使いこなすよい練習になるので、
いずれF#やRubyでも作ってみたいものです。
使いやすいライブラリを作るには言語の文法を熟知しないといけないので、
やはりC#で。
新人時代に会社で作ってから、
似たようなものを作り始めたのは3回目です。
1度目 7年前
オブジェクト指向を学びつつC#の文法の解析を行う。解析結果はオブジェクト指向化できたが、解析のロジック自体をオブジェクト指向化できなかったため保守性が悪い。
2度目 3年前
解析のロジックをオブジェクト指向化。それも事前設計ではなくテスト駆動開発で設計を進める。ロジック記述のライブラリができた時点で満足してしまってC#の解析は中断。
3度目 今
前回ライブラリは作ったものの、使い勝手が今一つだったので、きっちりと使い勝手を考えたDSL化することを考える。
こう見ると、プログラマー始めたころから同じことをやっているように見えて、着実に進歩はしていますな。
機能的には同じようなプログラムですが、拡張性を考えると、
複雑なロジックをかけるようになることではなく、
インターフェースを設計すること自体が重要なので、
そっちの方向に進歩しているのはよいことなのでしょう。
長年構想しているだけあって、なかなか良いインターフェースになったと思います。
最近になってPerl6のgrammarやboost::spiritなども見ていますが、
だいたい似たようなインターフェースになっているのを見ると、
この方向が正解みたいですな。
現在そっちのほうも参考に細部を詰めているところです。
作ってみたところ、言語を使いこなすよい練習になるので、
いずれF#やRubyでも作ってみたいものです。