最近courseraでアルゴリズムの講義を受けている。 すごく丁寧な講義で基礎的な内容から段階的に学べるようになっている。 講義の中ではJavaで説明されているが、内容的には言語に依存しないものなので、 別の言語で学びなおすのが理解を深めるのにはよいのではと考えていた。
ただ、別の言語で実装しなおすだけだと芸がないのでブラウザ上でビジュアライズできると さらに理解が深まりそうと思っている。
となると普通に考えるとJavaScriptで実装することになるのだが、 emscriptenを使ってC言語で実装することにした。C言語は標準ライブラリが貧弱なので、 こういった基本的なライブラリも書く意義が出てくるのでモチベーションの維持につながる。
emscriptenはllvmのbit codeをJavaScriptのコードに変換してくれるツールである。 Open GL ES用のコードを書けばwebGLのコードに変換してくれたりもする。 C、C++以外にrustやDも限定的ではあるが使える?っぽい。
まずは、ここにVectorもどきを実装した。 まだ、中途ハンパでStack程度の機能しかない。 実装しようとして気づいたが実際に自分で実装しようとすると、 自分の理解が浅いことに気づかされる。 以下の内容も追加しておくと良いなと思う。
- データ構造・アルゴリズムの特徴
- どういうときにそれを使うと良いのか
- 計算量
- 代入や比較操作のカウント。courseraのassignmentシステムがこれをやっていてアルゴリズムにバグがあるかどうかが一目瞭然だった。