2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2007/04/14(土) 00:59:19
いいからやってみ

510 :デフォルトの名無しさん:2008/09/14(日) 17:30:04
次世代はLarrabeeなんでまだ10年はx86かな

511 :デフォルトの名無しさん:2008/09/14(日) 17:48:11
15年とか20年とか先になるとして、>>508 的な状況と
時期的にどのくらいのズレが生じるのだろう。
本格的なマルチコア時代と関数型への移行が
同期するなら極めてハッピーと言えるのだが。

512 :デフォルトの名無しさん:2008/09/14(日) 17:55:53
>>511
マルチコアではHaskellが有望株らしいよ
ttp://www.watch.impress.co.jp/game/docs/20080911/epic.htm

513 :デフォルトの名無しさん:2008/09/14(日) 18:10:46
Hakellが機械語ですか、ゾッとしますね。

514 :デフォルトの名無しさん:2008/09/14(日) 18:27:47
関数に副作用が無いことを利用して並列化をかけるってのは確かに有望だとは思うが
オブジェクト脳的な考え方だと、アクターベースのほうがより親しみやすい感じがする
特にゲームは実世界のシミュレーション
オブジェクト的な発想が強そうだが、そうでもないのかね?

515 :デフォルトの名無しさん:2008/09/14(日) 18:44:26
ゲームに使うアクションの合成をうまいこと作れる演算子のセットが
できれば、Haskell的な言語への移行は意外と早いんじゃないかな。

ツクール系とかのスクリプト言語として「HaskellらしからぬHaskell」が
現れてくると思う。

むしろ、ゲーム開発のメインストリームになるためには、ガベージコレクションに
ブレイクスルーが必要だと思うね。確実にメモリ消費量の上限を決められたりとか、
そのあたり。

純粋関数型言語じゃないけど、PC向けのSchemeであるYpsilonの開発動機に、
既存の処理系ではGCに不満がある、とあった。

516 :デフォルトの名無しさん:2008/09/15(月) 15:50:20
>>515
20年後になっても、人類はゲームをやってるのか。

517 :デフォルトの名無しさん:2008/09/15(月) 15:56:04
20年前に人類にゲームはなかったのか?

518 :デフォルトの名無しさん:2008/09/15(月) 15:57:12
>>516
やって無いと思うほうがおかしくね?



519 :デフォルトの名無しさん:2008/09/15(月) 20:38:34
2千年後でも2万年後でも200万年後でも人類はゲームをやっているだろうね。
絶滅するか、あるいはとても人類とは呼べないものに変貌していない限り。

ゲームをする(遊ぶ)と言うのは人間というものを特徴づける
重要な性質のひとつだ。

現在のような人手でプログラミングする必要のあるコンピュータが
存在しなくなる可能性の方がまだ有り得るな。

520 :デフォルトの名無しさん:2008/09/15(月) 20:44:49
人間自体コンピュータだと主張する俺が通りますよ

521 :デフォルトの名無しさん:2008/09/15(月) 21:31:21
脳の並列処理はすごいと思う。
画像認識処理とかもう人間並みに速くなってるのかな

522 :デフォルトの名無しさん:2008/09/15(月) 21:40:46
無理でしょ。
人間の画像処理は目玉やら筋肉やら脊髄やら、いろんな複合的なシステムになっている。
ハードウェアまで含めて画像処理に使ってる人間と、
ソフトウェアだけのコンピュータによる画像処理では最初から勝負になってない。
たとえば、太陽黒点を観測するシステムを構築する時。
結論から言うと、カメラで写らない黒点を人間の目玉は見つけることができる。
なぜなら人間は全体を一様な明るさでとらえているのではなくて、
眼球を動かしつつ虹彩で明るさ調整しつつ経過時間を意識して見ているから。
人工的にできないわけじゃないけど、まだ誰もできていない。

523 :デフォルトの名無しさん:2008/09/15(月) 21:44:17
実際に観測装置を動かしてみると、とても大きな黒点が見えるのに、
適切に設定したはずのカメラにはまったく映っていなかったということが実際にある。

