08/05/17 10:35:57
ちょっと質問があるんだけど、
マニュアルの和訳は、直訳がいい?
それとも、プログラム解説とか付け足したほうがいいい?
370:EWの人
08/05/17 10:39:42
言い忘れましたが、今度からサイトに関することはコテ付きで書き込みます。
そのほうが分かりやすいと思うので。
371:デフォルトの名無しさん
08/05/17 11:24:53
>>369
わかりにくいところは訳注とかで解説つけるといいんじゃないでしょか
372:EWの人
08/05/18 23:39:36
ちょっと3日間ぐらい閉めます。
アクセスできると思いますが、サイト構成がぐちゃぐちゃかもしれません
373:デフォルトの名無しさん
08/05/20 06:31:56
>EWの人
おお、すばらしいですね。
俺は飽きっぽいので翻訳すぐ飽きちゃった。
翻訳とかは結局、個人の力によるところが大きいのが現状だと思います。
EWの人は大きな戦力だと思います。
ぜひ、サイトの運営をながーく続けてください。
374:EWの人
08/05/20 10:28:19
ありがとうございます。
体裁を整えているのですけど、WindowsのIEだとずれてますね。
友達のを使わせてもらって始めて気が付きました。
FireFoxよりめんどい。
375:デフォルトの名無しさん
08/05/20 10:50:54
cssでするならもそっと単純なレイアウトにしないとブラウザに因っては血涙でるからねぇ。
ちょくちょく覗かせてもらいますんでがんばってくだされ。
376:EWの人
08/05/20 11:44:11
自分の勉強も兼ねて気長にやっていきます。
あと、サイトに変なところ(間違い、分かりにくいところ、レイアウトが壊れてるなど)があったら、
このスレにでも報告してもらえると助かります。
間違いはバザール方式で探したほうが早いですから。
377:EWの人
08/05/20 13:09:02
トップページのwindows IE google欄を修正しました。
378:デフォルトの名無しさん
08/05/20 16:40:36
>EWの人
Install Erlangのページにtypo。
Dounloadサイト → Downloadサイト
379:EWの人
08/05/20 20:59:54
ありがとうございます。
今日、明日と少しやることがあるので、更新は明後日以降になります。
あと、webページ制作に詳しい人にレイアウトのヒントを貰ったので、
少し構成を変えます。
380:EWの人
08/05/22 15:56:56
構成を変えました。
menu部分とかは、変更がうざったいからスクリプトで生成するようにしました。
リンク切れ等がありましたら、ご連絡下さい。
381:デフォルトの名無しさん
08/05/22 18:02:44
>>380
Erlangの勉強を始めたばかりの者です。 とてもいいページですね。
早速勉強がてら、リンク切れ検出をErlangで書いてみようとしました。
HTTP getまではすぐ書けたものの、レスポンスデータから例えば
URLリンク(erlangworld.web.fc2.com)
という文字を抜きだすところで方法を模索中。
まだ文字データの扱いをよく理解していないのですが、参考になる情報を
ご存知の方が教えて頂けると有難いです。
全体の方針は、
・URLリンク(erlangworld.web.fc2.com)
以外で始まるurlについては1次リンクのみチェックする。
(他サイト内のリンク切れまで深追いすると切りが無いので)
・URLリンク(erlangworld.web.fc2.com)で始まるurl文字列を記憶しておいて
2回目に現れた同一urlから先はチェックしない。
参考にさせて頂いたurl:
URLリンク(blog.mikage.to)
382:EWの人
08/05/22 19:58:20
利用して頂いてありがとうございます。
たぶん正規表現を使ってurlを抜き出すのでしょうね。
正規表現 url あたりでググったら、urlを抽出するパターンが出てくると思いますよ。
あとはそれをhtmlファイルの各行にマッチさせるのだと思います。
あとは抜き出したurlにアクセスを繰り返すのだと思います。
ただ、並列処理の部分は作り合わせなのでリンクが切れています。
今検索すると、そこばかりが引っかかってしまうかもしれません。
383:デフォルトの名無しさん
08/05/22 21:30:28
>>382
情報、有り難うございます。
正規表現 url でググったら、perl (まだ使ったことが無い^^;)での例がありました。
perl、正規表現などを基礎から一回やってみた方が良さそうですので、ぼちぼち進めてみます。
384:EWの人
08/05/26 20:28:24
今日は予定が開いていたので、少し更新しときました。
385:デフォルトの名無しさん
08/05/27 23:35:38
ブームが去ったのに、ここだけ盛り上がってるな
386:デフォルトの名無しさん
08/05/28 00:16:19
ブームなんてあったのか!?
流行がどうこうというより、面白い言語だから使うだけさ
387:デフォルトの名無しさん
08/05/28 00:18:47
アーランはツウィッターブームと連動してるんだよ。
388:EWの人
08/05/28 23:11:16
ちょっと更新しときました。
389:デフォルトの名無しさん
08/05/30 18:59:31
ちょっと質問です。
1> List = [1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,......1,2,3,4,5,6,7,8,9,0].
...
2> io_lib:format('~p',[ List ]).
のような例でListの要素が多くその表示文字数が行の限界(80文字か)に
達すると、勝手に、 ,\n 3,\n 4, というように改行を挿入してしまうのですが、
これを抑制する方法はありませんか。
390:EWの人
08/05/30 19:50:41
ちょっと試してみましたが、io_libを使うと全く違う形で出力されました。
> io_lib:format("~p~n",[List]).
[[91,
["1",44,"2",44,"3",44,"4",44,"5",44,"6",44,"7",44,"8",44,
"9",44,"0",44,"1",44,"2",44,"3",44|...],
93],
"n"]
io:formatだとこんな感じになりましたよ。
~wを使うと表示幅いっぱいに出力されました。
> io:format("~p~n",[List]).
[1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,
0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,
0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,
0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,
0]
ok
7> io:format("~w~n",[List]).
[1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0]
ok
391:デフォルトの名無しさん
08/05/30 21:13:26
>>390
問題は、TCP/IPのハンドリングで
tcp_gen:send(Socket,[term_to_list(Reply)]),
の場合です。
クライアントがPrologでこの言語で読み取れる
書式に出力したい。
関数term_to_list/1の中で>>389の
io_lib:format/2が使われています。
Replyがリストの場合に(例えばos:cmd("ps -ale") ) のような場合に、
上記の変形がおこり、クライアントのPrologから読み取れなくなります。
392:391
08/05/30 21:16:08
string:tokens(os:cmd("ps -ale"),[10,13]) のような場合ですね。
393:EWの人
08/05/30 22:53:23
gen_tcpの関数ですね。
send(Socket, Packet) -> ok | {error, Reason}
Types:
Socket = socket()
Packet = [char()] | binary()
このPacketを[char()]、つまりListとしたいのだが、
予想していない変換が起きてしまうということでよろしいでしょうか。
os:cmd()で実行した結果を
string:tokens()によってぶった切る際にゴミが出るとなると、
それはBIFの問題でしょうね。
あと、個人的に一番怪しいなと感じるのは ~p を使っていることです。
これはテキストを整形する際に使うのですが、その整形の際にゴミが入っているのじゃないでしょうか。
他のシーケンス ~w とかを試してみてはどうですか。
頼りないアドバイスで申し訳ありません。
394:391
08/05/31 04:06:01
>>393 >>390
お騒がせしました。
io_lib:format('~w',[ List }),
で解決しました。ありがとうございました。
tcp_gen:ではなくてgen_tcpでしたねw
もう一つ質問。Prologクライアント、Erlangサーバのケースを
出しましたが、Erlangクライアント、Prologサーバだと、:
Prologの項表現は
prolog_call({append,[1,2],[3,4],X}),
の他にないのでしょうか。Host、Portともに既定値の場合です。
期待値は {append,[1,2],[3,4],[1,2,3,4]} ですね。
395:391
08/05/31 04:10:57
間違えました。
{ append,[1,2],[3,4],X } のXも問題なのでした。項を
関数評価させないことと、変数をエラーにならず
いかに表現するかが課題です。
396:デフォルトの名無しさん
08/05/31 04:57:18
変数にエスケープ文字を付加しておいて、それをStringに
なってから変換(削除)するのかな。
それから、
リストの各要素もErlang側のString処理かあるいは、
Prologに渡ってから { } -> Prolog項 変換をしなくては
ならない。
397:デフォルトの名無しさん
08/05/31 07:12:54
-module(yobi).
-export(['曜日'/1,'曜日検索'/1]).
'曜日'(20080531) -> '土曜';
'曜日'(20080601) -> '日曜'.
'曜日検索'(日付) -> '曜日'(日付).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
奇妙なことに、上記のプログラムは正常に働きます。
?- X は c:c(yobi).
X = {ok,yobi}
?- X は yobi:曜日検索(20080601).
X = '日曜'
という具合に。
Prologからsend時のアトムは必ずシングルクォーツで
囲まれている必要があります。
erlang側で writeq や formt('%q',[...}) に当たる機能を
見付出せていないので
20080601 と '20080601' の区別を付けられず今のところ
数値情報は整数表記に限っています。
398:デフォルトの名無しさん
08/05/31 07:45:20
-module('曜日').
-export(['曜日'/1,'曜日検索'/1]).
'曜日'(20080531) -> '土曜';
'曜日'(20080601) -> '日曜'.
'曜日検索'(日付) -> '曜日'(日付).
でも大丈夫ですね。
?- _曜日 は 曜日:曜日検索(20080601).
_曜日 = '日曜'
多バイト文字だけで構成されるトークンが変数になるというのは
仕様とは思えないから、次のバージョンで使えなくなる
かも知れませんね。
399:EWの人
08/05/31 08:43:20
Erlang以外の言語にタームを直接送信するというのが、
まず不合理なような気がします。
Xについても、指定する理由が良く分かりません。
複雑に考えずに、
asciiコードの配列に純粋に変換してみてはいかがでしょうか。
区切りは、特殊な記号(例えば@など)で作ってみてはどうですか。
たとえば、append@12@34
append
@
12
@
34
として、prolog側で@を目印に分解すると都合が良さそうな気がします。
上記の方法だとlistsの関数を使って変数同士を合体させるのですかね。
append(ListOfLists) -> List1
400:EWの人
08/05/31 10:48:05
間違えました。
上の場合だとリストへの自動変換を行なってくれる
lists:concat(Things)のほうが良さそうです。
> lists:concat([doc, '/', file, '.', 3]).
"doc/file.3"
401:デフォルトの名無しさん
08/05/31 22:32:25
>>399
>>395を
send(Socket,io_lib("~w(~w).",[prolog_call,[append,[list,1,2],[list,3,4],[var,'X']]])
で解決するのが自然かなと。
則ち Prolog:append([1,2],[3,4],X) === Erlang:[append,[list,1,2],[list,3,4],[var,'X']]
と変換する。
Prologからの解は
"[append,[list,1,2],[list,3,4],[list,1,2,3,4]])"
でしょうから、receive して Str にStringを得て、
[_,_,Str2|_]=string:tokens(Str,[32,63]),
[_,_,_,X] = lib_misc:string2value(Str2),
で Erlangの変数 X にPrologのappend/3の第三引数が得られます。
402:デフォルトの名無しさん
08/05/31 22:49:05
間違えました。
string:tokens(Str,[32,63]) は要りません。これは、
GET /cgi-bin?append.... の情報を読み出す場合の操作でした。
Prologの解の返信は HTTP/1.1 200 ok\nから始まり、2行改行が続いた後に
"[append,[list,1,2],[list,3,4],[list,1,2,3,4]]" が来るというプロトコルになっています。
したがって\nで区切ってStringのリストとして空行の後のString Str を
[_,_,_X] = lib_misc:string2value(Str) すればよい、ということになります。
403:EWの人
08/06/01 00:03:30
lib_misc:string2value(Str)
は「プログラミングErlang」にあった関数ですね。
あまり良く覚えていませんけど(笑)
ようはStrが純粋なErlangのタームになったら
パターンマッチでXに欲しい値が入ってくるということでしょうか。
今回は[list,1,2,3,4]ですか。
正直なところ、私もこの関数がどういう原理でタームを返すのか
コードを読んでいないから良く分かりません。
したがいまして、現段階で納得のいく回答はできないと思います。
申し訳ありません。
たしか、ファイルにあるErlang項を読み出す方法がありました。
多少オーバーヘッドがあってもよろしいのなら、
list -> write file -> read file -> term
という変換も出来るかもしれませんね。
list -> binary -> term
はたぶん無理じゃないかと思います。
やったことないですけど。
もう少し勉強してみます。
404:デフォルトの名無しさん
08/06/01 04:24:16
>>401
var(T) や list([1,2,3]) はどうするのw
405:デフォルトの名無しさん
08/06/01 04:55:36
>>404
[append,[l_1,2],[l_,3,4],[v_,x]]
などどうでしょうw
さすがに,関数名に v_ l_ を使用している人は少ないでしょう。
',' や ';' も必要ですね。
( [append,[l_,1,2],[l_,3,4],[v_,x]],[reverse,[v_,x],[v_,y]] ) とやると
lib_misc:string2value(Str) で最終的に評価されて、
[reverse,[l,1,2,3,4],[l_,4,3,2,1]] が解になってしまいます。本当は、
[append,[l_,1,2],[l_,3,4],[l_,1,2,3,4]],[reverse,[l_,1,2,3,4],[l_,4,3,2,1]] が欲しいのですが。
406:デフォルトの名無しさん
08/06/01 05:53:13
>>397
多バイト文字をバイトに分解して 8進表記で 300 以下になるバイトを
含むものはやはり、エラーとなるようです。
例 '評価'(評価) -> shop:cost(評価).
評価 は \311\276\262\301 になります。 276 262 を含みます。
ということで、やはり多バイト文字は使えませんね
407:デフォルトの名無しさん
08/06/01 06:10:29
第1バイトがasciiコード >=128+65 かつ =< 90 の時は
変数として、 >= 128 + 97 の時はアトムのアトムとして
認識しようとしている。文字の中に英記号コード + 128 を
含むとエラーということのようです。
408:407訂正
08/06/01 06:12:20
アトムのアトムとして -> アトムとして
409:デフォルトの名無しさん
08/06/01 06:32:42
>>401
既存のProlog述語は多バイト文字の使用が当たり前だし、
やはり、Prolog側にErlangインターフェイス述語を用意
するのだろうね。既にあるProlog述語を利用するなら。
例 yobi(Hiduke,Yobi) :- 曜日(_日付,_曜日).
のような。必ずprolog_callのような述語で呼ばれるのなら、
>>399 >>400 のような簡易表現でやりとりするのも、
ありかな。XMLに変換して渡すというのもあると思う。
それ以前に、 Prolog項 -> Erlang関数 変換は簡単なので、
Erlangに移植する方が効率がよい場合も多いのではないか。
410:407訂正
08/06/01 06:36:11
>>409
日本語の移植が困難なのでこんな試みをしているのですw
411:デフォルトの名無しさん
08/06/01 06:38:58
名前、消すの忘れてた。 407とは関係がないレスでした。ちなみに使用ブラウザはおちゅーしゃ。
412:デフォルトの名無しさん
08/06/01 06:53:26
ところで、既存のPrologのコードでどうしてもここは
Erlangでというようなところがあるのだろうか。
どこかのサイトでリアルタイム性のあるスケジューリング問題を
挙げていたが。1996年のINAPでのErlangチュートリアルで
この問題が出ていたようだが、英語でよく判らなかった。
413:409
08/06/01 07:12:02
yobi(Hiduke,Yobi) :- 曜日(Hiduke,Yobi).
だった。訂正。
414:EWの人
08/06/01 09:50:36
Prologが分からないのに適当なこと言ってすいませんでしたwww
未熟なため、論点が少しずれていたようです。
そういえば、卒論をErlangで書くことになりそうです。
415:デフォルトの名無しさん
08/06/01 11:32:21
まあ歴史があってライブラリもそれなりに整備されてる、いい言語だと思うけど
データベースが付属しているってのが、こんなに便利だとは思わなかった
416:デフォルトの名無しさん
08/06/01 13:05:32
俺が使いたいライブラリは何一つ実装されていない。
417:デフォルトの名無しさん
08/06/01 15:11:26
ないものは作れ
418:デフォルトの名無しさん
08/06/01 16:02:25
スレに活気が溢れてきたな
419:デフォルトの名無しさん
08/06/01 16:22:22
>>417
実装されるまでErlangは使わない。
既に実装されている言語を使う。
目的をはき違えるなよ。
420:デフォルトの名無しさん
08/06/01 16:26:58
目的は多様な物だよ
人によって千差万別
421:デフォルトの名無しさん
08/06/01 17:00:27
>>410
日本語処理をするなら、君の方向でPrologでErlangのプリコンパイラを作るのがよさそう。
1) PrologでErlangクライアントブラウザを書く。
2) ブラウザ上でプリコンパイル。
曜日検索(_日付) -> 曜日(_日付). を er00001(Er00001) -> er00002(Er00001).
3) このブラウザでプリコンパイル時に以下のデータベースを作っておく。
erlangアトム(er00001,曜日検索).
erlangアトム(er00002,曜日).
erlang変数(Er00001,'_日付').
4) "c:c(er0002)" を実行。 則ちErlangサーバ側のコンパイル。
5) > 曜日:曜日('20080420').
で 関数評価。
6) erlangサーバにデータベースを基に変換された "er00001(Er00001)" が送信され、
7) erlangサーバからの値 { '20080420','日曜' } が得られる。
つまり、Erlang をアセンブラの位置づけで使う。
422:421
08/06/01 17:08:28
送られるのは "er00001('20080420')" でした。
それから、Prologのブラウザでは > c(曜日). ですね。送られるのが "c:c(er00002)" です。
423:デフォルトの名無しさん
08/06/02 20:32:12
erlideをインストールし直したら使えなくなった。
普通のエディタに書いてるのと変わらん。
勘弁して欲しいよ。
424:デフォルトの名無しさん
08/06/02 21:16:31
つ edlin
425:デフォルトの名無しさん
08/06/03 10:01:42
>>421 たとえば
foo(X) -> if is_list(X) -> lists:flatten(X); true -> X end.
のようなブロック構造を含む場合
エジンバラProlog では read できないと思うけれど、
やはりパーサを書くのかな。foo(X) の後の -> を :- に
書き換えれば read できるけれど。
それはともかく、私は receive .... end みたいな構文は好きでない。
426:EWの人
08/06/03 19:52:37
>>423
emacsとかどうですか。
私もerlideの調子が悪いので乗り換えようかと考えています。
URLリンク(www.erlang.org)
を参考にしたら簡単に入れられると思いますよ。
後日、手順をアップしておきます。
427:デフォルトの名無しさん
08/06/05 09:51:13
>>421
漢字ローマ字変換(_漢字文字列,_ローマ字文字列) :-
concat_atom(['kakasi -Jj ',_漢字文字列],S1),
shs(S1,,[_かな文字列|_]),
かなローマ字変換(_かな文字列,_ローマ字文字列).
のような感じでアトムをローマ字アトムに変換したら。
同音異義からくる問題をどうするかだね。
428:427
08/06/05 09:52:50
shs(S1,[_かな文字列|_]), ですね。
カンマが二個になっていた。
429:427
08/06/05 10:27:41
まちがえた。
concat_atom(['echo ',_漢字文字列,' | kakasi -Jj'],S1),
だった。
430:EWの人
08/06/05 15:44:38
新たに最新のEclipseを落として、Erlideをきちんとした手順(前は適当でした。すいません。)に沿って
インストールしてみたのですが、私の環境でもインストールできないようでした
(Eclipseを起動できなくなる)
普通に動かせる方がいたら、良かったら情報を提供していただけませんでしょうか。
431:429
08/06/06 05:28:50
kakasi -Jj で漢字はローマ字に変換できます。
ただし、かなを変換しないから、かなローマ字変換で補正する。
だから、最初のshs(S1,[_かな文字列|_]), の論理変数名は不適切で、
shs(S1,[_かなを含むローマ字文字列|_]),
かなローマ字変換(_かなを含むローマ字文字列,_ローマ字文字列).
でなくてはいけなかった。かなローマ字変換は
・ ローマ字はそのままスルーする。
・ ローマ字の前のエスケープ文字を削除。
・ 表を引いて、かなをローマ字に変換。
・ かなとローマ字以外の文字はそのままスルー
こういう特殊な述語だから、本当はかなローマ字変換という述語名は
適切ではありません。
432:431訂正
08/06/06 05:31:32
・ かなとローマ字以外の文字はそのままスルー
ではなく
・ かなとローマ字以外の文字は無変換
でした。
433:デフォルトの名無しさん
08/06/06 05:54:44
Prolog(サーバ) <-> Erlang(サーバ) の事を書き込んできましたが、
一応整理して、この話題を終了します。
PrologからErlangを呼び出したいケースは、
1) Prologの弱点の補正・協業。具体的には、並行プロセスでの実行。非同期処理など。
2) 全角文字の処理等をPrologによるブラウザ(IDE)で解決したい場合。.
ErlangからPrologを呼び出したいケースは、
1) Prologに圧倒的な資産があり、これをErlangで利用したい場合。
434:デフォルトの名無しさん
08/06/07 07:50:54
>>433
%Prolog
append([],X,X).
append([U|X],Y,[U|Z]) :- append(X,Y,Z).
を
%Erlang
append([],X) -> X;
append([U|X],Y) -> [U|append(X,Y)].
に変換するようなErlang関数が入ってるライブラリって
どこにありますか。
Erlangの歴史を考えれば絶対にあるよね。
435:EWの人
08/06/07 21:40:50
>>434
たしかに、ErlangとPrologは歴史的に繋がりがあると思いますが、
互換性が取れているという話は聞いたことがありません。
Prologユーザの絶対数が少ないので、言語としては似通っていても
Erlangではprologのインターフェースを持っていないのかもしれません。
pythonでいうexecみたいなコマンドがあったら便利ですね。
そうすればこんな悩みなんか一瞬で解決してしまうのにwwww
webページに関してなのですが、
現在までのコンテンツに
「バイナリ、ビットシンタックス」
「マクロ」
を追加して、一回整理をしようと思うのですが、
今までの範囲で他に必要なものはありますでしょうか。
作成しますので、良かったらお伝え下さい。
436:デフォルトの名無しさん
08/06/08 00:48:14
>>435
特にはありません、僕にとって全てが未知なのも原因ですが。
声援を送ることしかできませんが、がんばってくだされ(日本語でかかれたWebのErlang系の情報で一番充実してますです)
437:デフォルトの名無しさん
08/06/08 05:00:42
>>434
例えば、append/3 ということになるが、
実務での使われ方としては、
?- append(X,[_,d|_],[a,b,c,d,e,f]).
X = [a,b],
_ = c,
_ = [e,f].
yes
の方が多い。つまり、Prolog述語の引数のモード宣言がないと、
難しいということがあるのではないか。
438:433
08/06/08 06:16:36
Prologでなくても、RubyでもPythonでも何でも呼び出し側は
いいんです。parserを書く必要があるかないかくらいの差。
それよりも、こんな話題を続けていて気づくのは、
Erlangは実務的な部分で専ら伸びてきているせいか、
入門書に当然のようにソケットを使った通信などが
入っている。これは、関数型言語では珍しい。
そして、ありがたい。
例外の扱いの順序など、どうかなと思うところもあるけれど、
"Programming Erlang" のプロセス間通信に至る構成が
言語入門書の標準になることを期待。
ウィンドウを開いてにHello,World! を表示することではなくてね。
439:433
08/06/08 06:34:45
"Concurrent Programming in Erlang" にはソケットでてこなかったか。
この本を入門書と呼ぶことは躊躇されますが。
440:デフォルトの名無しさん
08/06/08 06:47:37
ビットの取り扱いが楽だったり、もともとネットワークとの親和性も考慮されている様子
(そういえば開発元が通信会社か)
他言語からErlangを呼ぶってのはなかなか良い感じ
解法としてプロセスの大量使用が自然な問題を、Erlangに投げてやるって使い方が
すぐさま思いつく
441:デフォルトの名無しさん
08/06/08 07:07:42
>>440
ソケット通信だとオーバーヘッドはあるけれど、
その使い方を一般に知らしめるのが、Erlang普及の
一番の近道だと思う。
442:EWの人
08/06/08 09:06:15
>>436
いやいや、私も初めてから2ヶ月ぐらいですからね。
実際に使い始めれば習得も早いのではないかと思います。
多言語とのソケット通信に関してなのですが、
自分で関数を定義するよりも、既存のインターフェースを使うほうが楽なようです。
「プログラミングErlang」に載っていなかったので、そのうち載せておきます。
443:EWの人
08/06/08 13:13:57
少し調べたのですが、erlangのBIFにmakeというものがあって、
erlangのソースコードのコンパイルにはgnu makeよりもそちらのほうが便利なようです。
URLリンク(www.erlang.org)
444:EWの人
08/06/09 14:59:00
webページの構成を変えました。
URLリンク(erlangworld.web.fc2.com)
明日以降に内容の調整をしていきます。
445:EWの人
08/06/11 14:42:00
Erlangの最新版5.6.2はエラーが起きた行を表示してくれるようになったみたいですね。
446:デフォルトの名無しさん
08/06/11 16:58:53
>>445
私は5.5.5だけれども、エラーメッセージの読解には泣かされてる。
447:デフォルトの名無しさん
08/06/11 17:00:57
皆さんはあーらんでどんなもの作ってます?
448:EWの人
08/06/11 19:48:20
>>446
まさに、「日本語でおk」ってやつですよねwww
>>447
一概には言えませんけど、やっぱりネットワーク関連のものですね。
簡単なサーバならサクサク書けます。
本来なら自分でプログラムを作成しなければいけないところを、
言語がカバーしてくれているのでいい感じだと思います。
分散システムとかを作るのに最適な言語なんじゃないかな。
449:デフォルトの名無しさん
08/06/12 09:28:12
で、C10Kは越えられるの?スケールするの?
450:デフォルトの名無しさん
08/06/12 10:45:30
>>449
「C10K」については知らないので、ボケたレスになるのを覚悟で書くと、
Erlangはプロセスを完全にErlang処理系が制御するので最大プロセス数は
Erlang起動時のパラーメータで可変となる。
私はほとんどスケルトンだが、100万プロセスを起動して実験している。
Ubuntuだから4GBメモリで。
実務で使っているマシンになるので試したことはないが、RHEL5だと無制限の
はずだから、もっといけるのではないか。
451:デフォルトの名無しさん
08/06/12 11:55:08
比較的実用レベルの話だと、
WebサーバのベンチマークでYAWSが8万セッション程度を同時に扱ったテストがあったようだ
比較対象のApacheは4000セッションで落ちた
URLリンク(www.sics.se)
452:EWの人
08/06/12 20:40:08
C10Kを意識したプログラム作成って個人レベルじゃあまり求められませんよね。
自分が作ったプログラムで「遅い」と感じるのは演算能力以外の部分が大きいです。
例えばネットワークとかファイル入出力とか。
Erlangは理論上においてC10K問題をクリアしやすい言語だと思いますが、
そのためには言語以外にアルゴリズムなども発展する必要があるかもしれませんね。
453:EWの人
08/06/13 10:01:22
yahooカテゴリに登録されるようです。
あと数日したら掲載されるみたいです。
454:デフォルトの名無しさん
08/06/13 10:14:42
>>453
昔は検索エンジンにサイトを登録してもらうのが
一種のステータスだったのになあ
ディレクトリ型検索って見ることもなくなったな
455:デフォルトの名無しさん
08/06/13 10:22:24
PageRankとかの分析手法の登場で、
人気サイトはすぐに発見できるようになっちゃったからね
まあ今でも良質なサイトが多いようだし、一定水準を確保できているという証明にはなるかも
456:EWの人
08/06/13 11:37:25
>>454
>>455
ページランクを上げるためには知名度がいりますからね。
起爆剤として働いてくれればと思って登録しました。
とりあえずページランク n/a(存在しない) から抜けることが目標です。
存在しなきゃ利用者も増えないですから。
457:デフォルトの名無しさん
08/06/14 02:57:39
>>449-452
Web2.0の先にあるC10K問題
URLリンク(www.atmarkit.co.jp)
TheC10kProblem
URLリンク(www.hyuki.com)
Grizzlyの概要 : C10K問題に対応するGlassFish(Grizzly)
URLリンク(blogs.sun.com)
Javaの場合はスレッドごとのスタックがメモリを食いつぶすから
ネットワークサーバエンジンGrizzlyは1スレッド複数クライアント方式で実装されました。
Erlangは100万スレッドでも動くから1スレッド1クライアント方式でスケールするのですね。
コードが分かりやすくなる1スレッド1クライアント方式を選べるのはありがたいです。
458:EWの人
08/06/16 20:49:15
ちょっと忙しいので更新遅れます。
とりあえず作成してあるものを明日アップしておきますが、
次の更新は来週あたりになりそうです。
459:デフォルトの名無しさん
08/06/16 22:12:41
「Concurrent Programming in Erlang」ってどんな本なの?
アマゾンのマープレでは法外な値段が付いてるけど・・・
460:EWの人
08/06/16 22:35:37
英語が読める人にとっては、プログラミング言語Erlangより簡単です。
よりマニュアルに近い感じです。
ただ、あの法外な値段を払ってまで読むべきものかと言うと、
それはちょっと疑問ですね。私も自腹なら買いませんwww
本家のマニュアルを片っ端から読めば、同じような内容だと思います。
461:EWの人
08/06/21 16:17:40
今更気づいたんですが、
BIFってのはErlang以外から構成されている関数のことだったんですね。
標準ライブラリのことをBIFと言うと思っていました。
462:EWの人
08/06/23 22:17:37
分散Erlangとファイアーウォールを共生させるのが難しいですね。
デーモンで使われるポートを開放していても、どこかが引っかかっているような感じです。
463:デフォルトの名無しさん
08/06/24 03:16:43
ライブラリが強力に思えたことがある。
でもつかってない。
Amazon EC2上で実験してみたいと思っているが。
464:デフォルトの名無しさん
08/06/25 11:18:33
数十~数百台のノード間でグループ通信をしようと思っています。
やりたいことは、
- グループにノードが追加/削除されたらコールバック関数を呼ぶ
- グループメンバのノードへのブロードキャスト
- グループ内のノードのリアルタイムモニタリング (CPU ロードとか)
なんですが、OTP のどのライブラリを使ったらよい、とかがわかれば教えてください m(__)m
465:EWの人
08/06/25 21:43:15
>>464
たぶん、求めている機能自体はOTPではなく他のものを使って作ると思います。
OTPはそれらの機能を繋ぎ合わせる土台みたいなものですかね。
他のマシンの状態とかを逐次的に調べたいのであれば、
OTPのイベント管理機能を通して管理するのがスマートなような気がしますが、
イベント自体は自分で設計する必要があります。
ブロードキャストに関しては、通常のTCP/IPでいうところのマルチキャストみたいなもんですから、
全てのノードに連続で送信でいいんじゃないですかね。
とりあえず、ライブラリの
rpc group なんかが参考になるかも。
466:デフォルトの名無しさん
08/06/26 04:54:46
Tokens の構成要素で
[{atom,1,abc},...} の中の"1"は何を意味するのですか。
467:デフォルトの名無しさん
08/06/26 04:57:31
まちがえた。よく見えない。 [{atom,1,abc},...] です。
おちゅーしゃの入力ウィンドウとフォントをもっと大きくする方法はないのだろうか。
468:デフォルトの名無しさん
08/06/26 12:11:58
>>466
改行情報。
"2"の場合、この要素の前に1行改行が入る。
469:464
08/06/26 16:54:56
>>465
ありがとうございます。
ひとまず、数十台のクラスタでそれぞれにスーパーバイザを立てて、全対全で
監視しあう(もし落ちてたら再起動)、ということを考えています。
この場合、supervisor のコールバック init/1 の中身をどうすべきかで悩ん
でいます。
ふつうは↓こんな感じになると思うんですけども、すでに起動してるやつ同士
にリンクを結ぶような start_link/0 関数を定義する必要があるでしょうか??
それとももっと簡単なやりかたがある?
{ok, {{one_for_one, 3, 10},
[foo_server,
{foo_server, start_link, []},
permanent,
10000,
supervisor,
[foo_server]}
]}}.
470:EWの人
08/06/26 21:08:21
supervisorは階層型の管理方法だと思うので、
平等なノード同士を監視し合うというのは特殊な使い方なような気がします。
個人的な意見なのですが、スクラッチをOTP無しで作ってみて、
それを参考に「欲しい機能を持たせた仕組み」を一から作るのがいいかもしれないですね。
471:EWの人
08/06/27 18:16:23
そういえば、ブロードキャストに関してなのですが、
プロセスに対してだったら連続送信するしかない(もしかしたら間違ってるかも)と思うのですが、
分散Erlangに参加しているノードに登録されているローカルの登録済みプロセスに対してなら
マルチキャストする手法があったような気がします。
各々のノードが均一であるならば、同名のローカルの登録済みプロセスを一つ作成して、
それにたいしてマルチキャストすればいいかもしれません。
やったことないですけど。
472:デフォルトの名無しさん
08/07/02 06:09:27
Ubuntu7.10 でOTPを./configure するとエラーになるのだけれど、
何か注意事項があるかな。
473:デフォルトの名無しさん
08/07/02 20:13:47
エラーをよく読む
474:EWの人
08/07/02 23:26:26
たぶんオプションの指定か、
何かが足りない(コンパイラとか?)かのどちらかだと思います。
Java(BIFにJinterfaceがある)もいるかもしれませんね。
コンパイルしてる最中にチェックされてたような気がします。
475:デフォルトの名無しさん
08/07/09 08:57:01
今日の日本経済新聞の一面に、松下が世界25万台のPCを
集中管理するという短い記事があったけど、こういう制御は、
Erlang向きなんだろうか。
476:デフォルトの名無しさん
08/07/10 01:01:57
>>475
何を管理するかによると思う。
記事から推測すると、管理ポリシー(実行権限、使用可アプリ制限、
パッチ等の適用タイミング同期など)が対象のようだから、Erlangで
なくても可能。
むしろ既存システムとの整合性が重要と思われる。
477:デフォルトの名無しさん
08/07/10 03:01:01
>>476
25万台、ポーリングシステムなどと途方もないことを
考えてしまったw
478:EWの人
08/07/10 23:42:57
Erlangの純粋な分散はクラスタ向きかもしれませんね。
例えば、「みんなのマシンを合わせて分散させよーぜ」なんてのは
セキュリティの問題上きついかもしれません。
ノードごとに権限を設ける機能ってあるんですかね?
479:デフォルトの名無しさん
08/07/11 11:38:55
OTPにはErlangアプリケーションサーバのようなものは入っているのですか?
480:EWの人
08/07/22 18:08:25
>>479
JavaのTomcatみたいなもののことですね。
良くわかりませんが、あるとしたらYawsあたりの資料に載っているような気がします。
明日あたりに少しwebページを更新します。
9月あたりまで少し更新頻度が遅れそうです。
481:デフォルトの名無しさん
08/08/01 13:06:37
私は日常的には関数型言語とは無縁なのですが、Erlangの
receive ... end や case ... of ... end が嫌で嫌でたまりません。
fun() -> ...end も勿論いやです。
こういうのは関数型言語を使われている方は平気なのですか?
482:デフォルトの名無しさん
08/08/01 14:36:52
共通する「こういうの」が解らないんだが、その3つに関しては全く気にならない。
#endが嫌なのか、予約語が嫌なのか…ifもwhenも入ってないし…
むしろ、個人的にはifでelseが使えない方が嫌だ。
if Foo ->
bar;
else ->
baz
end
ってやりたい。
それが嫌でcaseばかり使ってるよ。
483:デフォルトの名無しさん
08/08/01 14:56:22
>>482
何が気に入らないか書かなくて申し訳なかった。
たとえば、
X = receive(), foo(X),
で何ら問題ないではないかということですが。
case文もif文もないとだめですか。
484:デフォルトの名無しさん
08/08/01 23:50:27
>>483
Prologの人乙
485:デフォルトの名無しさん
08/08/02 00:53:44
>>484
そうです。
486:デフォルトの名無しさん
08/08/02 01:59:44
自分が慣れ親しんだPrologと違うからいやだってことですね。
487:デフォルトの名無しさん
08/08/02 04:10:16
>>486
そうですねw
Prologでも
...,(q1(..),q2(..);q3(..),q4(..),q5(..);q6(..)), ...
のような構文がありうるわけですが、
実はプログラムエラーの90%以上が
ここで発生します。
それで何ていうのか適切な表現では
ないかもしれないが、
インラインに展開したような表記法は
嫌いなのですね。
488:デフォルトの名無しさん
08/08/02 15:45:39
Prologみたいに一々変数の名前考える方がイヤすぐる
489:デフォルトの名無しさん
08/08/02 15:48:00
>>488
論理変数が命だから。
490:デフォルトの名無しさん
08/08/02 20:44:36
Prologのプログラミングは
1) 単位節(データベース)定義。
2) ルールの記述。
以外にないわけで、1)をともかく積み上げなくてはなりません。
2)のルール記述では唯々現時点で、論理変数が同じものであるか、
あるいは同じものとは云えないかに焦点を当てて記述していく。
>>487 の面倒だというのは、違うことを示すために別のラベルを
考えるのが面倒だということですね。たしかにそうなのだけれども、
論理変数の記述によって現れるストリームこそPrologの形像であり、
論理変数の命名、則ちPrologプログラミングではないかと思います。
491:デフォルトの名無しさん
08/08/02 20:48:40
>>490
スレ違い
492:490
08/08/02 20:50:28
すみません。 >>487 ではなくて(これは私の書き込み)、
>>488 でした。
493:490
08/08/02 20:51:23
>>491
ErlangとPrologの歴史から
すれ違いだとは思いません。
494:デフォルトの名無しさん
08/08/02 21:18:01
fib(N) -> fib(N-1) + fib(N-2).
って書けないのは面倒すぐる。
N-1やN-2やfib(N-1)の結果やfib(N-2)の結果やfib(N-1)+fib(N-2)の結果は
>唯々現時点で、論理変数が同じものであるか、
>あるいは同じものとは云えないかに焦点を当てて記述していく。
必要ないよね。
Erlangの中の人もPrologは面倒すぎたんじゃないの?
495:デフォルトの名無しさん
08/08/03 02:03:18
Erlang はとっくの昔に論理型言語じゃなくなってるから
今さら Prolog と比べられてもな
496:デフォルトの名無しさん
08/08/03 03:02:33
>>495
どなたかがPrologの変数に言及されたので、
Prologでの論理変数の位置づけを確認した。
私がいいたいのはErlangが
foo(receive()) で捌けるようにならなかったものかということ。
497:デフォルトの名無しさん
08/08/05 01:01:06
>>496
論理型プログラミングがしたいなら、とっとと別の言語を探した方が
幸せになれると思うよ。
498:デフォルトの名無しさん
08/08/05 10:17:23
>>497
やっぱり、Ozか
499:デフォルトの名無しさん
08/08/05 12:14:16
>>498
習得時間がかかりすぎ。Erlangの何倍かな。
500:デフォルトの名無しさん
08/08/06 00:51:10
Oz が Erlang に比べて極端に難しい言語だとは思えんが。
論理型でも書けるってだけで、それを強制されるわけでもないし。
ところで Oz のスレって無いのかね。
501:デフォルトの名無しさん
08/08/06 00:57:35
コンピュータプログラミングの概念・技法・モデル
スレリンク(tech板)
502:デフォルトの名無しさん
08/08/11 07:38:27
>>500
ひとつのパラダイム部分だけ使うのなら変わらないけれど
それで習得したとはいえないだろう。
どのくらい学習時間が必要かはともかくとして、
Erlangで不自由な部分があるからOzも同時に使いたいと
思ってる人いるかな。
503:デフォルトの名無しさん
08/08/21 03:19:55
なんでこれでエリクソンって読めるの?
504:デフォルトの名無しさん
08/08/21 04:47:04
>>503
作った会社の名前だっつの
505:デフォルトの名無しさん
08/08/21 07:11:23
>>503
"Erlang" でエリクソンと読む訳ではないよ。アーランと読むのが普通みたい。
506:デフォルトの名無しさん
08/08/22 03:49:09
>503
エリクソンの綴りは"Ericsson"
Erlang (アーラン)は最初、エリクソン社が社内で使うために
開発された言語らしい。
よって"Erlang"は"ERicsson LANGuage"の略だと言う説あり。
by Wikipedia
507:デフォルトの名無しさん
08/09/13 11:09:45
秋の夜長は、がっつり、あーらん
508:デフォルトの名無しさん
08/09/14 15:07:49
Erlangってコンパイラ屋にたいして愛されてないよね
URLリンク(shootout.alioth.debian.org)
URLリンク(shootout.alioth.debian.org)
ホントに数百コア時代がきた時には使われないんだろうね。
要素技術だけ他の新言語に吸い上げて貰えば上等みたいな。
509:デフォルトの名無しさん
08/09/14 17:17:17
>>508
機械語が関数型になるのはどのくらい先だろう。
510:デフォルトの名無しさん
08/09/14 17:30:04
次世代はLarrabeeなんでまだ10年はx86かな
511:デフォルトの名無しさん
08/09/14 17:48:11
15年とか20年とか先になるとして、>>508 的な状況と
時期的にどのくらいのズレが生じるのだろう。
本格的なマルチコア時代と関数型への移行が
同期するなら極めてハッピーと言えるのだが。
512:デフォルトの名無しさん
08/09/14 17:55:53
>>511
マルチコアではHaskellが有望株らしいよ
URLリンク(www.watch.impress.co.jp)
513:デフォルトの名無しさん
08/09/14 18:10:46
Hakellが機械語ですか、ゾッとしますね。
514:デフォルトの名無しさん
08/09/14 18:27:47
関数に副作用が無いことを利用して並列化をかけるってのは確かに有望だとは思うが
オブジェクト脳的な考え方だと、アクターベースのほうがより親しみやすい感じがする
特にゲームは実世界のシミュレーション
オブジェクト的な発想が強そうだが、そうでもないのかね?
515:デフォルトの名無しさん
08/09/14 18:44:26
ゲームに使うアクションの合成をうまいこと作れる演算子のセットが
できれば、Haskell的な言語への移行は意外と早いんじゃないかな。
ツクール系とかのスクリプト言語として「HaskellらしからぬHaskell」が
現れてくると思う。
むしろ、ゲーム開発のメインストリームになるためには、ガベージコレクションに
ブレイクスルーが必要だと思うね。確実にメモリ消費量の上限を決められたりとか、
そのあたり。
純粋関数型言語じゃないけど、PC向けのSchemeであるYpsilonの開発動機に、
既存の処理系ではGCに不満がある、とあった。
516:デフォルトの名無しさん
08/09/15 15:50:20
>>515
20年後になっても、人類はゲームをやってるのか。
517:デフォルトの名無しさん
08/09/15 15:56:04
20年前に人類にゲームはなかったのか?
518:デフォルトの名無しさん
08/09/15 15:57:12
>>516
やって無いと思うほうがおかしくね?
519:デフォルトの名無しさん
08/09/15 20:38:34
2千年後でも2万年後でも200万年後でも人類はゲームをやっているだろうね。
絶滅するか、あるいはとても人類とは呼べないものに変貌していない限り。
ゲームをする(遊ぶ)と言うのは人間というものを特徴づける
重要な性質のひとつだ。
現在のような人手でプログラミングする必要のあるコンピュータが
存在しなくなる可能性の方がまだ有り得るな。
520:デフォルトの名無しさん
08/09/15 20:44:49
人間自体コンピュータだと主張する俺が通りますよ
521:デフォルトの名無しさん
08/09/15 21:31:21
脳の並列処理はすごいと思う。
画像認識処理とかもう人間並みに速くなってるのかな
522:デフォルトの名無しさん
08/09/15 21:40:46
無理でしょ。
人間の画像処理は目玉やら筋肉やら脊髄やら、いろんな複合的なシステムになっている。
ハードウェアまで含めて画像処理に使ってる人間と、
ソフトウェアだけのコンピュータによる画像処理では最初から勝負になってない。
たとえば、太陽黒点を観測するシステムを構築する時。
結論から言うと、カメラで写らない黒点を人間の目玉は見つけることができる。
なぜなら人間は全体を一様な明るさでとらえているのではなくて、
眼球を動かしつつ虹彩で明るさ調整しつつ経過時間を意識して見ているから。
人工的にできないわけじゃないけど、まだ誰もできていない。
523:デフォルトの名無しさん
08/09/15 21:44:17
実際に観測装置を動かしてみると、とても大きな黒点が見えるのに、
適切に設定したはずのカメラにはまったく映っていなかったということが実際にある。
524:デフォルトの名無しさん
08/09/18 19:39:05
パートクリエイター板で技術さんを募集。
みんなでわいわいやりましょう。
URLリンク(ex14.vip2ch.com)
URLリンク(www36.atwiki.jp)
現在6名の技術さんがいます。
他にもサーバー部分、土台を作る人が不足しています。
CSS、Perl、アーラン、その他言語ができる人を募集中!
勉強中な人でもかまいません。
イメージや企画内容についてはスレッドとwikiをご覧下さい。
わからない所があればIRCやメールで気軽に聞いてください!
525:デフォルトの名無しさん
08/09/18 21:29:28
>>524
おk
いまからerlang勉強して手伝ってやる
526:デフォルトの名無しさん
08/09/20 14:37:16
むしろ技術者が6人もいるのに、ろくに進捗がないことの方が驚きだわ
527:デフォルトの名無しさん
08/09/20 14:39:43
>>526
それではあなたが加入して、革命的躍進を遂げて下さい。
528:デフォルトの名無しさん
08/09/20 19:27:11
>>526
察しなさいよ。
6人中一人しか使えない言語を選択してるんだぞ?
リーダーは大学2年生くらいで、来年には就職活動が忙しくなって投げ出すよ。
529:デフォルトの名無しさん
08/09/22 13:16:54
質問です
floatからintegerに変換するにはどうすればいいですか?
530:デフォルトの名無しさん
08/09/22 13:38:00
trunc(Number).
531:デフォルトの名無しさん
08/09/22 14:19:38
>>530
ありがとうございます。
さらに質問ですが、Erlangで無限リストはどのように書けば良いのでしょうか?
532:531
08/09/22 14:28:47
説明が不十分ですね。
私がしたいことは、
たとえば、2,3,5,7,11,13,・・・(無限)と続く素数のリストから100個の要素を取得したい場合、
どのように書くのがスマートでしょうか?
533:デフォルトの名無しさん
08/09/23 15:49:03
皆さんエディタは何を使っています?
俺はemacsを使っているんですが、関数を畳んだりできる機能が無いので若干不便に感じています。
534:デフォルトの名無しさん
08/09/23 16:45:02
>>533
> 関数を畳んだりできる機能が無いので
あるよ。 erlang のモードで使えるかどうかは知らんが、それでもちょっとコードを書き足せば出来るはず。
535:EWの人
08/09/28 03:02:06
おかげさまで大学院にも合格しました。
卒論の折を見ながら、サイトの更新を再開しようかと思います。
>533
無限リストってものが良く分からないのですが、
一番純粋なリストっぽくやろうとしたら、リスト内包表記じゃないかと思います。
条件判定のところに素数の条件と、どこまで求めるかを記せば動くような気はしますね。
ただ、直感的にあまりいいプログラミングのやり方じゃないように感じます。
毎回2から割り切れるか調べるという馬鹿プログラムなら別にいいんですが、
そうじゃないのなら複雑すぎるので避けるべきではないかと。
特に拘りが無いのであれば、他の言語みたいに関数で定義すりゃ手っ取り早いような気はします。
引数に「現在の値」と「素数リスト」を取った再帰関数を定義して、
「素数リスト」に含まれる要素が「現在の値」を割り切れないときは素数リストにその値を追加。
「現在の値」をインクリメント
というのをグルグル回すのが一番シンプルな気がします。
本格的に作るのなら、並列処理で判定させるのも面白いかもしれませんね。
536:デフォルトの名無しさん
08/10/03 07:50:35
>>494
関数型に較べて、論理型が冗長な部分があることは確かだが、
多くの場合仕様を変更して機能的に拡張するとなると、
例えば履歴の確保を追加する場合などだが、関係する述語群に
引数(論理変数)を1-2個増やすだけで解決できる論理型の
方が圧倒的に有利になる。
537:536
08/10/03 09:05:03
例えばPrologで引数を増やすということは、
関数で型宣言をすることに近いのだから、
圧倒的に有利どころかほとんど差はないか。>>536 は撤回。
538:デフォルトの名無しさん
08/10/03 21:34:53
プロセス辞書って副作用だよね?
539:デフォルトの名無しさん
08/10/04 00:11:29
ごめん、参照透明とかあんま厳密な言語じゃないみたいね
540:デフォルトの名無しさん
08/10/04 11:35:09
>>539
ちょいさわった感じでは、ある意味「普通」の言語。
単一代入なのは、プロセス間でmutableなデータを共有しないための手段のような気がする。(なので、個々のプロセスで閉じるプロセス辞書については気にしない)
そういうデータを扱う方法については言語内でカタを付けるんじゃなくて、ETSやMnesiaという形で外出しにしてるし。
541:デフォルトの名無しさん
08/10/16 07:40:04
関数型プログラミング言語、興味を持ってちと勉強してみようと思い立ったものの、
Erlang, Haskell, OCaml, etc. どれに手をつけてみるのが一番良いの?
まあこのスレで聞くのもナンだけど。
542:デフォルトの名無しさん
08/10/16 14:50:57
どうせ全部手をつけることになるんだからどれでもいい
543:デフォルトの名無しさん
08/10/16 18:08:24
なるほど!
目からウロコとはこのことです。迷っていた自分が馬鹿らしくなりました。
544:デフォルトの名無しさん
08/10/16 19:04:48
>>541
どれつかっても身近な文字列扱うときに泣いたのでF#でお茶を濁した俺
545:デフォルトの名無しさん
08/10/16 20:55:51
全部手をつけることにはなるだろうけど、どれも均等に使う可能性は低いかな。。
みなさんGUIは何でやってる?やっぱerlgtkですか?
546:デフォルトの名無しさん
08/10/19 10:51:15
Scala で Swing
547:EW
08/10/24 13:30:12
Erlangでオブジェクト指向っぽくプログラミングする手法って
需要ありますかね?
継承やポリモーフィズムあたりを実現させるのはかなり難しいんですが、
インスタンスとメソッドを用いるプログラミング手法には似せることが出来ます。
知りたい人がいるのであれば、webページを作ろうかと思います。
URLリンク(erlangworld.web.fc2.com)
548:デフォルトの名無しさん
08/10/24 14:48:37
Parameterized modules のこと?
549:EW
08/10/25 01:07:25
>>548
そんな高度なもんじゃないですよ。
Cの構造体でオブジェクト指向っぽくプログラムを組むのと似たような感じですかね。
オブジェクトを一つのプロセスにして状態をグルグル回すだけです。
gen_serverの簡単なバージョンをイメージして頂ければ分かりやすいと思います。
プログラミングの癖が私に似ている人なら、たぶん自然と使っているような気はします。
550:デフォルトの名無しさん
08/10/25 02:07:07
継承と多態の無いオブジェクト指向って、それオブジェクト指向じゃなくね?
というのは置いといても、receiveを囲ってるループの引数にフィールド当てはめてメッセージにメソッド当てはめるってこと?
551:デフォルトの名無しさん
08/10/25 04:46:22
オブジェクトにメッセージを送れるならOOPLと呼んでいいと思う
552:デフォルトの名無しさん
08/10/25 10:52:45
>>551
絶対に違うと思う
553:EW
08/10/25 12:18:02
>>550
だから、それっぽくということですwww
プログラミングをしている感覚としては、やっぱりオブジェクト指向よりも
手続き型に似ているような気がしてなりません。
そうですね。基本はreceiveをぐるぐる回す構造です。
メッセージによるイベントドリブン形式とでも言えるかと思います。
ErlangのAPIがCの構造体を利用したものに似ているんですが、
Pidをインスタンスに、メッセージをメソッドに、みたてて似たようなことをやるほうが、
並列処理では使い易いような印象がありますね。
まぁ、弊害として
・資源開放としてのプロセスの終了が必要になる
・死んでいるプロセスに送信したら無視される
というものもあるんですけど。
554:デフォルトの名無しさん
08/10/25 16:41:13
>>552
「絶対に」という根拠は気になるな
555:デフォルトの名無しさん
08/10/26 14:52:39
表紙のconcurrentに惹かれて「プログラミング Erlang」を読み進めているのだが、
今ひとつ並列性への本質的な強みが感じられなくて、期待はずれ感。
20章の初めには「たくさんのプロセスを使う」とか書いてあるし・・・
どうしたら満たされる、並列への期待
556:デフォルトの名無しさん
08/10/26 17:18:49
>>555
第五世代コンピュータ
557:デフォルトの名無しさん
08/10/26 17:23:53
織田信長?
558:デフォルトの名無しさん
08/10/26 18:01:36
> 20章の初めには「たくさんのプロセスを使う」とか書いてあるし・・・
プロセスを誤解してないか?
559:デフォルトの名無しさん
08/10/26 20:21:12
誤解とは?OSレベルのプロセスじゃないよってことかい?
560:デフォルトの名無しさん
08/10/26 21:02:42
>>559
うん。
それわかってて期待はずれならプロセス計算(代数)にも期待はずれなのかと。
561:デフォルトの名無しさん
08/10/27 04:38:07
>>560
ErlangでGHC(KL1)の処理系を書けばいいんじゃないの。
562:デフォルトの名無しさん
08/10/27 05:46:13
>>561
GHC(KL1)は各ゴールがプロセスでErlangよりたくさんプロセスを使うから
>555にはやっぱり期待はずれだろうね
563:デフォルトの名無しさん
08/10/27 06:14:43
>>562
GHCが問題なのではなくて、Erlangのプロセス管理を
生かす事例という意味だが。
564:デフォルトの名無しさん
08/10/27 08:16:18
programming erlangは並列経産の本じゃなくてerlangのチュートリアルだから
仕方ない。erlangを使って、openmpとかMPIとかMapReduceとかやればいいじゃない
565:デフォルトの名無しさん
08/10/27 16:13:54
>555は並列に何を期待しているのか?
566:デフォルトの名無しさん
08/10/27 16:52:15
>>565
次元の壁を越えた美少女達とのお付き合い
567:デフォルトの名無しさん
08/11/05 02:45:28
これの実用的なライブラリってある?rubyでいうrailsくらいの
568:デフォルトの名無しさん
08/11/05 21:31:34
誰か!誰かエスパー呼んできて!
569:デフォルトの名無しさん
08/11/06 20:05:56
ないだろ。別にエスパーよばんでも
570:デフォルトの名無しさん
08/11/07 08:17:56
あればもっと流行ると思うんだけどね
てか言語の流行る流行らないは実用的ライブラリが揃ってるかどうかが大きい
571:デフォルトの名無しさん
08/11/07 20:46:24
関数型で流行ってるのなんてないだろう。
572:デフォルトの名無しさん
08/11/08 00:05:48
こういう時やたらHaskellを推してくる人がいるけど、そいつが実際どれだけHaskellでコード書いてるのか知りたい。
573:デフォルトの名無しさん
08/11/08 00:15:30
>>572
>こういう時やたらHaskellを推してくる人がいる
どの人の事?
574:デフォルトの名無しさん
08/11/08 00:18:25
ただの妄想だろう
575:デフォルトの名無しさん
08/11/08 01:02:36
「やたら~する人がいる」 「みんな言ってる」 は大抵1人とか二人とかだよな
576:デフォルトの名無しさん
08/11/08 01:19:55
だから数字にすることに意味があるんだね。
577:デフォルトの名無しさん
08/11/08 01:21:21
以前初心者オススメスレにHaskellを推しまくってるヤツがいたよなwww
あまりに変だったからさらに不自然なHaskell狂信者風なのが出てきてネタにしてたwww
578:a36 ◆K0BqlCB3.k
08/11/08 01:29:47
>>572
まぁ、人にはいえないあんなことやこんなことに使ってます。
Haskellでスタンドアロンアプリを書くことは滅多にないのですが、
とあるHaskell用のライブラリを作って公開しています。(本家にリンクがある)
論文を書くときにHaskellを題材に使ったりすることもあります。
579:デフォルトの名無しさん
08/11/08 08:28:49
企業でHaskell,Erlang,Lisp,Prologなどを使う場合は
使ってることも何に使っているかも秘密にしておくよ。
580:デフォルトの名無しさん
08/11/08 08:40:59
>>575
どういう風に統計とったの? 妄想?
581:デフォルトの名無しさん
08/11/08 09:03:24
>>572
>こういう時
どういう時?
582:デフォルトの名無しさん
08/11/08 22:02:30
>>580
そうみんな言ってた
583:デフォルトの名無しさん
08/11/08 22:10:23
ワロタww
584:デフォルトの名無しさん
08/11/09 04:28:11
この言語はよっぽどネタがないんだな
ということが分かるやり取り
585:デフォルトの名無しさん
08/11/09 05:38:37
>>559
どういうこと
586:デフォルトの名無しさん
08/11/09 14:23:44
仕様が成熟している、利用者がいない、のどちらかまたは両方
587:デフォルトの名無しさん
08/11/09 14:29:34
>>586
erlangが普及しない理由
1. 遅い
2. 関数型言語
3. ネイティブが吐けない
4. 実行方法が異質
5. (ほぼ)サーバー特化
588:デフォルトの名無しさん
08/11/09 17:43:37
遅い、ネイティブが吐けないとかはpythonとかでも同じじゃんか
なのにpythonは普及している。
関数型言語ってのが普及しない一番の理由じゃないかな、実用的に見て
589:デフォルトの名無しさん
08/11/09 18:50:38
>>588
pythonはライトウェイト言語であって、erlangとは領域がまったく違う。
プロセスは軽いが処理自体は低速。
サーバを停止しなくても修正ができるというのはメリットだが、
そういう機能が必要なければバイナリが吐けたほうが都合が良い。
それにC++でも軽いソフトウェアスレッドのライブラリは存在するから
もはやプロセスが軽いというのはさほどメリットでもない。
関数型言語としてはHaskellやOCamlのほうがすぐれている。
590:デフォルトの名無しさん
08/11/09 18:52:44
あくまでこれは俺がこの言語を選択しない理由として挙げているだけ。
erlangはどんな言語か知っているけど、あえてこの言語を選ぼうとは思わないんだよ。
サーバーを書くときは簡潔に書けるから便利ではあるけど。
591:デフォルトの名無しさん
08/11/09 18:55:00
スタンドアロンなツール類を書くならやっぱりC++だろうな。
WEBアプリを書くならRubyかPHPかPerlだし、俺自身はPythonという選択肢はない。
サーバーならerlangかhaskellが書きやすい。
それぞれ使いわけでいいじゃん。
サーバー書く人が少ないっていうのが一番大きい理由じゃないの?
592:デフォルトの名無しさん
08/11/10 20:30:25
すごいな。ErlangもC++と対等に語られるようになったか。
593:デフォルトの名無しさん
08/11/10 21:13:43
オブジェクティックでフォンクティックな言語があればいいのに
594:デフォルトの名無しさん
08/11/10 21:53:38
>>593
"object oriented" functional language でぐぐったら、なんかいっぱい出てくるぞ。
でも実用にできるのはOCaml, Scalaくらい?
595:デフォルトの名無しさん
08/11/10 22:18:51
CLOS(Lisp)、あとOzとか
オブジェクト指向ベースに関数型の機能を取り込むアプローチだと、
まあ高階関数ぐらいなら比較的新しい言語はどれも持ってる
596:デフォルトの名無しさん
08/11/10 23:16:53
高階関数それ自体がマルチコアを生かすようなバイナリに繋がると良いが、原理的にそんなことないわな。
しかし今だ考え方はプロセス・スレッド止まりだし。
もっとまったく新しい考え方って何かないのかね
597:デフォルトの名無しさん
08/11/11 00:48:27
Objective Erlang的なの作ればいいんでね?
598:デフォルトの名無しさん
08/11/11 00:54:49
Erlang使ってない俺が言うのも何だが、流れはEW氏に来たということか。
599:デフォルトの名無しさん
08/11/14 02:39:00
開発を手続き型言語以外でやってる会社とかないよな
関数型はオナニー
600:デフォルトの名無しさん
08/11/14 03:21:58
Diceあたりで検索かければ出てくるよ。少ないけど。
601:デフォルトの名無しさん
08/11/14 13:59:37
>>599
Schemeで書かれたピンボールとか出てこようかという
ご時世に、ずいぶん乗り遅れてますねあなた
602:デフォルトの名無しさん
08/11/14 23:24:30
>>599
今の教育課程でパンピーの知能じゃ無理でしょ。まだだいぶ先の話じゃないか、
関数型つか並列資源を存分に使いこなすプログラミングなんて。
603:デフォルトの名無しさん
08/11/15 08:46:24
>>601
やっとピンボールですか。
手続き型なら30年前にできてたので、ずいぶん乗り遅れてますね。
604:EW
08/11/15 10:41:08
>>597
Erlangが目指すところはオブジェクト指向と相反するような気がしますね。
カプセル化などは便利だと思いますが、インスタンスを使いまわすというのは
かなりイケてないことだと思います。
それがおkなら、変数への再代入なども許可しているでしょうし。
おそらく、可能な限り「状態依存を無くす」というのが、
Erlangの基本コンセプトなのではないかと思います。
>>598
僕が使っているのはあんまり上等な代物じゃないですよ。
個人レベルで手抜きをしているだけであって、本来なら綿密なデバッグが必要となる
危険なプログラムだと思います。
余談ですが、来年から planet lab のメンバーに加わることになりました。
605:デフォルトの名無しさん
08/11/15 11:29:08
>>603
その理屈では機械語以外は全て遅れている言語ですよ。
脳味噌大丈夫ですか?
606:a36 ◆K0BqlCB3.k
08/11/15 11:44:09
>>602
今の大学生は提出課題ですら他人のコピーだから、
FizzBuzz問題すら解けない子が多いよ。
607:デフォルトの名無しさん
08/11/15 12:36:47
>>605
きみこそ脳みそ大丈夫?
高級言語が機械語より遅れてるの当たり前じゃないか。
608:デフォルトの名無しさん
08/11/15 12:43:43
>>606
昔の大学生も、FizzBuzz問題すら解けない子おおかったと思うが。
609:デフォルトの名無しさん
08/11/15 14:32:15
>>607
しょうがないよ、君の理屈だとそうなるんだから(605の理屈ではない)。
610:EW
08/11/16 23:20:23
2つ以上のイベントドリブン形式のプロセスが相互に通信しあうというモデルでは
複雑なトランザクションを記述するよりも、
プロセスがメッセージを受け取ったら、
「新しいプロセスを作り処理させて、その結果を返す」
という手法のほうがプログラムを組みやすいみたいですね。
AがBに処理を依頼
BがAに対してある処理をさせる。
Bはその結果を受け取る。
そして処理を続行し、完了するとAに値を返す
という処理を書いたのですが、逐次プロセスのみだと処理が複雑になって
アウトでした。自分の意図しないところでデッドロックやバグがおきまくりました。
AとBの処理を新しいプロセスを立ててやらせると、かなり簡単に動きました。
なかなか便利な手法です。
611:デフォルトの名無しさん
08/11/17 01:00:47
AがBに依頼した処理をBがAに処理をさせる?
612:デフォルトの名無しさん
08/11/17 01:12:02
AとBでコルーチン的に処理をさせたいってことじゃね?
613:デフォルトの名無しさん
08/11/17 03:04:20
名古屋コーチンがどうしたって?
614:デフォルトの名無しさん
08/11/17 20:29:56
名古屋撃ちなら知ってる
615:EW
08/11/17 21:54:07
612の方が指摘している通り、コルーチン的に処理するってことです。
純粋な逐次プロセスでコルーチンを実装すると、その処理をやっている間は
第三者からのアクセスに反応できないため問題がありました。
並列で新しいプロセスを作ると、コルーチンを分解できるんで
シンプルになりましたということです。
616:デフォルトの名無しさん
08/11/19 22:28:39
>>615
権利義務の関係で処理すればいいんですね。
それぞれのプロセスはメッセージを受け取り自分を使わせる代わりに、
質問者を制御するメッセージを応答に付加できる。
そして、質問者はこのメッセージをevalことを義務付けられている。
これだけで>>610は実現できます。
617:616
08/11/20 06:48:07
これではダメでしたね。
質問者は最初の質問に対してサーバから一度応答を
受けてそこで完了してしまいます。実際にはさらに続いていて、
質問者側の情報をサーバが得て本回答を送ってくるのですが、
それを受け取るのは、最初の質問者が設定した質問ではないですね。
サーバ側によって仕組まれた、バックグラウンドでの質問です。
これを質問者が最初の質問の回答と見なすのは困難ですか・・・。
618:616
08/11/20 07:26:58
できるだけプロトコル化しないのがスマートと思ったのですが、
破綻しました。keep-alive状態を保って再質問するのが質問者
となるように仕組むことはできますが、
再質問は(最初の質問+質問者側でエバッた値)を引数に与えなくてはならず
複雑ですね。
619:616
08/11/20 07:55:21
それにBは最初のAの質問に回答しないで、Aから情報収集してから
回答を用意するのが>>610の仕様ですね。全然ダメですね。
お騒がせしました。>>616->>619までは無視してください。
620:デフォルトの名無しさん
08/11/20 23:41:22
>>616-619
621:EW
08/11/21 10:13:54
やっていることとしては
loop(State) ->
receive
1 -> spawnA, NewStete = State
2 -> spawnB, NewState = State
2' -> setState, NewState = 更新
end
loop(NewState).
みたいなのをイメージして頂ければいいと思います。
somefunc() ->
sendA
receive
sendB
receive
return Value
とやると、その間は処理がストップする(loopがreceiveできない)
ので、新しいプロセスを独立させてそこでコルーチンlikeな処理をして
その結果をloopに対してメッセージとして送っています。
上記の方法は柔軟性が増しますが、代わりに厳密性を失っています。
そのコルーチン処理がプロセスの状態に関るものであるならば危険なプログラムなので
使用しないほうがいいと思います。
622:デフォルトの名無しさん
08/11/24 14:42:15
vistaで erl -name hoge とするとAPPCRASH(StackHash_e52f)で起動できないのですが、
何が悪いのでしょう?
R12B-5(Erlang (BEAM) emulator version 5.6.5)です。
Microsoft Office IME 2007だとStackHash_e52fが起きるらしいのでMicrosoft IMEに
してみましたが、効果無しでした。
623:EW
08/12/10 11:56:36
>>622
ごめんなさい。分からないです。
624:デフォルトの名無しさん
08/12/12 00:20:13
おれはXPで動けばいいと思ってる
625:デフォルトの名無しさん
08/12/12 23:28:46
》624
なんで?
626:デフォルトの名無しさん
08/12/13 16:34:11
vistaはmeと同じ運命だからじゃないかい?
627:デフォルトの名無しさん
08/12/13 19:08:43
そのmeを3年使った俺への当てつけか?
それにどうせ7はvistaの発展なんだから、vistaがmeと同じ立場というわけにはならないよ。
628:デフォルトの名無しさん
08/12/13 19:14:02
そうだよな。7のカーネルはVistaと同じ、バージョン6.xなんだよな。
どの辺りが7なのか未だにわからない。
629:デフォルトの名無しさん
08/12/14 05:56:13
MSも必死だからな
630:デフォルトの名無しさん
08/12/14 12:19:25
名前なんて飾りです
631:622
08/12/14 22:53:41
>>623
どうもありがとうございます。
-snameは動くので、ローカルなネットワーク限定で遊ぶことにします。
vistaで使っている人はいないのか…
632:デフォルトの名無しさん
08/12/15 20:05:56
で、そろそろアーランを使用した基幹システム開発導入事例とか
出てきてもいいと思うんだ
通信以外の用途で
633:デフォルトの名無しさん
08/12/22 13:20:47
io:fwriteでファイルに書き出すときは文字列のエスケープをしないのに
コンソールに出力するとUTF8の多バイト文字が皆エスケープされてしまうのだけど
これを抑止することできますか?
ファイルからテキスト処理してコンソール上で確認してるとことごとく\227,\130,\143…みたいになっちゃって
涙が
634:EW
08/12/22 21:59:14
>>663
Erlang本には多バイト文字の扱い方が書いていないことは確かです。
正直、ファイル処理ですら相当危ういと思います。
ファイルにそのまま出力できたのは、UTF8の文字を認識しているのではなく
「バイト列をそのまま書き込んだから同じになったに過ぎない」という程度だと思います。
おそらく、ちょっと手を加えるだけで、ファイル出力も一瞬で文字化けするような気がします。
とりあえず、コンソール(コマンドプロンプト)が、EUCやShift-Jisになっていないかを
確認して、それでも駄目ならかなり厳しいんじゃないかと思います。
(だって、開発国の言語であるスェーデン語ですら文字化けするぐらいですし・・・・)
635:デフォルトの名無しさん
08/12/23 21:03:44
>>634
不当なシーケンス食わせてもそのまま保持してくれるので(pread)コンソールでの
エスケープだけやめてくれれば十分な場合がほとんどだと想うのですが
パッチ自分で入れないとなんないとすると面倒だなぁ(ファイルにログ吐くとUTF8通るのに、コンソールだとアレみたいな)
636:デフォルトの名無しさん
08/12/26 17:37:08
ErlangのWindowsバイナリーってWin95、Win98にインストール可能?
637:デフォルトの名無しさん
08/12/27 03:34:03
>>636
FAQにはサポートされていると書いてあるけど
執筆日時が記述されていないから
自分で試すしかないと思うよ。
8.4 What operating systems does Erlang run on?
URLリンク(www.erlang.org)
638:デフォルトの名無しさん
08/12/27 09:21:35
>>637
何とか古いPC引っ張り出してやってみたけど
ダメだった。VCのランタイムとかいろいろ
いるみたい。
639:デフォルトの名無しさん
09/01/13 18:06:16
↑↑馬鹿だろ
640:デフォルトの名無しさん
09/01/25 09:12:34
最近、Erlangに興味を持ってネット上の入門レベルサンプルを動かしているんですが、
エミュレータ(erlコマンド)を使っている時に、BIFのパラメータ説明を調べる手間を
少なくする方法を模索中です。
現在使っている方法は、
・Googleで検索(Erlang keysearch など)して、使用例を見つけたら文法を推定する。
・Concurrent Programming in ERLANG のPDFファイル内で検索
ですが、皆さんはどうやって調べてるんでしょうか?
宜しければ、御教示願えると助かります。
641:デフォルトの名無しさん
09/01/25 21:41:46
>>640
Linuxでやっているので,man pagesをインストールしておいて,
たとえば ets:new とかなら,man ets してから less上で
new を検索してる
man pages はDownloadページにリンクがあるけど,
普通の本体とは別なので,別途DLしてインストールが必要.
最新だとこれ>URLリンク(www.erlang.org)
642:デフォルトの名無しさん
09/01/25 23:09:49
emacsのerlang-modeマジオススメ。
"M-x erlang-man-module"→"module:function"で直接manを検索できる。
643:デフォルトの名無しさん
09/01/27 20:50:35
>>641,642
レスが遅くなりましたが、有り難うございます。
という訳でLinuxをインストール後さっそく導入してみました。
man pages、Emacsのerlnag-modeの他に、Distel ↓というのを見つけたので
少し使いこんでみたいと思います。
URLリンク(code.google.com)
644:デフォルトの名無しさん
09/02/01 12:38:10
Erlangの相談です。(・∀・)
今PHPでホームページを作っていますが、これからGuacheでホームページを作ろうと思ってます。
Gaucheを勉強したら、次はErlangを勉強しようと思いますが、Erlangでホームページの作り方を紹介しているサイトはありますか?
Erlang webアプリ の検索結果 約 247,000 件
URLリンク(dsas.blog.klab.org)
XREA(Apache)でErlangをインストールして動かすことはできるでしょうか?
645:デフォルトの名無しさん
09/02/01 23:47:03
>>644
XREA で Erlang を使うとしたら CGI としてってことになるのかな。
それなら無理なわけではないと思うけど、
CGI で Erlang はかなり非効率的だ
646:デフォルトの名無しさん
09/02/04 23:04:13
Erlangの相談です。(・∀・)
今PHPでホームページを作っていますが、これからGuacheでホームページを作ろうと思ってます。
Gaucheを勉強したら、次はErlangを勉強しようと思いますが、Erlangでホームページの作り方を紹介しているサイトはありますか?
Erlang webアプリ の検索結果 約 247,000 件
URLリンク(dsas.blog.klab.org)
647:デフォルトの名無しさん
09/02/05 00:06:18
そんなもんはアランよ
648:デフォルトの名無しさん
09/02/09 23:41:06
Erlangの相談です。(・∀・)
今PHPでホームページを作っていますが、これからGuacheでホームページを作ろうと思ってます。
Gaucheを勉強したら、次はErlangを勉強しようと思いますが、Erlangでホームページの作り方を紹介しているサイトはありますか?
Erlang webアプリ の検索結果 約 247,000 件
URLリンク(dsas.blog.klab.org)
649:デフォルトの名無しさん
09/02/09 23:49:19
ホームページが作りたいのか、Webアプリが作りたいのか
ホームページなら基本は一緒で言語は関係ない
Webアプリは知らん
650:デフォルトの名無しさん
09/02/10 07:46:50
>>644,646,648
651:デフォルトの名無しさん
09/02/10 17:33:17
そんなものはアーランよ
652:デフォルトの名無しさん
09/02/11 12:09:40
>>648
ErlangでWebするなら,Webサーバ(フレームワーク)として
何を使うかによるんじゃないかな?
一番メジャーなのはyaws.
URLリンク(yaws.hyber.org)
このページに色々サンプルがあるし,一通りの機能は
全部あると思う.
yawsで動くフレームワークに,Erlywebがあるので,
Webサイト作るならこれも併せてどうぞ.
URLリンク(erlyweb.org)
他にシンプルなものとしては,mochiweb があるかな.
URLリンク(code.google.com)
覚えやすいと思うけど,機能的にはyawsの方が良いと思う.
どちらもまとまったドキュメントなどはそのソフトウェアの
ページくらいしかないので,それ以上はソースを読むしか・・・
653:デフォルトの名無しさん
09/02/26 22:31:25
erlangでHTMLパーサってないですか。
XMLパーサはあったんだけど。
654:デフォルトの名無しさん
09/02/26 22:50:20
>>524
>>528
的中だった。
URLリンク(wiki.livedoor.jp)
655:デフォルトの名無しさん
09/03/02 13:33:27
CouchDBはmochiweb使ってErlangで書かれてるよね。
URLリンク(couchdb.apache.org)
個人的にyawsよりmochiwebの方が好き。
656:デフォルトの名無しさん
09/03/02 14:15:14
erlangて何てよむの?
エリクソン言語でいいの?
657:デフォルトの名無しさん
09/03/02 14:21:11
アーラン
658:デフォルトの名無しさん
09/03/02 23:59:51
なかなかよさげな言語あげ
659:デフォルトの名無しさん
09/03/03 02:01:42
1文字が一文字で認識されるようになった?
ファイルから文字列読み込んで多バイトコードが内部のUCS4になってくれなくて一回使うのあきらめたんだけど。
そこさえ改善されてたらメイン言語にしたくらい好きではある。
っていうか英語圏はまだしもヨーロッパ言語はどうやってあつかってんだ?
660:デフォルトの名無しさん
09/03/03 03:29:46
俺には状況が理解できなかったが、
>strings can be represented by lists of ASCII characters
>>URLリンク(erlang.org)
である以上、多バイトで表現される文字(というか128を越える数値で表現される文字)を扱うのはバイナリで読み込むしか無いような。
実際にはオクテットに収まれば~sで表現できるから、ヨーロッパ諸語はISO/IEC 8859(だっけ?うろ覚え。Latin-1とか)でなんとかなるんじゃないか?
661:デフォルトの名無しさん
09/03/30 03:09:05
なんかオーム者から新しい本でたな
662:デフォルトの名無しさん
09/03/30 21:31:22
>>661
新刊案内にはまだ出てないんで詳細よろ
663:デフォルトの名無しさん
09/04/03 09:20:18
Apacheの非RDB/キー・バリューストア
分散データベース「CouchDB 0.9.0」リリース
URLリンク(codezine.jp)
> Apache Software Foundationは3月31日、Apache CouchDB 0.9.0のリリースをアナウンスした。
> CouchDBは、ドキュメント指向(document-oriented)の非リレーショナル型の分散データベースで、
> JSON APIによるRESTfulなデータアクセスを提供する。開発言語にはErlangが使われているが、
> クライアントはHTTPリクエストが利用できる任意の環境からアクセスできる。
664:大基地
09/04/05 10:33:21
URLリンク(d.hatena.ne.jp)
4/5(日)にオンラインでプログラミング言語Erlangの勉強会をやろうと思います。
気軽にどうぞ!!
日時
4/5(日)12:00~夕方くらいまで
場所
とりあえずLingrです。
もっと良いサービスを見つけたら誘導します。
URLリンク(www.lingr.com)
665:デフォルトの名無しさん
09/04/06 00:13:14
やっと規制解けた!
ところでR13Aはみんなスルーなの?
unicode対応で659とかには朗報なんじゃないかと思うんだけど。
666:アーメン
09/04/06 09:18:30
コーラン
667:デフォルトの名無しさん
09/04/21 23:14:00
↓言語と実効環境間の縛りを緩くする可能性、の部分が興味深かったので貼っときます。
> REPLsに見る多言語プログラミングの可能性
> グーグルクラウドのJava対応が意味する2つのこと
URLリンク(www.atmarkit.co.jp)
> 多言語でシステムを開発する例として、従来でもFacebookのような事例がある。
> 彼らは「Thrift」と名付けた多言語混在RPC開発フレームワークを自作。
> オープンソースで公開している。Thriftの汎用的な記述言語を使って型宣言と
> インターフェイス定義を行うだけでRPCを使った分散システムを構築できる。
> Facebookでは、C++、Java、Python、PHP、Ruby、Erlangなどを目的別に
> 使い分けているという。例えば、RSSのパーザはC++で書くよりPython/Ruby
> のほうがいいだろうし、インメモリのサーチインデクスを作るにはC/C++
> のほうがいい。チャットチャンネルには分散処理に適したErlangを使っている。
> Twitterでも同様に、パフォーマンスとスケーラビリティを確保するために
> Scalaをコアで使いながら、Ruby(Ruby on Rails)も併用しているという。
668:デフォルトの名無しさん
09/04/23 07:21:20
R13Bリリース
Unicodeサポート来たよ
URLリンク(www.erlang.org)
669:デフォルトの名無しさん
09/04/29 21:32:42
ちょっと古いが情報処理学会の学会誌3月号に
NTT未来ねっと研究所の井上武氏が
「プログラミング言語Erlangの動向」
という記事を投稿している。
井上氏の職場で、さまざまなプログラミング言語で
フィボナッチ数列の計算速度を比較したら、Erlangが
C言語を抑えて最速の座を勝ち取ったそうである。
もっとも、クアッドコアCPUと並列処理のご利益であるが。
670:デフォルトの名無しさん
09/04/29 21:38:08
>>669
> フィボナッチ数列の計算速度を比較したら、Erlangが
> C言語を抑えて最速の座を勝ち取ったそうである。
それペテンやろw
マジそういうの学会の会誌に出さないでほしい。
もっと客観的な記事をのせろって感じだな。
てか、俺もう情報処理学会やめようかとか思ってるよ。
なんかレベルの低い学生が大量に入ってきてるのが原因か知らないけど、全体的にレベルが激下がりしてるし。
ソフトウェア科学会は推薦が無いと入れないからまだ水準が保ててる。
671:デフォルトの名無しさん
09/04/29 21:40:19
情報処理学会の全国大会なんかもう完全に卒業研究発表会のリハーサルって感じだしw
672:デフォルトの名無しさん
09/04/29 21:52:13
はげ堂
673:デフォルトの名無しさん
09/04/30 00:28:59
URLリンク(teahut.sakura.ne.jp)
読んだけど、なんかそこらへんのブログなみに浅い解説記事だな。
解説記事だからやさしく書こうと試みて失敗している例だな。
学会誌なんだから論文みたいな書き方でいいのに。
674:デフォルトの名無しさん
09/04/30 01:57:47
Erlangで並列処理するならCでも並列処理しろよって感じだよな。
Cだって並列処理できるんだから。
そもそも比較になってない。
読者をバカにしてるのか?
675:デフォルトの名無しさん
09/04/30 03:16:53
私の手元でさまざまなプログラミング言語で
フィボナッチ数列の計算速度を比較したら
C++, Scheme, Common Lispが最速の座を勝ち取った。
(すべてコンパイル時計算による)
676:デフォルトの名無しさん
09/04/30 08:09:26
まさかCはフィボナッチ数列の漸化式をそのまま再帰にした指数オーダーの
アルゴリズムだったけど、Erlangは対数オーダーのアルゴリズムを使って
いたというオチとか。
まあそれは冗談として、要はErlangは他の言語よりはるかにお気軽に並列化
できるよということがいいたい前フリでしょう。みんなわかってて茶々いれ
てるんだと思うけど。まあ学会誌でやることじゃないよな。学会誌の解説記
事ならコンピュータソフトウェアみたいに数式てんこもりで固く書かなくて
はそれっぽくない。
677:デフォルトの名無しさん
09/04/30 08:17:22
それっぽいことが重要なのかwww
678:デフォルトの名無しさん
09/04/30 11:33:41
学会とはさぞ崇高なところだと幻想を抱いて情報処理学会に入会して全国大会に参加してみましたが、何あの程度の低い連中w
あの程度の研究ならすでに高校でやってたぞ。
すごい人たちがいると思っていたのに幻滅しました。
というところでショックを受けて5月病に入ります。
679:デフォルトの名無しさん
09/04/30 11:41:36
それぐらいでショック受けるなんて
お前の人生、前途多難だよ
680:デフォルトの名無しさん
09/04/30 11:43:03
すごい人たちはどこで何やってるんですか?
681:デフォルトの名無しさん
09/04/30 12:39:59
研究会発表とか行ってみれば?
682:デフォルトの名無しさん
09/04/30 12:40:15
>>680
ACMじゃないの
つか情報処理学会は昔の論文を新人に読ませるのには向いてるよね
683:デフォルトの名無しさん
09/04/30 13:09:05
>>678
国内学会、それも情処の全国なんて、国内同業者に顔つなぎしとくぐらいの意味しかない。
でもそういう社会的な意味はあるので、若さに逸ってガン無視するのも問題。
684:デフォルトの名無しさん
09/04/30 14:26:58
>>678,683
発表自体の練習という面もあるよね。
学部生の発表なんて特に。
685:デフォルトの名無しさん
09/04/30 15:44:04
できれば発表練習なんて学内ですませておいてほしい。
686:デフォルトの名無しさん
09/04/30 21:49:26
何か新ネタでも来たのかとオモたら、全然Erlangに関係ないやんけ……。
687:デフォルトの名無しさん
09/05/02 14:52:12
R13Bを入れようとしてるんだけど、これwxWidgetsなんてものが必要なんだね。
GUIなんて使わないのに。
あとerlのトップレベルも結構余計なことしてくれるんだよね。
Erlang開発者は昔からのUnixコマンドラインソフトウェアの作法を守ってほしい気がする。
688:デフォルトの名無しさん
09/05/02 15:03:15
>>687
昔からの作法にこだわってるんじゃなくて、一貫性を持ってほしいといいたいんだろ。
基幹的な部分で実験的試みをしてほしくないだけだろ。
689:デフォルトの名無しさん
09/05/02 15:04:03
世の中Unixだけじゃありませんから。
690:デフォルトの名無しさん
09/05/02 15:10:10
>>687
てか、俺もwxWidgetsなんてどこの馬の骨かも知れないGUIライブラリなんか使いたくないんだよね。
それ以前にGUIを使うとインターフェースデザインによって使いやすいと感じる人と使いにくいと感じる人を
分けてしまう感があるんだよね、経験的に。
CUIならたいていの人に同じような印象を与えるだろうから、良い意味で公平。
691:デフォルトの名無しさん
09/05/02 15:12:58
さらに、基幹的な部分-つまりコンパイラやVM周辺-はやっぱりCUIじゃないと安心できない。
というのもGUIを使わないテスト環境も大いにありうるから。
GUIに慣れてしまうとCUIでのコマンドの使い方を忘れてしまうかもしれないが、最初からCUIを使っていればそういう心配はない。
692:デフォルトの名無しさん
09/05/02 15:16:35
wxWidgetsはconfigureのオプションで外せるようにしてほしかったね。
693:デフォルトの名無しさん
09/05/02 19:00:04
よく知らんけど Python に Tk がついてくる様なノリじゃないの。
wx 自体はよく知られた有名なプロジェクトだし。
694:デフォルトの名無しさん
09/05/02 19:58:11
>>690
CUIならたいていの人に使いにくいという印象を与えるね
695:デフォルトの名無しさん
09/05/02 19:59:23
wxWidgetsをどこの馬の骨かも知れないという人の意見が、アテにならない件
696:デフォルトの名無しさん
09/05/02 20:04:22
でもまあ馬の骨よばわりしたくなる気持ちはわかるな
697:デフォルトの名無しさん
09/05/02 20:15:44
オープンソースに見識のない人ならそうかもね
698:デフォルトの名無しさん
09/05/02 20:37:05
Chicken Scheme も今年になって wx をデフォ GUI に選定してる
来たる wx 3 では Unicode 自動変換機能がついて、プログラマ側はマルチバイトとか意識せずに
単純に char * を使うだけでよくなるらしいが、あるいはそのせいか
699:デフォルトの名無しさん
09/05/02 20:38:48
>>690>>691だな。むやみにくっ付けるなと
700:デフォルトの名無しさん
09/05/02 22:49:04
>>694
そうでもないよ。
マウスをグリグリしてボタンはどこにあるかな~と探すのがしんどい人もいる
701:デフォルトの名無しさん
09/05/02 23:57:08
wxWidgetsなんてこの件で初めて知ったぞ。
インストール時に除外できるようなオプションくらい入れてほしかった。
702:デフォルトの名無しさん
09/05/03 00:04:27
気付かなかったのなら
現状でもいいってことじゃ
703:デフォルトの名無しさん
09/05/03 00:34:29
wxWidgetsなんていらねえっつーの
MacPortsが入らねえんだよヴォケ
704:デフォルトの名無しさん
09/05/03 01:09:31
R13BがMacPortsでうまく入らない件だけど、
(1) configureがいつまでたっても終わらないのは最新のportで解決済み。
(2) build中にwxWidgetsライブラリのコンパイルに失敗するのは未解決。
ただしうまくいっている人もいるようなので、試しにMacPortsを入れて
いないマシンにMacPortsをインストールし、port install erlang としたら
成功した。いろいろ試したけど問題なく動いている。
どうもX関連の他のportと衝突しているのかも。どれと当たってるのかは
連休中に暇があったら調べてみるけど、期待しないで。
705:デフォルトの名無しさん
09/05/03 02:15:45
/opt/local/etc/macports/variants.confで+no_x11,+system_x11をデフォにしているからか
普通にインストールできたよ。libsdlを+no_x11でインストールしとくと良いかも。
706:704
09/05/03 07:16:07
>>705
そうやっててもupgradeの時に無視されたりするから結局Xorg関連の
使いもしないパッケージがいろいろ入っちゃうんだよね。
で、Erlangについてはmesaというパッケージがあるとダメみたい。
sudo port deactivate mesa
sudo port install erlang
sudo port activate mesa
でうまくいった。
GUI関連なんてオプショナルにしてほしい > Erlang開発陣
707:デフォルトの名無しさん
09/05/03 10:24:33
>>706
無事コンパイル出来ました。
どうもありがとうございます。
708:デフォルトの名無しさん
09/05/04 15:08:35
うちもmesaが入っていた。SWI-Prologのパッケージを入れたときに
入ったようだ。プログラミング言語に勝手にそういうのを入れないで
欲しいよな。
709:デフォルトの名無しさん
09/05/26 09:38:58
ErlangのESDLが入れれなくて困ってます。
URLリンク(blog.bugyo.tk)
ここの方法とESDLのReadmeを見ながら入れてたのですが、
mingw-build.shをCygwinで実行するとCygwin上に
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
make[1]: *** [esdl_wrapper.o] Error 3
と出て
mingw32-gcc.exeは動作を停止しました
という警告ウィンドウが出ててコンパイルが失敗します。
どなたか対処法知りませんでしょうか?
710:デフォルトの名無しさん
09/05/26 14:32:16
mesaってOpenGLだっけ?
711:デフォルトの名無しさん
09/05/26 18:17:53
>>710
そう。OpenGLのソフトウェアエミュ。
ところでwxWidgetsを知らない人が多いみたいだけど
もしかしてErlangに注目してるって案外OSS系じゃない
人が多いのかな? Linuxとかで開発してる人なら
まさかwx知らないなんてことはないだろうし。
まさかQtもGTKも知りませんって感じなのか?
712:デフォルトの名無しさん
09/05/26 21:27:17
仕事でLinux(Debian)を長いこと使っていますが、X関連は不要なので一切入れていません。当然QtもGTKも使いません。
開発にはErlang, C, Ocamlを使っていますが、基本的にターミナル上でEmacsを起動してそのなかで作業します。
713:709
09/05/26 22:49:49
すみません、できました。
標準シェルをtcshにしてて、Bashでやれと書いてあったので
起動したあとにコマンドでBashに変えてたからいけなかっただけでした。
おさわがせしました。
714:デフォルトの名無しさん
09/05/27 01:18:33
>>711
たぶんだが、マカーが多いw。
wxは確かに有名だけどgtkとQtほどは有名じゃないしな。
LinuxとかでC++でGUIならふつうQtとかgtkmmとかに行くのだろう。
俺も使ったことあるのはgtkとQtとwxだけだわ。
715:デフォルトの名無しさん
09/05/27 06:30:16
>>711
すまんLinux使いだけどX11はあんまり使わないのでWxのことはしらんかった
グラフィック使う時はGL,GLUTだけで済んじゃうせいもあるけど
むろんQt,GTKは知ってる。
Erlangへの興味もC10Kがらみからだったし
716:デフォルトの名無しさん
09/05/27 06:36:50
wxはメジャーなウィンドウマネージャ(GNOME/KDE)で使われてないからしられてない?
717:デフォルトの名無しさん
09/05/27 06:38:12
Linuxメイン環境でX入れてない人って普通に考えて不便じゃない?
ブラウザとかどうしてんの?
Flashとかは邪魔!!って感じの人なのかな?
718:デフォルトの名無しさん
09/05/27 07:02:50
>>717
すまん言葉が足りなかった
X11はエンドユーザとして使うけどコードをX11向けには作らないって話
719:712
09/05/27 07:47:31
>>717
私の場合、端末はMacなのでwebブラウジンジや文書書きはそちらで行います。
開発のときはターミナルエミュレータを起動し、Linuxマシンにリモートログインして行います。
720:712
09/05/27 07:56:34
×ブラウジンジ
○ブラウジング
OS X上でなくわざわざリモートログインする理由は、Linuxマシンに特殊な
ハードウェアを付けていて、そのためにカーネルに手を入れているためです。
そのハードウェアをErlangから使おうというわけです。
まあ、ターミナルの中だけで開発するのはこれに限ったことではありません。
普段のOS Xの画面では、ほとんどターミナルエミュレータしか見えていません。
721:デフォルトの名無しさん
09/05/27 11:37:53
>>714-715
たしかにQtはKDEで有名だし、GTKはGnomeで有名。
そもそもGimp自体が有名だしな。
でも俺の感覚では「これからLinuxでGUIアプリ作る」って奴の
中ではQt、GTK、wxの人気は互角。「これからLinuxとWindowsで
動くクロスプラットフォームアプリを作る」ってやつに関して
言うと、Qtとwxが多くて、GTKはSwingより少ない。マックは知らん。
722:デフォルトの名無しさん
09/05/27 13:05:30
使われてるプロジェクト数なら、GTK,Qt,wxの順で、圧倒的にGTKが使われてる
と思うが。
723:デフォルトの名無しさん
09/05/27 13:30:24
>>722
はい。なので「新規プロジェクトでクロスプラットフォーム」
にはwxが人気と限定したわけです。
既存のUnix系OSSGUIプロジェクトでは圧倒的にGTKです。
wx自体もある意味GTKプロジェクトだし。
が、特にWindowsを含むプロジェクトの場合はGTKは敬遠されます。
wxはLinux上ではGTKのラッパ、WindowsではWindowsコモンコントロール
のラッパなので、「LinuxではGTK、Windowsではwin32」の振る舞いを
求める場合はwxが選ばれることが多いですね。
wxのアドバンテージはそこです。QtやGTKはどのプラットフォームでも
同じ動作をするGUIを目指し、wxはそれぞれのプラットフォームになじむ
GUIを目指してます。ErlangがwxをデフォにするのはGUIそのものの自己
主張を避けたかったからなんじゃないかと推測しています。
724:デフォルトの名無しさん
09/05/27 14:01:36
GUIそのものの自己主張は、Javaで失敗を見てる、と。
725:717
09/05/27 21:33:15
>>718
なるほど。
いやなんかたまにLinux板とかで「Linuxメイン環境だけどXなんていらねーwwwww」
とか主張してる人がいるアレかと思ってしまったスマン。
>>719
なるほど。
wxHaskellとかあるけど、wxの有名アプリってFilezillaとAudacityくらいしか知らないわ。。
726:デフォルトの名無しさん
09/06/05 05:38:31
ceanってまだR13Bじゃないけどもう更新しないのか・・・
727:デフォルトの名無しさん
09/06/25 22:59:41
erlangスレひとつしかないのか
まだマイナーなんだな
728:デフォルトの名無しさん
09/06/27 01:02:39
そろそろWindowsのEXEにコンパイルできるようになりましたか?
729:デフォルトの名無しさん
09/06/27 01:12:14
FreeBSD / Linux使いの俺には関係なし
730:デフォルトの名無しさん
09/07/03 11:30:51
Erlang Worldの中の人が超高学歴でびびった。
731:デフォルトの名無しさん
09/07/08 10:04:56
ErlangでWidows用の実行ファイル作るにはどうすればいいのでしょうか?
732:デフォルトの名無しさん
09/08/16 17:38:17
具体的に Erlang の何が良いのか誰も説明できていない時点で
Erlangユーザーの程度の低さが容易に確認できる。
関数型やりたいなら Common Lisp をやれば良い。
733:デフォルトの名無しさん
09/08/16 18:04:45
>>732よ。そこでCommon Lispはどうかと思うぞ。せめてSchemeって言わないと……
734:デフォルトの名無しさん
09/08/16 18:11:35
>>733
関数型プログラミングはどちらでも学べるが?
それよりも話しを逸らさないでほしいね。
735:デフォルトの名無しさん
09/08/16 18:16:03
このスレ一ヶ月以上話題なかったんだけど。話って何?
736:夏厨ごっこw
09/08/16 18:22:40
何が良いのか誰も説明できていない⇒程度の低さが容易に確認
このロジックが分からんねww
737:デフォルトの名無しさん
09/08/16 19:21:39
Common LispやSchemeが出てくるってことは、
Erlangには型推論・チェックシステムってないの?
738:デフォルトの名無しさん
09/08/17 02:39:05
どの言語でも型チェックはできるよ。
739:デフォルトの名無しさん
09/08/17 08:34:27
>>732
「プログラミングErlang」でも読むことを勧めるよ。
何十というスレを重ねてそれ全体で言語のよさが顕れるものかどうか、
というものだ。
それから、ユニフィケーションを理解することと。
740:デフォルトの名無しさん
09/08/18 23:23:27
O'REILLYから出たErlang Programming(フサオネズミカンガルー本)がとても楽しい。
741:デフォルトの名無しさん
09/08/23 13:52:17
読んだが、つまらなかった。
742:デフォルトの名無しさん
09/08/31 14:47:43
そろそろ呼量かエリ糞なのかはっきりしてくれよ
743:デフォルトの名無しさん
09/08/31 15:35:45
Erlangの寿命はかなり短そうだなー。。。 ^ ^;
Haskellより短いかも。
744:デフォルトの名無しさん
09/08/31 17:02:55
寿命もなにも、エリクソンの基幹システムに使われているから簡単に捨てられないし、今後10年ぐらいは切り替えられないわけで・・・
745:デフォルトの名無しさん
09/08/31 17:32:34
>>744
Ericssonがどの言語のソフトを使っているかいないかは
言語の寿命には全くもって関係してこない。
Haskellだって、大学のシステムの一部となっている場合も
あるかと思うが、もう既に死滅した言語といっていいだろう。
問題はその言語がどれだけ一般ユーザーに受け入れられるか。
後先の見えない言語ならば初めから学ばない方が良い。
うちでも、ある大きなプロジェクトの一部を Erlang で
書いた者がいたが、彼は今それを全て別の言語に書き直すはめになった。