Ruby 初心者スレッド Part 60 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/04/29(土) 02:01:58.34ID:urVXnFrH
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 59
http://echo.2ch.net/test/read.cgi/tech/1475394638/

るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/
2017/07/04(火) 13:39:30.76ID:jC9x4mB4
>>528
俺もwith_indexなんかやめてJavaScriptみたいに
map(やそれに類するもの)は全てインデックスがあればいいと思ってるよ。
速度よりもシンプルさ、可読性のほうが重要
2017/07/04(火) 13:40:58.31ID:Qa2xT13J
深層学習はPythonが有名だけど、
みんながみんな深層学習じゃなくてワトソンのような、技術そのものじゃなくて実用できるものを作りたいんだと思う
だったらRubyで大元の部分をつくっちゃえば良くない?って考えなんだけど
532デフォルトの名無しさん
垢版 |
2017/07/04(火) 13:54:58.37ID:Fv1Dj8Gj
昨日と同じく、眠くなってきた。
カフェインを摂取した。
2017/07/04(火) 14:07:04.87ID:jC9x4mB4
>>531
そうするとRubyで?ことになるんだけどな。

なんでかっていうと、ワトソンみたい物を作る時、
「自然言語分類」にはどのライブラリを使うか?
「検索及びランク付け」にはどのライブラリを使うか?
「文書検索」には略
「会話」には略
「音声認識」には略
「音声合成」には略

これらのライブラリをRubyで再実装するわけじゃあるまい?
再実装するならRubyで作るって話でいいけど
そうでないなら何を組み合わせるか?って話で
検索エンジンであればSolrやElasticsearchを使いましょう。
とかになるだろうし、

Rubyで作るというよりか、既存のオープンソースの何かを使って
システムを構成しましょうって話になると思うよ。

Rubyで大本の部分を作るんじゃなくて、大本の部分はあるから
Rubyでそれらをつなぎましょう程度じゃね?
2017/07/04(火) 15:09:51.34ID:Qa2xT13J
深層学習という技術そのものにおいて相も変わらずPythonは有力な一つの候補だし、ネイティブな所は相も変わらずC/C++で書かれたライブラリがあるわけだけど、
(大勢の人がワトソンクローンを理解、組めるように)Rubyなら(コードを)書きやすい、書き換えやすい、(個人的に)図示しやすい
だからRubyで
という話なんだ

ライブラリの選択どうするの?本の構成どうするの?細部をどうするの?ってのは紙面に依るとしか言えない
ページをだいたいこのぐらい見積もるから、こういう構成で行きましょう、ここはこういう形で行きましょう、というのが一般的な普通の流れ
ページが無限ならそれこそRubyの内部の仕組みから全て書けるわけだけど、残念ながらページは有限、でもって何ページになるのかも未定の状態
要はページ数によって内容がダイナミックに変わってしまうという事
それに対して、ページ数やら構成を考えるのに、判断の元となるものが必要となる
個人で書ける本ならその人の持ってるあんちょこでも別段かまわないんだけど、じゃあ複数人でっとなった場合はその個人一人のあんちょこじゃ問題がある(「それって結局、君の場合でしょ?」で終わってしまう)
だからこそ決め打ちでは語れないし、判断の元になるものを"公"に"形式"をとって、(誌面に載るかどうかはおいて置いて)網羅的に準備しなければならないわけなんだ
決め打ちしてそれに基づいて必要とする資料だけを集めて済むなら万々歳なんだけど、そうはいかないんだ

で、Rubyを基本とするからRubyできてもらわなければ困る
だからRuby界隈での実動者が私を含めて必要になるわけなんだよ

自前で用意するものが出てくるかもしれないという話は、当然だけど結局は誌面やら規模やらで判断される
2017/07/04(火) 15:10:33.91ID:A9sYzzwp
NIH症候群にかかるのは企業の要職ばかりではない
フルスクラッチネイティブではない外部ライブラリ拡張ライブラリを「正しくない」と考えてしまうことは…どうしてもある
優れた使い心地のラッパーを作るということは元APIと主言語とUIのすべての理解と研究が必要なのだからもっともっと技術的に誇っていいのだけどもね
2017/07/04(火) 15:13:59.53ID:Qa2xT13J
やっぱりいつの時代も本を書く上ではページ数が全てだよ
2017/07/04(火) 15:18:01.70ID:JdC3mg/z
イテレータの美点は
今までつきまとってきた添え字文化を切り離したとこにあるんだよ
最大サイズ、インデックスの準備、インデックス操作、このへんは本質的じゃないよね
我々がしたいのはホントは、集まってるオブジェクト一個一個を触りたいだけだよねっていう

そのへんわきまえてるのがrubyだと思う
インデックスがデフォで付いてたりするのは原始人じみてる
538デフォルトの名無しさん
垢版 |
2017/07/04(火) 15:32:22.71ID:Fv1Dj8Gj
>>537
なるほど!
初めてeachを見た時、面食らったのを思い出した。
2017/07/04(火) 17:46:25.87ID:nYPV9UDZ
>>508
IBMがワトソンにどれだけ投資したかという話
タダで同じものを作るとは虫が良すぎる
2017/07/04(火) 17:48:12.89ID:nYPV9UDZ
>>513
ワトソンは人工知能でしょ