524 :デフォルトの名無しさん:2008/09/18(木) 19:39:05
パートクリエイター板で技術さんを募集。
みんなでわいわいやりましょう。
http://ex14.vip2ch.com/test/read.cgi/news4gep/1221357313/
http://www36.atwiki.jp/vipvipschool/

現在6名の技術さんがいます。
他にもサーバー部分、土台を作る人が不足しています。
CSS、Perl、アーラン、その他言語ができる人を募集中!
勉強中な人でもかまいません。

イメージや企画内容についてはスレッドとwikiをご覧下さい。
わからない所があればIRCやメールで気軽に聞いてください!

525 :デフォルトの名無しさん:2008/09/18(木) 21:29:28
>>524
おk
いまからerlang勉強して手伝ってやる

526 :デフォルトの名無しさん:2008/09/20(土) 14:37:16
むしろ技術者が6人もいるのに、ろくに進捗がないことの方が驚きだわ

527 :デフォルトの名無しさん:2008/09/20(土) 14:39:43
>>526
それではあなたが加入して、革命的躍進を遂げて下さい。

528 :デフォルトの名無しさん:2008/09/20(土) 19:27:11
>>526
察しなさいよ。
6人中一人しか使えない言語を選択してるんだぞ?
リーダーは大学2年生くらいで、来年には就職活動が忙しくなって投げ出すよ。

529 :デフォルトの名無しさん:2008/09/22(月) 13:16:54
質問です

floatからintegerに変換するにはどうすればいいですか?

530 :デフォルトの名無しさん:2008/09/22(月) 13:38:00
trunc(Number).

531 :デフォルトの名無しさん:2008/09/22(月) 14:19:38
>>530
ありがとうございます。
さらに質問ですが、Erlangで無限リストはどのように書けば良いのでしょうか?

532 :531:2008/09/22(月) 14:28:47
説明が不十分ですね。
私がしたいことは、
たとえば、2,3,5,7,11,13,・・・(無限)と続く素数のリストから100個の要素を取得したい場合、
どのように書くのがスマートでしょうか?

533 :デフォルトの名無しさん:2008/09/23(火) 15:49:03
皆さんエディタは何を使っています?
俺はemacsを使っているんですが、関数を畳んだりできる機能が無いので若干不便に感じています。

534 :デフォルトの名無しさん:2008/09/23(火) 16:45:02
>>533
> 関数を畳んだりできる機能が無いので

あるよ。 erlang のモードで使えるかどうかは知らんが、それでもちょっとコードを書き足せば出来るはず。

535 :EWの人:2008/09/28(日) 03:02:06
おかげさまで大学院にも合格しました。
卒論の折を見ながら、サイトの更新を再開しようかと思います。

>533
無限リストってものが良く分からないのですが、
一番純粋なリストっぽくやろうとしたら、リスト内包表記じゃないかと思います。
条件判定のところに素数の条件と、どこまで求めるかを記せば動くような気はしますね。
ただ、直感的にあまりいいプログラミングのやり方じゃないように感じます。
毎回2から割り切れるか調べるという馬鹿プログラムなら別にいいんですが、
そうじゃないのなら複雑すぎるので避けるべきではないかと。

特に拘りが無いのであれば、他の言語みたいに関数で定義すりゃ手っ取り早いような気はします。
引数に「現在の値」と「素数リスト」を取った再帰関数を定義して、
「素数リスト」に含まれる要素が「現在の値」を割り切れないときは素数リストにその値を追加。
「現在の値」をインクリメント
というのをグルグル回すのが一番シンプルな気がします。
本格的に作るのなら、並列処理で判定させるのも面白いかもしれませんね。

536 :デフォルトの名無しさん:2008/10/03(金) 07:50:35
>>494
関数型に較べて、論理型が冗長な部分があることは確かだが、
多くの場合仕様を変更して機能的に拡張するとなると、
例えば履歴の確保を追加する場合などだが、関係する述語群に
引数(論理変数)を1-2個増やすだけで解決できる論理型の
方が圧倒的に有利になる。

