Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

「7つの言語、7つの世界」を読む

1,194 views

Published on

「7つの言語、7つの世界」を読むために Jupyter Notebook を作った話

Published in: Software
  • Be the first to comment

「7つの言語、7つの世界」を読む

  1. 1. 「7つの言語、7つの世界」を 読む ひげ
  2. 2. 7つの言語、7つの世界 (表題の通り) 7つの言語について書いてある本 Ruby : 日本謹製, 純粋OOP言語 Io : プロトタイプベースの言語 Prolog : 論理型プログラミング言語 Scala : ハイブリット(OOP + 関数型) Erlang : 並行処理につよい Clojure : JVM上で動く Lisp Haskell : 純粋関数型プログラミング言語
  3. 3. 7つの言語、7つの世界 の特徴 様々なパラダイムを知ろうというコンセプト 言語そのものではなく 環境構築は省く バージョンに依存せずに説明 REPLベースでの話が多い 並行プログラミングの話が結構ある 作者に聞いてみたコーナーがある
  4. 4. 7つの言語、7つの世界 の特徴 様々なパラダイムを知ろうというコンセプト 言語そのものではなく 環境構築は省く バージョンに依存せずに説明 REPLベースでの話が多い 並行プログラミングの話が結構ある 作者に聞いてみたコーナーがある
  5. 5. 演習用の環境を構築しよう! REPL 多いし、Jupyter 欲しい!
  6. 6. Jupyter Notebook REPL の Web UI 的な何な Python プログラム しかも REPL をコードとして残せる
  7. 7. できた
  8. 8. できるまで 1. 7つの言語の処理系のDockerイメージを作る 2. 7つの Jupyter Kernel を入れた
  9. 9. 工夫したとこ 各々のDockerfile を作ってマージする $ docker-merge Dockerfiles/ruby/Dockerfile Dockerfiles/io/Dockerfile Dockerfiles/prolog/Dockerfile Dockerfiles/scala/Dockerfile Dockerfiles/erlang/Dockerfile Dockerfiles/clojure/Dockerfile Dockerfiles/clojure/Dockerfile > Dockerfiles/seven-lang/Dockerfile docker-merge というコマンドは Haskell で作った 独立して動くならマージしても動くだろう(暴論)
  10. 10. 苦労したとこ バージョンが古い!!
  11. 11. 苦労したとこ 7言語7色といった感じだ Ruby: rbenv で Ruby を入れてたせいで悪戦苦闘... Io: そもそもリストにKernel がねぇ Prolog: 処理系が GNU Prolog と違いすぎて使えん Scala: README が長すぎてわからん Erlang: もうイロイロダメ Clojure: すんなりできた...さすが Lisp, 神の言語 !! Haskell: stack build が通らねぇ...
  12. 12. 今後 演習やらなきゃなぁ (作って満足してきてしまった)
  13. 13. おしまい

×