【関数】Erlang Part 2【エリクソン】 (209) TOP カテ一覧 スレ一覧 2ch元 削除依頼
JAVAってこんなことも出来ないの? (695)
C言語なら俺に聞け(入門編)Part 121 (201)
静的型付け言語の潜在開発生産性は今の100倍 ×3 (561)
プログラミングを勉強したいのだが (141)
スレ立てるまでもない質問はここで 129匹目 (952)
【COBOLから】バッチ処理【Javaまで】 (153)

【関数】Erlang Part 2【エリクソン】


1 :2010/07/20 〜 最終レス :2013/10/19
■前スレ
【関数】Erlang【エリクソン】
ttp://pc12.2ch.net/test/read.cgi/tech/1176479959/
■関連URL
ttp://www.erlang.org/
ttp://www.erlang.org/download/erlang-book-part1.pdf
ttp://ja.wikipedia.org/wiki/Erlang
ttp://www.planeterlang.org/
ttp://cean.process-one.net/
ttp://www32.atwiki.jp/erlang/
ttp://jijixi.azito.com/cgi-bin/diary/index.rb?category=Erlang
ttp://www.kmonos.net/alang/etc/erlang.php
ttp://quasiquote.org/log2/Erlang
ttp://www.youtube.com/watch?v=uKfKtXYLG78
ttp://video.google.com/videoplay?docid=-5830318882717959520
ttp://erlide.sourceforge.net/
ttp://rucila.s43.xrea.com/memo/?date=0304

2 :
■書籍
Erlangプログラミング
ttp://www.oreilly.co.jp/books/9784873114651/

3 :
なんだよもうErlang下火だから翻訳版でないだろうと思って原書買っちゃったよ・・・
いちおつ

4 :
そんなことよりCouchDB: The Definitive Guideの表紙の犬が愛らしくてしょうがないんだが

あ、>>1

5 :
愛らしいといえばこれだな
ttp://ec2.images-amazon.com/images/I/41JJZCux%2BNL._SL500_AA300_.jpg
>>1

6 :
即死しそうだなw

7 :
前スレはこれだな。
【関数】Erlang Part2【エリクソン】
http://pc12.2ch.net/test/read.cgi/tech/1270087367/l50

8 :
それは前スレというか…今スレの出来損ないというか…

9 :
これって、HaskellのGHCみたいに強力なコンパイラが出現すればもっと流行るんだろうか…

10 :
保守

11 :
もうすぐ前スレに並ぶ。

12 :
>>2買ってきたら煽り文に、「マルチコアの最適な利用という観点での注目度も高く」とあったけど、どうなん?
あまり聞かない気が。。。。

13 :
昨日、O'Reillyのerlang本がついに発売になりました。
これで普及に弾みがつくか?

14 :
3章途中まで読んだけど、なんか誤植が多い。。。

15 :
ブルーインパルス本よりいいの?

16 :
秋葉のヨド売り切れてた

17 :
ちょっと読んだけど、haskell本に比べたら、全然
関数型言語に関する記述は少ないな。
実用的かも

18 :
C,C++でスレッドを使えない情弱用言語ってことでFA?

19 :
イミフ

20 :
>>18
そうだよ

21 :
Erlangは唯一のオブジェクト指向言語かもしれない@Joe Armstrong
http://www.infoq.com/jp/news/2010/07/objects-smalltalk-erlang

22 :
変な日本語だな。

23 :
エリ糞ン

24 :
Erlangの無名関数定義で
F = fun(X) -> fun(X-1).
みたいな記述は出来ないの?出来損ないでさーせん

25 :
>>24
再帰っていってくれよ

26 :
Erlangプログラミング P140、5.4.2節イベントハンドラのコード例で、
pad([M1]) -> [$0,M1];
なる一文が入っているけれど、$0はなんで必要なの?

27 :
>>24
つ Yコンビネータ

28 :
>>26
Erlangを忘れ果てた漏れが嫌がらせで答えると
文字列が1文字だけだった場合にゼロパディングして2文字にしてるんだよ
たとえば 18:45:8 を 18:45:08 にするとか

29 :
>>28
Thx.
実際試してみてゼロ埋めらしいとは分かったけど、どんな書式文法か?でした。
月・日は挙げてもらった通りだけど、年は最初から"2010"だから何も起こらない。
変数を1文字しかないと仮定して、$0を変数に添える事を+1文字分確保すると考えるのでしょうかね。

30 :
>>29
Erlangの文字列と関数のパターンマッチングがどんなものかは理解してる?
飛ばし読みしてるんなら読み直したほうがいいと思う

31 :
飛ばし読んではいないけど(忘れているのかもしれない)、そういう問題なんですか?
io:formatがどう表示してくれるかの問題だと思っていたのですが

32 :
あ、もしかして、[M1]だから1文字しかない場合のみ$0が付きますよ、って話ですか?

33 :
windowsの実行ファイル作れるようになりましたか?

34 :
いつも実行ファイルにこだわってる人いるけど、この言語でWindows上で動いてもうれしくなくない?

35 :
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
                  京都大学霊長類研究

36 :
>>34
いや、うれしいよ。
バグでプロセスがダウンすることを前提にした言語って他に無いからね。
こんなに安全にプロセスが扱える言語って他にある?
逆に嬉しくないと思う理由が知りたい。