そこらへんのボットは人工無能だけど
ワトソンはクイズに答えたり
病気の治療見つけたりして有能だから
「無能」じゃないでしょ?
2017/07/04(火) 17:50:26.31ID:nYPV9UDZ
>>522
ニューラルネットだけが人工知能じゃないよ
NN系のディープラーニングの
取り上げられ方が目立つってだけで
定義にしちゃうのはただのミーハー
2017/07/04(火) 17:52:57.98ID:nYPV9UDZ
>>521
人を集める、特に企業と絡むっていうのは
先に一部でも成果を公開しないと難しい
向こう側にメリットがないでしょ?
2017/07/04(火) 17:57:26.81ID:nYPV9UDZ
>>529
>ワトソンをRubyで誰でも作れるようになれば
無理無理

誰でもワトソンは無理
誰でもボットなら可能

Rails本体を誰でも作るのは無理だろ
Railsを利用してブログを作るとかなら可能

だからAPIを使ってボットを作るみたいのなら可能
2017/07/04(火) 17:58:01.46ID:8gzuv+lo
「俺がRubyを使いたいから」で金が集まると本気で思ってるのかな
まあ国内技術を使うことが重要であるとか言ってうまく騙せば公的機関から引き出せるかもしれないけど
君のやろうとしていることは本質的には不必要なガラパゴス化を招き日本の衰退を加速させるだけの国賊行為であることを忘れないように
2017/07/04(火) 18:10:32.16ID:jC9x4mB4
>>537
インデックスそのものと、インデックスを使ったループは別だと思うよ。

ハッシュのmapでキーが取れるように、
配列の場合はキーの代わりにインデックスってだけだと思う。

キーとインデックスって本質的には違いはないでしょ?
2017/07/04(火) 18:13:20.70ID:jC9x4mB4
>>543
誰でもワトソンを作るは無理でも、
誰でも既存のオープンソースを繰り合わせて
ワトソン相当を作ることは可能だよ。

ただクイズ番組とかワトソンの成果っていうのは
ワトソンというソフトよりも、大量のデータを投入させた所にあるので、
仮にワトソンそのものを入手したとしても、クイズ番組優勝とかは無理だよ
膨大なデータをひたすら入力する地道な作業が必要
2017/07/04(火) 18:22:23.28ID:nYPV9UDZ
>>546
>ワトソン相当を作ることは可能だよ
甘く見過ぎ
そんな簡単ならIBMより先にもっとできてた

>膨大なデータをひたすら入力する地道な作業が必要
それもワトソンのうちなんじゃないの?

ゲームからデータ抜いたらゲームじゃない
知能から知識抜いたら知能じゃない
2017/07/04(火) 18:24:30.73ID:8gzuv+lo
>>547
ワトソンは知識はユーザーが与えるんだよ
単なる検索エンジンと思えばいい
2017/07/04(火) 18:25:37.93ID:Qa2xT13J
>>543
Rubyでワトソンを解説ってのがスッポ抜けてるけど大事なところだよ
2017/07/04(火) 18:26:26.94ID:nYPV9UDZ
>>548
ワトソンはたんなる検索エンジンじゃない
仕組みが似てる部分はあるけど
たんなる検索エンジンはクイズに答えられない

知識の与え方と引き出し方も
エキスパートシステムのうち
そこをすごく甘く見てる
551デフォルトの名無しさん
垢版 |
2017/07/04(火) 18:27:32.37ID:1Tk0DRaF
ネガキャンが人工知能に噛み付いてくたおかげでスレがいくらか平和になったな
相変わらずうざいけど
2017/07/04(火) 18:32:42.18ID:nYPV9UDZ
>>549
ワトソンは無理だから絵に描いた餅だよ

Rubyで人工無能みたいな本はあるし
その辺のラインが現実的だと思う
2017/07/04(火) 18:38:48.19ID:Qa2xT13J
ワトソンの解説をRubyのコードをつかって行うって事が重要なのに
ってなんか話が噛み合わないなと思ったら単にレスを適当にしか読んでなかったのか

納得
2017/07/04(火) 18:41:41.93ID:jC9x4mB4
>>547
> >膨大なデータをひたすら入力する地道な作業が必要
> それもワトソンのうちなんじゃないの?

そこに一般の人が考える人工知能の違いがあるんだよな。
大変な仕事をコンピュータが自動でやってくれるのと同じように考えてしまう。

人工知能は自動で知識をあつめてくれるわけじゃない。

コンピュータが利用できる形にデータ化されているものであれば
それを解析するのは得意だけど、そうなってないものを
データ化する作業っていうのは人間がやるしか無い。
2017/07/04(火) 18:45:16.48ID:nYPV9UDZ
>>553
あのね

WindowsみたいなOS、Googleみたいな検索エンジン、
作ったら大もうけできるのに何で寡占されてると思う?