537 :536:2008/10/03(金) 09:05:03
例えばPrologで引数を増やすということは、
関数で型宣言をすることに近いのだから、
圧倒的に有利どころかほとんど差はないか。>>536 は撤回。

538 :デフォルトの名無しさん:2008/10/03(金) 21:34:53
プロセス辞書って副作用だよね?


539 :デフォルトの名無しさん:2008/10/04(土) 00:11:29
ごめん、参照透明とかあんま厳密な言語じゃないみたいね

540 :デフォルトの名無しさん:2008/10/04(土) 11:35:09
>>539
ちょいさわった感じでは、ある意味「普通」の言語。
単一代入なのは、プロセス間でmutableなデータを共有しないための手段のような気がする。(なので、個々のプロセスで閉じるプロセス辞書については気にしない)
そういうデータを扱う方法については言語内でカタを付けるんじゃなくて、ETSやMnesiaという形で外出しにしてるし。

541 :デフォルトの名無しさん:2008/10/16(木) 07:40:04
関数型プログラミング言語、興味を持ってちと勉強してみようと思い立ったものの、
Erlang, Haskell, OCaml, etc. どれに手をつけてみるのが一番良いの?

まあこのスレで聞くのもナンだけど。

542 :デフォルトの名無しさん:2008/10/16(木) 14:50:57
どうせ全部手をつけることになるんだからどれでもいい


543 :デフォルトの名無しさん:2008/10/16(木) 18:08:24
なるほど!
目からウロコとはこのことです。迷っていた自分が馬鹿らしくなりました。

544 :デフォルトの名無しさん:2008/10/16(木) 19:04:48
>>541
どれつかっても身近な文字列扱うときに泣いたのでF#でお茶を濁した俺


545 :デフォルトの名無しさん:2008/10/16(木) 20:55:51
全部手をつけることにはなるだろうけど、どれも均等に使う可能性は低いかな。。
みなさんGUIは何でやってる?やっぱerlgtkですか?

546 :デフォルトの名無しさん:2008/10/19(日) 10:51:15
Scala で Swing

547 :EW:2008/10/24(金) 13:30:12
Erlangでオブジェクト指向っぽくプログラミングする手法って
需要ありますかね?
継承やポリモーフィズムあたりを実現させるのはかなり難しいんですが、
インスタンスとメソッドを用いるプログラミング手法には似せることが出来ます。

知りたい人がいるのであれば、webページを作ろうかと思います。
ttp://erlangworld.web.fc2.com/

548 :デフォルトの名無しさん:2008/10/24(金) 14:48:37
Parameterized modules のこと?

549 :EW:2008/10/25(土) 01:07:25
>>548
そんな高度なもんじゃないですよ。

Cの構造体でオブジェクト指向っぽくプログラムを組むのと似たような感じですかね。
オブジェクトを一つのプロセスにして状態をグルグル回すだけです。
gen_serverの簡単なバージョンをイメージして頂ければ分かりやすいと思います。
プログラミングの癖が私に似ている人なら、たぶん自然と使っているような気はします。

550 :デフォルトの名無しさん:2008/10/25(土) 02:07:07
継承と多態の無いオブジェクト指向って、それオブジェクト指向じゃなくね?

というのは置いといても、receiveを囲ってるループの引数にフィールド当てはめてメッセージにメソッド当てはめるってこと?

551 :デフォルトの名無しさん:2008/10/25(土) 04:46:22
オブジェクトにメッセージを送れるならOOPLと呼んでいいと思う

552 :デフォルトの名無しさん:2008/10/25(土) 10:52:45
>>551
絶対に違うと思う

553 :EW:2008/10/25(土) 12:18:02
>>550
だから、それっぽくということですwww
プログラミングをしている感覚としては、やっぱりオブジェクト指向よりも
手続き型に似ているような気がしてなりません。

そうですね。基本はreceiveをぐるぐる回す構造です。
メッセージによるイベントドリブン形式とでも言えるかと思います。
ErlangのAPIがCの構造体を利用したものに似ているんですが、
Pidをインスタンスに、メッセージをメソッドに、みたてて似たようなことをやるほうが、
並列処理では使い易いような印象がありますね。
まぁ、弊害として
・資源開放としてのプロセスの終了が必要になる
・死んでいるプロセスに送信したら無視される
というものもあるんですけど。