37 :
exeファイルにしたい理由:
1. ワンファイルアプリ最高
2. windowsの慣習的にexeファイルがないと、erlangに詳しくない人は実行方法がすぐにわからない。
また、バッチファイルだとコマンドラインの印象があって、詳しくない人は不安を感じる。
3. インストールを前提とする以外の実行方法を提供する自由が欲しい

38 :
>>37
ShllExecute叩くexe作るだけでいいんじゃないの。
Erlang側で準備する必要があるものとは正直思えない。

39 :
>>38
糞でかいerlang処理系まるごと添付するのか?w
ダッサイなぁ

40 :
(ネイティブ)exeにしたい理由もう一個追加
4. 起動を早くしたいから

41 :
>>40
ガイキチは放置の原則を忘れていたよ。
一通り暴れたらヨソ行ってくれ。

42 :
そこまでいけるって思うなら自分で実装してみてはどうだろうか?
Rubyとかの他の言語でもあったよね。そういうの。Exerbか。
ある程度動くところまでやれば未踏で1年分の金くれるかもよ。
あとWindowsの場合、プロセスじゃなくてスレッドでどうこうしたほうがパフォーマンス出ると思うんだよ。
Chromeぐらいじゃないか?普通はスレッドであるべきところを意識的にプロセスにしたアプリケーションは。

43 :
>>42
erlangのプロセスはOSのプロセスではなくてグリーンスレッドだよ。

44 :
>>33 はい では言いだしっぺの法則で サンプルよろしく♪

45 :
まちがえた
>>42 はい では言いだしっぺの法則で サンプルよろしく♪

46 :
言いだしっぺの法則の趣旨を考えてから二度R

47 :
>>46
やりたくないことを人に押し付ける方便です

48 :
>>36
そんなに安全な言語をWindowsで動かしてもしょうがないからでしょ

49 :
>>48
安全だから気楽にプログラミングできるんじゃないか。

50 :
安全な言語を活かすなら土台も堅牢でないと
土台がやわなら安全な言語も猫に小判、豚に真珠

51 :
>>50
それを言うなら砂上の楼閣でしょう。
猫に小判と豚に真珠は、本人が価値を理解できないというたとえです。

52 :
>>50
LinuxもMacもWindowsも堅牢性は大して変わらん。
微々たる差だよ。
それにCでやろうがJavaでやろうがErlangでやろうがエラー対策はちゃんとやるでしょうが。

53 :
>>52
じゃあLinuxやMac使えばいいじゃん
Exeなんぞいらんぞ

54 :
>>53
そりゃそうだがインストールベースの大きさを無視するのはよろしくないんじゃないか?

55 :
サーバの運用環境ならWindowsのインストールベースなど無視しておk

56 :
>>37の理由なんてサーバサイドじゃ意味ないよな
やっぱEXEなんぞいらん

57 :
>>56
サーバ以外の用途もあるでしょうが。

58 :
ないも同然だろ
だからexeがないんだろ
現実見ろよ

59 :
そもそもErlangのプロセスはVMが仕切ってるので
ネイティブで動く.exe実行ファイルとは相容れないだろう
もしやるとしてもVMを包んだ実行ファイルで配布とかになる

60 :
学習・開発環境としてのWindowsはあり → EXE不要
運用環境としてのWindowsはなし → EXE不要

61 :
ErlangSDLでゲーム作った → EXE必要
最近の『関数型言語でマルチスレッドゲーム製作』ブームで
ゲームに適してるって騙されてゲーム作った俺に誰でもいいから土下座して謝ってください。

62 :
スマンカッタ OTL

63 :
>>61
ちょっとまて、関数型言語がゲームに適しているってどこに書いてあったんだ?
あとerlangは関数型言語じゃなくてプロセス指向言語だぞ

64 :
ごめんなさいですの OTL

65 :
>>63
プロセス指向ってどんだけみみっちいな区分けすんだよw
どう考えてもErlangは関数型だろ。
ttp://game.watch.impress.co.jp/docs/20080911/epic.htm
PS4やらXBOX720やらになったら関数型言語が主役になるんだよ。
それで関数型言語マンセーなんだよ今は。

66 :
>>65
それには理由があって、
基礎理論が何かで分けられるべきだと思うんだよ。
HaskellやMLやLispなどはlambda-calculusを基礎理論としているのに対して、
Erlangやgoなどはpi-calculusないしはCSPを基礎理論にしている。
だから関数型言語というよりもプロセス指向言語と呼んだほうが分類としては正しいと思うんだ。

67 :
で、結局EXEの作り方知ってる人いたら容量がどんだけ大きくなってもいいので教えてください。

68 :
VM(起動OS含めて)まるごとの実行環境作ってしまえば医院で内科医?

69 :
どこから沸いてきたんだってくらい盛り上がってるねw

70 :
どうだ

71 :
Wings3Dだけexeでずるいぃ!
Sculptrisの登場で見放されちゃったんだから
こんな使えない3Dモデラー作ってないで、
素直にErlangの実行ファイル作成ソフト作ってくれよん!
って誰かWings3Dの作者に言ってよ英語わからないから!

72 :
>>66
基礎理論で分類するなら、ラムダ計算をベースに構文糖を被せた
JavaScript/Smalltalk/Rubyあたりも関数型言語になるんか?
また、CSPを基礎理論とするOccamやGHC(KL1)等も
プロセス指向言語と呼んだほうが正しい分類なのか?
普通に(常識的に)、JavaScript/Smalltalk/Rubyは(関数型機構も使える)
オブジェクト指向言語でいいし、Occamは手続き型言語、
GHCは並列論理型言語でいいと思う。同様にErlangも関数型言語だね。
>>65
言っている事はアレだがw、紹介してくれたリンク先の記事は面白かった。
ただし、その記事(ゲームと超並列化)が対象としているのは
メモリ共有による「密結合型」並列計算だよ。
Erlangは相互リンク(たとえばネットワーク)による「粗結合型」並列計算、
あるいは「分散型」並列計算だから、記事にあるようなリアルタイム
3Dレンダリングを生かしたゲーム開発には向いていないと思われ。