そこまで行かなくてもRubyみたいな言語作ったら
解説本くらいは書けるだろうけど
Rubyと同じくらい普及してる日本発の言語はないよね?

なんでワトソンなら自分にもできると思っちゃうの?
2017/07/04(火) 18:47:18.87ID:nYPV9UDZ
>>554
違う違う

データを全自動で集めると思ってるわけじゃない
その「データ化する作業」も含めてワトソンでしょって言ってるの
2017/07/04(火) 18:48:27.80ID:jC9x4mB4
>>550
> たんなる検索エンジンはクイズに答えられない

だからクイズに答えれるように人間がデータを入れるんだよ。

クイズの多くは知識問題。
例えば総理大臣の名前とか。

ありとあらゆるクイズの問題と答のペアを登録していくことで
クイズ専用のデータベースを作る。

ウェブサイトの検索エンジンがクイズに答えられないので
データベースががウェブサイトだから。
ウェブサイトは人間用の文章がほとんどなのでクイズのデータとしては適切じゃない

だからクイズに適したデータベースを作り上げる。
そういう作業を人間が行うんだよ。

それを行える人間は知能があるということになるし、
人間の知能を使ってデータベース化すれば
人工知能とやらはデータベースを検索するだけでいい。
2017/07/04(火) 18:50:11.16ID:jC9x4mB4
>>566
> その「データ化する作業」も含めてワトソンでしょって言ってるの

人間が行う作業も含めて、ワトソンっていってる?
例えば自動車を運転する人間は、自動車の一部。みたいな
2017/07/04(火) 18:51:28.49ID:nYPV9UDZ
>>557
それは対話UIの部分を軽視してる

たしかにエキスパートシステムも
DBの問い合わせは行うが
たんなる検索エンジンとの違いは
対話システムを備えているところで
そこが思っているほどかんたんじゃないんだな
2017/07/04(火) 18:55:30.46ID:8gzuv+lo
IBMのビジネスモデルは基本的にパッケージ販売とSIなので、
学習済みのワトソンのAPIを提供して終わり、だとあまり意味がないわけ
IBMとしては、クソ高いパッケージとして買わせてサポートもがっつり付けてもらって、その上あわよくば下請人員まで投入して大規模案件を作りたい
だからワトソンはセルフサービスでなきゃいけないんだよ
応用として医療分野を執拗に推してるのも、医療分野はプライバシーの問題があるのでSaaSに食われにくいという面があるの
2017/07/04(火) 18:57:49.38ID:nYPV9UDZ
>>558
たとえばRubyは標準ライブラリまで含めて
みんなRubyとして使ってるでしょ?

Rubyのコアな言語の文法だけを模倣するなら
誰でもできるかもしれないが実用に耐えない

同じようワトソンのコアな検索部分だけなら
模倣できるだろうけど実用に耐えない

ワトソンなんて検索エンジンだから簡単だよって言うのは
Rubyなんてインタプリタだから簡単だよって言ってるのと同じ
2017/07/04(火) 19:03:28.55ID:jC9x4mB4
>>559
対話システムは難しいが、その反面間違っても
許されるシステムだから、ある意味簡単とも言える。

そもそも人間同士であっても、相手の言ってることが100%
通じるわけじゃない。言う側に問題がある場合だってあるしね

ある程度正しければ許されるシステムだから裏技が使える。
それは意味を理解しなくても、単語の重要度さえ判断できればいいんじゃないか?
ということ。人間とは違ったアプローチで実装できる。

対話システムというよりも、重要度判断システム
それでもいいんだよ。ある程度の正しさがあれば許されるからね。
2017/07/04(火) 19:08:32.62ID:jC9x4mB4
>>560
> 学習済みのワトソンのAPIを提供して終わり、だとあまり意味がないわけ

面白い(当たり前?)のは、分野ごとに学習済みデータが存在するということ

素人(?)考えで言えば、すべての分野を学習させたスーパーワトソンを
一つだけ提供すればいいと思うかもしれないが、そうはならない。

ようは学習というのはデータベースにすぎないので、
違う業界のデータベースを混ぜて使うと、関係ないデータが
検索で引っかかるようになる、つまりノイズが多い。

そういうところを柔軟に判断してはくれないんだよね。
知能があるわけじゃなくて、単なる検索エンジンだから。
2017/07/04(火) 19:11:35.56ID:jC9x4mB4
結局重要なのはデータベース(学習データ)であるし、
そのデータベースを作るのは人間の地道な作業で、
ワトソンっていうのは最終的には学習データ販売ビジネスになります。
565デフォルトの名無しさん
垢版 |
2017/07/04(火) 19:17:37.33ID:1Tk0DRaF
ID:8gzuv+lo
ID:nYPV9UDZ
ID:jC9x4mB4
この三つのIDが延々ワトソンの謎を話し合っているけど、けっして誰もワトソンの構造について説明しようとしないよな

自演かこれ
誰か団子呼んでこいよ
2017/07/04(火) 19:21:22.51ID:jC9x4mB4
>>565
ワトソンの構造はこちら

https://wirelesswire.jp/2016/11/57683/