554 :デフォルトの名無しさん:2008/10/25(土) 16:41:13
>>552
「絶対に」という根拠は気になるな

555 :デフォルトの名無しさん:2008/10/26(日) 14:52:39
表紙のconcurrentに惹かれて「プログラミング Erlang」を読み進めているのだが、
今ひとつ並列性への本質的な強みが感じられなくて、期待はずれ感。
20章の初めには「たくさんのプロセスを使う」とか書いてあるし・・・

どうしたら満たされる、並列への期待

556 :デフォルトの名無しさん:2008/10/26(日) 17:18:49
>>555
第五世代コンピュータ

557 :デフォルトの名無しさん:2008/10/26(日) 17:23:53
織田信長?

558 :デフォルトの名無しさん:2008/10/26(日) 18:01:36
> 20章の初めには「たくさんのプロセスを使う」とか書いてあるし・・・

プロセスを誤解してないか?

559 :デフォルトの名無しさん:2008/10/26(日) 20:21:12
誤解とは?OSレベルのプロセスじゃないよってことかい?

560 :デフォルトの名無しさん:2008/10/26(日) 21:02:42
>>559
うん。
それわかってて期待はずれならプロセス計算(代数)にも期待はずれなのかと。

561 :デフォルトの名無しさん:2008/10/27(月) 04:38:07
>>560
ErlangでGHC(KL1)の処理系を書けばいいんじゃないの。

562 :デフォルトの名無しさん:2008/10/27(月) 05:46:13
>>561
GHC(KL1)は各ゴールがプロセスでErlangよりたくさんプロセスを使うから
>555にはやっぱり期待はずれだろうね

563 :デフォルトの名無しさん:2008/10/27(月) 06:14:43
>>562
GHCが問題なのではなくて、Erlangのプロセス管理を
生かす事例という意味だが。

564 :デフォルトの名無しさん:2008/10/27(月) 08:16:18
programming erlangは並列経産の本じゃなくてerlangのチュートリアルだから
仕方ない。erlangを使って、openmpとかMPIとかMapReduceとかやればいいじゃない

565 :デフォルトの名無しさん:2008/10/27(月) 16:13:54
>555は並列に何を期待しているのか?

566 :デフォルトの名無しさん:2008/10/27(月) 16:52:15
>>565
次元の壁を越えた美少女達とのお付き合い

567 :デフォルトの名無しさん:2008/11/05(水) 02:45:28
これの実用的なライブラリってある?rubyでいうrailsくらいの

568 :デフォルトの名無しさん:2008/11/05(水) 21:31:34
誰か!誰かエスパー呼んできて!

569 :デフォルトの名無しさん:2008/11/06(木) 20:05:56
ないだろ。別にエスパーよばんでも

570 :デフォルトの名無しさん:2008/11/07(金) 08:17:56
あればもっと流行ると思うんだけどね
てか言語の流行る流行らないは実用的ライブラリが揃ってるかどうかが大きい

571 :デフォルトの名無しさん:2008/11/07(金) 20:46:24
関数型で流行ってるのなんてないだろう。

572 :デフォルトの名無しさん:2008/11/08(土) 00:05:48
こういう時やたらHaskellを推してくる人がいるけど、そいつが実際どれだけHaskellでコード書いてるのか知りたい。

573 :デフォルトの名無しさん:2008/11/08(土) 00:15:30
>>572
>こういう時やたらHaskellを推してくる人がいる

どの人の事?

574 :デフォルトの名無しさん:2008/11/08(土) 00:18:25
ただの妄想だろう

575 :デフォルトの名無しさん:2008/11/08(土) 01:02:36
「やたら〜する人がいる」 「みんな言ってる」 は大抵1人とか二人とかだよな

576 :デフォルトの名無しさん:2008/11/08(土) 01:19:55
だから数字にすることに意味があるんだね。

577 :デフォルトの名無しさん:2008/11/08(土) 01:21:21
以前初心者オススメスレにHaskellを推しまくってるヤツがいたよなwww
あまりに変だったからさらに不自然なHaskell狂信者風なのが出てきてネタにしてたwww

