Google
ブログ(iiyu.asablo.jpの検索)
ホットコーナー内の検索
 でもASAHIネット(asahi-net.or.jp)全体の検索です。
 検索したい言葉のあとに、空白で区切ってki4s-nkmrを入れるといいかも。
 例 中村(show) ki4s-nkmr

ウェブ全体の検索

Lisp, Prologを作った笹川賢一さんは、いま、プログラミング言語Elixirにハマってるそうです。めでたいめでたい。\(^O^)/ Lispのマクロのことも。2019年02月05日 06時37分51秒

ASAHIネット(http://asahi-net.jp )のjouwa/salonから。
---
 笹川賢一さんからのメール。お便りありがとうございます。
 もう1週間くらい経っているかな。紹介が遅くなってすみません。
--- ここから ---
その節はお世話になりました。(Lisp、Prolog、Elixirのことで 笹川)

中村様

お世話になります。その節はブログで私のLispやPrologの電子書籍のことをご紹介くださり、誠にありがとうございました。

近況報告です。
Lisp本、Prolog本は、たまにポツポツ売れています。いっそのこと処理系をオープンソースして無償公開しようかと思っています。ラズパイ3なら安いので世界の学生さんたちにLispやPrologで遊んでもらったらいいのかもしれないと思い始めています。

ところで、最近、Elixirにハマっています。最近の関数型の言語ですが、Ruby風で親しみやすいです。PrologやLispに似たような性質も持っています。また、Elixirコミニュティの人たちはとても熱心で親切です。Elixirの前身はErlangです。ElixirはErlang譲りのフォールトトレランスの優秀さとRuby風の親しみやすさを持っています。しかし、中身はLispやPrologによく似ています。fukuoka.exのメンバーに人たちにお誘いを受け、お仲間にいれていただきました。ElixirにLisp&Prologの夢を託そうと思っています。

Lispで飯を食うのはたいへんそうです。でも、ElixirならWEB関係の仕事が増加中だそうです。
Elixirはマクロも備えており、カッコのないアルゴル系のLispみたいな感じです。Lisp好きの人たちに気に入ってもらえるだろうと思います。

以上、近況報告でした。


笹川 賢一
--- ここまで ---

 笹川さん、Elixirに行きましたか。
 LispやPrologを作った人だから、行って不思議はない。というか、行かない方が不自然。\(^O^)/

関連:
http://iiyu.asablo.jp/blog/2017/12/26/8755449
中田育男「コンパイラ: 作りながら学ぶ」ほか、中田先生や他のコンパイラ、言語処理系を作る本
http://iiyu.asablo.jp/blog/2017/08/29/8661658
笹川賢一「まったく初めての人のためのISLisp」
http://iiyu.asablo.jp/blog/2016/11/08/8244281
笹川賢一「Prolog処理系を作ろう」。なぜか、キューティーハニー、永井豪「激マン!」のことも
http://iiyu.asablo.jp/blog/2016/08/02/8144548
やさしいLispの作り方、続やさしいLispの作り方、ISLisp制作キット、M言語: Lispの源流を訪ねて
http://iiyu.asablo.jp/blog/2016/02/04/8008379
やさしいLispの作り方: C言語で作るミニミニLisp処理系、竹内郁雄さんのこと、GC(ガベージコレクション、ゴミ集め)本で新刊が出る!
http://iiyu.asablo.jp/blog/2012/10/16/6603839
昔からの読者、税理士の笹川さんがSchemeを作った。その名もSimple\(^O^)/

 Elixirは、日本じゃ、知らない人が多いけど、ヨーロッパじゃ、けっこうメジャーですもんね。後述しますが、本もけっこう出ています。
 Elixirは以前から注目していて、ぼくのイメージは、Erlang/OTPのVMであるBEAN上に作られた、関数型Ruby + PrologテイストというかErlangテイストの言語というイメージ。
http://iiyu.asablo.jp/blog/2013/07/11/6898237
プログラミング言語Elixir
を書いたのは、もう6年近く前だが、
--- ここから ---
 第一印象。Erlang + Ruby + 関数型プログラミングみたいな言語。
 ドキュメントを言語でサポートしていて、そのマークアップは、Markdownの
記法でマークアップというのが、今風か。
 Erlang譲りのというか、パターンマッチも当然ある。
 Erlangのパターンマッチは、Prologのユニフィケーションの簡易版。
--- ここまで ---
と書いているね。

 fukuoka.exって何だと思って検索したら、こういう活動をしている団体があるのね。
 いいね、いいね。引退して門司に戻ったら、顔を出したりしてね。でも、その前に、おれ、死んだりしてね。「噂の真相」の編集長、岡留さんが亡くなったが、少し堪えているね。
関連:
http://iiyu.asablo.jp/blog/2019/02/04/9032192
ウワシン(噂の真相、噂の眞相)の岡留編集長が亡くなりました。

 気を取り直して、fukuoka.exを調べたら、こういうのがあった。
https://fukuokaex.fun
「fukuoka.ex」は「膨大なデータやアクセスの高速処理」と「高い開発効率」を両立できる並列・分散プログラミング言語「Elixir(エリクサー)」と、そのWebフレームワーク「Phoenix(フェニックス)」を福岡で広めるコミュニティです。

https://fukuokaex.connpass.com
fukuoka.ex ~福岡Elixirコミュニティ~
福岡にて、Elixirでワイワイする会です

 笹川さんのメールには、
「Lispで飯を食うのはたいへんそうです。でも、ElixirならWEB関係の仕事が増加中だそうです。」
とあります。
 PheonixというElixir用の優秀なウェブフレームワークがあるんです。
 後述するけど、Pheonixの解説本も出ています。
 ElixirがRuby的なシンタックスで、関数型プログラミング + ErlangやProlog的なパターンマッチができるようにしたものとすると、Pheonixは、Ruby on RailsのElixir版です。

「Elixirはマクロも備えており、カッコのないアルゴル系のLispみたいな感じです。Lisp好きの人たちに気に入ってもらえるだろうと思います。」

 CやC++の#defineでやってるような、マクロしか知らない人、コンパイラが何をやっているか知らない人、メタプログラミングを知らない人には、Lispのマクロを説明してもピンとこないんだよね。
 CやC++の#defineマクロは、あくまで文字列の置換。
 Lispのマクロは、抽象構文木を自在に切った貼ったできるマクロ。
 通常の言語では、コンパイラの構文解析で作られる抽象構文木(AST)を簡単にはいじれないけど、Lispでは当たり前のようにいじれる。もう50年以上?前から、そうなんです。
 気楽に書けるのは、Lispはプログラムとデータが、S式という同じ形式だし、プログラムそのものであるS式が、ASTそのものだという大発明があるから。
 他の言語では、文法にしたがってコンパイラのパーサが一生懸命やるところを、Lispは、人間が構文解析してS式を書くという、ちょーずるい技を使っている。\(^O^)/
 でも、大発明。\(^O^)/
 他の言語も、Scalaなどもマクロを入れたりしているけど、Lispほど気楽に書けない。
 C++もテンプレートプログラミングは、どんどんメタプログラミング指向になっているけど、頭のいい人じゃないと簡単には書けない。そういう頭のいい人が書いた、メタプログラミングを駆使したライブラリを使う分には、かなり気楽ですけど。
 Elixirのマクロは、それに比べると、だいぶ気楽です。
 あと、Juliaも気になっている言語です。かなり気楽に書けるマクロを持っています。

https://ja.wikipedia.org/wiki/Elixir_(プログラミング言語)
https://ja.wikipedia.org/wiki/Erlang
https://ja.wikipedia.org/wiki/Julia_(プログラミング言語)

関連:
http://iiyu.asablo.jp/blog/2018/10/16/8975329
C++テンプレートプログラミングの定番本の第2版、C++ Templates The Complete Guide Second Edition
http://iiyu.asablo.jp/blog/2018/04/29/8835798
ハイパフォーマンスなデータサイエンス向けプログラミング言語Juliaのこと、また続き。 Beginning Julia Programming
http://iiyu.asablo.jp/blog/2018/04/27/8834314
ハイパフォーマンスなデータサイエンス向けプログラミング言語Juliaのこと、続き。
http://iiyu.asablo.jp/blog/2018/04/18/8828910
ハイパフォーマンスなデータサイエンス向けプログラミング言語Julia:Juliaデータサイエンス、Beginning Julia Programming, Learning Julia, Julia Cookbook, Julia for Data Science, Mastering Julia, Getting Started with JuliaなどJulia本

 やっと、Elixirに戻る。(>_<)
https://elixir-lang.org
Elixir公式サイト
 Elixir 1.8がリリースされたと出ていますね。

https://elixir-lang.jp
Elixir日本語サイト
 あれ? 日本語サイトは、Elixir 1.7がリリースになっている。まだ更新されてないのかな。

 日本語で読めるElixirの入門サイトがある。
https://elixirschool.com/ja/
Elixirスクール日本語版

■■■Elixir本
■■和書
 Rubyに惚れ込んで、「Programming Ruby」を書いて、Rubyを世界に広めたDave Thomasが書いた「Programming Elixir: Functional |> Concurrent |> Pragmatic |> Fun」の初版日本語版。
 これ、紹介したと思っていたが、ブログを検索しても出てこない。
 自分では買って読んでいるのにね。すみません。
https://www.amazon.co.jp/exec/obidos/ASIN/4274219151/showshotcorne-22/
プログラミングElixir 単行本(ソフトカバー) – 2016/8/19
Dave Thomas (著), 笹田耕一 (翻訳), 鳥井 雪 (翻訳)

https://www.amazon.co.jp/exec/obidos/ASIN/B01KFCXP04/showshotcorne-22/
プログラミングElixir Kindle版
DaveThomas (著), 笹田耕一 (翻訳), 鳥井雪 (翻訳)

 オーム社にある紹介。ぼくはここから、紀伊國屋書店に飛んでPDF版を買いました。
https://www.ohmsha.co.jp/book/9784274219153/
プログラミングElixir

 日本で出ているElixir本はこれくらいしかないないのよね。
 と思ったら、今回調べ直したら、オイアクス(OIAX)という会社が何冊も出している。
 一体どういう出版社なのかと思ったら、Ruby on Railsで開発している会社なのね。
 Ruby on Rails本も出し、その流れで、Phoenix本を出しているのね。
https://www.oiax.co.jp
オイアクス(OIAX)

https://books.oiax.jp/paperback
紙版書籍のご案内

https://www.amazon.co.jp/exec/obidos/ASIN/4908829209/showshotcorne-22/
Elixir/Phoenix 初級1: はじめの一歩 (OIAX BOOKS) 単行本(ソフトカバー) – 2017/11/30
黒田 努 (著)

https://www.amazon.co.jp/exec/obidos/ASIN/4908829241/showshotcorne-22/
Elixir/Phoenix 初級2: データベースとクエリ構造体 (OIAX BOOKS) 単行本(ソフトカバー) – 2018/12/24
黒田 努 (著)

https://www.amazon.co.jp/exec/obidos/ASIN/4908829225/showshotcorne-22/
Elixir/Phoenix 初級3: フォーム構造体とチェンジセット (OIAX BOOKS) 単行本(ソフトカバー) – 2018/4/4
黒田 努 (著)

https://www.amazon.co.jp/exec/obidos/ASIN/4908829268/showshotcorne-22/
Elixir/Phoenix 初級4: バリデーション (OIAX BOOKS) 単行本(ソフトカバー) – 2018/12/24
黒田 努 (著)

https://books.oiax.jp/kindle
Kindle本の紹介

https://www.amazon.co.jp/exec/obidos/ASIN/B01N2K6UBZ/showshotcorne-22/
Elixir/Phoenix 初級①: はじめの一歩 (OIAX BOOKS) Kindle版
黒田 努 (著)

https://www.amazon.co.jp/exec/obidos/ASIN/B06X9PL5WD/showshotcorne-22/
Elixir/Phoenix 初級②: データベースとクエリ構造体 (OIAX BOOKS) Kindle版
黒田 努 (著)

https://www.amazon.co.jp/exec/obidos/ASIN/B079Z1WCXS/showshotcorne-22/
Elixir/Phoenix 初級③: フォーム構造体とチェンジセット (OIAX BOOKS) Kindle版
黒田 努 (著)

https://www.amazon.co.jp/exec/obidos/ASIN/B07J5FNYTW/showshotcorne-22/
Elixir/Phoenix 初級④: バリデーション (OIAX BOOKS) Kindle版
黒田 努 (著)

■■洋書
 何度も書くが、洋書の電子書籍は、Amazonで買うより、それぞれの出版社に行って買う方がいい。DRMフリーのPDF, Kindle, EPUBがセットで買える。

■The Pragmatic Bookshelf
 ぼくのイメージでは、Erlang, Elixir, Pheonix本は、The Pragmatic ProgrammersのThe Pragmatic Bookshelf(pragprog.com)が強いというイメージがある。
 pragprog.comに行って、Elixirで検索すると、10冊以上出る。
 全部はリストする気はないので、少し。

 「Programming Ruby」を書いて、Rubyを世界に広めたDave Thomasが書いた本。
https://pragprog.com/book/elixir16/programming-elixir-1-6
Programming Elixir 1.6
Functional |> Concurrent |> Pragmatic |> Fun
by Dave Thomas

 ElixirのウェブフレームワークPhoenixで関数型ウェブ開発の本。
https://pragprog.com/book/lhelph/functional-web-development-with-elixir-otp-and-phoenix
Functional Web Development with Elixir, OTP, and Phoenix
Rethink the Modern Web App
by Lance Halvorsen

http://iiyu.asablo.jp/blog/2017/10/29/8717399
電子書籍の索引と目次を調べてみた。Functional Programming Patterns in Scala and Clojure, The Joy of Clojure, Second Edition, Clojure in Action, Second Edition, Programming Clojure, Third Edition, Mastering Clojure Macros, Clojure Standard Library, Functional Web Development with Elixir, OTP, and Phoenix
で、
https://pragprog.com/book/lhelph/functional-web-development-with-elixir-otp-and-phoenix
Functional Web Development with Elixir, OTP, and Phoenix
について
--- ここから ---
 いま、ベータ版のベータ6。それで索引がないのかもしれない。
 PDF, EPUB, Kindle、いずれも索引がない。
--- ここまで ---
と書いたが、正式版になったら、PDFは、索引がついたが、EPUB, Kindleはない。
 だめじゃん、PragProg。それじゃ、日本の出版社のいいレベルと同じレベル。
 PacktやManningに負けてるぞ。

 関数型プログラミングをElixirで学ぼうという本。
https://pragprog.com/book/cdc-elixir/learn-functional-programming-with-elixir
Learn Functional Programming with Elixir
New Foundations for a New World
by Ulisses Almeida

 Ectoは、Elixirで書かれたDBライブラリ。これ、Elixirのマクロで書いてあるそうですね。Lisp的なマクロがいかに強力かということですね。

https://pragprog.com/book/wmecto/programming-ecto
Programming Ecto
Build Database Apps in Elixir for Scalability and Performance
by Darin Wilson and Eric Meadows-Jönsson

 で、マクロによるメタプログラミング本もある。
https://pragprog.com/book/cmelixir/metaprogramming-elixir
Metaprogramming Elixir
Write Less Code, Get More Done (and Have Fun!)
by Chris McCord

 テスト本もある。
https://pragprog.com/book/fhproper/property-based-testing-with-proper-erlang-and-elixir
Property-Based Testing with PropEr, Erlang, and Elixir
Find Bugs Before Your Users Do
by Fred Hebert

 Clojure, Elixir, Haskell, Scala, Swiftで関数プログラミングの世界を概観する本ですね。
https://pragprog.com/book/ppanth/functional-programming-a-pragpub-anthology
Functional Programming: A PragPub Anthology
Exploring Clojure, Elixir, Haskell, Scala, and Swift
by Michael Swaine and the PragPub writers

■Manning
 The Pragmatic Bookshelfの次に強いのが、Manningというイメージがある。
 でも、調べたらないね。
 「Elixir in Action」の初版のイメージが強かったのかな。
 第2版が出ていて、間に合うかな。次の本に対して、1日だけの半額クーポンコードがある。
 pbjuric2ltを買うときに使ってください。
 旧版も一緒にもらえる。
https://www.manning.com/books/elixir-in-action-second-edition
Elixir in Action, Second Edition
Saša Jurić

https://www.manning.com/books/phoenix-in-action
Phoenix in Action
Geoffrey Lessel

https://www.manning.com/books/the-little-elixir-and-otp-guidebook
The Little Elixir & OTP Guidebook
Benjamin Tan Wei Hao

■Packt
 Java, Python, JavaScriptなど、それぞれ何10冊も本を出しているPacktだが、Elixirは数冊。

https://www.packtpub.com/application-development/mastering-elixir
Mastering Elixir
André Albuquerque, Daniel Caixinha

https://www.packtpub.com/application-development/learning-elixir
Learning Elixir
Kenny Ballou

https://www.packtpub.com/web-development/phoenix-web-development
Phoenix Web Development
Brandon Richey

https://www.packtpub.com/application-development/elixir-cookbook
Elixir Cookbook
Paulo A Pereira

関連:
http://iiyu.asablo.jp/blog/2013/07/11/6898237
プログラミング言語Elixir
http://iiyu.asablo.jp/blog/2017/10/29/8717399
電子書籍の索引と目次を調べてみた。Functional Programming Patterns in Scala and Clojure, The Joy of Clojure, Second Edition, Clojure in Action, Second Edition, Programming Clojure, Third Edition, Mastering Clojure Macros, Clojure Standard Library, Functional Web Development with Elixir, OTP, and Phoenix