> サンプルのソースコードはGithubで公開されています。 
>
>  まずは、IBMが先端技術と考える、その素晴らしい
> "コグニティブコンピューティング"のソースコードを御覧ください。

データがないと何もできないってのがわかるだろう?
2017/07/04(火) 19:24:15.28ID:nYPV9UDZ
同じ話の繰り返しになるからそろそろ切り上げたいけど
Googleなんて検索エンジンだから簡単かっていえば困難でしょ?

データを含まないデータベースの問い合わせ部分だけならできても
ネット全体の規模で検索できるから普及したわけであって

それをなんでワトソンなら自分にもできると思っちゃうのか?
っていうのが言いたい
2017/07/04(火) 19:34:05.92ID:jC9x4mB4
まあワトソンと同等レベルのソフトウェアはできるだろう。
だけど、データベース作成の人力作業コストはどうにもならないってことだ。

データがオープンになればいいんだがねw
569デフォルトの名無しさん
垢版 |
2017/07/04(火) 19:41:51.75ID:1Tk0DRaF
自演あきた?
ならば良し
2017/07/04(火) 19:58:39.76ID:olJiM2Cb
ワトソンのことはよく知らんが、>>566のリンク先のことが本当だったとしたら
あまり面白いものではないな

それはそうとして、別の観点からちょっと思うことがあって
2chで人を集めて研究して本を出版しようって発想がかなりアレなんだわな
2chで人を集めたってゲームですらまともに完成するほうが珍しいってのに
本を出版したりアプリ売って金儲けとかもうね

もし本当にそういうことがしたいんなら、本人だけで
ほぼ完成させて、デモも動いているんだけど、どうよこれ
ぐらいまでは最低でも持って行っておかないと誰も相手にしないっつーかありえないよ
そこまでやっても多分うまくいかないと思うけど

本来なら本人が優秀なら実社会で勝手に人が集まってきて勝手に輪ができて
それでどうこう、って話なんだよ
それを、なんで、2chで人集め?
って時点でもう
それもこんな人の減った末期の2chで
571デフォルトの名無しさん
垢版 |
2017/07/04(火) 20:06:46.34ID:1Tk0DRaF
スレチ

うせろ
572デフォルトの名無しさん
垢版 |
2017/07/04(火) 20:27:17.39ID:1Tk0DRaF
粘着野郎は食事か風呂のどっちかか
あいつ0時過ぎたらまたID変えてまくって何食わぬ顔で荒し行為繰り返しやがる
うぜー
2017/07/04(火) 20:39:45.57ID:/bsbbamh
>>570
技術は面白くないが役に立つ
574デフォルトの名無しさん
垢版 |
2017/07/04(火) 20:44:12.57ID:KFTmH+Xw
>>508
多分Ruby使える人で人工知能に詳しい人を探すより、大学訪ねて人工知能に詳しい人にRuby教えた方が手っ取り早い。
2017/07/04(火) 22:31:25.00ID:C0QCHaIb
ちょっと前まで何十億掛けてAIに東大の入試問題解かせて合格させようってプロジェクトがあったけど
それ以上のプロジェクトを気軽に始めようとする人って素敵☆()

壮大な目的はあるけど人集めが初心者スレなのは笑う所かなw
576デフォルトの名無しさん
垢版 |
2017/07/04(火) 22:44:59.86ID:KFTmH+Xw
案外そういう怖いもの知らずのが成功するから世の中分からんね。
パラボラアンテナもスパコンのけい
577デフォルトの名無しさん
垢版 |
2017/07/04(火) 22:46:30.79ID:KFTmH+Xw
途中で送信。。。
スパコンの京も、海外より予算少ないのに海外より性能良かった。
パラボラアンテナなんか、それで世界に広がった。
578デフォルトの名無しさん
垢版 |
2017/07/04(火) 22:47:49.56ID:KFTmH+Xw
フロッピーディスク、切り口で怪我をしない缶詰めetcetc...
2017/07/04(火) 23:28:44.33ID:olJiM2Cb
まずまともな人望があったらこんなところで人集めの質問しないだろってのがあってだね
逆に一人でもやり遂げてやるぜって訳でもなさそうだし
そーゆー部分を見て、判断しよるよ、大人は
内容とか以前に
2017/07/05(水) 05:47:53.58ID:WM8wHrYP
どうやって正答のための元となるデータを形成するか、どうやって問から正答を導く処理を行うか
この二つがワトソンにとって重要な部分なんだけど、文で色々書くよりRubyのコードで示した方がわかりやすいと思う
IDをかえて一人で書き込んでいる人のレスみてるとやっぱりそこを理解できていないみたい
2017/07/05(水) 12:01:58.02ID:Qpg00Afa
>>428
ハトむぎ茶だっけ
2017/07/05(水) 13:25:37.62ID:UBafGJG+
ヒヒヒヒヒ
2017/07/05(水) 13:44:49.29ID:Qpg00Afa
っつーかむぎ茶も出所しておまいらくらいの歳になってんだな
2chに住み着いてるかもな
2017/07/05(水) 16:49:24.95ID:ZXlk9SbS
スレの流れをぶった切って質問。
当方、数日前に
Rubyを2.1.5 -> 2.4.1へとアップグレードしたのだが、
なんかスクリプトの実行速度が3割から4割遅くなった。