578 :a36 ◆K0BqlCB3.k :2008/11/08(土) 01:29:47
>>572
まぁ、人にはいえないあんなことやこんなことに使ってます。
Haskellでスタンドアロンアプリを書くことは滅多にないのですが、
とあるHaskell用のライブラリを作って公開しています。(本家にリンクがある)
論文を書くときにHaskellを題材に使ったりすることもあります。

579 :デフォルトの名無しさん:2008/11/08(土) 08:28:49
企業でHaskell,Erlang,Lisp,Prologなどを使う場合は
使ってることも何に使っているかも秘密にしておくよ。

580 :デフォルトの名無しさん:2008/11/08(土) 08:40:59
>>575
どういう風に統計とったの? 妄想?

581 :デフォルトの名無しさん:2008/11/08(土) 09:03:24
>>572
>こういう時

どういう時?

582 :デフォルトの名無しさん:2008/11/08(土) 22:02:30
>>580
そうみんな言ってた

583 :デフォルトの名無しさん:2008/11/08(土) 22:10:23
ワロタww


584 :デフォルトの名無しさん:2008/11/09(日) 04:28:11
この言語はよっぽどネタがないんだな
ということが分かるやり取り

585 :デフォルトの名無しさん:2008/11/09(日) 05:38:37
>>559
どういうこと

586 :デフォルトの名無しさん:2008/11/09(日) 14:23:44
仕様が成熟している、利用者がいない、のどちらかまたは両方

587 :デフォルトの名無しさん:2008/11/09(日) 14:29:34
>>586
erlangが普及しない理由
1. 遅い
2. 関数型言語
3. ネイティブが吐けない
4. 実行方法が異質
5. (ほぼ)サーバー特化

588 :デフォルトの名無しさん:2008/11/09(日) 17:43:37
遅い、ネイティブが吐けないとかはpythonとかでも同じじゃんか
なのにpythonは普及している。
関数型言語ってのが普及しない一番の理由じゃないかな、実用的に見て

589 :デフォルトの名無しさん:2008/11/09(日) 18:50:38
>>588
pythonはライトウェイト言語であって、erlangとは領域がまったく違う。
プロセスは軽いが処理自体は低速。
サーバを停止しなくても修正ができるというのはメリットだが、
そういう機能が必要なければバイナリが吐けたほうが都合が良い。
それにC++でも軽いソフトウェアスレッドのライブラリは存在するから
もはやプロセスが軽いというのはさほどメリットでもない。
関数型言語としてはHaskellやOCamlのほうがすぐれている。

590 :デフォルトの名無しさん:2008/11/09(日) 18:52:44
あくまでこれは俺がこの言語を選択しない理由として挙げているだけ。
erlangはどんな言語か知っているけど、あえてこの言語を選ぼうとは思わないんだよ。
サーバーを書くときは簡潔に書けるから便利ではあるけど。

591 :デフォルトの名無しさん:2008/11/09(日) 18:55:00
スタンドアロンなツール類を書くならやっぱりC++だろうな。
WEBアプリを書くならRubyかPHPかPerlだし、俺自身はPythonという選択肢はない。
サーバーならerlangかhaskellが書きやすい。
それぞれ使いわけでいいじゃん。
サーバー書く人が少ないっていうのが一番大きい理由じゃないの?

592 :デフォルトの名無しさん:2008/11/10(月) 20:30:25
すごいな。ErlangもC++と対等に語られるようになったか。

593 :デフォルトの名無しさん:2008/11/10(月) 21:13:43
オブジェクティックでフォンクティックな言語があればいいのに

594 :デフォルトの名無しさん:2008/11/10(月) 21:53:38
>>593
"object oriented" functional language でぐぐったら、なんかいっぱい出てくるぞ。
でも実用にできるのはOCaml, Scalaくらい?

595 :デフォルトの名無しさん:2008/11/10(月) 22:18:51
CLOS(Lisp)、あとOzとか
オブジェクト指向ベースに関数型の機能を取り込むアプローチだと、
まあ高階関数ぐらいなら比較的新しい言語はどれも持ってる

