【Erlang】プログラム言語 Elixir 【BEAM】 [転載禁止]©2ch.net
Erlangの仮想環境(BEAM)上で動作するプログラミング言語 Elixirを語りましょう。
公式
http://elixir-lang.org なんてったってRubyツルハシ本のDave Thomasご推薦だもんなぁ。 そう、それ。英語版買ってみたんだけど読むのに時間がかかるので、誰か日本語訳してくれないかしら。 あ、ごめん
書籍購入済みだったのね
言い回しとか細かい意味は気にせず
コード例を試しながらガンガン先に進むのがお奨め
どうしても意味不明なら、ここに書き込めば誰かが答えてくれる >>6
> どうしても意味不明なら、ここに書き込めば誰かが答えてくれる
これは期待! Elixir でどんなプログラムを作ってるのかが知りたい >>9
githubには約2,000くらいリポジトリがあるな。
websocketサーバとか作ってるのか? [翻訳] Elixirのプロセスアーキテクチャ または私は如何にして心配するのを止めてクラッシュを愛するようになったか
http://qiita.com/HirofumiTamori/items/a3ee8eaeca76b43ae614 これいいね、Erlangは文字列が扱い辛かったんで使うの止めたんだけどVMとプロセスは好みだったんで凄いたすかるわ
ここしばらくClojure使って仕事してたけどこれに移行してもいいわ
#また社内ですったもんだしそう >>13
目覚めよ 私のコーディング力 先進のエリクシール Elixirって文字列処理速いの
そこが遅いと厳しいんだけど これエリクシールって読むべきなの?
日本語話者同士だとエリクサーでいいの? Dave Thomas本の紹介ビデオでは「エリクサー」だった。
ttp://pragprog.com/book/elixir/programming-elixir
イギリス発音だからなのか、「えりくすぉぁ」ぽい。 >>21
ありがと
テキストと違って実時間食われるんで、ビデオ関係まったく見てなかった orz >>21
Kindle版読了した
Earlang触ったときは銀の弾かと思ったが弾込めがめんどくさくて厭になったけどElixirは良い感じ
プロダクトで使っても良い感じだけど日本語書籍が出ないとちょっと辛いかも
Shiroさんとかが訳してくれないかと節に希望 >>23
Lisp Flavored ErlangならともかくElixirはないだろ >>24
LFEの開発は活発なんでライブラリが増えてきたら楽しい事になりそうだけど、まだ実用するのはちょっと難ある感じじゃないの? >>25 は LFE はライブラリが少ないという
>>27 は elixir はライブラリが少ないという >>29
LFEはエコシステムがまだだからライブラリが少ない
Elixirはエコシステム作成環境のMixがある
って事なんじゃないの?
jvmだとMavenレベル(Earlangの資産)はどっちも使えるけどClojure(Elixir)にはleiningen(Mix)があるみたいな(LFEはコレがまだ) QiitaにElixirネタが急に増えだしたけどなんかあったのか? Qiitaで熱心な人のアンテナに引っかかり始めたってだけじゃね?
それと、Elixirに関する記事翻訳してる人とかいたし、その影響かも?
翻訳されたの読んで興味もって、触ってから記事あげたとか。 ほんとだ、えらく増えたな
個人的にはにゃんぱすの中の人がどうするか興味あるな Elixir触ってたらErlangのコードが読めるようになってたw
これが抽象化の威力か
嬉しい副作用 macでbrew install elixirでインストールしても、erlangには依存してないんだな。 昔のErlangをインストール済みだと問答無用で落ちるのが初心者殺し 最近ブクマにこれ関係増えてるんだけど
ブーム来てる? Railsでフルスタックやってみたひとが、RESTサービスとかバックエンドをやるのに、手を出してる感じかな?
JVMやgoほど速くないけど動的寄り
そこそこはやいnodeと比べて、分散の仕組みがしっかりしてるのでnodeほどはまらない
素のpytonやrubyよりは単純にはやいし、仕組みはnodeの比較と同じ
そして、erlangよりはrubyの構文に似ている あとは、mixというビルドツールが、なかなか優秀なので他のLLと同じように、ライブラリが見つけやすい&なければ作って共有のループにはまるかも。
erlang向けのライブラリも使えるし、今流行りの分野だけでも移植されていけば、比較優位かもという話。
> MixはElixirにおける作成、コンパイル、アプリケーションのテスト、依存関係の管理を扱うためのビルドツールです。
http://elixir-ja.sena-net.works/getting_started/mix_otp/1.html
人が増えるかは、初心者も乗ってくるキラーフレームワークが出来るかと、ユーザーグループとかの活動にかかってくるかも。 単なるAPIサーバー用途でこんな特殊な言語使うかな
ジョブスケジューラとかには良いかなと思ってるけど >>44
RoR好きだった連中が集ればclojureより流行ると思う
とClojure使いの自分は思ったりするし、移行とか併用ありだとおもってる。
ClojureはMany Coreなマシン単体だと効率が良いけどBEAMだとMany Machineで行けるのが凄い魅力なんだわ >>45
実際使われ出してるのかね
今更Railsやる気も起きないし
選択肢にGoやScalaなんかもあって迷ってる
どれも並列性は強力だけどかなり使い方に違いがあるし
一度使い出すとメンテしなきゃいけないから https://speakerdeck.com/naoya/web-api-sabatositefalse-elixir-falseke-neng-xing
node vs erlang
http://kuenishi.hatenadiary.jp/entry/20101013/1286973687
取っ付き易ければいいんじゃないかなと。
ツイッターのTLで一台100万接続(維持?)が上限ってツイートがあって、
リアルタイムなチャットサービスなど考えると、一台でここまではスケールできるらしい。
アメリカみても、いろんなサービスが、どんどん安く、接続が多くシフトしてはいるので、
cruby以外とOTP自体は知っといたほうが良いと思う。 ドリコムElixir使ってるのか
負債にならないことを願う >>49
落ち込んだりするけれど、
私達は元気です >>47
nodeとか、そもそもjavascriptってなんで流行ってるのか独りで不思議に思ってた。
erlangの作者と意見いっちしてたよ。自信になった。 言語仕様においては禿同すぎるけど
Webにおいて唯一無二の存在だから流行るのは自然やろ Phoenixって第一引数にconnって引き回さないといけないの?
関数型だから仕方ないのか
やはりオブジェクト欲しい 関数がカリー化されてないのが辛すぎる
全部適用時には普通にやればいいんだから実行時コストは変わらないはずなのに
これでは折角のパイプライン演算子が役に立たないではないか…… LFEは余りに薄いし、ErlangのVM上に静的型付けでML系の文法な言語とかあればいいのに…… >>54
定義はしゃーないけど、使うときはパイプラインつかえばええんちゃうの
引き釣り回してる感はないし。 エラーリカバリがめちゃ楽だ、なんで皆コレつかわんのか不思議
こんな事ならElixir出るまえからErlangもっとマジ目にやっときゃよかったorz
ただ数値計算が多いとちょっと遅いのは仕方ないのかとオモタ >>58
>ただ数値計算が多いとちょっと遅いのは仕方ないのかとオモタ
そういう言語じゃないからねえ
FORTRANも過去のコード資産もさることながら理由があって存続しているわけで phoenixて herokuで動かすのが定番ですか? 本当にErlangなりElixirが必要なサービスを運用している人って
どれくらいいるのかね
電話会社とかHerokuとかニコ動とか、そういう超ヘビー(いろんな意味で)
な運用してるところが必要とするのはわかるが、
一般ピープルに縁があるとは思えん・・・
naoyaにアジられてるだけじゃないのか?という疑念が抜けない >>61
ゲームのサーバでも使うのよ(マッチングとかチャットとか)
ソーシャルつなぎだけだとDeNAが実践したみたいにmemcachedとMySQLスレーブ一杯でもいけるんだけどさ
でもちゃんと負荷を分散するとErlangの魅力がすごいあるのだけど、Erlangは学習コスト高いのでチーム全体で使うには敷居が高くなるのだね OTPはそんなに気負わずに小規模でも使う価値のあるプラットフォーム
LispやHaskellみたいな関数型言語が何かできればErlangもElixirも
難しくないので、いうほど敷居は高くない(少なくとも私の周囲では) 静的型付けの価値が周知されてきた今にあって
Elixirは動的型付けってあたりがちょっと時代遅れな感あるけどどう? >>64
ホットコードローディングには動的型付けによる実行時型検査が必須
ダウンタイムの極小化を目指すOTPの目的から、動的型付け以外は無理
ホットローディングが必要な業務系で昔からCommonLispが使われてきたのと同じ 複数VMを立ち上げて再起動すれば可能だけどね
VM間でバイトコード共有できてが軽くないと難しいけど >>65
ありがとう
この辺(型付けとホットスワップの関連)よく知らないのでweb上に参考になる文書とかありませんか? >>68
静的型付けだとコンパイル時に決まるから堅いコードが書けるという事は周知の事だよね。
でもその場合実行コードにバグがあったり、想定外の事態がおきたときに現場でプロセスを生かしたまま差し替えとかできないでしょ。
動的型付けな言語だと実行時でもコードの差し替えが効くって事だと思っておいてよいよ(動的言語でも開発環境ごととかVM制御コンソールもってない言語だとできないのだけど)
たとえば、想定外のデータが来てエラー状態で保留になったスレッドに対して他のスレッドに影響を与えずに実行時スタックトレースの途中から型に修正を入れたコードを実行とかするってこと。
それがよいことかどうかっていう議論は静的型付け言語と動的型付け言語の論争の一つではあるけど動的型付け言語の一部はこの機能があるから好まれているってのは事実(CommonLispとかSmalltalkね) >>68
ごく大雑把に言うと、静的型付けの言語は基本的に実行時には型情報を捨ててしまっているので、
メモリ破壊を引き起こさずに実行時にある関数の型を差し替えるとかいうことが難しい
動的型付けの言語は実行時に型情報を持ってるので、
データのシェイプが実行時に変動してもなんとかなる。
# まあ、コード内で実行時型検査システムをまるまる作れば静的型付けでもできるけどな >>70
># まあ、コード内で実行時型検査システムをまるまる作れば静的型付けでもできるけどな
動的のインタープリター再発明になっちゃうけどな。 >>71
型検査だけなんでインタープリタ再発明では全然ない
動的にしたいところの型情報を文字列でもHashTableでもいいから持たせて
実行時検査するだけだ >>72
ひょっとして、「インタープリター」ってのをフルスタックシステムだと思ってる? >>73
動的にしたいところ「だけ」の型情報を持たせるのは
フルスタックだろうがなかろうが、インタープリタとは言わん jarや.netアセンブリのリロードと違いはどんなところ?
リロードで、インターフェースの型が変わるとダメそうだけど、c#のdynamic型やjvmのinvokedynamicみたいな作りだといける?
> 72
何と無く、型変更なければ大丈夫という話のような?
型変更しても検査だけで大丈夫? >>78
Enhancementがすげぇ
これでもう常備言語入り確定@うちの事務所
Clojureとの棲み分けは変わらないからcljとelixirだけで仕事できそうでうれしい >>80
elixrなんて仕事で使える段階なの?
社内用かなんか? >>81
この程度の英語も読めんならドキュメントも
マトモに読めないんだしElixir使う能力も必要もないだろ >>85
持続するかどうかは不明。
いずれにせよそもそものErlangの方が息が長いだろうとは思う。 普通のLLで良いよね
そもそもエリクサーのアーキテクチャを活かすのはHTTPじゃ難しい >>89
関数型での書きやすさだけでも使う価値はあるけどな。
Erlangがもう少しML系の構文だったならよかったのに… >>82
ゲームのロビーとかC10Kが噛む所にErlang使う事例が激増(というかミドルウェアがErlang)
でも(ライセンス料的に)自前で用意したいって所でErlangの読み書きができる人が少ない(国内事情)
そこでRubyに似た構文のElixirに着目(それでも人がたりないんだけど)
という、もうなんかメサイア登場みたいな感じなのよ(ネットワークサービス提供な一部の人にとって)
と括弧の中が内側の事情として読んでほしかったり。
実際問題新言語導入って社内政治的にも困難が伴うんだけど切羽詰まった所にElixirが来たんで教育ちょとするだけで済んで、高負荷で鯖落ちの危機があるような貧乏会社には福音なのだ 個人的には並列性を得意な言語へスイッチするより
データストアにRedisなんかを使って後はマルチプロセスやスレッドでごにょごにょやる方が好きかな
いわゆるデータ並列性というやつ 言語自体のベンチマークみると特別に速くなさそうなんだけど、なんでPhoenixは速いのだろう? phenixがくそ速いというよりは比較対象が遅いせいでそう見えるのでは >>91
Erlang使ってるミドルウェアってどんなの? >>97
ttp://www.demonware.net/
これだよ〜