実際のところ、以前の2.1.5はgcc5.3.0でソースからビルドしたブツで、
今回入れた2.4.1はgcc7.1.0(これもちょっと前に入れた)でビルドしている。

ちなみにうちの環境だとdtrace関係でminirubyが落ちるので、
configure --disable-dtraceが必要だった。(2.1.5は無い)

正直rubyが遅くなったのかgcc等他に問題があるかどうかも判らないんだが、
2.1以降の各バージョンでのベンチマークとか、
変更点で遅くなったとかの情報が集まっているサイト等、
知っていたら教えて欲しい。

ちなみにOSは32bit版FreeBSD 10.1系とかなりマイナーな環境。
2017/07/05(水) 18:14:21.42ID:WM8wHrYP
プロファイラで旧と新それぞれまわしてどこに時間がかかってるかみてみたら?
http://blog.livedoor.jp/sonots/archives/39380434.html
2017/07/05(水) 18:40:35.78ID:nlxiuXwv
>>584
ruby-2.4.1もgcc5でビルドして比較してみたらどう?
あるいはruby-2.1.5をgcc7で比較するとか
新しいものが常に最良とは限らないし
2017/07/05(水) 18:54:07.87ID:nlxiuXwv
>>586
自己補足

個人的で尖りまくったものを述べるよ
以前、とあるInteger関係のベンチマークを比較した事があったけど
(速い) ruby-2.4 > (ruby-2.3, ruby-2.2) > ruby-2.0 > ruby-2.1 (遅い)
という結果になった

ゴンパイラはgcc8-devel、FreeBSD-11-AMD64上で実行
2017/07/05(水) 20:40:32.03ID:IBgoqo2I
http://takenaka-akio.org/etc/benchmark/
どうも、40倍〜200倍ぐらいは遅くなることを覚悟しないとダメ見たよ
仮に100倍遅くなるとしたら、3GHzのCPUが「30MHz」相当になるってことだから
ちょっと無視できるようなものではないね
コードの書き方を工夫するなどしても、100倍の差はなかなか埋まるものではないよな
もともと1秒で済んでいたはずの処理に100秒もかかることになるし
ここまで遅いと、ちょっとしたことが命取りになってくる
最初見積もっていたより処理に二倍の時間がかかかるようになってしまった場合
1秒が2秒になるのは1秒増えるだけだから我慢できても
100秒が200秒になるのは、追加の+100秒もは我慢できないとおもうよ
589デフォルトの名無しさん
垢版 |
2017/07/05(水) 21:36:48.67ID:LKhZWwoW
すまん
誰か>>588 の言っている事を翻訳してくれ
590デフォルトの名無しさん
垢版 |
2017/07/05(水) 21:42:41.90ID:z3CI8qH6
処理の規模によってはアルゴリズム考えないとヤヴァイぞ☆
って言ってる。
2017/07/05(水) 21:57:18.69ID:i6JVabOm
アセンブラで書くのが絶対的正義ってことでしょ
2017/07/05(水) 22:00:41.82ID:IBgoqo2I
二つの意味が含まれているから確かにわかりにくな

まず一つ目は、既に100倍ぐらい遅いんだから
今更、3〜4割遅くなったぐらいで騒ぐほどのことじゃない
速度が欲しかったらほかの言語を使え

二つ目は、100倍も遅いということは、3.0GHzの最新CPUを使っていたとしても
実質30MHzのCPUを使っているようなものだから
ほんのちょっとしたことが命取りで、更なる3〜4割もの性能ダウンは到底無視できない
考えてもみれば、100MHzのCPUが主流だったころは、本当にシビアだったとおもう
最適化最適化で、1クロック縮めるのに命を懸けている人たちもいたね
今更そういった時代に逆戻りしてしまうのはなんだかなーと思うし
速度がほしかったらほかの言語を使え

何故か同じ結論にたどり着くわけだが、Rubyではよくあること
593デフォルトの名無しさん
垢版 |
2017/07/05(水) 22:03:48.33ID:z3CI8qH6
昔はね。
C++でさえCからすれば遅い言われてた。
(これは理論上今でも、再利用性を得る代わりに遅くなる。C++はCの後継として、遅くなるのを最小限に抑える仕様。でも確実に遅い)
でも、CPUの進歩やコンパイラの進歩で人間が直接アセンブラ触るより速いと言われてる。
2017/07/05(水) 22:09:10.95ID:W7p06HKZ
Railsみたいに、I/O 処理があれば、C/C++でも遅くなるから、Rubyと大差ない

一方、数学・アルゴリズム系で、I/O 処理がなければ、C/C++が断然速い
595デフォルトの名無しさん
垢版 |
2017/07/05(水) 22:21:10.70ID:LKhZWwoW
つまりちょっと前からいるIDを変えてトンチンカンな書き込みを続ける例の荒らしだな