596 :デフォルトの名無しさん:2008/11/10(月) 23:16:53
高階関数それ自体がマルチコアを生かすようなバイナリに繋がると良いが、原理的にそんなことないわな。
しかし今だ考え方はプロセス・スレッド止まりだし。
もっとまったく新しい考え方って何かないのかね

597 :デフォルトの名無しさん:2008/11/11(火) 00:48:27
Objective Erlang的なの作ればいいんでね?

598 :デフォルトの名無しさん:2008/11/11(火) 00:54:49
Erlang使ってない俺が言うのも何だが、流れはEW氏に来たということか。

599 :デフォルトの名無しさん:2008/11/14(金) 02:39:00
開発を手続き型言語以外でやってる会社とかないよな
関数型はオナニー

600 :デフォルトの名無しさん:2008/11/14(金) 03:21:58
Diceあたりで検索かければ出てくるよ。少ないけど。

601 :デフォルトの名無しさん:2008/11/14(金) 13:59:37
>>599
Schemeで書かれたピンボールとか出てこようかという
ご時世に、ずいぶん乗り遅れてますねあなた

602 :デフォルトの名無しさん:2008/11/14(金) 23:24:30
>>599
今の教育課程でパンピーの知能じゃ無理でしょ。まだだいぶ先の話じゃないか、
関数型つか並列資源を存分に使いこなすプログラミングなんて。

603 :デフォルトの名無しさん:2008/11/15(土) 08:46:24
>>601
やっとピンボールですか。
手続き型なら30年前にできてたので、ずいぶん乗り遅れてますね。

604 :EW:2008/11/15(土) 10:41:08
>>597
Erlangが目指すところはオブジェクト指向と相反するような気がしますね。
カプセル化などは便利だと思いますが、インスタンスを使いまわすというのは
かなりイケてないことだと思います。
それがおkなら、変数への再代入なども許可しているでしょうし。
おそらく、可能な限り「状態依存を無くす」というのが、
Erlangの基本コンセプトなのではないかと思います。

>>598
僕が使っているのはあんまり上等な代物じゃないですよ。
個人レベルで手抜きをしているだけであって、本来なら綿密なデバッグが必要となる
危険なプログラムだと思います。

余談ですが、来年から planet lab のメンバーに加わることになりました。

605 :デフォルトの名無しさん:2008/11/15(土) 11:29:08
>>603
その理屈では機械語以外は全て遅れている言語ですよ。
脳味噌大丈夫ですか?

606 :a36 ◆K0BqlCB3.k :2008/11/15(土) 11:44:09
>>602
今の大学生は提出課題ですら他人のコピーだから、
FizzBuzz問題すら解けない子が多いよ。

607 :デフォルトの名無しさん:2008/11/15(土) 12:36:47
>>605
きみこそ脳みそ大丈夫?
高級言語が機械語より遅れてるの当たり前じゃないか。

608 :デフォルトの名無しさん:2008/11/15(土) 12:43:43
>>606
昔の大学生も、FizzBuzz問題すら解けない子おおかったと思うが。

609 :デフォルトの名無しさん:2008/11/15(土) 14:32:15
>>607
しょうがないよ、君の理屈だとそうなるんだから(605の理屈ではない)。

610 :EW:2008/11/16(日) 23:20:23
2つ以上のイベントドリブン形式のプロセスが相互に通信しあうというモデルでは
複雑なトランザクションを記述するよりも、
プロセスがメッセージを受け取ったら、
「新しいプロセスを作り処理させて、その結果を返す」
という手法のほうがプログラムを組みやすいみたいですね。

AがBに処理を依頼
BがAに対してある処理をさせる。
Bはその結果を受け取る。
そして処理を続行し、完了するとAに値を返す

という処理を書いたのですが、逐次プロセスのみだと処理が複雑になって
アウトでした。自分の意図しないところでデッドロックやバグがおきまくりました。
AとBの処理を新しいプロセスを立ててやらせると、かなり簡単に動きました。
なかなか便利な手法です。

157 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)