【激突】関数型言語 VS オブジェクト指向言語2
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 21:26:47.61一部には関数型言語を崇拝している人もいます
どちらが上なのか、この際はっきりさせましょう
前スレ http://toro.2ch.net/test/read.cgi/tech/1331328955/
0801デフォルトの名無しさん
2012/05/15(火) 23:05:25.41JavaScriptで多分ベタなOOP
Core2Duo(3.16GHz) Node.js(Windows)で
試行回数=1000000 所要時間=1398msec 最小=10 最大=144 平均=29 最頻=23(44951回)
ソース(※こっちは10000回)
http://ideone.com/DkeKE
0802デフォルトの名無しさん
2012/05/15(火) 23:14:59.88コードそのものよりもNode.jsがspidermonkeyより
44倍も速いのが興味深い
0803デフォルトの名無しさん
2012/05/15(火) 23:30:56.130804デフォルトの名無しさん
2012/05/15(火) 23:32:18.16各処理系の乱数の質の差が反映されているのか。
0805デフォルトの名無しさん
2012/05/15(火) 23:52:23.55さすがに速い
http://ideone.com/WPpbW
同じプログラムでも試行ごとに最大値はばらつくみたいね
0806デフォルトの名無しさん
2012/05/16(水) 00:08:03.51せめて void gacha(int n, int m, RESULT *r); くらいにロジック分離しようぜ。
0807デフォルトの名無しさん
2012/05/16(水) 12:23:32.14しかもx86,x64,ARMに特化されたかなり先進的なJITだしね。
0808デフォルトの名無しさん
2012/05/16(水) 13:57:24.59結局Scalaで望みのことが出来たの?
それとも、実はSmalltalk辺りのOOPLで
やりたいことは既に出来てて、あとは
「関数型言語で出来ないことがOOPLで出来る!OOPサイコー!!」
って言い出すタイミングをはかってるの?
0809デフォルトの名無しさん
2012/05/17(木) 16:49:24.16せめてこういうスレのトイプログラムの御題でくらいは
存在感を出さないとね。
0810デフォルトの名無しさん
2012/05/17(木) 16:53:53.950811デフォルトの名無しさん
2012/05/17(木) 19:18:25.65Intに限らず任意の型で同じことが言えるのでチャーチ数は関係ない
0812デフォルトの名無しさん
2012/05/17(木) 19:53:36.50加算や減算ができるなら
チャーチ数で無くても文句無いんだろう、多分
ただし>>797のプログラムはチャーチ数でないと
加算減算が出来ないから成立しない
0813デフォルトの名無しさん
2012/05/17(木) 20:37:57.990814デフォルトの名無しさん
2012/05/18(金) 00:44:10.29静的言語は一貫していない
0815デフォルトの名無しさん
2012/05/18(金) 01:54:17.00それぞれで代表一つ以外は全て潰し
最後に決定戦とすべき
0816デフォルトの名無しさん
2012/05/18(金) 07:15:42.96スレが幾つ在っても足りんだろ
0817デフォルトの名無しさん
2012/05/18(金) 07:52:12.43評判の良いやつだけで潰しあえ
0818デフォルトの名無しさん
2012/05/18(金) 07:55:27.260819デフォルトの名無しさん
2012/05/18(金) 08:10:51.950820デフォルトの名無しさん
2012/05/18(金) 21:20:26.37判定する関数を書くのに苦労してた。
短く書けるとウワサのScalaですらそのレベルなんて、
静的型付け言語はダメダメだなぁ。
0821デフォルトの名無しさん
2012/05/18(金) 21:56:20.82def sorted[T:Ordering](xs:List[T]) : Boolean =
xs match { case x::y::zs => implicitly[Ordering[T]].lt(x, y) && sorted(y::zs); case _ => true }
型指定は面倒だね。
暗黙の型変換を定義すればもう少し簡潔になるかも。
0822デフォルトの名無しさん
2012/05/18(金) 22:32:39.960823デフォルトの名無しさん
2012/05/18(金) 22:38:39.58def sorted[T](xs:List[T], f:(T,T)=>Int) : Boolean =
xs match { case x::y::zs => f(x, y) >= 0 && sorted(y::zs); case _ => true }
0824デフォルトの名無しさん
2012/05/18(金) 22:44:02.030825デフォルトの名無しさん
2012/05/18(金) 22:52:26.14二分探索を使う前とかに調べるじゃん
0826デフォルトの名無しさん
2012/05/18(金) 22:53:00.87それなら十分許容範囲だね。
0827デフォルトの名無しさん
2012/05/18(金) 22:55:38.83引数と返り値の型は推論してくれないんだっけ?
0828デフォルトの名無しさん
2012/05/18(金) 22:56:20.290829デフォルトの名無しさん
2012/05/18(金) 23:33:06.68ソートしとけよ
してないなら、まずソートしろ
0830デフォルトの名無しさん
2012/05/18(金) 23:37:28.63同じ計算量だと思ってる男の人って...
0831デフォルトの名無しさん
2012/05/18(金) 23:57:52.40静的型チェックのメリットと釣り合わない
0832デフォルトの名無しさん
2012/05/19(土) 00:44:54.270833デフォルトの名無しさん
2012/05/19(土) 01:06:57.97釣り合う物を取り返そうとしたら保険の意味がなくなる
0834デフォルトの名無しさん
2012/05/19(土) 01:10:31.94ソートされてるかどうかわからない
なんてことになる設計がダメだしされてるんだろ
0835デフォルトの名無しさん
2012/05/19(土) 01:27:57.13オブジェクト指向で静的型のJavaですよー
public static<T extends Comparable<? super T>> boolean sorted(List<T> xs) {
for (int i = 1; i < xs.size(); i++) {
if (xs.get(i-1).compareTo(xs.get(i)) > 0) return false;
}
return true;
}
0836デフォルトの名無しさん
2012/05/19(土) 03:31:46.880837デフォルトの名無しさん
2012/05/19(土) 04:29:01.17SequenceableCollection >> isSorted
self overlappingPairsDo: [:a :b | a <= b ifFalse: [^false]]. ^true
0838デフォルトの名無しさん
2012/05/19(土) 07:54:30.96全ての隣り合う組を比較するようなダメコードを書くダメプログラマは
まさかこのスレには居ないよね?
0839デフォルトの名無しさん
2012/05/19(土) 09:09:24.99コードの長さはあまり関係なくないか?
考えた処理をサクサクとコード化できるか、だと思う
0840デフォルトの名無しさん
2012/05/19(土) 10:06:00.60>>833
保険というか、コンパイラに一部の整合性のチェックを任せられるので
作業量増加と引き換えに、開発者が気を使う要素が減る
トレードオフで負担を変化させる
[作業量が減る][気を使う要素が減る]どちらの開発効率が良いかは
ケースバイケースだと思うが
0841デフォルトの名無しさん
2012/05/19(土) 10:58:17.400842デフォルトの名無しさん
2012/05/19(土) 15:29:10.77もしかしてHaskellについて言ってるなら、遅延評価だから途中で止まる
無限リストで試せば分かる
Prelude> isSorted [1,0..]
False
0843デフォルトの名無しさん
2012/05/20(日) 09:55:31.76もしかしてSmalltalkについて言ってるなら、どうせ遅過ぎてウンコだから
そんなところ気にしても仕方ない
メッセージング(笑)
0844デフォルトの名無しさん
2012/05/20(日) 13:40:56.75Smalltalkerかアラン・ケイになんか嫌なことでもされたか?
0845デフォルトの名無しさん
2012/05/20(日) 13:47:01.48なんで使うことってあまりないんだろうね。
0846デフォルトの名無しさん
2012/05/20(日) 14:11:04.260847デフォルトの名無しさん
2012/05/20(日) 14:15:09.70「N種類のカードをアトランダムにコンプするまで引く作業をM回繰り返して集計」
ってただそれだけのことをSmalltalkみたいにそのまんまに書き下すことも可能なのかな。
HaskellにもMultiSet(SmalltalkでいうところのBag)とかあるよね?
0848デフォルトの名無しさん
2012/05/20(日) 14:18:36.97内部で勝手に遅延評価してるってだけだから
そんな言語の話をしたってしょうがない。
遅延評価をしたい場面が無いって話をしてる。
0849デフォルトの名無しさん
2012/05/20(日) 14:34:00.38あ?政府から海運業、通信、保険、金融、音響。
お前がしらんだけで実際いろんな所で使われとるわ。
英語が読めん奴が覆いから日本人の開発者が少ないだけ。
0850デフォルトの名無しさん
2012/05/20(日) 14:34:50.90こういうイデオムはgetterのあるオブジェクト指向プログラミングだとよくある。
getterがないと値参照から関数呼び出しを引き起こせないので、
単に関数呼び出しをすることになってしまう。
ただしそのような場合でも遅延評価イデオムと呼ぶ場合もある。
例えば上に出たamotized sortは挿入時にやるべき並び替えを最後までやらずに、
細かい部分はサボって後回しにして、後でまとめてやっている。
こういうのは遅延実行の一種。
0851デフォルトの名無しさん
2012/05/20(日) 14:42:50.92Smalltalkという実行環境が現存してると思ってんだろ
うんで「Smalltalkでググっても見つからないよー」とw
Linuxと同じように純粋なSmalltalkは存在しないのにな。
0852デフォルトの名無しさん
2012/05/20(日) 14:45:54.09よしわかった。
具体t系な実行環境を言ってくれ。
それに対して、使われているかいないか
判断することにしよう。
0853デフォルトの名無しさん
2012/05/20(日) 14:52:32.76Visual Works.
VA Smalltalk.
Squeak.
Pharo.
GNU Smalltalk.
0854デフォルトの名無しさん
2012/05/20(日) 14:56:00.00VisualAgeは、各種言語の統合開発環境でもあり
Smalltalkの実行環境なんだよな。
emacsのlispをSmalltalkに置きかえたと考えればわかりやすい。
0855デフォルトの名無しさん
2012/05/20(日) 15:01:44.14よし、じゃあ次にどれくらい使われてるか
公平に判断するために、どこかが発表した
ラインキングを見てみるとしよう。
何か希望はあるかね?
ないならこちらで適当なランキングを
もってくるが、それだと不満だろう?
0856デフォルトの名無しさん
2012/05/20(日) 15:08:03.81なんで回答者に左右されるランキングが必要なんだ?
製品のダウンロード件数でも調べてくりゃいいじゃねぇか。
0857デフォルトの名無しさん
2012/05/20(日) 15:08:38.060858デフォルトの名無しさん
2012/05/20(日) 15:16:04.37物流や医療じゃ高確率で見かけるからな
その癖ググっても資料がでてこないから苦労する
あとCOBOLもまずランキングにのる事はないが
未だに金融じゃ必ずと言っていいほど見かける
ネットで見かける需要が現実の需要と
一致してるとは限らんよ(COBOLはみんな
嫌々使ってんだろうけど)
0859デフォルトの名無しさん
2012/05/20(日) 15:18:14.23> なんで回答者に左右されるランキングが必要なんだ?
個人の意見じゃ、回答者(個人)に
左右されるからじゃないかw
同じ回答者でも、たくさんの意見を聞いたほうが良い。
回答者(多数)の方が信頼性が高いって言ってるんだよ。
0860デフォルトの名無しさん
2012/05/20(日) 15:28:53.00個人じゃなく販売数とか、ダウンロード数とか
確実な値で調べろと言ってるんだが
マスコミがキムチピザをランキングの1位にしてたからって信じるのか?
まともな思考なら販売店の商品別売上実績を調べるだろ。
0861デフォルトの名無しさん
2012/05/20(日) 15:35:06.94>回答者(多数)の方が信頼性が高い
理論的にはね。現実にはそううまくは実情は反映されない。
だからTIOBEを人気ランキングと勘違いする情弱が量産されてるんだと気づけよ。
0862デフォルトの名無しさん
2012/05/20(日) 15:38:32.51関数型言語のドマイナーさ加減が情弱にも理解できて少しはおとなしくなるだろう。
0863デフォルトの名無しさん
2012/05/20(日) 15:43:00.810864デフォルトの名無しさん
2012/05/20(日) 15:47:26.30Win専用だけどDolphin Smalltalkというすばらしい処理系も忘れないでいてください。
イルカと言えば名古屋のSmalltalk勉強会はAmber押しだよね。
http://dynagoya.info/index.html
京都はVisualWorks、東京はSqueak/Pharo系か。
0865デフォルトの名無しさん
2012/05/20(日) 15:53:17.14すまんすまん
0866デフォルトの名無しさん
2012/05/20(日) 15:55:15.81その時点でどうでも良くない?
豆粒みたいな普及率をどうのこうの言ったって仕方ないし、
どうせ、数字の見方の問題に話がそれるだけでしょう。
それより、関数型言語のスレらしく、、
関数型言語の優れている点でも語り合ったら?
手続き型言語には副作用を簡単に表現できる利点があるから、
それを上回るメリットが関数型言語に無いことにはねぇ。
手続き型言語でも、副作用を禁止して書いていくことは出来るし、
その場合は副作用が無いからとても安全に記述できるわけだけど、
それと比べて関数型言語に一体どれだけのメリットがあるのか。
特に最近は遅延評価をサポートしている手続き型言語もあるし。
0867デフォルトの名無しさん
2012/05/20(日) 15:55:37.97えるしってるか どるふぃんはまっくでもうごくw
http://www.youtube.com/watch?v=Te4Cx0Mz1Gw
0868デフォルトの名無しさん
2012/05/20(日) 15:58:39.62普及率自体はどうでも良くて社会基盤の一部として実働してることが重要。
そもそも玩具だの言い出したから始まった話だし。
0869デフォルトの名無しさん
2012/05/20(日) 16:02:56.95普及しているとは全然言えないからAdaは
おもちゃだと言ってるのに似てるね
0870デフォルトの名無しさん
2012/05/20(日) 17:16:45.10https://twitter.com/#!/hajimehoshi/status/204083496610832385
0871デフォルトの名無しさん
2012/05/20(日) 19:22:30.25> 個人じゃなく販売数とか、ダウンロード数とか
> 確実な値で調べろと言ってるんだが
公表されてないから調べようがない。
0872デフォルトの名無しさん
2012/05/20(日) 19:27:28.72そんなのが何でブログラムスレに居るのかは謎だが。
0873デフォルトの名無しさん
2012/05/20(日) 19:30:44.25実際、使われてないんだろ?
0874デフォルトの名無しさん
2012/05/20(日) 19:40:27.89価値と直結してるとか考えてる人はちょっとやばい
0875デフォルトの名無しさん
2012/05/20(日) 19:42:58.250876デフォルトの名無しさん
2012/05/20(日) 19:54:04.24それだけ価値があるんじゃないの?
0877デフォルトの名無しさん
2012/05/20(日) 20:04:00.42違う。
違うっていうことはどういうことか分かるか?
反対ってことだ。
つまりあまり使われてない言語のほうが価値がある。
0878デフォルトの名無しさん
2012/05/20(日) 20:04:02.840879デフォルトの名無しさん
2012/05/20(日) 20:04:52.040880デフォルトの名無しさん
2012/05/20(日) 20:07:24.83そこは、言語の価値はシェアや人気とは無関係って方向にもってけよ。w
0881デフォルトの名無しさん
2012/05/20(日) 20:08:41.00自分で書いてて例えが微妙な気がした
0882デフォルトの名無しさん
2012/05/20(日) 20:22:03.52こんな>>877書き込みするようになっちゃうの?
ガチなら狂ってるとしか思えないんだけど
0883デフォルトの名無しさん
2012/05/20(日) 20:30:01.51> そこは、言語の価値はシェアや人気とは無関係って方向にもってけよ。w
無関係ではない。
統計とはそういうもの。
データを集めれば、
概ね正しい結果が出てくる。
0884デフォルトの名無しさん
2012/05/20(日) 20:37:40.84だから、>>866で止めようって書いたのに。
0885デフォルトの名無しさん
2012/05/20(日) 21:04:24.940886デフォルトの名無しさん
2012/05/20(日) 21:14:05.780887デフォルトの名無しさん
2012/05/20(日) 21:15:43.37えー、ホントに?
じゃあこの結果も概ね正しいんだね
http://attractivechaos.github.com/HN-prog-lang-poll.png
0888デフォルトの名無しさん
2012/05/20(日) 21:19:32.060889デフォルトの名無しさん
2012/05/20(日) 21:20:26.39導入事例が存在するんだから使われてるに決まってんだろ
0890デフォルトの名無しさん
2012/05/20(日) 21:21:45.47じゃADAは国家レベルの事業でしか使われてないから価値がないのか
0891デフォルトの名無しさん
2012/05/20(日) 21:23:48.90電話かけて聞けよ
0892デフォルトの名無しさん
2012/05/20(日) 21:27:29.64科学技術の基礎や応用を作り上げてるが
ランキングに乗っていない以上無価値なんだよな
0893デフォルトの名無しさん
2012/05/20(日) 21:27:38.81電話かけて聞けよ
電話かけて聞けよ
0894デフォルトの名無しさん
2012/05/20(日) 21:28:33.26恥ずかしいならメールでもいいぞ
0895デフォルトの名無しさん
2012/05/20(日) 21:41:51.60> そもそも玩具だの言い出したから始まった話だし。
そんなレス在ったっけ?って検索しても無いから
遡って探したら前スレで見つけた。
> 382 : 営利利用に関するLR審議中@詳細は自治スレへ : 2012/03/31(土) 14:28:58.16
> かつてのSmalltalkファンが
> 今ではRubyやPythonを使ってるってのは良く在る話
>
> Smalltalkは構文がダサくて読み難いし
> Squeak/Pharoは玩具過ぎるし
> Visual Worksはまるで古いVBみたいだし
こんな前の話をまだ根に持ってたのかよw
執念深過ぎwww
0896デフォルトの名無しさん
2012/05/20(日) 21:53:12.690897デフォルトの名無しさん
2012/05/20(日) 22:02:41.55>トイプログラムの御題でくらいは存在感を出さないとね。
0898デフォルトの名無しさん
2012/05/20(日) 22:21:34.690899デフォルトの名無しさん
2012/05/21(月) 07:31:14.84顔真っ赤にして反論するからスレが荒れてうっとうしい
HaskellしかりSmalltalkしかり
少しはスルーしろよ、どんだけ余裕が無いんだよ
つーか日曜日の昼から2chかよ家族はどうした
0900デフォルトの名無しさん
2012/05/21(月) 09:12:40.560901デフォルトの名無しさん
2012/05/21(月) 19:50:14.051.6GHz Core i5 で12秒
{-# LANGUAGE BangPatterns #-}
import Control.Applicative
import Control.Monad
import Data.Maybe
import Data.Ord
import Data.List
import Data.MultiSet as S
import System.Random.Mersenne
cardNum = 10
iterateNum = 1000000
completeSet = fromList [0..cardNum-1]
main = do
s <- replicate iterateNum <$> newMTGen Nothing >>=
foldM (\(!s) g -> flip S.insert s <$>
S.size . fromJust . find (completeSet `isSubsetOf`) .
scanl (\x n -> S.insert (n `mod` cardNum) x) S.empty <$>
(randoms g :: IO [Int])) S.empty
print $ (findMin s, findMax s, maximumBy (comparing snd) $ toAscOccurList s)
レス数が900を超えています。1000を超えると表示できなくなるよ。