失せろ、スレチだボケェ
2017/07/05(水) 22:26:23.22ID:IBgoqo2I
>でも、CPUの進歩やコンパイラの進歩で人間が直接アセンブラ触るより速いと言われてる。

まさにその通りだ
ここでもいくつかのことが言えて

一つ目は普通にC/C++使っとくのが現状最速だろうってことと

二つ目は当時はアセンブラと比べたらC/C++ですら遅いといわれていたが
別に100倍も遅かったわけではない、ということと

三つ目は、二つ目の続きなわけだけど
アセンブラと比べてC/C++が遅いといっても100倍も遅かったわけではないんだが
CPUがあまりに遅かったからちょっとのことで騒いでいた
Rubyは3.0GHzのCPUを使っていても実質的には30MHzのCPUでプログラムを動かしているようなものだから
まるで当時のような状況、ちょっとのことが命取りな状況、ということと

四つ目は、100MHzのCPUが主流だったころ、もし100倍の性能のCPUが発売されたら
みんなそっち使うよね、ってこと
できることが全然違う、速度的には新幹線と徒歩ぐらい違う
東京から大阪へ行くのに、新幹線なら、考えうる限りの寄り道しまくっても絶対徒歩より早く着く
と、言い切れるぐらいには速度差がある、ので、コーディングで手を抜けそうだね、ってことと

五つ目は、既にC/C++の最適化は鬼のような状況で、普通の人がアセンブラで書いても
到底太刀打ちできない(SEEは別)
C/C++はアセンブラより速くなったといえるだろうし、克服したといえるし、良い選択になっているが
一方で、今現在、RubyはC/C++よりも100倍遅いという現実がある

「でも、CPUの進歩やコンパイラの進歩で
 (Rubyを使ったほうが)人間が直接C/C++を触るより速いと言われてる。」

という風な文章は成り立たない
2017/07/05(水) 22:35:31.37ID:i6JVabOm
>>596
その代わり面倒なコードがてんこ盛りで生産性の落ち方が半端ない
そこまでの速度を要求されるコードなんてほとんどないんだから、生産性の方が重要だよね、
ってのが高級言語の考え方なんだから速度だけにフォーカスした考えは世の中の高級言語を
すべて否定するものだ
2017/07/05(水) 22:59:13.93ID:IBgoqo2I
>>597
またいくつか言えて

>その代わり面倒なコードがてんこ盛りで生産性の落ち方が半端ない

本当にそう言えるのかどうなのか
今現在の状況で、静的型言語に比べて動的型言語の生産性がはるかに高い
と言い切れる人はいったいどれだけいるんだろうか
むしろ動的型言語のほうが生産性がない、という風潮ではないだろうか
だってここ最近新しく出てきた言語は当たり前のように静的型だし
それを売りにしている

で、これもかなり譲って、生産性は同等ぐらい、と考えるのなら
「実行速度100倍差」が重くのしかかる
3.0GHzの最新CPUを使っても30MHzと同等
ここまで遅いと、別の方向で頭を使う

C/C++が新幹線の「のぞみ」だとしたら
JavaやC#は「ひかり」ぐらいの速度、あるいはそれ以上は普通に出る
これなら同じ土俵に立っているといえるし
そのうえで生産性などを考える、これはわかる
だから俺は別に生産性etcの高級言語の考え方を否定する立場はとってない

しかしRubyの速度は「徒歩」である
こうなればまた考え方が変わってくる
2017/07/05(水) 23:10:18.58ID:i6JVabOm
>>598
JavaだってC/C++に比べれば降級言語で速度も遅いが、普通に使われている
それはC/C++より生産性が(まだ)マシだからだ
これは静的型とか動的型とかは関係ない

つまり速度だけにフォーカスした比較は大きく間違ってるということだ
2017/07/05(水) 23:19:57.66ID:k8UT78WG
続きは「C/C++はRubyより100倍早いスレ part24」でやってくれ
2017/07/05(水) 23:20:10.86ID:WM8wHrYP
588ってどのレスへの返しなの?
遡って100レス程見たけどどこからも繋がっていないように見えるんだけど

こういうのはちょっと怖い
2017/07/05(水) 23:22:21.12ID:IBgoqo2I
>>599
C/C++が新幹線の「のぞみ」だとしたら
JavaやC#は「ひかり」ぐらいの速度、あるいはそれ以上は普通に出る
これなら同じ土俵に立っているといえるし
そのうえで生産性などを考える、これはわかる
だから俺は別に生産性etcの高級言語の考え方を否定する立場はとってない

しかしRubyの速度は「徒歩」である

そのうえ、生産性が高いかどうかすら分からないというのは
>>598に書いた通り
2017/07/05(水) 23:26:32.17ID:i6JVabOm
>>602
徒歩でも問題ない場面であれば気にしなくてもいい
そして世の中のほとんどは徒歩で問題ない