73 :
JavaScript/Smalltalk/Rubyは手続き型言語だろ普通に。

74 :
>>72
全く見当違い。
> 基礎理論で分類するなら、ラムダ計算をベースに構文糖を被せた
> JavaScript/Smalltalk/Rubyあたりも関数型言語になるんか?
完全な手続き型言語だろ。
> また、CSPを基礎理論とするOccamやGHC(KL1)等も
> プロセス指向言語と呼んだほうが正しい分類なのか?
そうだよ。
関数型言語はシーングラフベースのグラフィックスなら強いパワーを発揮しそうだ。

75 :
>>73
より正確にはオブジェクト指向手続き型言語だろうね。
オブジェクト指向というのは大きな概念(パラダイム)だから、計算モデルと両立する。
だからオブジェクト指向関数型言語やオブジェクト指向並列論理言語も存在しうる。


76 :
>>75
オブジェクト指向ってどういう基礎理論に基づいているの?

77 :
>>75に自己レス。
オブジェクト指向並列論理言語ではなくて、オブジェクト指向論理言語に訂正。
ちなみに例を挙げれば、
・オブジェクト指向関数型言語:OCaml
・オブジェクト指向並列論理言語:ESP
になるけど、普通はそれぞれ関数型言語、論理型言語と呼ばれているし、それで正しい。

78 :
>>75
君がオブジェクト信者だってことはわかったけど、
オブジェクト指向は指向と呼ばれることからわかるようにプログラミングスタイルを意味する言葉だよね。

79 :
関数型言語だろうと並列論理言語だろうとプロセス指向言語だろうとどっちでもいいだろ。
どうせやることは一緒なんだ。

80 :
>>76
計算モデルとしての(狭義の)オブジェクト指向の基礎理論は「アクター理論」と呼ばれる。
これは作用型計算モデル(関数型言語)と命令型計算モデル(手続き型言語)を統ーした
計算モデル。このモデルでは、すべての要素(オブジェクト)がアクターになる。たとえば
関数は不変アクター(imutable actor)で、手続きは可変アクター(mutable actor)になる。

81 :
俺が聞いたところによるとオブジェクト指向の完全な理論化は出来ていないとの事だったけどなぁ。

82 :
>>81
その通り。だから>>80では「狭義の」と書いた。例えば「継承(inheritance)」ひとつを
とっても、静的言語ですらその形式的定義は完成していない(はず)。だから、たとえば
OCamlのオブジェクト指向は不完全なので(型推論が破綻しているので)、嫌う人は多い。
ま、いいかげんオブジェクト指向はErlangとはスレ違いの話題だから、これで終わりにする。
Erlangにおける並行オブジェクト指向プログラミングなんて話題になれば、また顔を出すよ。

83 :
>>77
> ・オブジェクト指向並列論理言語:ESP
ESPは逐次型
逐次推論マシンPSIで使われていた

