残念
言語仕様がちゃんと定義されていて、処理系もたくさんある ( http://sml-family.org/) のに、なんか残念感がただよう。
- パッケージマネージャがあるにはあるが (https://github.com/standardml/smackage)、使われている形跡がない。
- パッケージングの方法がドキュメントされてない。または、ドキュメントが探しにくい。
- インターネット上のライブラリ(モジュール)のリポジトリがない。マイナーなのがあるのかも知れないが露出してない。
- ビルドシステムがない、または処理系ごとにバラバラ。
- コンパイラーの吐き出すオブジェクト形式の標準がない。
- したがっって、ソースコード以外の交換形式がない。
- 分割コンパイルの方法が処理系ごとにバラバラ。
- FFI(他言語とのリンク)も、たぶんバラバラ。
- ソースコードの物理的配置の規則がない。
- この状況だと、言語仕様が標準化されていても、処理系ごとの互換性は事実上ない。
- 言語レベルで互換な処理系があっても、共通なライブラリを作るのは困難。
- 小さな弱小蛸壺コミュニティがたくさんあるだけで、総体としての力がない。
次のような方針が裏目に出ている感じ。
- 言語仕様を標準化して、多様な処理系の出現と競争を促す → 言語仕様だけで互換性を担保できないので、蛸壺になった。
- 実装レベル、バイナリレベルまでは規定しない → 周辺の規約やツールチェインは重要。バイナリ(オブジェクトレベル)の互換性も重要。それがないので、蛸壺になった。
現代のプログラミング言語においては、パッケージマネージャとエコシステムこそが肝だと思うが、そこがゴッソリ抜けている感じ、残念だ。