徒歩でも問題ないところに「いや新幹線が必要なんだ!」なんてのはもはや技術的な問題ではなく、
ただの思考停止
2017/07/05(水) 23:37:18.10ID:nlxiuXwv
>>602
zlibで圧縮処理する場合、Cとrubyでどんだけ差が出るかわかる?
rubyを徒歩に例えているけど、途中で新幹線を利用してるんだぞ
2017/07/05(水) 23:38:31.89ID:IBgoqo2I
それは「徒歩」とか「新幹線」という言葉にとらわれすぎである
これは単に、あまりにも速度差が有るということを表現するために
「徒歩」とか「新幹線」とか言っているわけで
利便性その他まで含めて比喩しているわけではないんだぞ

なおかつ、生産性が高いかどうかすら怪しいというのは>>598にも書いたし
実際世の中そういう空気になっているじゃろ

生産性が低くて速度が遅かったら後は何が残る?

もし生産性が同程度だったとしても、それならば速いほうが良いだろ
100倍も圧倒的な差があるんだから
多少非効率な書き方したっておつりがくるぞ
2017/07/05(水) 23:40:47.70ID:VZUi/cSm
>>598
> 今現在の状況で、静的型言語に比べて動的型言語の生産性がはるかに高い
> と言い切れる人はいったいどれだけいるんだろうか

どちらかがどちらかを上回るって話じゃないからなぁ。

動的言語だと書くのが楽。型を書かなくてもいい場面が多いから
短いコードで目的を達成できる。その点で生産性が高いと言えるが、
大規模アプリでは、型が書いてないためにコードの把握に時間がかかる。

静的型言語では要所要所に型が書いてあって、記述量は増えるが
その分コードを把握しやすく、コンパイラが見つける矛盾の量も増える。


だから開発するものがどれだけの規模のコード量かで生産性が高い方が決まる。
つまり静的型言語の方が高い場合と、動的型言語の方が生産性が高いかの境目があるということ

しかしその境目がまた問題で、技術力が高い人であれば短いコードでシンプルに書くことができる。
だから境目は技術力が高い人ほど動的型言語の方が生産性が高いことを示すことになる。
2017/07/05(水) 23:41:32.36ID:i6JVabOm
>>605
> それならば速いほうが良いだろ
別に?
徒歩5分のところに行くのに新幹線と車と自転車と徒歩とどれがいい?とか聞かれても「どれでもいいや」
って思うだけだし
2017/07/05(水) 23:47:31.26ID:VZUi/cSm
徒歩5分のところに新幹線や車を使ったら
たいてい遅くなるぞw
2017/07/05(水) 23:53:49.42ID:VZUi/cSm
技術力が高い人ほど動的型を好むのは
たまたまとかいうわけじゃなくて、
短く書けてしまうから「この程度の小さな規模」の
コードになってしまうことが多いからなわけだよね
2017/07/06(木) 00:02:07.40ID:AOJFjP+S
>>607
あるコマンドかアプリか処理か、何か知らんが、何かあって
処理に5分もかかったら、対話性などというものはないし
まず使い方そのものからして考え直さなければならない
進捗ぐらいは表示したいし、アプリの構成そのものからして考えないとな
5分という時間は何もしないには長すぎるので、作業いったん中断ってところだな

これが100倍速いと3秒で終わる
3秒なら、まぁ、待てるかな
ちょっと遅いが、ギリギリ、リアルタイムな対話といえるレスポンスだな
作業は中断しないな

5分と3秒の違い、わからない?

あと、徒歩五分のコンビニに行くにしても、瞬間移動が使えるなら
俺はそういった能力、ほしいな
大は小を兼ねるというし
瞬間移動が使えることで生産性が落ちるわけでもないしな
2017/07/06(木) 00:05:57.18ID:AOJFjP+S
まぁフォトショップでフィルタをかけるとか、なんでもよいんだけど
5分待たされるのはしんどいよ
ほんと、作業が中断しちゃう
コーヒー飲むかタバコ吸うかウンコするか

3秒ならまぁ何とかってところ
2017/07/06(木) 00:06:41.72ID:EqEhEZ9Z
>>610
徒歩というたとえだから5分と設定しただけだよ

実際に計算だけで5分かかるような処理ならそりゃC/C++を使うだろうし、そんな処理をガンガン書く場面は
想定できないし問題ないよ
2017/07/06(木) 00:15:20.73ID:EqEhEZ9Z
要するに徒歩5分はスクリプトで言えば1秒以内に終わる処理だね
1秒を0.01秒に縮められます!とか言われても、でも1秒で十分なんでって思うだけだしね
2017/07/06(木) 00:22:28.74ID:hXlN8tOU
結局何を主張してるのか理解出来ねえ
rubyなんざ使い物にならねえよって>>610が言いたいのか?
同意を得たいなら他のスレで暴れろよな
2017/07/06(木) 00:36:23.27ID:AOJFjP+S
そもそもからしておかしいんだよ
プログラムの実行速度が速すぎるのが原因で生産性が落ちることはない
聞いたこともない
大は小を兼ねるということわざが当てはまって、速すぎて困るということはない

プログラムの実行速度が速いことのトレードオフだけど、これも良くわららない状況だ
今現在はどちらかというと静的型のほうが生産性があるんじゃないか、とすら言われている
そんな状況で100倍も遅かったら、どうなるんだ?
3.0GHzのCPUでも実質的には30MHz相当

