1 名前:デフォルトの名無しさん [04/05/04 14:53] Lisp Scheme ML Haskell FP Mirranda など 関数型言語について話し合いましょう 関連スレ 関数型プログラミング言語ML pc3.2ch.net/test/read.cgi/tech/1012445015/ 関数型プログラミング言語Haskell pc3.2ch.net/test/read.cgi/tech/1013846140/ LISP Scheme Part6 pc3.2ch.net/test/read.cgi/tech/1031560687/ Emacs Lisp pc3.2ch.net/test/read.cgi/tech/1004551074/
355 名前:デフォルトの名無しさん mailto:sage [2005/09/24(土) 01:22:55 ] >>352 why functional programming matters ttp://www.sampou.org/haskell/article/whyfp.html
356 名前:デフォルトの名無しさん mailto:sage [2005/09/24(土) 01:57:58 ] >>354 C++に例えるならテンプレートのコンパイルタイムプログラミング 今流行じゃないのか?
357 名前:デフォルトの名無しさん mailto:sage [2005/09/24(土) 03:35:43 ] >そういう機能をC++とかにいれたりしないんだろうか? まだ研究段階だから。そんなこと言うなら○○入れろとかいくらでも言える。
358 名前:デフォルトの名無しさん mailto:sage [2005/09/24(土) 11:54:50 ] >>352 不必要に副作用に頼らなくていいのがひとつの利点だと思う。 たとえばループをまわすときに毎回カウンタ変数を更新するのは直感的でない。 そこで高階関数を使って典型的なループを抽象化する。 この点では副作用が禁止されていることはそれほど重要ではない (たとえば、副作用を避けて再帰でやっても似た問題がある)ので、 この手法はC++の標準アルゴリズムなんかに取り入れられている。 一方、C++の標準アルゴリズムがそれほど使いやすくない(私見)理由のひとつは、 直感的な「データ構造の値渡し/値返し」が効率上の理由から避けられている事だ。 副作用がなければ、値渡しと参照渡しを区別できないので、 値渡しの直感性を保ったまま参照渡しで実装できる。 さらに、データが変更されないことが保障されていれば、 データ構造の共有もやりやすい。
359 名前:デフォルトの名無しさん [2005/09/24(土) 12:23:24 ] 値渡しと参照渡しの差が無くなるのって重要ですね。 関数型は関数に副作用がないことを仮定できる時、 どこまでコードが抽象化できるかを考えてるわけですね。 JavaやC#、C++を使っていますが、 やはり何か足りないと感じてます。 そのヒントが副作用にあるといいのですが。 まだまだプログラミング言語って改良の余地ありますよね。
360 名前:デフォルトの名無しさん [2005/09/25(日) 23:32:37 ] 関数型言語で HTTPdとかWEBクライアントとか作ってる人っているのかな?
361 名前:デフォルトの名無しさん mailto:sage [2005/09/25(日) 23:41:16 ] >>360 web browser ttp://pauillac.inria.fr/~furuse/jmmm/index.html
362 名前:デフォルトの名無しさん mailto:sage [2005/09/26(月) 00:39:04 ] System programming using FP ttp://lambda-the-ultimate.org/node/view/943 そのキャッシュ ttp://www.google.com/search?q=cache:lambda-the-ultimate.org/node/view/943+haskell+web-server&strip=1
363 名前:デフォルトの名無しさん mailto:sage [2005/09/26(月) 06:59:36 ] >>361 Tkベースで不細工だけど 関数型で書いてる意味あんの?
364 名前:デフォルトの名無しさん [2005/09/26(月) 07:07:40 ] もしかして関数型って実用的じゃないの?
365 名前:デフォルトの名無しさん mailto:sage [2005/09/26(月) 07:12:22 ] >>363 意味をどのレベルで求めるかに依るんじゃないかな。 ttp://pauillac.inria.fr/~furuse/jmmm/0418/faq-ja.html#caml 以前 ML スレで ML で書いた OS の話が出て来た時も、意味が 有るか無いかって話題になったけど、その議論自体あまり意味が 無いんだよね。要は人それぞれ。 俺は作者の中の人じゃないから、存在するって事以外知らんよ。
366 名前:デフォルトの名無しさん mailto:sage [2005/09/26(月) 07:14:15 ] >>364 何でそう思ったのかな。
367 名前:デフォルトの名無しさん mailto:sage [2005/09/26(月) 08:04:12 ] cleangl.sourceforge.net/ ゲームぐらいは作れるよ。
368 名前:デフォルトの名無しさん mailto:sage [2005/09/26(月) 12:00:49 ] ゲームなんかどの言語でも作れるけど?
369 名前:デフォルトの名無しさん mailto:sage [2005/09/26(月) 12:10:40 ] 言語処理系作るなら関数型がいいよ なんせhaskell覚えたて厨がPugs1ヶ月で作ってるし
370 名前:デフォルトの名無しさん mailto:sage [2005/09/26(月) 18:01:28 ] >>368 whiteで3D格闘ゲームよろ
371 名前:デフォルトの名無しさん [2005/09/26(月) 20:46:40 ] >>360 MLでWebサーバ作成 pllab.jaist.ac.jp:8080/education/i217-2002/httpd.html
372 名前:デフォルトの名無しさん [2005/09/26(月) 21:55:34 ] C,C++の代わりになる関数型言語の処理系はないってことですね
373 名前:デフォルトの名無しさん mailto:sage [2005/09/26(月) 22:12:03 ] はいはい何も出来ませんよ
374 名前:デフォルトの名無しさん mailto:sage [2005/09/26(月) 22:21:24 ] はいはい(馬鹿には)何も出来ませんよ
375 名前:デフォルトの名無しさん mailto:sage [2005/09/26(月) 22:36:58 ] わざわざ馬鹿と断る意味ありませんよ
376 名前:デフォルトの名無しさん mailto:sage [2005/09/27(火) 00:39:43 ] 関数型言語の代わりになるC,C++もねーだろ
377 名前:デフォルトの名無しさん mailto:sage [2005/09/27(火) 09:04:21 ] おらいら、「関数型言語で書いた」と言いたいだけだろ? TPOをわきまえろ。
378 名前:デフォルトの名無しさん [2005/09/27(火) 15:32:10 ] なぜ関数言語は実用的じゃないのか?
379 名前:デフォルトの名無しさん mailto:sage [2005/09/27(火) 16:04:58 ] え、実用的じゃないなんて意見は初めて聞いたが・・・ >>378 はなんでそう思ったんだ?
380 名前:デフォルトの名無しさん [2005/09/27(火) 17:39:28 ] 世のアプリは関数型で作られてない。
381 名前:デフォルトの名無しさん [2005/09/27(火) 18:49:27 ] Aransk?
382 名前:デフォルトの名無しさん [2005/09/27(火) 18:59:16 ] まあ、実際使われてないのは 実用的じゃないからなんだが
383 名前:デフォルトの名無しさん mailto:sage [2005/09/27(火) 19:21:17 ] ある程度以上の頭を持っていれば非常に実用的。 そうでないと非実用的。
384 名前:デフォルトの名無しさん [2005/09/27(火) 21:14:25 0] なこたぁない。 C言語をリプレイスするだけのメリットがないだけだろ。
385 名前:デフォルトの名無しさん [2005/09/27(火) 22:35:49 ID:0] 「CかC++の置き換え = 主流・メジャー・優秀」か。 >>384 お前Win板とかで「Jane最強!!」とか「Opera糞!!」とかいってるタイプ?
386 名前:デフォルトの名無しさん [2005/09/27(火) 23:24:29 ] 現実から目をそらすな 関数型は使われない、これ事実。 でも俺らは研究する、飯のために。
387 名前:デフォルトの名無しさん [2005/09/27(火) 23:35:50 ] だからさ、別に「他の人々があまり使わない」のはどうでもいいのよ。 僅かな人間だけが使いこなせるこの現状のほうが、俺には都合がいいし。
388 名前:デフォルトの名無しさん mailto:sage [2005/09/27(火) 23:46:34 ] 最近C#やC++とかメジャー言語でも関数型機能が取り込まれてるよな 関数型の知名度が上がるのはこれから
389 名前:デフォルトの名無しさん mailto:sage [2005/09/28(水) 00:03:19 ] と 10 年前も言われてたが Java が出た。
390 名前:デフォルトの名無しさん [2005/09/28(水) 00:06:34 ] >最近C#やC++とかメジャー言語でも関数型機能が取り込まれてるよな もう関数型にこだわってる実用性の低い言語に価値はないね。
391 名前:デフォルトの名無しさん [2005/09/28(水) 00:09:33 ] >>387 ヒント:統計
392 名前:デフォルトの名無しさん [2005/09/28(水) 01:28:20 ] 【研究】「実社会にも応用可」 "ジョルダンの曲線定理"、世界初の完全証明…信州大教授ら news19.2ch.net/test/read.cgi/newsplus/1127835258/l50 この証明の検証に使用された定理証明システムはMLで書かれたプログラムです。
393 名前:デフォルトの名無しさん mailto:sage [2005/09/28(水) 07:57:21 ] MLはCで書かれたプログラムです。
394 名前:デフォルトの名無しさん mailto:sage [2005/09/28(水) 08:51:57 ] 何の事だ?
395 名前:デフォルトの名無しさん mailto:sage [2005/09/28(水) 10:06:03 ] マシン語最強ってことだろ
396 名前:デフォルトの名無しさん mailto:sage [2005/09/28(水) 11:27:17 ] 最強論議は小学生まで。
397 名前:デフォルトの名無しさん mailto:sage [2005/09/28(水) 18:01:43 ] 関数型言語って使われてるの? 使われてないよ派 ├OSが関数型じゃないから派 │├そもそもCPUが手続き的派 │└だからMLでOS作ろうぜ派(古典的行動派(絶滅の危機)) │ └やっぱLISPマシンだよ派(懐古派、第6世代派) ├関数型は遅い派 ├関数型は人間の思考と合わないよ派(右派過激派) │└それは最初に手続き型でプログラミングを習うからだ派 │ └最初にSchemeで教育しよう派(MIT信奉過激派) │ └最初の教育はLOGOだろ派、Smalltalkだろ派(スレ違い派) │ └LOGOは関数型言語だよ派(スレ違い修正派) ├機械語最強派(小学生派) ├おまいらは使わなくていいよ派(過激アカデミック派) └火星人の陰謀だよ派(電波派) 使われているよ派 ├定理証明とか言語処理とかはやっぱ関数型だよね派(穏健アカデミック派) │└HaskellでRubyインタプリタ書きました派(行動派) ├Webサーバーとか実用アプリも書けるよ派 │└Haskellでグラディウス書きました派(行動派) ├C++とかPnutsとかC#とかで関数型は生き続けるよ派(中道派) │└C++もJavaScriptもRubyも関数型言語だよ派(左派過激派、関数オブジェクトがあればみんな関数型だよ派) └うちのシェルはeshだよ派
398 名前:デフォルトの名無しさん [2005/09/28(水) 21:15:26 ] >>397 君すごい。 関数型って開発環境が無いから使われないのかねぇ。 使われない理由を積極的に考えて、そこを改善していけばいいと思う。 行き着く先はC#みたいなものになるかもしれないけど、 たぶんC#よりちょっといいものができる気もする。 APIが移植されてないとかそういう理由かな。 関数型でTomcatみたいなのを作ろうかと思ってるんだけど、 お勧めの言語とOSってあります?
399 名前:デフォルトの名無しさん mailto:sage [2005/09/28(水) 21:57:24 ] OCaml + Linuxでいいんじゃね?
400 名前:デフォルトの名無しさん mailto:sage [2005/09/28(水) 22:12:08 ] 俺は小学生派
401 名前:デフォルトの名無しさん mailto:sage [2005/09/28(水) 23:08:08 ] 俺はツンデレ派(日頃関数型言語の悪口ばっかり言ってるけど、 家に帰るとPythonでバリバリラムダりまくっちゃうの)
402 名前:デフォルトの名無しさん mailto:sage [2005/09/28(水) 23:16:24 ] 純粋関数型以外は関数型言語ではないと思うので, Haskell & Linux
403 名前:デフォルトの名無しさん [2005/09/29(木) 00:19:48 ] 迷うなー そんな時間もないから、OCamlかHaskellのどっちかにしたい。 どっちも気に入ってる言語だから、 誰かもっと決定的な理由が欲しい。 Tomcatのようなミドルウェアを置くか、 ミドルウェアを見せないで、 ASPやJSPみたいなテンプレートエンジンを作ってしまうかでも迷ってる。
404 名前:デフォルトの名無しさん [2005/09/29(木) 00:43:42 ] >>398 >関数型って開発環境が無いから使われないのかねぇ。 開発環境いうよりは、まともなフレームワークが少ないからだと思う 関数型便利だ便利だっていってる人の大半はなんだかんだ理屈ならべて ちっこいプログラムしか書かんから、 そもそもそういうでかいライブラリの需要もすくないんだろーな
405 名前:デフォルトの名無しさん mailto:sage [2005/09/29(木) 00:49:43 ] 手続き型言語ならCやC++の既存のライブラリを利用する口金合わせも簡単だけど、 関数型はそうもいかんもんねえ。
406 名前:デフォルトの名無しさん mailto:sage [2005/09/29(木) 02:11:48 ] >MLはCで書かれたプログラムです。 なんてあるけど、一部のlibraryやoptimizerとしてC言語があるだけで、 別に何の言語でもいいんじゃねー?
407 名前:デフォルトの名無しさん [2005/09/29(木) 15:08:18 ] >>406 それはネタだから。 ネタにマジレスかっこ悪いって。
408 名前:デフォルトの名無しさん [2005/09/30(金) 04:30:28 ] 関数型って日本語処理できないから嫌い
409 名前:デフォルトの名無しさん [2005/09/30(金) 21:01:16 ] >>408 がやりたいのは、どの程度の日本語処理だろう。 簡単なテキストフィルターなんかじゃなくて、 もっと高度なことをしたいのかな?
410 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 21:21:46 ] Shift_JISの文字を読んで文字単位の操作をすることがあんまり気を付けなくてもできるとか、そんな風味
411 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 22:35:30 ] 文字なんて整数で扱えばいいじゃん。 なんだかんだでPerlだってそうしてるでしょ?
412 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 23:48:32 ] 408=410じゃないけど、ポイントになるのは、バイト単位じゃなくて文字単位で扱えることだと思う。 この辺の対応状況については、漏れの知っている限りでは、 OCaml: camomile を入れれば、いろんな文字コードのものをひとまず Unicode に変換して、統一的に扱うことができる。正規表現だととりあえず PCRE がUTF対応。 Haskell: Hugs は CVS 版が Unicode をサポートをしているらしい。GHCはまだ怪しい感じ。 GHCで鬼車を使うパッチはある。 Scheme: Gauche はきちんと日本語をサポートをしているという印象がある。 というところで、まとめると「できんこともない」というところか。簡単なテ キストフィルタなら問題ないだろうけど。
413 名前:デフォルトの名無しさん [2005/10/01(土) 00:00:43 ] smlnjをダウンロードしたのですが、どのようにしたらコマンドプロンプトで使えるのですか??初心者のこんな僕にどうか教えてください!!
414 名前:デフォルトの名無しさん [2005/10/01(土) 00:28:19 ] 日本語対応は関数型言語の1つの課題だね。
415 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 00:35:46 ] なんかいきなり賑わいだしたが、なんかあったの?
416 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 01:05:56 ] > Haskell: Hugs は CVS 版が Unicode をサポートをしているらしい。GHCはまだ怪しい感じ。 GHCで鬼車を使うパッチはある。 GHCはコンパイラ自体の字句解析がEUC以外の多バイトコードに対応してない。
417 名前:デフォルトの名無しさん [2005/10/01(土) 16:15:33 ] mod-perlみたいなのがないと 仕事じゃ使えない。
418 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 22:33:20 ] 仕事 == CGI 書き?
419 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 23:13:08 ] 自然言語処理です。
420 名前:デフォルトの名無しさん [2005/10/01(土) 23:44:18 ] 確かにWEBアプリには使えないね。
421 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 00:12:31 ] 人権擁護法案がとおっちゃいますよ。 この法案聞こえはいいが、日本滅亡の序曲ですよ。 ↓ 小泉が人権擁護法案早期に提出 (05/9/29・国会答弁) live14.2ch.net/test/read.cgi/liveplus/1127977257/ 人権擁護法案ってどんなものなんだ? blog.livedoor.jp/monster_00/archives/cat_847822.html 分かる!人権擁護法案(Flash) www.geocities.jp/kaniku4/ 言 論 弾 圧 に よ り 2 c h も 閉 鎖 か ! ?
422 名前:デフォルトの名無しさん mailto:sage [2005/10/03(月) 06:18:24 ] CPUが関数型ってどういうの?どんなインターフェイスなの?
423 名前:デフォルトの名無しさん mailto:sage [2005/10/03(月) 14:07:02 ] 全部遅延されているから、キーボードを叩かないと動き始めない。
424 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 14:29:22 ] >>422 フォン・ノイマン型アーキテクチャだと関数型といえないだろ CPU,メモリ,入出力という発想から脱却しないと
425 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 22:03:31 ] リスプマシーンあったじゃん。
426 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 22:31:34 ] しばらくみてたけど質問の意味がわからないな。>>422 Lispマシーンのinstruction setは関数型じゃありませんって。>>425 それが、hardware Lisp CPUであろうと、Virtual Machineだろうと。 言語としてのLisp自体、制御構造とか副作用とかが 沢山ありますよね。それをサポートするためのinstructionで いっぱいで、その全体は関数型とは程遠いですよ。 むしろ、ちょっと風変わりな(保守的・古典的な)プロセッサって感じ。 一方、LispマシンorVMの存在は認めた上で、それが関数形言語の 実装という応用に対して便利か?という議論はありえますが、 これにも僕は否定的です。
427 名前:デフォルトの名無しさん [2005/10/05(水) 23:16:20 ] マウスの入力ってどうすんの?
428 名前:デフォルトの名無しさん mailto:sage [2005/10/05(水) 23:30:43 ] 関数型CPUはメモリーもレジスタもないんだよ 値は命令間を直接流れる
429 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 00:42:28 ] CPUっていうか FPGAの設計に落とし込んだりできないだろうか。
430 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 02:09:02 ] 環境は?
431 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 02:10:38 ] 関数型っていうのはプログラミングの際に有用な概念であるけれど、計算機の構造上の有用性はあるの?
432 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 02:29:19 ] ttp://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Shiro 2005/09/30 の所 ttp://homepage3.nifty.com/mogami/diary/d0509.html#28t1 Lisp/Common Lisp は純粋関数型じゃないから置いておいても、 これからのメニーコア CPU には関数型言語がベストマッチだと いう考えが出て来てもおかしくはないかな。
433 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 02:50:14 ] そうかなあ。レイトレみたく完全に独立な計算をパラに展開するのは 容易だが、相互に通信したり状態を共有したりするようなのは 純粋関数型で書くのはなかなか難しいと思う。 例えば探索なんか一見パラにできそうでもキャッシュやルックアップテーブルが きちんと機能して枝刈りできないとつらいっしょ。 >>432 のリンク先に書いてあるようなミクロな並列性はスレッドをプールから ひっぱってきてアサインして完了を待つなんてことやるコストに引き合うか 疑問でしょ。たぶんプロファイルとった上で限られた部分にだけ適用しても 引き合うんじゃないの。行列計算とかならともかく、インタラクティブなもの はたいがい状態引き回しが必要だろうし。 >>432 みたいのはちょっと、裏付けなさすぎの与太話の域を出ないんじゃないかな。
434 名前:デフォルトの名無しさん [2005/10/06(木) 13:28:45 ] 関数型がくそに思えてきた今日この頃。
435 名前:デフォルトの名無しさん mailto:sage [2005/10/06(木) 19:15:02 ] >>428 Tomasulo algorithmは見方によっては命令間で直接データを渡してるな。 見方によってはただのレジスタリネーミングだけど。
436 名前:428 [2005/10/06(木) 21:22:11 ] ほほぅ。思いつきで言ってみたが、いいセンスしてるな。俺。
437 名前:デフォルトの名無しさん mailto:sage [2005/10/16(日) 18:58:16 ] 関数型マンセーな人の何割かが実践してプログラム組めば、 関数型が使えないなんてことにはならないかもしれんな と最近思った。
438 名前:デフォルトの名無しさん mailto:sage [2005/10/16(日) 19:31:10 ] そういう面倒なだけで論文の書けないことは、下々の皆様にお任せします。
439 名前:デフォルトの名無しさん mailto:sage [2005/10/17(月) 23:27:54 ] 研究者でも何割かはまともな論文書いてないだろうし、 って言ったら怒る?
440 名前:デフォルトの名無しさん mailto:sage [2005/10/18(火) 00:04:29 ] Common Lispで実践的なプログラムを書いてみる入門書が無料で読めるね。 まだちょっとしか読んでないけどなかなかおもしろいよ。 www.gigamonkeys.com/book/
441 名前:デフォルトの名無しさん mailto:sage [2005/10/18(火) 00:20:32 ] 目次だけ見ましたが、>>440 Common Lispで(Common Lispっぽい)実践的な コードを書く話かと思います。関数型言語と関係があるように思えませんでした。 Common Lispを関数型言語とは普通呼ばないし、Lispの中でもCommn Lispは 関数型プログラミングはやりにくい部類ですよね。
442 名前:441 mailto:sage [2005/10/18(火) 00:33:53 ] うげ! 今改めて>>1 をみたら、Lispスレや、あろうことかEmacs Lispスレまで 関係あることになってるのな。そういうpositionのスレだとは知らんかった。 てなわけで、関数型に対してカタクナ過ぎる俺は無視して続けてくれい >>440
443 名前:デフォルトの名無しさん mailto:sage [2005/11/01(火) 22:07:10 ] そこまで気にする必要ないよ。 多少の派閥があるだけだから。
444 名前:ハーピィ mailto:sage [2005/11/01(火) 22:23:52 ] E・∇・ヨノシ <444ゲット♫
445 名前:デフォルトの名無しさん mailto:sage [2005/11/06(日) 00:08:28 ] >>442 つうか Lisp の中で特別 Common Lisp が関数型やりにくいってのは誤解だと思 われ。ただ単にマルチパラダイムなだけでやるやつはやる。そんとき特別 Scheme よりやり難いってわけでもない。型推論とかパターンマッチング構文も いくつか実装があったような
446 名前:デフォルトの名無しさん [2005/11/06(日) 02:43:18 ] Ocamlの質問ってここでしていいですか? ttp://www.kb.ecei.tohoku.ac.jp/~sumii/ocamlbook/book-ora.pdf の88pの練習問題 字句木をやっているんですが、stringの先頭から 順番に文字を受け取りたいときってどうすればいいんですか。 もちろんstr.[n]ってすればできるんですけど、 リストみたいにもっとスマートにできないんですかね。
447 名前:デフォルトの名無しさん mailto:sage [2005/11/06(日) 03:08:39 ] >446 一応より特化したスレがあるが 関数型言語ML(SML, OCaml, etc.), Part 3 pc8.2ch.net/test/read.cgi/tech/1103606223/
448 名前:デフォルトの名無しさん mailto:sage [2005/11/06(日) 03:48:10 ] >>446 残念ながら、そういう方法はない。ので、 1. str.[n]を駆使する 2. 自分で list_of_string を書いてリスト化してから処理する 3. Stream.of_string を使って Stream で処理する 4. そのほか のどれかをやるしかない。 この練習問題くらいなら 2 だろうなという気がする。
449 名前:デフォルトの名無しさん mailto:sage [2005/11/15(火) 15:28:30 ] String.iter
450 名前:デフォルトの名無しさん mailto:sage [2005/11/19(土) 16:19:08 ] 何この差wwwww sourceforge.net/softwaremap/trove_list.php?form_cat=160 C++ 16669 Java 16645 C 15876 PHP 12092 Perl 6187 . . . LISP 323
451 名前:デフォルトの名無しさん [2005/11/19(土) 18:22:43 ] Ruby 398( ´,_ゝ`)プッ Visual Basic .NET 289(*≧∇≦)ノ☆ ギャハハ プギャー
452 名前:デフォルトの名無しさん [2005/12/15(木) 08:10:46 ] 誰か STM(software transaction memory) とはどーいうものか 教えてくれぬか
453 名前:デフォルトの名無しさん mailto:sage [2005/12/15(木) 09:53:20 ] >>452 マルチスレッドプログラミングで、スレッド間の(mutableな)共有変数を扱うとき、 コードの特定の部分が他のスレッドに割り込まれることなく(つまり、atomicに)実行されてほしいことがある。 STMの考え方は、その部分で起こった共有変数への読み書きを局所的なログに保存しておいて、 その部分が終了したときまとめてメモリに反映するというもの。 最後に不整合が見付かった場合、ログを捨てて最初からやり直す。 こういうとき普通はロックを使うんだけど、ロックにはいくつか問題がある。 例えば、共有変数を扱う二つの(副作用のある)関数A,Bがあったとして、 A,Bともに正しくロックを使っていたとしても、「Aを呼び、次にBを呼ぶ」ことをatomicに行う 関数を書くには、AとBの抽象化を破壊してどの変数をロックすべきかを調べないといけない。 STMはこの問題を解決する。 www.research.microsoft.com/%7Esimonpj/papers/stm/index.htm 俺はこれの前半を読んだだけだから、変なことを言ってたら突っ込んでくれ。
454 名前:デフォルトの名無しさん mailto:sage [2005/12/15(木) 22:23:18 ] optimistic lockingでやるってことか。 最後にコミットするときはロックによるatomicityの保証がいる筈だが、 Cで書いたcommit APIの中に閉じ込めるのでHaskellからは見えないということ みたいだな。 >>453 の論文の範囲では、Haskellはuni-processorのみ、かつuser-level threadが safe pointでしか切り替わらないからCで書いた部分はアトミック と考えていいらしい。Rubyと同じってことだね。
455 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 10:24:50 ] 誰か関数型プログラミングどんなものか教えてくれ。 普通のウィンドゥプログラムとかかけるの?