84 :
>>71
Wings3Dソースみてみたけど、werl起動するだけみたいよ?
インストールするとErlangのディレクトリ構造でライブラリ(**/ebin/*.beam)があるし。
exeは出来なくても良いけど、ソース無し(*.beamだけ)の実行環境と、ライブラリ集めて
インストールパッケージ作る、簡単な方法はほしいと思う。

85 :
ほしゅ

86 :
このスレまだあったのか

87 :
>>84
バッチファイルをEXE化して実行ファイル作ろうと思っても、
OTPからerl.exeとかerlc.exeとか引っ張り出すと動かなくなる。
なんでWings3Dは動いてんだよぉ…

88 :
一時期はerlang便利って思ってたけど、最近では普通にCだな・・・
スタイルさえ確立すればCでもErlangでも同じ。

89 :
しかもerlang遅いし。

90 :
741 デフォルトの名無しさん [sage] 2010/12/25(土) 00:53:53 ID: Be:
    erlangがほとんど話題に上がらないのはなぜ?

91 :
そんなことErlangへんでえ

92 :
座布団どころか家財全部もってちゃいなさい

93 :
http://www.infoq.com/jp/news/2011/04/erlang-copied-jvm-and-scala
Erlang を共同で開発した Joe Armstrong と Robert Virding 両氏が,Erlang が Java から多大な着想を得たことを認めている。
ErlangFactory 2011 SF で行われたインタビューで両氏は,Erlang では「プロセス」と呼んでいるものを作る上で,
Scala の Actor が大きな影響を与えているという,以前からあった噂をついに
肯定したのだ。さらに Erlang の VM が,かの有名な Java 仮想マシン (Java Virtual
Machine,JVM) のクローン同然のものであることも告白した。

94 :
>>93
うわ、これはショックだ
そうじゃないかと思ってはいたけど両御大の言葉ともなると
つらいものがあるな…漏れはArmstrong本で勉強したわけだし
きっと何か事情があるんだと思うな…そうであってほしい

95 :
>>94
>かの有名な JVM に回帰すること,の2点を約束している。
むしろこのあたりでちょっとうれしかったり

96 :
>>94
Posted by Sadek Drobi on Apr 01, 2011


97 :
>>96
ぐはぁ、そういう記事を1週間も遅れて貼るかなもう

98 :
>>97
しかも>>94は縦読みだ。

99 :
April Fool

100 :
>>99
that's right!

101 :
>>94
Cool !

102 :
このスレこんな人いたのかw
Erlang再入門開始
カンマとセミコロンとピリオドの使い分けがようやく見えてきた

103 :
Erlang使えば未来予知が出来るのかと思って喜んできてみたら嘘かよ

104 :
>>103
Erlangやったからといってバラ色ではないことくらいの予知ならできるが。

105 :
これソースからインストールすると死ぬほど時間かかるんだけどなんとかなんないの

106 :
一回だけだろ
気にすんな

107 :
クラウド鯖で使うから何度もインストールするんだよね

108 :
待つだけだろ
気にすんな

109 :
気にしない

110 :
>>105
インストールに時間掛かるとか言うやつは、osインストールやった事無いだろ

111 :
>>107
同じ構成のインスタンス借りてるんだろ?
ならコンパイルした結果を丸ごともってきゃいいじゃねぇか

112 :
ですな。
checkinstallでrpm化してもいいし。
最近のcheckinstallがどうも不具合ぶくみだが、、

113 :
haha

114 :
これ ; デリミタっていうんだけどさ、これをつけなきゃエラーになるような
そんな言語使ってる奴ってどうみてもゴミだと思うんだけど
もしかして「;」これ打ち忘れてコンパイルエラー出すのが楽しいの?
そうか、二度と話かけんなよ
ゴミが口を開くな

115 :
これ ; デリミタっていうんだけどさ、これをつけなきゃエラーになるような
そんな言語使ってる奴ってどうみてもゴミだと思うんだけど
もしかして「;」これ打ち忘れてコンパイルエラー出すのが楽しいの?
そうか、二度と話かけんなよ
ゴミグラマじゃねーか

116 :
PhalangerやBoo、IKVMみたいな.NET上で動くErlang実装ってないの?

117 :
このスレまだあったのか

118 :
ちょっと聞きたいんだけど、入力される文字列長が不定でCRとかLFで終端されるとは限らない上に
eofにも到達しない場合、erlangでどうやって書いたらいいんだろう。
file:read(IoDevice, Number)だとNumber分だけ文字が入力されるまで待ってしまうわけで、
つまりシステムコールとしてのread(2)に近い動作をしてほしい。
流石に1文字づつ読みに行くみたいな頭悪いことしたくないし、Cとかで書いてラップするのが安定?

119 :
PythonとかRubyとか使ったけどやっぱりErlangのバイナリ処理とパターンマッチは最強だわ。
文字列の処理が楽だから、プログラムの翻訳機がかなり作りやすい。
で、他にもっと使いやすい言語ある?

120 :
鯖移転記念
ttp://www.atmarkit.co.jp/news/200704/27/erlang.html

121 :
ようするにやっぱ最強だわ

122 :
How To Become A Hacker
http://cruel.org/freeware/hacker.html
もしコンピュータ言語をなにも知らないなら、まず Python から始めることを
おすすめします。設計がきれいだし、ドキュメントもしっかりしているし、
初心者にもそこそことっつきやすくできています。でも入門言語として最適でも、
おもちゃではありません。強力で柔軟で、大きなプロジェクトにもじゅうぶん
対応しています。
Java もプログラミングを学ぶにはよい言語です。 Python よりはむずかしい
ですが、できるコードは Python より高速です。二番目の言語としてはとても
すぐれていると思います。
本気でプログラミングをするなら、C を勉強するしかありません。これはUnix の
中核となる言語です。C++ は C と密接な関係にあります。片方を知っていれば、
もう片方を学ぶのはそんなにむずかしくありません。が、どっちも真っ先に
勉強しようとするのには向いた代物ではありません。

123 :
C++でプログラム書くのを覚えるとCでプログラム書くのは無理
Cを読むくらいならできるけど、Cで書くなんてバカらしくてやってらんない

124 :
>>119
ない

125 :
>>123
おれ産業系なんで、Cばっかりだよ。

126 :
>>124
Prolog御大を挙げなくちゃ。

127 :
>>123
それCommonLispで以下略とか
Erlangで以下略とか
なんでもよくね?
Cの良いところって組み込みで使ってもリソース食わないとか
ハードウェアに密接する処理書いてもOKとかそのくらいしかわからん(ここはC++でもいいんだが)

128 :
Erlangプログラミングを70ページ読んでやって「これ->を:-にすればPrologじゃん」と気付いた

129 :
Prologみたいな双方向のユニフィケーションとか、同じ変数名を使ったパターンとか、あるの?

130 :
Erlangもっと流行ってほしいなぁ。
ほかの言語やってるとやっぱりErlangのパターンマッチが最強過ぎていやになるわ。
初心者にとっつきやすいようにprint分を簡単にして、
プリコンパイラを簡単にして関数を全部publicアクセスにして、
レコードをクラスっぽい使い方できるようにすれば
ちょっとはとっつきやすくなるんじゃないかな。

131 :
標準入出力よりも数値計算が充実してくれれば
行列で検索してもキューの話ばっかり出てきて困る

132 :
バイナリ吐けるようになったらね。

133 :
C言語とかで関数の頭で引数の検査でassert使うけど、それをパターンマッチングでできるので楽

134 :
f({a,X}, {b,X}) ->
みたいに引数の同値の検査を省略できるのはたしかに楽

135 :
いくらググってもemacsモードのファイルがヒットしないのでしばらくあきらめてたら、配布物の中に入ってた

136 :
Erlang入門という中古書籍片手にErlangの勉強を始めましたが、
本に書いてある通り、
c(モジュール名).
とコマンドを実行しても、
モジュール名.bea#: error writing file
とエラーが出てコンパイルできません。
http://blog.overlasting.net/2007-05-09-1.html
のサイトを見て、c(sample).を実行しても
sample.bea#: error writing fileと表示されます。
Erlangはマイナー過ぎてググっても分かりません。
誰か助けてください…。

137 :
ようは、対話型のコマンドは実行できるが、コンパイルできないんです。
Windows7の64版を使っているのは関係ないだろうし、途方に暮れています。
もちろん作業フォルダにファイルは置いています。

138 :
>>136
sample.erlのあるディレクトリに書き込み権限持ってる?

139 :
>error writing file
英語はマイナーすぎてわからないということだな
さすが初心者は半端ないぜ

140 :
福沢諭吉「脱亜論」 1885年3月16日 時事新報
日本の不幸は中国と朝鮮だ。
この二国の人々も日本人と同じく漢字文化圏に属し、同じ古典を共有しているが、
もともと人種的に異なるのか、教育に差があるのか、 日本との精神的隔たりはあまりにも大きい。
地球規模で情報が行き来する時代にあって、近代文明や国際法について知りながら、
過去に拘り続ける中国・朝鮮の精神は千年前と違わない。
国際的な紛争の場面でも「悪いのはお前の方だ」と開き直って恥じることもない。
もはや、この二国が国際的な常識を身につけることを期待してはならない。
「東アジア共同体」の一員として その繁栄に与ってくれるなどという幻想は捨てるべきである。
日本は、大陸や半島との関係を絶ち、 欧米と共に進まなければならない。
ただ隣国だからという理由だけで特別な感情を持って接してはならない。
この二国に対しても、国際的な常識に従い、国際法に則って接すればよい。
悪友の悪事を見逃す者は、共に悪名を逃れ得ない。
私は気持ちにおいては「東アジア」の悪友と絶交するものである。
         _,,,,,,__  __,,,__
        ィjj)))))))))!!!!!彡ヽ,
      /ミ/         ,}彡ヘ
      |ミ{ -‐ ‐ ‐ ‐-  {三=|
      El==; ゚ ''==. |ミミ,|
        `レfォ、,〉 :rfォ.、,  !iル┤
.        { `¨ i ・、¨ ´  `{ゞ'} 支那、朝鮮とは
.        | '`!!^'ヽ     .「´  付き合うなと忠告しておいたのに。。。
        ! ,-ニ'¬-、  ,!|,_   
.        \´?`  / ∧ヘ、
         __/〉`ー ' ´ /  〉 \
     _, ィ´「∧     /  /    」¬ー- 、_
  -‐ ´  / /  ヽ、/    /     iヾ      ヽ

141 :
返信遅れてすみません。
>>138
それが原因でした。恥ずかしいです。
ありがとうございました。

142 :
Learn You Some Erlang for Great Good!
ttp://shop.oreilly.com/product/9781593274351.do
haskell本みたいに流行るかな

143 :
とりあえず翻訳しますん

144 :
Great Goodって流行ってんのか?

145 :
http://itpro.nikkeibp.co.jp/article/NC/20120920/424107/
日経コンピュータ9/27号の関数型言語の記事で、誰も校閲してくれなかったのか
(erlangを参考にアクター押しのscalaと違い) erlangが並列実行に向いてないことになってて泣けた。
何故か記事にされてないclojureよりも残念な気がしてくる。

146 :
Scala押しありきの記事みたいだから(出てくる名前からして)気にしても仕方ないよ

147 :
進藤 智則さんって、Erlangを使ったことがあるのだろうか?

148 :
>>145
好意的に解釈すると、
Erlangは「並列(pallarel)」ではなくて「並行(concurrent)」に向いてる言語だ、
といいたんじゃね?
あと、ErlangのSMPサポートは2006年(R11B)からなので、マルチコアを
活かせるようになったのは結構最近。

149 :
> あと、ErlangのSMPサポートは2006年(R11B)からなので、マルチコアを
> 活かせるようになったのは結構最近。
そーだったのか、知らなかった。>>148は詳しいな。
マルチコアでerlangの時代が来ましたよ!っぽい売り出し方してたから、
昔からそういうつくりなのかと思ってた。
あと、erlangのプロセスって、カーネルスレッドともユーザレベルスレッドとも違って
erlangのランタイムで実現されているという説明をよく目にするんだけど、これってどゆこと?
erlangのランタイムはOSのスレッドを利用しないで、並列(parallel)な処理を実現しているということ?
そうだとすると、たとえば、C言語でもカーネルスレッドを使わずに並列(parallel)な処理を実現できる方法があるの?


150 :
       //
     /  /   バカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ 馬鹿には無理
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

151 :
>>145
メッセージパッシング中心だから、並列実行の実効には向いているがプログラミングが難しい
その代わり分散処理に向いている

152 :
http://ja.wikipedia.org/wiki/グリーンスレッド
http://sssslide.com/www.slideshare.net/pfi/ss-9780450
https://gist.github.com/506491

153 :
久しぶりに触ったけどどうしても変数名を小文字で書いてしまって困る
ElixirとかあるけどどうせならReiaに流行ってほしかったなあ

154 :
Parallella and Erlang: An Introduction
ttp://www.parallella.org/2013/02/04/parallella-and-erlang-an-introduction/
なんか面白そう

155 :
Erlangを勉強したいのですが2つ知りたいことがありまして
・Erlangプログラミング(動物)とプログラミングErlang(飛行機)のどちらがお勧めですか
・マシンにCPUコアがたくさんあったら、あるだけ使ってくれるのでしょうか?
暇だったら教えてください

156 :
馬鹿には無理

157 :
>>155
他の言語でもオライリー派だったせいか、オライリーの方が分かりやすかった
ただ、最初から応用が頭にある場合は飛行機の方がいいかもしれない
ErlangのVMが用意するスケジューラの数はマシンについてるコア数と同じだけど、その割り当てが1対1でマシンについてるコアを使うとは限らない

158 :
>>157
せっかくなので飛行機の方を買ってみようと思います
ErlangとしてはCPUを使うように努力してくれるみたいで安心しました
教えていただきありがとうございます

159 :
>>158
その本達は両方持ってて飛行機の方を先に読んでいたんですけど、動物本は文章が例によって長くて途中で投げましたw
結構昔の話なのでもう忘れてしまって印象だけなんですけど、多分そっちで正解です。
まあ気が乗ってくれば、入門だけ本に助けてもらって後はいくらでもネットで調べられますからね。

160 :
ところでErlangでキラーアプリてなんかないんですか?
特徴いかしたソフトあればもっと流行ると思いんだけど

161 :
node.el

162 :
Wings3D

163 :
HBase/HadoopやCassandraの中身をみてうんざりして
分散システムの構築に特化していると聞いて
RiakやHibariとかに密かに期待してるんですが、
これらってちゃんときちんと作られてます?

164 :
どの辺りにうんざりしたのか聞きたい。

165 :
pythonの本読んでたらcouchDBの宣伝してた

166 :
>>164
(Cassandraはちらっと見た程度だけど)
大局的には凡人には及びも付かないロジックなんだろうけど
道具レベル的にJavaに対する理解が稚拙、特にマルチスレッド関係
バグにバグを重ねていてもはや修正不可能。なんで動いているように見えるのか不思議
JIRAの手ごたえだと、中の人に分かってない人が混じっていて、今後もバグを積み重ねていくものと思われ
なんで地盤の部分をちゃんと勉強しないんだろ。まさに砂上の楼閣

167 :
>>166
そっか。うちなんかはあまり考えずにCDHのHBaseをインストールして運用しているだけの
ユーザーだから、あまり実装の稚拙さとかは考えたことが無かった。
ただRiak等が良いのですぐに乗り換えられるかと問われれば、うちの用途から考えると無理
だなとは思う。Javaで書かれた分析処理の並列実行が一番の用途でレンジスキャンが主なので
やはりHBaseが一番はまるんだよね。
データモデルも違うし、結局のところ用途から選ぶのが最初じゃないのかな。

168 :
http://hypertable.com/why_hypertable/hypertable_vs_hbase_2/
BigTableクローンとしては、HbaseのほかにHyperTableってのもあるけど、
C++で実装されているしAPIに互換性があるわけではなかったと思う。
Erlang/OTP使うと並列プロセスやプロセス監視などの仕組みが整ってるし
ディスクアクセスもETSに集中させれば管理し易いので、実装レベルを保証しやすいと思う。
http://www.erlang.org/doc/man/ets.html
http://www.aosabook.org/en/riak.html

169 :
未だにちょくちょく解説本が出てるのね
http://www.amazon.co.jp/dp/1593274351/ref=snp_td1

170 :
Programming Erlangも第2版が出るってJoeが言ってたよ

171 :
もしかして、まだ開発が進んでるのか…?

172 :
第二版でるのは嬉しいけど初版出てから仕様に大きな変化が何かあったっけ?

173 :
joearms.github.com/2013/04/05/programming-erlang-2nd-edition.html
どうやら最近の流れに反映させるのが主な目的なのかな
これは初学者がステップアップしやすくなりそうだし
初版を持ってる人も最近の動向が掴めていいかもしれないね

174 :
escriptでプログラム動かすときmain/1のアリティを使う場合、main([Arg])な感じに書かないと
思ったように動かなかったんだけどアリティを[]で囲むのってescriptで動かす場合だけなの?

175 :
>>174
> escriptでプログラム動かすときmain/1のアリティを使う場合、main([Arg])な感じに書かないと
> 思ったように動かなかったんだけどアリティを[]で囲むのってescriptで動かす場合だけなの?
まず、argumentとarityを取り違えてる。
コマンドラインで与えた引数がStringのリストとしてmain/1に渡されるので、
main([Arg])としたら、引数が1個の時だけマッチして、かつその引数がArgに入る。
参考:
ttp://erlang.org/doc/man/escript.html

176 :
>>175
なんとなく分かった気がしました。
参考URLありがとうございました

177 :
公式のドキュメントや飛行機本にでてるリスト内包表記でサンプルに
ピタゴラスの定理が使われてるけど
pyth(N) ->
[ {A,B,C} ||
A <- lists:seq(1,N),
B <- lists:seq(1,N),
C <- lists:seq(1,N),
A+B+C =< N,
A*A+B*B == C*C
].
の条件の最期の2行がなんでこんな条件書くだけで
プログラムが動作するのかが納得がいかないのは自分だけ?

178 :
あなただけ

179 :
バックトラック

180 :
>>177
過去、自分も納得いかんかったw
で、リスト内包表記で書かれたリスト処理をmap/filter/concatで書き直すことが可能な事は、
以下の書籍で明解に解説されているので、書店などで立ち読みするなりを薦める
 関数プログラミング, R.バード/P.ワドラー共著, 武市正人訳
  http://www.amazon.co.jp/dp/4764901811/
  リスト内包表記の書き直しは節「3.4 リストの写像と濾過(mapとfilter)」内の p66-68を
ちなみにこの本、最近出版された第2版で全面的にHaskellへ書き換えられた(改悪された?)が、
上記のリスト内包表記の書き直しを含むいくつかの基礎的な事柄が削られているので注意要

181 :
バックトラックなの?
A, B, C それぞれについて、1 から N の全組み合わせだと思ってたけど。

182 :
>>180
へー
参考になった

183 :
>>181
いくつかの規則に従って、内包表記をmap/filter/concatから構成される一般的な式へ
書き換える(変換する/翻訳する)手法だから、Prologのバックトラックとはまったく違う
詳しくは>>180の書籍を参照
Erlangのオリジナルは論理型言語から出発しているが、
その言語とは(Concurrent PrologやGHCといった)並列論理型言語のことであり、
(いわゆるPrologと呼ばれる)逐次論理型言語が持つバックトラック機能は失われている
だから、逐次Prologに関する知識の多くはErlangでは役に立たないと考えた方がいい

184 :
>>180
最初の3行で1からNまでのリスト3つ作って勝手に総当りでもやってんのかと
思ってましたけどそんな機能あったんですね。
とりあえずバックトラックについてはググって
本は図書館に初版あればいいけどとりあえず探してみます。

185 :
パックトラックはprologのモノとは違うのか

186 :
総当たりやってるんじゃないの?

187 :
リスト内包表記について、関数型言語の実装技法を解説した以下の書籍に(>>180より詳しい)説明あり
"The Implementation of Functional Programming Languages", Simon Peyton Jones, 1987
 http://research.microsoft.com/en-us/um/people/simonpj/papers/slpj-book-1987/
 リスト内包表記については、Chapter 7 List Comprehensions を参照
リンク先のページでは、この書籍の全文がPDFとして無償公開(タダ!!)されているので、一読をば
>>185
Erlangでもバックトラックのアルゴリズムは記述できるけど、
Erlangの計算モデルでバックトラックが使われているという話を(自分は)見たことも聞いたことも無い
また、Erlangはパターンマッチングが使えるけれど、これもPrologの単一化(unification)とは別物
>>183で書いたように、Erlangと類似性があるのは(バックトラックを捨てた)並列Prologだ
Erlangの外観が逐次Prolog(いわゆるフツーのPROLOG)と似ているからといって、惑わされてはいけない
>>186
基本的な考え方は総当たりだね、いわゆる generator&filter パターンと呼ばれる手法
で、リスト内包表記をg&fパターンへ書き換える技法を解説したのが>>180や上記の書籍になる

188 :
難しい用語はすっ飛ばして、総当りとやってる事は何か違うの?見かけ上じゃなくて実質的に

189 :
>>188
総当たりでも、深さ優先か幅優先かで停止性が異なる

190 :
この場合の深さと幅って何になるの?

191 :
>>188
意味(=実質)は同じで構文(=見かけ)が違うだけ、いわゆる構文糖(syntax sugar)

192 :
joe armstrongのプログラミングerlangの8.11の練習問題で質問です。
一番目の問題の「spawn(Fun)をAnAtomとして登録する関数start(AnAtom, Fun)を書くという問題で、
2つのプロセスがstart/2を呼び出した場合もプログラムが正しく動作するようにすること。」と言う問題で以下のコードを書きました。
start(AnAtom, Fun) ->
undefined = whereis(AnAtom), %% ここのコードはまずい?
register(AnAtom, spawn(Fun)).
erlangの並行処理のモデルがよくわかっていないのですが、
上のコードのコメントが書かれているところででプロセスAがwhereis(AnAtom)をundefinedに評価した後に別のプロセスBに切り替わってwhereis(AnAtom)をまた
undefinedに評価することはありえるのでしょうか?それともノンプリエンティブマルチタスクに似た並行処理モデルなのでしょうか?
こういうことに気にしないようにregisterを呼び出すプロセスを作って、
そのプロセスにregisterを呼び出すようにメッセージを送ったほうが良いのでしょうか?

193 :
      \                     /
       \                  /
         \               /
          \            /
            \         /
             \∧∧∧∧/
             <    俺 >
             < 予 し  >
             <    か >
─────────< 感 い >──────────
             <   な >      
             <  !!! い >       
             /∨∨∨∨\
            /         \
          /   ∧_∧     \
         /     (  ・ω・)      \
       /    _(__つ/ ̄ ̄ ̄/    \
      /        \/     /      \

194 :
(ここに一人いるんですが長いこと触ってないので答えられないんです)

195 :
>>192
CPU(core)が複数あると、完全に同時並行で動くと思う。
問題は
2つのプロセスが同時に呼んだ場合も正しく動くこと。
そのような場合、片方のプロセスは成功、もう一方は失敗を保証すること
で、spawnされたプロセスをどうするか書かれていないし、
true = register(AnAtom,spawn(Fun)).
で良いような気がする。
2版出たのかな?

196 :
Erlang学習してて詰んでる人は、「コンピュータプログラミングの概念・技法・モデル」(略称CTMCP)を読むと変化が起きると思う。

197 :
>>195
そういう解釈でいいんですかね?
>>2版出たのかな?
部屋から発掘した1版1刷を読んでます。

198 :
>>197
spawnされたほうの始末を考えないといけないことに気付かせる問題と思った。
完全同時並行で動くので、少なくとも8章までの内容だと、プロセスが2つ起動されてしまうのは
回避できないように思う。流し読んだだけなので違ったらごめん。
現実的にはregister成功したらメッセージを投げて、spawnされたほうはそのメッセージを待って
仕事をするのかな?

199 :
>>198
トンチンカンな事を言ってたらゴメン。
UNIXのプロセス生成とごっちゃにしてない?

200 :
process_flag(priority)の説明に preemptive scheduling と書かれていて、erlang(beam)仮想機械の
命令数で切り替えを行うのだったと思う。
2つのプロセスでほぼ同時に register(atom,spawn(fun)) を実行するとして、先のプロセスの
spawn(fun) から戻ったところでプロセス切り替えが起きて後のプロセスが動くと、spawnされて
registerしていないプロセスが2つ存在する状況を回避できない。
registerできるのは1つだけなので、どちらかのプロセスを始末しないといけない。
と書いていて気付いたけど、>>192 のFunを直接spawnするのをやめて、spawnされたらself()を
registerして、Funを呼ぶようにすれば良いのかな?
「完全同時並行」は話をメンドクサくしてしまったかもしれない。ごめん。

201 :
register自体は排他制御されているだろうから、このコードでどうでしょうかね?
start(AnAtom, Fun) ->
Pid = spawn( fun() ->
receive
run -> Fun();
die -> void
end
end),
M = case register(AnAtom, Pid) of
true ->
run;
_ ->
die
end,
Pid ! M.

202 :
200さんが言ってるのはこういうコードですか?
start2(AnAtom, Fun) ->
spawn(fun() ->
%% AnAtomが登録済みの場合例外が発生して
%% プロセス内で例外をキャッチしないのでプロセスが死ぬ
register(AnAtom, self()),
Fun()
end),
true.

203 :
start(AnAtom, Fun) ->
Pid = spawn( fun() -> receive
run -> Fun();
die -> void
end
end),
try
register(AnAtom, Pid),
Pid ! run,
true
catch
error:badarg ->
Pid ! die,
error(badarg)
end.

204 :
>>202
そんな感じ。
set_lock()で排他制御してしまうという案もあると思う。
元々の設問が中途半端なので、後は好みの問題かな?

205 :
erlangにcpanっぽいサイトやツールってありませんか?

206 :
rebarとgithubですね

207 :
ありがとうございます。
ライブラリのインストールはrebarでできそうです。
ライブラリを探す場合は皆さんgoogleやなんかで"erlang hogehoge"のような感じで探してるんでしょうか?

208 :
CEAN ってのがあったと思うけど、無くなった?

209 :2013/10/19
あるけどサイト見たらサポートプラットフォームがR15Bまでだった
TOP カテ一覧 スレ一覧 2ch元 削除依頼
MVVMについて語ろう (678)
【C++】マイナーGUIツールキット (686)
【普通のやつらの】 Arc Language 0 【上を行け】 (260)
C#, C♯, C#相談室 Part81 (271)
静的型付け言語の潜在開発生産性は今の100倍 ×3 (561)
リーダブルコーディング技術スレ (187)
--log9.info------------------
【WT】 WarThunder part14 【陸空Tetsuo】 (617)
Mabinogi Heroes-マビノギ英雄伝 Part464 (627)
【パチンコ】ななぱち part267【ハンゲーム】 (1001)
モバプロ part106 (439)
【パチスロ】ななぱち part240【ハンゲーム】 (995)
【Paperman】ペーパーマン 761枚目【PM】 (970)
【CHO】カオスヒーローズオンライン part55 (613)
【CSO】ゾンビモード総合スレ Part27 (100)
【A.V.A】Alliance of Valiant Arms SD5.59【AVA】 (823)
劇空間ぱわふるリーグ part26 (238)
競馬伝説Live!チャーチル鯖 (616)
【ハンゲ】わくわくフィッシング12投目【釣りゲ】 (160)
【oβ】 神羅万象フロンティア 12枚目 (107)
ELSWORD エルソード part1427 (1001)
【遊友館】宵闇幻影奇譚 10【PBW】 (803)
アラド戦記 4644HitCombo! (1001)
--log55.com------------------
【芸能】小倉優子、テレビ業界での衝撃パワハラ暴露 「殺人未遂じゃない?」
【アメ公】なぜ日本人は他人の不倫に大騒ぎするのか?不倫は社会に影響与える問題ではない★3
【芸能】宮迫博之、謹慎中の過ごし方 いきなりステーキ行けずウイイレやり込む
【日向坂46】 握手会、メンバーもマスクで臨み、ファンもマスク着用を入場条件
【芸能】宍戸錠さん 死の前日もコンビニ弁当…家賃12万円の孤独な晩年
【芸能】広瀬すず オーラを隠せない“お一人さま”スーパーお買い物姿
【サッカー】<本田圭佑>加入が噂されているボタフォゴに防弾車を要求か。近日中に移籍成立も
【芸能】<女優の唐田えりか>不倫関係に悩み周囲に相談!唐田から“連絡したことはない”...真実が語られる時は来るか