あと、静的型言語が速い傾向があるといっても、本当に誰も何もせずに速いってわけじゃなく
コンパイラが最適化を相当キバってくれているから速いわけだ
プログラマがちまちま考えなくてもコンパイラが頑張ってくれる、という方面での生産性という見方もあるし
速くなった分は余裕ができるのでプログラムを手抜きできるっていう生産性もある

また、動的型言語であっても速いのはある
例えばJSは静的型と同じ土俵に立てるぐらいに速いだろ?
これをもってしてMatzは動的型でも速度は出せるって言い張るんだけど
そのような実装を用意できてない状態でそんなこと言って何になるんだ?
2017/07/06(木) 00:38:42.41ID:EqEhEZ9Z
>>615
> 大は小を兼ねるということわざが当てはまって、速すぎて困るということはない
別にRuby程度の速度で困ることもない場面がほとんどなので、問題はない
2017/07/06(木) 00:39:54.73ID:DNqxUdzY
> そんな状況で100倍も遅かったら、どうなるんだ?
> 3.0GHzのCPUでも実質的には30MHz相当

その計算をすることに意味はない。
今後一切やめてくれって言いたいレベル。

現実としてその違いは、重大な問題を引き起こすかどうかで決まる。
わからないと言うならば、問題は起こってないということだ。
2017/07/06(木) 00:43:06.60ID:DNqxUdzY
> プログラムの実行速度が速すぎるのが原因で生産性が落ちることはない

当たり前だ。実行速度と生産性は無関係だからだ。

無関係といったんだ。実行速度を速くしても生産性は落ちないとは言ってないからな。

無関係ということは、実行速度を速くすることで
 生産性が落ちる場合もあるし、
 生産性が落ちない場合もある
 生産性が上がる場合だってある
ということだ

> 大は小を兼ねるということわざが当てはまって、速すぎて困るということはない

速くするため生産性が落ちるのであれば困る。
2017/07/06(木) 01:01:27.03ID:AOJFjP+S
Rubyが今の100倍速くなったとしたらどうなんだ?
前のままで十分だったから遅くしてくれ、戻してくれ、とはならんだろ
速いほうがいいに決まっているのに、遅くてもよいと言い張るのは
すでに普通の感覚を失ってしまっている
Ruby3.0ではどうにかネイディブスレッドを導入しようという話だが
これもどうにか実行効率を上げよう試みだ
結局速いほうが良いという話

ものすごく変な言い方をすると、Rubyが今の100倍速かったら
もっといろいろなことにRubyを使えるはずなのに
そういったことをユーザー自ら否定してしまうのは変なコミュニティーだ
「自分たちはこれでよいんだ」的な
でも1億あげるっていったら間違いなく飛びつく

速度を落としてまで動的型にしたが
それもちょっと前からどちらかというとメリット無いんじゃねと言われていて
今ではその評価もすっかり固まってしまったが
これなら何故速度を犠牲にしたのか意味がよくわからない状況
2017/07/06(木) 01:03:39.40ID:EqEhEZ9Z
>>619
> 結局速いほうが良いという話
大事な前提条件が抜けている
「コードが変わらないならば」という条件がな
2017/07/06(木) 01:12:20.24ID:AOJFjP+S
必ずしもコードが変わらない場合にのみ速度が速いことが歓迎される
というわけでもなかろう
処理系の実行速度が速いことには何時でも一定の価値基準がある
2017/07/06(木) 01:13:25.30ID:EqEhEZ9Z
>>621
> Rubyが今の100倍速くなったとしたらどうなんだ?
君がこういう前提を出したんだよ?
2017/07/06(木) 01:13:59.37ID:AOJFjP+S
周りを見渡せばRubyよりも100倍速い言語や処理系が既にあって
しかもRubyのような動的型は失敗だったんじゃないかという空気だ
2017/07/06(木) 01:16:51.07ID:EqEhEZ9Z
>>623
君の頭の中ではそうなんだろうね
世間に出た方がいいと思うよ
2017/07/06(木) 01:32:38.58ID:hXlN8tOU
>>623
お前が吐き出した空気じゃねえか
澱み杉
2017/07/06(木) 07:30:15.82ID:LqVtic6r
失敗も何も動的言語は生まれた時から「動作は遅いが作るのが早くできるので素晴らしい、しかしそれゆえ脆いので長期堅牢には向かない」ときちんと認識されていた
完璧を目指していたことなど一度たりとてない
2017/07/06(木) 09:30:16.79ID:jsnas7L+
そもそもMatzが遊びで作った言語だろ?
それをわざわざ公開してくれて
我々は彼の善意によってタダで使わせてもらってんだろ?

そのへんの間隔というか距離感というか
忘れちゃってる奴おるよな
自分のオカンに対して無限に批判するような態度の
2017/07/06(木) 09:43:08.71ID:k46M2gqo
文句があるなら自分で言語作ればいいじゃん。
2017/07/06(木) 10:11:36.56ID:IrPrEl9j
仇ばかり広めやがっておいたが過ぎる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況