07/11/09 05:19:29
柏原 正三『プログラミング言語Erlang入門』
URLリンク(www.amazon.co.jp)
『Programming Erlang』に手が出せなかった人には朗報か
この著者ってC/C++/Javaの本でよく見かけるから
保守的なイメージあったんだけど
こういう人がErlangの本出すっていうのは少し意外
238:デフォルトの名無しさん
07/11/09 08:10:07
Erlangって保守的な気がするけど。
239:デフォルトの名無しさん
07/11/26 17:36:37
Ocamlよりもおもしろそうだね。
ちょっと>>11をみたけど、 ;;よりも.の方が個人的にしっくりくる。
240:デフォルトの名無しさん
07/11/27 07:46:46
そんな部分で決めるのですかよ
241:デフォルトの名無しさん
07/11/27 07:53:01
OCaml が嫌いな人はあの変態表記を受け入れられない人が多いんじゃないかな
Perl に対する嫌悪感に似ているかも
242:デフォルトの名無しさん
07/11/28 00:47:30
大抵の言語には得意な応用があるから、適材適所でいいんじゃね?
と言っても沢山覚えるのも面倒なんで、互いに補完しあうように4、5つくらいあれば良い。
Erlangで感動した例は、他の言語だったら巨大配列を使うような応用を、大量のプロセス生成でこなしたやつ。
243:デフォルトの名無しさん
07/11/28 00:51:03
>>242
>大量のプロセス生成
文字で見ただけで頭が痛くなる。
icsw, icsw, icsw...
244:デフォルトの名無しさん
07/11/29 06:16:33
ところで、論理型で並列な言語ってあるの?
245:デフォルトの名無しさん
07/11/29 07:07:17
Concurrent Prolog
Guarded Horn Clauses (GHC/KL1/KLIC)
246:デフォルトの名無しさん
07/11/29 07:19:09
>>244
織田信長
スレリンク(tech板)l50
247:デフォルトの名無しさん
07/11/29 08:27:35
>>245、>>246
レスどうも。織田信長とは面白い名前ですね。
248:デフォルトの名無しさん
07/11/29 08:40:16
>>244
Erlang 的なものとしては Oz (mozart)がある。
249:デフォルトの名無しさん
07/11/29 09:51:41
>>244
Parlogってのもある。
250:デフォルトの名無しさん
07/11/29 13:10:19
>>244
FLENG
PANDRA
P-Prolog
251:デフォルトの名無しさん
07/11/29 13:33:47
へーいろいろあるんですね。
いつも思うんですが、そういう変わった言語
のコンパイラ作れる人ってすごいですよね。
252:デフォルトの名無しさん
07/11/29 17:47:41
>>251
プログラミング研究なんかで、実験的に仕様の小さい言語を作る場合だったら
yaccなんかのパーサ生成ツール+諸々で済ますことも有る。
253:デフォルトの名無しさん
07/11/29 22:36:49
なるほど、関数型言語や論理型言語もyaccでいけるわけですね。
254:デフォルトの名無しさん
07/11/29 23:04:18
>>253
パーサはな!
255:デフォルトの名無しさん
07/12/01 13:51:03
ブーム復活!!!!!!!!!!!!!!
URLリンク(www.thinkit.co.jp)
256:デフォルトの名無しさん
07/12/02 17:51:41
↑ そのページ分かりにくい
257:デフォルトの名無しさん
07/12/02 19:30:14
公式のチュートリアルいいよ
Erlangはライブラリも結構揃ってるし
あとはマルチバイト文字さえ簡単に扱えれば・・・
258:デフォルトの名無しさん
07/12/05 05:56:15
プログラミング言語Erlang入門ゲット。
259:デフォルトの名無しさん
07/12/05 08:16:01
分かりやすい?
260:デフォルトの名無しさん
07/12/05 22:21:48
HaskellといいOcamlといいErlangといい、マルチバイト文字をまともに食える
処理系が存在しない限り日本でのブレイクなんて絶対にあり得ないのに
性懲りも無く火をつけようとする人が後を絶たんなぁ。
261:デフォルトの名無しさん
07/12/05 23:33:59
文字列なんて単なる Byte の Vector だから、処理系が駄目でも
ライブラリレベルで解決出来るでしょ。と言いつつ、俺は日本語が
通る様に自分で処理系を直して使ってるけど…
262:デフォルトの名無しさん
07/12/05 23:36:43
>>260
Haskellはもう既に解決済みですが。ざんねん。
263:デフォルトの名無しさん
07/12/05 23:51:52
>>260
別に、メッセージで扱うぐらいだったら、
別途ファイルから引っ張ってくるようにしとけば、別に
マルチバイトうんぬん関係ないと思ってるんだが・・・・
なんか本質的な問題でも含んでる?
264:デフォルトの名無しさん
07/12/06 00:04:07
リテラルでソースコード中に記述した日本語文字列が
きちんと日本語として扱える処理系が欲しいという事
なんじゃないかな。length("日本語") が 3 を返す様な。
265:デフォルトの名無しさん
07/12/06 00:34:48
Erlang/OTP R12B released
URLリンク(www.erlang.org)
The Erlang/OTP team is proud to announce the release of Erlang/OTP R12B,
now with SMP support for Windows and the language extensions: bitstring
and binary comprehensions. (Dec 5, 2007)
bit string, and binary comprehensions:
URLリンク(www.erlang.org)
URLリンク(www.erlang.org)
266:デフォルトの名無しさん
07/12/06 00:39:02
URLリンク(www.erlang.org)
267:デフォルトの名無しさん
07/12/06 15:03:38
>>264
ソースコードに日本語を書くやつはバカです
268:デフォルトの名無しさん
07/12/06 17:17:22
>>267
つ バカ言語「ひまわり」
269:デフォルトの名無しさん
07/12/06 18:15:52
>>267
なんだそりゃ?
270:デフォルトの名無しさん
07/12/06 18:20:27
ソースコードに日本語書いて何が悪いんだ
日本人にとって日本語は便利だぞ
271:デフォルトの名無しさん
07/12/07 07:35:55
>>270
> ソースコードに日本語書いて何が悪いんだ
頭
272:デフォルトの名無しさん
07/12/07 07:54:00
>>271
そりゃ君
273:デフォルトの名無しさん
07/12/07 12:14:33
>>271
かのファインマンだって日本語習得は断念したほど難しいんだぜ
274:デフォルトの名無しさん
07/12/08 01:43:00
>>270
>>267 は日本語を扱えないコンパイラが多かった時代の技術者か、
外国人も参加しているオープンソースプロジェクトのコミッタか、
そのどちらか
275:デフォルトの名無しさん
07/12/08 05:17:50
>>274
今でも、日本語混ぜてねぇ・・・・とか思うんだが
どうせソース読むのは英語も曲がりなりにでも読めるようなやつらばっかっしょ。
メッセージ分離がいいと常から思う身としては、>>267に同意してしまう。
変数、関数名とかまで日本語サポートしてるなら
むしろ、ガンガン日本語で行って見ても面白いかも。とかとも思ってるけどねw
276:デフォルトの名無しさん
07/12/08 14:00:55
でもリテラルに日本語を書いてはいけない事について
説得力ある説明は出来ないんでしょ?
それならただ単にバカと言いたいだけと思われても
仕方がないよ。
277:デフォルトの名無しさん
07/12/08 14:10:07
特に REPL がある言語で、対話的にコードを入力する場合は、
メッセージ分離なんて考えずに、生の日本語文字列を直接入力
したくなるのは当然じゃないかな。
278:デフォルトの名無しさん
07/12/08 17:05:35
Erlangがマルチバイト文字をサポートしていない理由は、その出自にあると聞いた事がある。
もともとエリクソンで通信インフラ用言語と開発された際に、超高速のプロセス生成、強力な
並列処理のトレードオフとして、データを「どこの国の言語で書かれた文章」かを判別しない、
としたとの事。
一般アプリを書く者として、Erlang使うなら日本語処理ライブラリが欲しい、というのは同意。
279:デフォルトの名無しさん
07/12/08 17:32:43
↓を思い出した
--
オープンソースのイベントで、
質問者「オープンソースは英語が使えないとなかなか使えないところがありますが」
壇上者「いえ、日本人は英語が使えないと言われていますが、そんな事はありません。
その使う気があれば、だれでも英語の掲示板でも普通に会話できるので問題
にはなりません」
質問者「そうですか……ありがとうございました(T_T)」
というのも言葉の壁だね。
280:デフォルトの名無しさん
07/12/08 18:18:40
おもしろい。
281:デフォルトの名無しさん
07/12/08 18:49:32
>>279
ある意味真実だろ。
なんで完璧な言葉でないとダメだと思い込むのか不思議でしょうがないと感じる事あるんだけどなぁ。
支那やインドから来日したエンジニアが完璧な日本(英)語話したりしないのを微笑ましく思うのに自分等が英語での会話に完璧な表現力を必須としたがるんだか。
#完璧じゃなきゃ困るのは契約書だけだぜ
282:デフォルトの名無しさん
07/12/08 19:18:47
281は279に書かれたやりとりが通じていないのではないか?
283:デフォルトの名無しさん
07/12/08 19:54:54
>>282
エリートの傲慢ってやつだろ。
284:デフォルトの名無しさん
07/12/08 20:04:08
壇上者は、エリートの傲慢だと思ってしまうのは卑屈すぎるって
言いたかったんだろうね。俺もそう思う。
285:デフォルトの名無しさん
07/12/08 22:15:05
>>284は典型的なエリートの傲慢の誇示
286:デフォルトの名無しさん
07/12/08 22:23:39
本当のエリートの傲慢はこんな感じだぜ。
壇上者「いえ、あなたが英語を使えないのは分かっていますが、それだけではありません。
その気があれば、誰だって英語で普通に会話出来るのに、その事にすら気付いてないのが
問題です。あなたはいつも大切な事を見逃しますね。ふふん。」
287:デフォルトの名無しさん
07/12/08 22:26:39
とフランス語で語るのである。
イヤミのキャラが「おフランス」と言いながら一人称がmeなのをが面白い事がわかったのは中学に入ってから。
288:デフォルトの名無しさん
07/12/08 22:57:24
で、Erlangの話はどうなったのさ
次のリリースではiconv同梱にしてワイドキャラクタ用関数実装とかしてくれたらなあ
遊びで使ってるユーザが自分でやるにはちと荷が重い
289:デフォルトの名無しさん
07/12/08 23:12:15
どっかのblogで本が取り上げられたからお客さんが増えるかな・・・
290:デフォルトの名無しさん
07/12/08 23:56:28
日本語が読めない人が読むコードのコメントに日本語で書くやつはバカ
英語が不自由な人が読むコードのコメントに英語で書くやつはバカ
291:デフォルトの名無しさん
07/12/09 00:55:22
>>290
割と柔軟だなw
292:デフォルトの名無しさん
07/12/20 13:55:16
コメントを書かなければ何語に不自由な人に読まれても大丈夫
293:デフォルトの名無しさん
07/12/21 01:56:47
>>279
腐ったインターフェイスのアプリでも我慢して使えって話をされているような・・・
294:デフォルトの名無しさん
07/12/21 07:23:48
間違った英語でグダグダ書くヤツは大馬鹿
295:デフォルトの名無しさん
07/12/28 11:48:27
age
296:デフォルトの名無しさん
08/01/08 08:25:16
ニュース貼っときます。
Amazonが、Erlangで動作する,オンラインDBサービス「Amazon SimpleDB」の限定ベータ提供を開始
Amazon,オンラインDBサービス「Amazon SimpleDB」の限定ベータ提供を開始
URLリンク(itpro.nikkeibp.co.jp)
AmazonのSimpleDBとIBMのBlue CloudがCloud Computingの発展を促す
URLリンク(www.infoq.com)
Amazon SimpleDB - Limited Beta
URLリンク(www.amazon.com)
What You Need To Know About Amazon SimpleDB
URLリンク(www.satine.org)
297:デフォルトの名無しさん
08/01/10 18:05:44
コメント書かないとわからないコードを書くヤツは馬鹿です。
コメント書いてもらわないとコードが読めないヤツも馬鹿です。
298:デフォルトの名無しさん
08/01/12 15:08:37
IDEが来ますぞ
URLリンク(www.infoq.com)
299:デフォルトの名無しさん
08/01/21 16:26:21
Erlangの本買ったよage
300:デフォルトの名無しさん
08/02/02 22:16:27
Erlangは出来る子なの?
301:デフォルトの名無しさん
08/02/04 18:25:08
出来ることを期待されている子だ
302:デフォルトの名無しさん
08/02/05 09:37:36
Ericsson内で十分実績あるだろ?
303:デフォルトの名無しさん
08/02/07 14:47:13
JavaScriptを並列処理言語Erlangへコンパイルする"ErlyJS"とは
URLリンク(journal.mycom.co.jp)
> ErlyJSの開発ははじまったばかりだ。今後の展開に注目していきたい。
304:デフォルトの名無しさん
08/02/08 00:39:25
Programming Erlang の日本語版もうすぐ出るよ
URLリンク(ssl.ohmsha.co.jp)
・著者:Joe Armstrong 著
榊原一矢 訳
・定価:4620円(本体4400円+税)
・B5変 480頁
・ISBN 978-4-274-06714-3
・発売日:2008/02
章立ては原書と一緒みたいだね
305:デフォルトの名無しさん
08/02/09 18:11:14
>>303
JavaやC#をErlangへコンパイルできるようにならないかな。
306:デフォルトの名無しさん
08/02/09 22:43:41
ならないかな ← してみよう
307:デフォルトの名無しさん
08/02/10 00:49:35
>>305
Java を Erlang VM で動かしたいという事なら、逆の方が良いんじゃないかな…
308:デフォルトの名無しさん
08/02/12 22:45:24
ここは質問 Ok なんすかね? 最近かじってるんですが、
erlang って prolog に似てるけど prolog と違って先行評価ですよね。
ということは差分リストとかは使えない、ということでしょうか? 例えば
X = [1,2,3 | Y].
などとした場合、Y が未束縛だとエラーになってしまいます。
つか、先行評価なら Lisp の quote みたく評価を回避する手がありそうですが
見つけられませんでした。
309:デフォルトの名無しさん
08/02/13 02:11:19
> X = [1,2,3 | Y].
何がしたいのかをもうちょっと具体的に書いてくれると、
何か教えることができるかもしれない。
310:308
08/02/13 21:54:43
レスが遅れてすんません。平日は時間が取れなくて。
>>309
何がしたいとかではなくて、Prolog の本には必ず出てくる「差分リスト」という
データ構造が Erlang で使えるのかどうか気になっただけです。
差分リストは Prolog では常套的な手法なんですが、これが使えないと実現できない機能が
あるということもないので、使えないからダメとかいう問題ではありません。
差分リストを説明するのはちょっと難しいので省略します。私も Prolog が得意なわけじゃないのでw
311:デフォルトの名無しさん
08/02/17 14:42:44
>>304
㌧。この出版待ってた。
312:デフォルトの名無しさん
08/02/19 21:37:20
これでDB組んだらすげぇ並列になるのか?
313:デフォルトの名無しさん
08/02/20 02:22:38
>>310
亀レスだがもう見てないかな?
遅延評価は、以下のようにclosureを使えば出来る。
URLリンク(d.hatena.ne.jp)
ただし、差分リスト実装のためには、データフロー変数が必要かと。
Oz言語での例は、以下の通称ガウディ本にあり。
『コンピュータプログラミングの概念・技法・モデル』
(Concepts, Techniques, and Models of Computer Programming)
314:デフォルトの名無しさん
08/02/20 11:07:18
>>312
IOが超ボトルネック
315:310
08/02/20 22:24:42
>>313
時々は見てます。クロージャで包んで遅延評価ですか、ナルホド。
私が意図したものとは違うけど、ちょっと面白いですね。
大モトのブログの記事を読むと、たらい回しプログラムは遅延評価が特に
必要というわけではないのに (もともと意味のない処理みたいだけどw) あえて
クロージャにする意図は実行効率にあるようで、その辺も興味深いです。
それと、ガウディ本の存在は知ってましたが分厚いので今まで敬遠してました。
Oz も どうせ Yet Another なハイブリッド言語だろうくらいにしか思って
なかったのですが、この辺見るとなかなか侮れない感じですね。
URLリンク(www.ueda.info.waseda.ac.jp)
ガウディ本、読んでみます。有難うございました。
316:310
08/02/25 22:00:56
ワタシの書込み以降、過疎ってるので age で賑やかしに。
>>304 の人が書かれてた「プログラミング Erlang」日本語版、Amazon から届きました。
まだパラパラとめくっただけだけど、やっぱエリクソンで長年使われただけあって
ライブラリやフレームワークが揃ってる感じで、関数型言語としては業務システムの
記述に広く使われ得る第一候補の言語と期待されるのも分かる気がします。
はっきり言って Erlang って言語オタクな人にとっては簡単すぎてつまらないと
思われがちかもですが、この言語のポテンシャルは別のところにあるんですね。
>>312 >>314
なんか Mnesia という専用の DBMS があるみたいですね。
耐負荷性とかはまだ分からないけど。
317:デフォルトの名無しさん
08/03/12 13:32:12
>>316
> なんか Mnesia という専用の DBMS があるみたいですね。
参考に、Erlang で実装されたJabberサーバーで、Mnesia データーベースを
使用してデータの冗長化を行うことが出来る、との事。
URLリンク(dsas.blog.klab.org)
318:デフォルトの名無しさん
08/03/12 13:58:38
>>315
スレチかもしれないけど、ガウディ本の英語版PDFは以下で入手可能。
("Concepts, Techniques, and Models of Computer Programming pdf"で検索した)
URLリンク(www.google.co.jp)
ただし、計算モデルという考え方にまだ馴染みが無い方には日本語版がお薦め。
日本語版の本と、英語版PDFとを併読したら理解し易いと思う。
319:デフォルトの名無しさん
08/03/14 11:00:15
まつもとゆきひろ氏が、Erlangに言及している部分。
まつもとゆきひろ×小飼弾対談 生き残るエンジニアとは?
URLリンク(www.atmarkit.co.jp)
Q:いま注目している言語があるか?
A:日本語。英語以外でコンピューサイエンスを学べる日本は世界でもレアな国。
20年後、Rubyを学ぶ際に英語を学ばないとRubyを学べない時代がくるかも
しれないという心配がある
Ruby以外ではErlangなど。なぜErlangか。将来のマルチコアに対応するには、
いまのスレッドモデルでは限界がある。Erlangのプロセスモデル/アクター
モデルというのは、その答えになるかもしれない。Rubyのようなプログラムに
Erlangの機能を組み込むことを考えている。
320:デフォルトの名無しさん
08/03/14 11:28:30
聞き飽きたぜ
321:デフォルトの名無しさん
08/03/14 23:27:14
GUIライブラリとかってある?
322:デフォルトの名無しさん
08/03/14 23:37:08
>>321
URLリンク(www.erlang.org)
323:デフォルトの名無しさん
08/03/16 22:16:26
質問があります。
Erlangを覚えようと思うんですけど、手続き型言語しか使えません。
Lispを覚えてから学ぶべきですか?
324:デフォルトの名無しさん
08/03/16 22:21:02
>>323
それはオススメできません
Erlangに行く前にLispだけで一生が終わってしまいそうです
なので出回ってる書籍や公式のチュートリアルで勉強して
分からないところをこのスレで聞いたらみんなが幸せになれると思います
325:デフォルトの名無しさん
08/03/17 00:35:15
>>324
遅レスですが、ありがとうございます。
326:デフォルトの名無しさん
08/03/17 21:41:15
すぐ真上のレスに遅レスはないだろう。。
327:デフォルトの名無しさん
08/03/18 06:24:58
まぁ、当事者のリアルタイムの感覚がそのまま出たんだろう。
5分後にレスもらってたのに、つい2時間も放置しちゃって・・・、みたいな。
328:デフォルトの名無しさん
08/03/26 21:11:48
質問があります。
以下のコードをターミナルで動かしても問題ないのですが、Eclipseで動かすと良くわからないエラーがでます。
-module(receiver).
-export([receiver/0]).
receiver() ->
receive
Msg -> io:format("~necho: ~p",[Msg]),
receiver()
end.
これを
Pid = spawn(receiver,receiver,[])
とやると、
{get_geometry,columns}
=INFO REPORT==== 26-Mar-2008::20:58:06 ===
erlide_reshd:handle_io_request: Unexpected IORequest:{get_geometry,columns}
{requests,[{put_chars,#Bin<3>},{put_chars,#Bin<60>},{put_chars,"
"}]}
=INFO REPORT==== 26-Mar-2008::20:58:06 ===
erlide_reshd:handle_io_request: Unexpected IORequest:{requests,
[{put_chars,<<"** ">>},
{put_chars,
<<"exception error: no match of right hand side value <0.908.0>">>},
{put_chars,"n"}]}
というエラーが発生します。
昨日勉強を始めたばかりの初心者なので、簡単に教えて頂けませんでしょうか?
よろしくお願いします。
329:デフォルトの名無しさん
08/03/26 23:33:26
erlideは触ったことないけど、これかな?
URLリンク(www.erlang.org)
いずれにしても、最初のうちは統合環境を使わないほうがいいと思います。
330:デフォルトの名無しさん
08/03/27 00:05:45
>>329
詳しくないんですが、確かにioの可能性がありますね。
Errorもそんなこと言ってますし。
とりあえず確認したところ、Eclipseでのコーディングには問題がないので、
それをコンパイルして、beamファイルのある場所でErlangをターミナルから使うってのが
一番手っ取り早かったです。
他の言語はいくつか使えるんで、いきなりIDEを使ってたんですけど、
やっぱりセオリー通り、普通のエディタで書くべきかもしれないですね。
ありがとうございました。
原因や解決方法が分かったらまた書き込んでおきます。
331:デフォルトの名無しさん
08/03/29 05:11:08
セオリーは「いきなりIDEを使わない」ではなく「いきなり完成度の低いツールを使わない」だ。
完成度の高いIDEならいきなり使っていい。
332:デフォルトの名無しさん
08/04/14 22:12:08
Erlangで作ったプログラムを配布する場合、単独のexe形式にできますか?
333:デフォルトの名無しさん
08/04/15 00:59:21
Erlangがインストールされてないマシンで動かせるかってこと?
もしそうだとしたら、無理だと思う。
334:デフォルトの名無しさん
08/04/15 07:54:34
>>333
回答ありがとうございます。
無理ですか。残念。
他の言語を検討してみます。
335:デフォルトの名無しさん
08/04/21 23:14:47
「小飼弾のアルファギークに逢ってきた」っていう本に
Dave ThomasがErlangの本を書いているって書いてあったんだけど
詳細が分かる人いますか?
07年7月に出版予定とか書いてあったけど、どうもAmazonの洋書でそれらしいものがない。
336:デフォルトの名無しさん
08/04/21 23:36:22
だんに聞けば分かるんじゃね?
337:デフォルトの名無しさん
08/04/22 14:14:55
Erlangの.beamファイルって、違うマシンでも動くの?
.erlをコピー、コンパイル、起動ではなく
.beamをコピー、起動とできるかということです。
338:デフォルトの名無しさん
08/04/22 20:11:03
>>335
それはdaveが書いた本じゃない。
programmers bookshelf というところ(daveがからんでいる)
からもう出版されてる。
日本語訳もでたよ。
339:デフォルトの名無しさん
08/04/22 22:18:29
プログラミングErlangのp.345の lib_chan_auth の中で使われてる
lib_md5って本に載ってないみたいだね。
親切な人が書いてくれたみたい(Mac FireFoxじゃ見れなかった)。
URLリンク(forums.pragprog.com)
340:デフォルトの名無しさん
08/04/23 20:21:38
ちゃんと勉強してるやつがいることに驚いた。
このスレは基本的にwikipedia的な情報についてばかり議論してるからなwwww
341:デフォルトの名無しさん
08/04/23 23:02:30
erlangのライブラリのリファレンスってどこにあんの?
公式にあるかと思ったら見つかんね
342:デフォルトの名無しさん
08/04/24 00:43:11
URLリンク(www.erlang.org)
343:デフォルトの名無しさん
08/04/24 08:51:20
ありがとう!
344:デフォルトの名無しさん
08/04/25 14:20:31
質問です。
「プログラミングErlang」のp.203にある関数
lib_misc:string2value(Str)
の実装が載っておりません。ググってもでてこなかったです。
機能としては、
"list_to_tuple([2+3*4 , 10+20])"
という文字列を渡して、この命令をさせるものです。
結果は
{14,30}
と今回はなります。
これはどのように実装するべきでしょうか?
文字列処理からapply()を適用することが思い浮かんだのですが、
私の技量では無理そうです。
お助け下さい。よろしくお願いします。
345:デフォルトの名無しさん
08/04/26 07:31:42
Erlangはド素人。レス入れるのも恥ずかしいが、
使ったことあるモジュールを組み合わせると、
test(Str) ->
{ok,Ts,E} = erl_scan:string(lists:append(Str,".")),
{ok,P} = erl_parse:parse_exprs(Ts),
P.
までは来る。ヒントにならないかなぁ。
346:デフォルトの名無しさん
08/04/27 21:43:07
本家サイトに本に載ってないソースがありました。
その中に、これも含まれているようでした。
>>345
それは便利そうですね。
簡単に試してみたのですが、別の用途に使えそうです。
ただ、今回の処理にはちょっと不向きっぽいかもしれませんな。
ありがとうございました。
347:デフォルトの名無しさん
08/04/28 05:39:41
>>346
ソースコードたしかにありました。これはどういう意味なのですか。
Bindings = erl_eval:new_bindings(),
348:デフォルトの名無しさん
08/04/28 06:07:31
>>346
string2value/1 は parse + eval なのですね。私は向井さんのPDFで
ソケットの読み書きの部分だけ切り取って使ってしまってソースの細部は
全然勉強していませんでした。Prologで共用データベースとしての
Prologサーバと通信しながら運用しているので、Erlangとも同レベルで
と思ってはいたのですが、この部分が分からず放ってありました。
一挙に解決しました。ありがとうございます。
349:デフォルトの名無しさん
08/04/28 06:42:27
質問です。論理変数を持つPrologではサーバーとの交信は
1)クライアント側でQuery P (論理変数を引数に持つ)を一旦文字列化して
2)サーバに送信。
3)サーバは文字列を受信したら、これを parseして P1 を構成。
4)これを call(P1) した後、
5)P1 を文字列化して
6)クライアントに返信。
7)クライアントは受信した文字列をparseしてP2を作り、
8)P と P2 を単一化する。これで論理変数に解が得られます。
エラー時のexception処理などを無視して書きましたが、大体このように進みます。
関数型、ここでは、Erlangですが、典型的なハンドリングを教えてください。
350:デフォルトの名無しさん
08/04/28 08:22:43
>>347
俺も初心者だから良く分からんけど、本家マニュアルによると
bindings(BindingStruct) -> Bindings
Returns the list of bindings contained in the binding structure.
binding(Name, BindingStruct) -> Binding
Returns the binding of Name in BindingStruct
ってなってるね。
たぶん、bindingsで返したものに、どんどん新しい値を加えていくような感じなんじゃない?
erl_scanのほうは分解するみたいですね。こっちのほうが使えそう。
>>349
client(引数) ->
送りたいデータを作成
送り先PID = spawn(送り先。この場合はserver関数),
送り先PID ! {自分のPID , 送りたいデータ},
receive %serverからの返信を受けるため
{送り先のPID, 受け取りDataタイプ} ->
受け取ったデータの処理
end.
server(引数) ->
receive
{clientのPID, 送られたData} ->
送られたDataの加工,
clientのPID ! {serverのPID, 送るデータ}
end.
今手元に資料が無いんで、間違ってるかもしれん。自分自身のPIDを相手に送って、返信先を教えるっぽいね。
351:デフォルトの名無しさん
08/04/28 08:28:50
>>350に訂正
よく説明読むと>>347へのレスは間違いっぽい。
どっちもBindingStructから値を取り出すためのものみたいだね。
上はlistで、下はkeyでvalueを指定するようなもんか?
夜試してみます。
まず、Bindingが何なのかが良く分からん。
理解してないのに適当なこと言ってスマソ
352:デフォルトの名無しさん
08/04/29 18:01:52
register(atom,Pid)
って、Pidが自分のノードの物じゃないときは無理?
353:デフォルトの名無しさん
08/04/30 07:14:39
>>349
サーバーが返すのはPではなく評価値ということになるが
7) のP2のところを V = に値を保持すると置き換え
8) の単一化を削ると
関数型もまったく同じではないだろうか。Vに値を保持できないと
論理型に比べて使い勝手少々悪いのかな。
354:デフォルトの名無しさん
08/04/30 09:43:17
プログラミングErlangの中盤のコードって難しすぎるよな。
IRCLiteとか関連する章を含めたら、あきらかに初心者向けの量じゃない。
355:デフォルトの名無しさん
08/05/01 17:08:23
リファレンスマニュアルと平行してやらないと無理だよ。
あの本は「載ってないとこは調べろ」みたいなことが書いてあるじゃん。
356:デフォルトの名無しさん
08/05/15 00:53:33
webページ作ったから、よかったら利用してみて下さい。
URLリンク(erlangworld.web.fc2.com)
357:デフォルトの名無しさん
08/05/15 00:55:59
>>356
やるじゃん
358:デフォルトの名無しさん
08/05/15 00:56:26
>>356
これはいい感じ。プログラミングErlangとあわせて読むか
359:デフォルトの名無しさん
08/05/15 00:58:23
あれ?Erlangのwikiってなかったっけ?
360:デフォルトの名無しさん
08/05/15 01:01:58
乙。しかし、charset位は指定して欲しい。
古くさいブラウザは自動認識してくれなかったりするのよ。
361:デフォルトの名無しさん
08/05/15 01:15:07
文字コード直した。
とりあえず、Erlang信者を増やすことが俺の宿命。
362:デフォルトの名無しさん
08/05/15 01:30:43
あんまり気負うとつかれちゃうからまったりいこうぜ
363:デフォルトの名無しさん
08/05/15 02:08:21
サンプルプログラムが多いから分かりやすいな。
364:デフォルトの名無しさん
08/05/15 20:33:16
>>361
arigato. 文体が平易なのがいいね。ちょっと勉強してみるよ。
365:デフォルトの名無しさん
08/05/15 23:10:42
早速こけたので報告。
Mac OS X 10.5.2 Intel MacBookPro
.configureでエラー
Odbc : ODBC library - link check failed
./configure --enable-darwin-64bit --with-gd=/usr/local
でOK。そういや64bitでした。
366:デフォルトの名無しさん
08/05/15 23:58:35
>>356
chapter4ってリンク切れしてるけど仕様?
367:デフォルトの名無しさん
08/05/16 00:37:16
まだ作ってない。スマソ
もともとテンプレートをBIFの章のコピペで作ったんだけど、
構成変えちゃったからリンク切れになってる。
>>365
そういうのはすごい助かる。
更新の時に役に立つ情報は加えておくよ。
ありがとう。
368:デフォルトの名無しさん
08/05/16 15:10:40
いいね。
369:EW”管理”人
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の方が指摘している通り、コルーチン的に処理するってことです。
純粋な逐次プロセスでコルーチンを実装すると、その処理をやっている間は
第三者からのアクセスに反応できないため問題がありました。
並列で新しいプロセスを作ると、コルーチンを分解できるんで
シンプルになりましたということです。