X



Ruby 初心者スレッド Part 60 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
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/
0005デフォルトの名無しさん
垢版 |
2017/04/29(土) 09:29:52.67ID:/b3MraXM
>>前1000
どうしてもインデックスの計算やメンバ検索などで
間にRubyのコードが入ってしまうので結局遅くなるよ
0010デフォルトの名無しさん
垢版 |
2017/04/29(土) 13:09:14.76ID:AqsgnRmH
Mastodonの急な流行によりRubyに脚光が!

浴びてないな
浴びてないね
Railsも微妙
0011デフォルトの名無しさん
垢版 |
2017/04/29(土) 16:27:48.07ID:cjUk9ycm
>>8
mruby-cli?
mrubyからDLLを叩けるようになればWin32ネイティブで動くアプリを作れそうとは妄想している

mrubyは2.x.xと比べてもかなり遅いのが悩みどころ。2.x.xのつもりで書いていると速度が悲しいことになる
0013デフォルトの名無しさん
垢版 |
2017/04/30(日) 07:04:15.22ID:HZc5pT/v
JavaFXの方もほとんど誰も使ってないぞ
パイオニアといえば聞こえはいいが後を追う人も誰もいなさそう
0015デフォルトの名無しさん
垢版 |
2017/04/30(日) 10:59:05.21ID:HKpgHA6l
JRubyってCRubyより実行が速いって言われるけど自分が使う範囲だと遅いんだよなぁ
起動とかCRubyだと10msもかからないプログラムの終了に数秒かかるしあほらしくなるくらい遅いし
肝心の実行速度自体も速くない。1.8.x比ならともかく2.x.x比だと優位性は感じられなかった
0016デフォルトの名無しさん
垢版 |
2017/04/30(日) 11:54:58.94ID:ZnazSADk
rubyで書かれたデスクトップアプリは何があるんだろう
個人的に知らないので、有名所があれば教えて欲しい
0019デフォルトの名無しさん
垢版 |
2017/04/30(日) 12:23:47.65ID:HKpgHA6l
昔プライベートなGUIツールをwxRuby+exerbで作ったことがあるけど大分苦労させられた
0023デフォルトの名無しさん
垢版 |
2017/04/30(日) 13:05:44.18ID:eW5YwfF4
いんや。
起動がdll読みまくりだからC#の起動時よりさらに遅いのよ。
起動が終わればまあ、気にするほどじゃ無いんだが。。。
C#の起動でさえ焦れったいから、我慢の限界超える遅さ。
0024デフォルトの名無しさん
垢版 |
2017/04/30(日) 13:27:18.11ID:HKpgHA6l
wxRuby+exerbで作った奴は一瞬で起動するよ
Javaや.NETの方が遙かに待たされる
Ruby2.x.xでwxが使えればなぁ・・・
0026デフォルトの名無しさん
垢版 |
2017/04/30(日) 14:02:35.33ID:HKpgHA6l
HTMLですむ&RScriptをインストール出来るならActiveScriptRubyを使ってHTAと言う手もあるな
GUIを英語とにらめっこせずに標準的に書けるから結構楽
0028デフォルトの名無しさん
垢版 |
2017/04/30(日) 15:29:46.79ID:HKpgHA6l
Rubyは遅いと言われるけど実際の処理だとそうでもないんだよなぁ
大容量のバイナリデータを読み込んでゴリゴリ演算するような用途だと
PythonやLuaにしたところでインタプリタ稼働率の上昇やI/O性能で
コーディング量が増える割に速くならない
Rubyでも標準のCライブラリを積極的に使うような書き方をすると以外と
大差ない速度が出ちゃったりするし
0030デフォルトの名無しさん
垢版 |
2017/04/30(日) 16:25:39.24ID:HKpgHA6l
CPUはあまり関係なくね?自分は同じマシンで比べているよ
ベンチマークによってはRubyはPythonやLua(JITな奴)の1/数やそれ以下の速度しか出なかったりするけど
自分が試した限りそんなことはないな。圧倒的な速度で処理できるのかと期待すると肩すかしになる

JRubyやIronRubyも同じで、速くはならないどころか自分が試した限りでは遅くなったw
起動が遅くて実行も遅いのでは出番なし
0033デフォルトの名無しさん
垢版 |
2017/04/30(日) 19:03:42.97ID:HKpgHA6l
>>31
ホントに?自分が試したのは1年ちょっと前くらいだからそんなに大昔じゃないぞ
当時すでにJRubyの速度はCRubyに対して明確に速いのが常識的な風潮だったんで
試してみたら全然そんなことなかった

今作っているのがCRuby 2.1.xで数十秒から数分かかる代物なんでこれが1/数で終わると嬉しいなぁ
0036デフォルトの名無しさん
垢版 |
2017/05/01(月) 00:37:35.10ID:U8II69aQ
簡易的な計測なので参考程度だけど計ってみた

処理内容
 25MB程度のWaveファイル読みながらフィードバックタイプのエフェクトを掛けてWaveファイルに吐き出す
 読み出しはダブルバッファリング。書き出しは直書き
計測方法
 数回計ってそれっぽい時数を採用
jruby 9.1.8.0 (2.3.1) 2017-03-06 90fc7ab Java HotSpot(TM) Client VM 25.25-b02 on 1.8.0_25-b18 +jit [mswin32-x86]
 65sec程度 メモリの使用は440MB程度
ruby 2.1.2p95 (2014-05-08 revision 45877) [i386-mswin32_100]
 75sec程度 メモリの使用は200MB程度
ruby 2.4.0p0 (2016-12-24 revision 57164) [i386-mswin32_100]
 90sec程度 メモリの使用は130MB程度
インタプリタの起動時間は含まないからJRubyはこれに2〜3秒加算される
jruby 1.7.12だと100秒以上かかっていたからかなり速くなっているけど、CRubyと
比べて劇的に速いってほどじゃないな。速度差はGCのさじ加減のような気も・・・
あと2.4を使ったら速くなるかと思ったら遅くなったw
0037デフォルトの名無しさん
垢版 |
2017/05/01(月) 01:09:37.50ID:U8II69aQ
ruby 2.4.0p0 (2016-12-24 revision 57164) [x64-mswin64_100]
 70sec程度 メモリの使用は230MB程度
やっぱりCGのさじ加減?
003938
垢版 |
2017/05/01(月) 01:16:50.69ID:P+4F2YiV
すまん、正確には「IOのためのAPI呼び出しのコスト」だな
CPU使用率が仮に100%でもRubyコードそのものの実行時間を測ってるのかどうかは疑わしいよ
0041デフォルトの名無しさん
垢版 |
2017/05/01(月) 03:01:26.20ID:U8II69aQ
>>38
IOは足を引っ張っている。最初は処理単位(2Byteや4Byte)で呼んでいて洒落にならないほど遅かった
今は512KB単位で読み込んでいる。25MB程度の場合はreadの呼び出し回数が50回程度の
はずでかなり抑えられているはず
ただしバックグラウンドで読んでいるためにオーバーヘッドは増えている

オンメモリで処理すれば多少速くなるのは確かだろうけど扱うデータ量が多いと数百MBに達する
可能性があることを考えるとあまり現実的はないか

dl経由でCreateFileを叩いてFILE_FLAG_SEQUENTIAL_SCANを付けて開いてWinAPI経由で読み込むとか
などまだ改善しそうな策はあるけどどこまで速くなるかは何とも・・・
0042デフォルトの名無しさん
垢版 |
2017/05/01(月) 07:02:53.40ID:lT1GiCV3
>>40
そんなことはない
速い言語ではメモリアクセスがボトルネックになることもある
それに、能力の低いプログラマはやたらとメモリを食うプログラムを作る傾向がある
0043デフォルトの名無しさん
垢版 |
2017/05/01(月) 07:18:13.85ID:fBLf4yNS
画像処理みたいに同じデータにアクセスするコードが少ないか、Rubyインタプリタみたいにループで同じデータ(この場合Rubyコード)にアクセスするコードが多いかの違いだろ。

メモリ確保した割に速くなかったからバランス取ったんじゃねーの?
0044デフォルトの名無しさん
垢版 |
2017/05/01(月) 08:19:56.73ID:3OyRI7P6
caseでラベルがラベルではなくラベルの文字列としかマッチしないって酷い仕様だな
アリエンティーすぎる
0045デフォルトの名無しさん
垢版 |
2017/05/01(月) 08:40:59.02ID:3OyRI7P6
そんなことはなかった
木の生だった
0046デフォルトの名無しさん
垢版 |
2017/05/01(月) 09:42:14.76ID:B7FMiEuI
Ruby初心者スレ的には使用メモリを気にするのは初心者の証
こういうスクリプト言語なんて自分のぶんの処理が速ければそれでいいのだ
ただし脱中級者認定要件に「Cレベルでのメモリ動作を理解し適宜気にする」という項目があるにはあるがw
0047デフォルトの名無しさん
垢版 |
2017/05/01(月) 10:18:46.45ID:lXMk8r4o
def f1(n,r)
n
end
def f3(n,r)
(n+1)%2
end
def f4(n,r)
n%2
end
def f5(n,r)
(n%r)==0?1:0
end
fs=[f1,f1,f3,f4,f5]
fs[3](21,7)
みたいに関数を配列に入れて使いたいんだが触って5時間の初心者なんでわからん。
具体的なコード教えてくれめんす。
0048デフォルトの名無しさん
垢版 |
2017/05/01(月) 10:34:15.38ID:B7FMiEuI
>>47
技術的には可能ではあるがカレーを箸で食べる方法を工夫するようなものだ
まずは何を食べるときの話なのか教えてくれると最初からスプーンを勧めることができるぞ
0049デフォルトの名無しさん
垢版 |
2017/05/01(月) 10:47:11.79ID:lXMk8r4o
ありがとうございます。
詳細は明かせないです(説明すると人として恥ずかしいレベルのあれやこれやの理由で)。

関数の集合と適用順番を求める処理が上位にあって。
そこから降ってきたものを具体的に計算したりするときに使いたいのです。
引数の値に対応する関数リストがあるときに関数の適用順序をif文で分岐するとコードが偉いことになるので。
引数に1が来たら関数2,3,5
引数に2が来たら関数3,7,8,12,23
、、、
引数にnが来たら関数1,13を適用
みたいな対応表で、if文で適用関数を区別せず、リストとかで処理を記述したいわけです。
0050デフォルトの名無しさん
垢版 |
2017/05/01(月) 11:04:38.77ID:F35eYYLf
>>49
単純に引数で処理変えたいなら、case文で場合分けすればええんで?
def fn(a,b,c)
case a
when a = 1
puts sum = b + c
puts sum = 2*b
when a = 2
puts sum = b - c
when a = 3
puts sum = b * c
when a = "div"
puts sum = b / c
end
end

fn(1,10,5)
#=>15
#=>20
fn(2,10,5)
#=>5
fn(3,10,5)
#=>50
fn("div",10,5)
#=>2
0051デフォルトの名無しさん
垢版 |
2017/05/01(月) 11:18:46.93ID:ZySc29+x
Ruby始めてすぐなのならどっかででっかい条件分岐させて「実行したいメソッドとその処理順方法」を記した何かを紐づける記述が絶対に必要
それをたとえばデータ配列なんかに持つことは愚行であって(だいいちそのデータだけ見てもなにしてるか読めないし改変追加しんどいだろ)
素直に地の文で論理を記述するべきだろうね

てなわけで被らない分岐をすべて>>50のcaseで分岐させ、メソッドを実行する順番を書いただけの分岐後専用メソッドにぶん投げるのが妥当では
分岐が数十個超あるならクラス作ってファクトリーメソッドとかあのへんに行くんだろうけど1か月くらい早いと思う
0052デフォルトの名無しさん
垢版 |
2017/05/01(月) 11:23:20.88ID:F35eYYLf
話脱線するけど、上のメソッドにp使うと
p fn(2,10,5)
#=>5
#=>nil
って表示されるけど、何に対してnilを出してるのかが分からん
0054デフォルトの名無しさん
垢版 |
2017/05/01(月) 11:53:49.39ID:ZySc29+x
>>52
Rubyのメソッドはすべて戻り値を返す
返すべき適当な値がない場合はnilを返す
んでirbとかはメソッド戻り値も律儀に表示する
irb> def m1; end
irb> m1
=> nil
そいで画面表示するメソッドを使うと標準出力内容とメソッド戻り値が2段表示になる
0056デフォルトの名無しさん
垢版 |
2017/05/01(月) 11:54:54.16ID:lXMk8r4o
親切な返答ありがとうございます。
なるほど全然ダメな発想だったのですね私。

将来的な話なのですが、ゲームの雑魚敵を配列に入れた複数の関数で動きや思考や攻撃防御を制御して、
雑魚敵の部位ダメージ量や探索モードや怒りモードなどへの条件を満たすと、配列内の関数を入れ替えることで雑魚敵の挙動を制御したい。
という現時点での目標があります。

とりあえず教えてもらったコードを理解できるか今から頑張ってみます。
0058デフォルトの名無しさん
垢版 |
2017/05/01(月) 21:44:37.52ID:+TVy5Krd
ロボットの動きなどは、case文で書く方がまれ。
右に動く関数とか、上に動く関数とかを、Hash か配列に入れておく

キーマップなどもそう。
キー A〜Z に該当する動きを、case文で書くのは大変

呼び出される処理を、ブロックで書く。
ブロックを呼び出すのは、yield

yield(引数)とすると、その引数は、ブロック引数として渡ってくる。
{ |引数| 処理 }
処理が2行以上あるなら、do 〜 end を使えばよい

-> (引数){ 処理 }
lambda{ |引数| 処理 }

Proc.new{ |引数| 処理 }
proc{ |引数| 処理 }

Proc.new, proc では、return が使えないから、->, lambda を使えばよい
0059デフォルトの名無しさん
垢版 |
2017/05/03(水) 02:23:03.67ID:wSFjLMka
>>56
enemy[0]=Slime.new
enemy[1]=Goblin.new
enemy[1].state=Angry.new
enemy[0].action #普通に弱い
enemy[1].action #Angryのメソッドにより強い

こういうことならオブジェクト指向について学ぶといい
ただ敵の数が多いとハードコーディングしないでメタプログラミングのがいいかもな
基礎を覚えたら
0060デフォルトの名無しさん
垢版 |
2017/05/03(水) 23:40:20.15ID:zkWNfzXl
スライムとゴブリンを別のクラスにする意味はないだろ
そんなもんデータが違うだけ
0061デフォルトの名無しさん
垢版 |
2017/05/04(木) 00:17:43.27ID:PMOSX9lZ
普通、スライムとゴブリンは、振る舞い・攻撃パターンが異なるから、
別の基本クラスを継承する

スライムは、無形モンスター。
ゴブリンは、小鬼か妖精族?
0062デフォルトの名無しさん
垢版 |
2017/05/04(木) 01:07:10.81ID:kDn7ReiV
ちょっと古い DXRubyの話かと思った
0063デフォルトの名無しさん
垢版 |
2017/05/04(木) 01:10:22.16ID:kDn7ReiV
2dのRPGやシューティングは作りやすかったけど
3dは他の使った方が良い

興味ないか……
0065デフォルトの名無しさん
垢版 |
2017/05/04(木) 10:08:11.63ID:4jJ2tlWM
いま流行りのますとどん

Rubyを学ぼうというインスタンスはないものか
0066デフォルトの名無しさん
垢版 |
2017/05/04(木) 23:01:56.14ID:TB6ujr0/
rubyの求人が無くて泣く
プログラマになりたいと思って勉強したのに・・・…
これからrubyとrailsの需要が爆発的に伸びるとかってありえますか?
0068デフォルトの名無しさん
垢版 |
2017/05/04(木) 23:41:48.41ID:ufmsKYbO
>>66
オブジェクト指向とか別の言語だろうと役に立つ
構文覚えただけならrubyの仕事増えようと役に立たない
それか言語を規定してない仕事でrubyを提案すればいいだろ
0069デフォルトの名無しさん
垢版 |
2017/05/04(木) 23:44:35.87ID:lRx89izX
RubyもRailsも落ち目で衰退する一方だよ
でも所詮それらは道具であり大して重要なことではない
AWSとかのインフラ方面の知識を身につけて一通り自分で作れるようになるとか、
実際にサービス作って運用してみるとか
とにかくモノ作れる奴にはいくらでも働き口はある
0070デフォルトの名無しさん
垢版 |
2017/05/04(木) 23:50:13.53ID:rtRP+bqL
趣味または職業プログラマーとして「生きていく」のにRubyは強力に役立つ
ただし職業プログラマーとして「働く」のにはあまり役に立たない

これはそういうものだ
食べていくのならRubyだけじゃなくRuby「とそれ以外」を身に着けろ
0071デフォルトの名無しさん
垢版 |
2017/05/05(金) 00:40:00.34ID:ayKeenIH
それってRuby以外の言語でも言える事じゃね?

というか国はプログラマーの育成に力を入れているようだけどその実態はコーダーの育成
世界で戦っていく上で必要なのは英語の意味でのシステムエンジニア(≠ソフトウェアエンジニア)だろ・・・
0072デフォルトの名無しさん
垢版 |
2017/05/05(金) 00:42:47.93ID:YKLEnk0e
ハローワークでも、Pythonの求人は、ほとんどないけど、

Rubyの求人は、たまに見る
0073デフォルトの名無しさん
垢版 |
2017/05/05(金) 01:01:51.97ID:78DJCXmh
Ruby覚えたら次はJavaでもC#でも飯の種になりそうな言語覚えれば良いじゃん
他の言語について知ると元の言語の理解も深まるから
それこそプログラマとして働くなら特定の言語だけしか使えないなんてありえないよ
0074デフォルトの名無しさん
垢版 |
2017/05/05(金) 01:05:47.85ID:TDjvniVu
日本に必要なのは質の高いプログラマーだと思うぞ
世界で戦えるサービスやアプリが少ないのはプログラマーの質の問題が大きい

教育面で言えばごくごく一部の大学と大学院を除くと
日本の大学よりCourseraで受けられる講義のほうがレベル高いからな
小学生にプログラミング教育するより高等教育に力入れないと話にならん

あとハローワークは知らんがRubyの求人は普通にあるよ
Rubyで人とるようなところはハロワに出さないだけじゃないの
リクナビとか一般的なサイトで調べてみたら?
0076デフォルトの名無しさん
垢版 |
2017/05/05(金) 02:14:13.82ID:iQB12R96
とりあえずRubyで色々作れるなら、他の言語でも文法とライブラリ覚えりゃ作れるでしょ。
ある日Javaでこれ作って。って言われたらJava入門書とWebのドキュメントで翌日には学びながら作り始めるのが当たり前の世界よ?

ソースはおいら。
0081 ◆QZaw55cn4c
垢版 |
2017/05/05(金) 19:56:57.31ID:u3v3zIiy
>>79
コメントありがとうございます.

しかし手元の教科書(たのしいruby)では
obj.method(list) do | ブロック変数|

end



obj.method(list) { | ブロック変数|

}
は互換であると書いてあります.評価順序の違い,とは >>78 のプログラム例では,どのような順序になるから,違う,といえるのでしょうか?
0082デフォルトの名無しさん
垢版 |
2017/05/05(金) 20:02:27.64ID:yiYPdEw2
例えば
p (1..10).map{|i| i**2}
は(1..10).map{|i| i**2}の戻り値をpするけど
p (1..10).map do |i| i**2 end

p((1..10).map) do |i| i**2 end
と同じ動きをする。
互換というのは明らかな誤謬。
0083 ◆QZaw55cn4c
垢版 |
2017/05/05(金) 20:05:43.45ID:u3v3zIiy
>>82
なるほど,よくわかりました
丁寧な回答ありがとうございました
0084デフォルトの名無しさん
垢版 |
2017/05/05(金) 20:10:13.54ID:yiYPdEw2
ついでに、いちいち書き換えるのが面倒なら
(1..10).map do |i| i**2 end.display
(1..10).map do |i| i**2 end.tap{|e| p e}
とかって書くのもありだね
0087デフォルトの名無しさん
垢版 |
2017/05/06(土) 14:02:42.85ID:2cSynca3
教えてください。(当方Rubyまったく無知です。)

下記のスクリプトを走らせるとSSLエラーが出るので、
拾ってきた証明書を読ませて何とかしたのですが、
open-uri.rb:359:in `open_http': 403 Forbidden (OpenURI::HTTPError)
と、エラーが出ます。UserAgentや認証やら何かでけられてると思うんですが。
403.1とかのサブエラー返してくれればまだしも原因わからず。

※Yahooボックスから一括DL
ttp://lp6m.hatenablog.com/entry/2016/08/12/184232
0089デフォルトの名無しさん
垢版 |
2017/05/06(土) 18:26:04.98ID:l3lhsLeM
普通に認証失敗してんだろ
認証に成功してるかどうかもわからないコード使って
Ruby無知です、わかりません、教えてくださいって酷いゆとりだね
0090デフォルトの名無しさん
垢版 |
2017/05/06(土) 18:31:44.81ID:5w6KEOXn
Rubyを学んでいないのならこんな古臭いスクリプトをわざわざRuby入れて使う必要はない
0092デフォルトの名無しさん
垢版 |
2017/05/06(土) 20:03:38.15ID:2cSynca3
自覚も無い人間の屑共が消えろゴミカス
0094デフォルトの名無しさん
垢版 |
2017/05/07(日) 03:19:50.14ID:edBtKeoY
>>80-84
{ }, do〜end は互換じゃなかったのか!

しかし、ブロックの外側に、p を付ける方が、おかしい!

ブロックの外側に、p を付けるって事は、ブロック全体の戻り値を表示する事になる。
ブロック内の各処理の結果じゃない
0096デフォルトの名無しさん
垢版 |
2017/05/07(日) 04:53:57.72ID:cg7edk1d
case文書く時に
case 比較したいオブジェクト名
when 値1 then
文1
って書いてあるけど
別に比較したいオブジェクト名を省略しても動くよね
ただリファレンス見てもその辺の注釈が無いけど、どういう理屈で動いてるんだろう
0097デフォルトの名無しさん
垢版 |
2017/05/07(日) 08:48:03.37ID:xlJMQ4jE
>>96
caseに値を指定するかどうかでwhenの値の扱いが変わる
特に不思議な仕掛けがある訳じゃなく、単純に文法上別の動作をするってだけのこと
リファレンスにも普通に書いてあるぞ
0098 ◆QZaw55cn4c
垢版 |
2017/05/07(日) 10:30:19.21ID:qkFjvNg9
>>94
>しかし、ブロックの外側に、p を付ける方が、おかしい!
なるほど、何もしらない初学者だから、こういったこともよくわかっていなかったのです
今後ともよろしくお願いいたします。

今演習をしていますが、
s = "Ruby is an object oriented programming language"
に含まれるアルファベットの頻度をカウントしようとして
s.each_char do |c| で、手がとまっています
0101デフォルトの名無しさん
垢版 |
2017/05/07(日) 10:50:54.94ID:yCqO92dr
あと別にブロックの外側に、p を付ける事はおかしくない
ブロック全体の戻り値が知りたいときだってあるでしょう
0102デフォルトの名無しさん
垢版 |
2017/05/07(日) 11:42:11.78ID:cg7edk1d
>>97
よく読んだらcase文の最後の所に
省略した場合の挙動が書いてありました・・・・・・申し訳ないです
しかしこれで色々と楽が出来そうです、ありがとうございました
0103デフォルトの名無しさん
垢版 |
2017/05/07(日) 14:43:52.81ID:bug3EadL
>>98
Rubyに限った話じゃないけどある処理を実装しようとする時は
その処理の入力と出力の型を最初に考えるといいと思うよ
(厳密に定義されてる型じゃなくても別によくて入出力の形式くらいの意味)

例えば
文字列の文字出現頻度をカウントするメソッドの入出力は
string -> hash {“a” => 3, “b” => 5, …}

でeach_charに渡すブロックの入出力は
char -> hash

でcharを1つずつ受け取って意図したhashを返すにはどうするのかを考える
0104デフォルトの名無しさん
垢版 |
2017/05/07(日) 15:02:27.91ID:bug3EadL
(続き)
例えば特定の文字が出てくるたびにインクリメントすればいいと考えれば
最初は↓こういう実装でもいい

s = "Ruby is an object oriented programming language"
result = Hash.new(0)
s.each_char do |char|
result[char.downcase] += 1
end

上のコードが手続き的で副作用が気持ち悪いと思うようになってくればreduceに変える
s.chars.reduce(Hash.new(0)) {|result, char| result[char.downcase] += 1; result}

reduceだとブロックの最後に明示的にresultを返してやらないといけないのが美しくないと思えばeach_with_objectに変える
s.chars.each_with_object(Hash.new(0)) {|char, result| result[char.downcase] += 1}

文字の集合をgroup byすればいいというふうに考えれば↓こういう感じとか(パフォーマンスは上のほうがよいけど)
s.chars.group_by{|char| char.downcase}
.map{|key, value| [key, value.length]}
.to_h

入出力の型を考えて、ロジックを考えて、ロジックをコードで表現する方法を見つける
0107デフォルトの名無しさん
垢版 |
2017/05/07(日) 16:16:42.30ID:2pnfBwSz
reduceは考え方が手続き型に近いので、関数型特有のトップダウンな思考が身についてない人にも馴染みやすいためか、低スキルな人が好んで使うよね
故に>>104のように無自覚に副作用書いちゃう馬鹿野郎も多い
0109 ◆QZaw55cn4c
垢版 |
2017/05/07(日) 18:18:09.31ID:qkFjvNg9
ruby の記述力には感動すら感じさせられますね
今回、必要があって ruby を始めましたが、末永くお付き合いさせていただくことになりそうですね、C/C++ だけに眠っていたのは損失でした…
0111デフォルトの名無しさん
垢版 |
2017/05/07(日) 21:06:49.51ID:edBtKeoY
>>98
>s.each_char do |c| で、手がとまっています

手が止まるのは、習っていない事をしようとするから。
そりゃ出来ないはず

先に「たのしいRuby 第5版、2016」を3回読めば、ほとんどの事は書いてある
0112デフォルトの名無しさん
垢版 |
2017/05/07(日) 21:36:25.47ID:vOfy+8Oj
>>104
すでに>>105が指摘しているけど、破壊的代入は副作用の一つだよ

副作用の無い「関数型プログラミング」と呼ばれる作法に従えば、
以下のコードになる

http://ideone.com/d48CGm

詳しくは以下の文書を参照
・Rubyによる関数型プログラミング
 http://www.h6.dion.ne.jp/~machan/misc/FPwithRuby.html

あと蛇足を加えると:
・上記のコードでは、reduce ではなく inject を用いた
・効率という視点では破壊的代入を用いる>>104のコードのほうが優れている
・わざわざメソッド String#chars で文字列を文字の配列に展開するよりも、
 ブロックを伴わないメソッド String#each_char は列挙オブジェクト
 (enumerator)を返すから、それを直接inject(あるいは reduce)へ
 チェーンさせたほうが効率的である
0113デフォルトの名無しさん
垢版 |
2017/05/07(日) 21:47:04.67ID:hR29VPCg
>>109
ちゃんと覚えるつもりならRubyの一般的なコーディングルール調べてからのほうがいいよ
自然に do end と {} の使い分けも出来るように考えられてたりとか
無駄な時間を減らせるようになってる
0114デフォルトの名無しさん
垢版 |
2017/05/07(日) 22:19:19.16ID:3+oylOXC
reduceという別名をつけてくれたのはありがたいことだと思う
厄介な人間の区別がつけやすくなったからな
0117デフォルトの名無しさん
垢版 |
2017/05/07(日) 22:37:40.27ID:3+oylOXC
>>115
Rubyのreduceは別にreduceしてるわけではないし
関数型やってるわけでもないのに「わざわざ」reduceと呼ぶのは
・reduceの動作を理解していない
・Rubyと他の関数型言語等との区別をつけられていない
という点で危険人物の可能性が高い
そして実際にそうだったわけであって
0118デフォルトの名無しさん
垢版 |
2017/05/08(月) 00:02:12.04ID:H9Jpde9f
>>112
副作用って書いたのはステートメント単位の話ね

each_charとcharsの違いはたかだか知れてるけど
インクリメントのたびに新しいHash作ってたら
100倍・1000倍のオーダーでパフォーマンス変わるよ
0119デフォルトの名無しさん
垢版 |
2017/05/08(月) 00:17:01.28ID:cPdEWfXE
Rubyではほとんどの場合injectだよな
reduceという名前で書きたい処理だと思ったことはRubyではまだないわ
名前重要、は組み込みライブラリにも適用されるのだ
0121デフォルトの名無しさん
垢版 |
2017/05/08(月) 01:16:43.69ID:RkG8OoQA
ループはwhile最強のはずと思ったけど、配列や文字列の添字参照は引数のパースにコストがかかるし
何文字目か数えないといけないからeach_charsのほうがマシだな
0124デフォルトの名無しさん
垢版 |
2017/05/09(火) 00:44:03.70ID:AJpeMRYn
>>123
長ったらしいな。

まず、Rubyは他の言語を参考にした。
map と collect、reduce と inject と2つあるのは
Lispを参考にした名前が、mapとrecude、
Smalltaikを参考にした名前が、collectとinjectである。
というだけだろう?
ここまででRubyの話は終わりじゃないか。
0126デフォルトの名無しさん
垢版 |
2017/05/09(火) 01:55:29.32ID:lu7Bmdm9
配列の関係でお聞きしたいです
http://ideone.com/ntTNm5
こんな感じで任意の文字列を受け取って、それを1文字ずつ分割するっていう動きなのですが

配列を使って繰り返そうとすると上手くいかないです
http://ideone.com/ePxuDp

どうすれば配列に値を返すことが出来るのでしょうか?
0127デフォルトの名無しさん
垢版 |
2017/05/09(火) 02:12:04.57ID:7rjXR/HL
スクリプトのちぐはぐさから見て、おそらくコピペ継ぎはぎだけで体系的な学習を全くしてないと思われる
書籍のたのしいRubyを買えとまでは言わないので、なんかどっか適当なアフィサイトででも勉強するといいよ
制御構造と変数のスコープについての勉強が足りない
第6章とか第7章とかそのへんまで読破だ
0128デフォルトの名無しさん
垢版 |
2017/05/09(火) 02:21:33.84ID:7rjXR/HL
最初のスクリプト修正
input = gets.chomp
s1,s2,s3 = input.split(" ")

a = s1.split(//)
b = s2.split(//)
c = s3.split(//)

p a,b,c

次のやつの例
input = gets.chomp
arr = input.split(" ")

result = []
arr.each do |s|
result << s.split(//)
end

result.each do |e|
p e
end

うまく処理が行われるように変数名を変えたのがポイントであるが眠いので説明はほかの人に譲る
とにかく基礎知識が足りないので焦らずにまずは変数とかそのへんの解説を読むのだよ
0129デフォルトの名無しさん
垢版 |
2017/05/09(火) 02:28:47.25ID:7rjXR/HL
追記、1行で書くアホが湧くかもしれないがその人は自分のことしか考えてないので現時点では無視してよい
あなたに必要なのは基礎なのだから
ではお先におやすみなさい
0130デフォルトの名無しさん
垢版 |
2017/05/09(火) 02:39:10.44ID:lu7Bmdm9
>>128
あ、新しく空の配列作っておいて
繰り返しの時に、分割した結果をその中に入れるっていう処理にすれば良かったんですね
ありがとうございました!
0131デフォルトの名無しさん
垢版 |
2017/05/09(火) 07:31:40.84ID:k6HrUJzH
違う
ローカル変数やブロック変数の動作を全く理解してないのだ
だから自己代入してバグっても何も思わない
0132デフォルトの名無しさん
垢版 |
2017/05/09(火) 07:34:19.28ID:WySm2t97
>>131
あー、確かにその辺は凄い曖昧ですね・・・・・・
もう一回その周辺含めて勉強し直します
013387
垢版 |
2017/05/09(火) 20:42:21.42ID:ptoav/qt
結局、会社出入のSIの担当に個人的にお願いしました。
10分で数行追加して解決してくれました。Win10の問題とファイル100ケ問題2点があったとか。
自分で解決するのは無理でしたね。

解決してくれた方には10万くらい謝礼を考えていたのですが、この方には辞退されてしまいましたので
二人で銀座のクラブで豪遊して、逆に初任給相当くらいぶっとばしてしまった・・・
孫の写真をEOS-1D X で撮影した数千枚をぜんぶYAhooBOXにに保管していて、家内に怒られており
苛立ってしまい、お騒がせして申し訳ございませんでした。
0137デフォルトの名無しさん
垢版 |
2017/05/10(水) 21:24:41.33ID:mz/WKowH
まともに取り合ってれば俺が10万もらえたんか?
0140デフォルトの名無しさん
垢版 |
2017/05/11(木) 22:46:17.95ID:SAAdjKtg
MonoにあるIronRuby(ir.exe)でRubyスクリプトを走らせようとすると

unknown: no such file to load -- gem_prelude.rb (LoadError)

というエラーが出て終了してしまいます。
どうすれば良いでしょうか?
0142デフォルトの名無しさん
垢版 |
2017/05/12(金) 00:42:07.19ID:lh1VWFPT
「gem_prelude.rb LoadError」で検索!

初心者は、paiza.IO, codepad などで、ブラウザでプログラミングするのが簡単
0143デフォルトの名無しさん
垢版 |
2017/05/12(金) 03:23:42.25ID:KfydbfhB
Rubyとは直接関係ないのですが
RubyMineの補完機能で、入力した段階で自動的に一番上が選択されるようにするにはどうすれば良いのでしょうか?
(IntelliJの方では最初から自動的に選択されてました)
RubyMineとIntelliJの比較
http://i.imgur.com/fgCFVJa.png
http://i.imgur.com/yv6XKJk.png

RubyMineを使ってる方で分かる方はいらっしゃらないでしょうか
0144デフォルトの名無しさん
垢版 |
2017/05/12(金) 19:32:54.36ID:HOHLzPdy
Rubyでスクレイピングしたいんですが、串がうまく動かないです。串はTorを使いたいと思います。

p "Creating tor agent..."
p "My raw ip address is #{Mechanize.new.get('http://ifconfig.me/ip').body}"
tor ||= TorPrivoxy::Agent.new '127.0.0.1', '', {8118 => 9150} do |agent|
begin
sleep 10
p "My ip address is now chenged to #{agent.ip}"
p tor.get("http://ja.wikipedia.org/wiki/Privoxy";).encode(Encoding::SJIS)
rescue
p "エラーです".encode(Encoding::SJIS)
end
end
0145デフォルトの名無しさん
垢版 |
2017/05/13(土) 06:47:49.32ID:nrviLaTM
どの行で、どんなエラーメッセージが出るの?

そのエラーメッセージで検索すれば?
0147デフォルトの名無しさん
垢版 |
2017/05/14(日) 09:32:49.01ID:4OWrar4G
標準的な動作で不足であるという場合
その不足な動作自体を満たすライブラリの有無を質問するのではなく
そもそも何のためにそれが必要だと考えているのかを述べてみなされ
0150デフォルトの名無しさん
垢版 |
2017/05/14(日) 21:59:53.35ID:YpRHpm2r
Rubyの作者の技術力ってどのくらいなの?
低くはないとおもうけど、そんなにたかくもないの?
0151デフォルトの名無しさん
垢版 |
2017/05/14(日) 22:07:52.12ID:2j/fEy8A
マルチスレッドや文字コード系はあんま詳しくないから詳しい人に手伝って貰ってたとか日経ソフトウェアの昔の対談記事で書いてたな。
ギークって程じゃないと言う印象。
0152デフォルトの名無しさん
垢版 |
2017/05/14(日) 22:11:20.20ID:3p+3tmMb
技術力は知らんが心の底からプログラミング好きなんだなぁとは思うな、言語オタクだから言語作ったそうだし
0153デフォルトの名無しさん
垢版 |
2017/05/14(日) 22:25:40.71ID:YpRHpm2r
>>151
マルチスレッドや文字コードの仕様もぜんぶ知ってないと、技術力は高いといえない?
日本で技術力が高い人ってどのくらいいるんでしょう。

Ruby作った人でも技術力が高くないといわれたら、道が険しすぎる。
0154デフォルトの名無しさん
垢版 |
2017/05/14(日) 22:32:18.91ID:DiPyQd5B
言語処理系、特にパフォーマンスを度外視したスクリプト言語の実装ってそんなに難しくないよ
Rubyの互換実装って驚くほど短期間で作られたりするし
0155デフォルトの名無しさん
垢版 |
2017/05/14(日) 22:40:30.08ID:0pt2h6WS
言語処理系の実装って、経験のない人はなぜかそれがすごく高度なことだというイメージを持ってるよな
やってみたらわかるけど、動かすだけなら意外と全然難しくないよ
ゲームとか作る方がずっと難しい
0156デフォルトの名無しさん
垢版 |
2017/05/14(日) 22:58:19.67ID:zv0DKnzD
思ったほどには「あらゆることを深く知っている」必要はないよね
言語作成センスと時の運とコミュニティへの頭の下げ方だと思うわ
0158デフォルトの名無しさん
垢版 |
2017/05/14(日) 23:24:09.84ID:Xbcx3KQE
>>151
おいおい、Matzをもって
> ギークって程じゃないと言う印象。
とは、本気か?おまえどんだけえらそうなの。

>>153
> Ruby作った人でも技術力が高くないといわれた
だれじゃ、そんなこと言ったのは。
初歩的なインタプリタは学生でも作れるけど、rubyぐらい完成度の高いのは無理だろ。
0159デフォルトの名無しさん
垢版 |
2017/05/14(日) 23:29:39.07ID:Xbcx3KQE
>>154
そりゃ仕様をまるごとパクって作れば短期間で作れるでしょ。理由がおかしい。
整合性のとれた言語仕様を考えるところがいちばん大変だろうに。

>>155
> 動かすだけなら意外と全然難しくないよ
だからといってrubyの作者がギークって程じゃないとは、ここはすごいプログラマの集まりですね。
0160デフォルトの名無しさん
垢版 |
2017/05/14(日) 23:44:43.80ID:SkVs727u
あらゆる分野においてエキスパートじゃないと技術があるとは言えない、と本気で思い込んでる
人がちらほらいるようで

そんなウルトラスーパーハカーなんて世界に何人いることやら
0161デフォルトの名無しさん
垢版 |
2017/05/14(日) 23:57:58.99ID:4upkAWVg
これでも貼ってみるか
マツドサイエンティスト・研究日誌 保存版 システムエンジニアリング(その4) 超人にならなくていい
ttp://anoda.web.fc2.com/weblog/20050424.html
日本は完璧主義だからか平気で完璧超人を求めるよね
0162デフォルトの名無しさん
垢版 |
2017/05/14(日) 23:58:21.34ID:aG/BUJsi
多分「完成度」の基準がみんなバラバラすぎて上手くコミュニケーションが取れてないな
Brainfuck系言語というか、いわゆる難解プログラミング言語みたいなジョークみたいな物だったら
確かに「実装」は簡単
が、Ruby、PHP、Pythoみたいに一つの主要言語にまで昇華させるには
言語設計まで含めてめちゃくちゃ大変な作業が必要になる

なので
Rubyっぽい、プログラム言語っぽく動く何かを作る→頑張れば出来る
RubyやPythonの設計思想を受け継ぎながら、独自の言語設計に基づいて言語を作る→並大抵の人間には出来ない代物
っていう感じかな「
0163デフォルトの名無しさん
垢版 |
2017/05/15(月) 00:04:17.64ID:6XCGPePS
>>158
だれだったか忘れましたが、ツイッターでだれか言ってました。
有名人?なのかな、それなりに有名っぽい人だったので、技術力の高い低いってどういう基準で判断するのかなと思って。
0165デフォルトの名無しさん
垢版 |
2017/05/15(月) 09:26:37.14ID:jzzH2kBs
RubyはMatzが数学苦手なのが良かった
結果、平均的なPGの頭に合った言語になった
頭の良すぎる人が作った言語は結局一部の人間のオナニーで終わっちゃう
FortranとかCとかJavaとかC#とかは頭の良い人たちが本気でボリューム層向けに作った完璧な「製品」だけど、
そういうのに比べるとRubyはまあ適度な頭の緩さが馴染みやすいよね
0166デフォルトの名無しさん
垢版 |
2017/05/15(月) 21:51:39.50ID:xoO/l6gC
>>164
誰っていわれても、ツイッターでみかけただけでどこのだれかまでは覚えてないです。
ごめんね。
たくさんのひとがリツイしてたから、自分で探したら出てくるかもよ。
0167デフォルトの名無しさん
垢版 |
2017/05/17(水) 01:45:08.88ID:y0sg8W2t
それいいな。俺も困った時に使ってみよう
たくさんのひとがリツイしてたから、自分で探したら出てくるかもよ。
0168デフォルトの名無しさん
垢版 |
2017/05/17(水) 04:25:58.23ID:Q6ZDgQU6
うーん、あまりにも初心者過ぎてあれなんだが、プログラミングを学び始めて
まずrubyを真面目にやろうと思ったんだ。他の言語もさわりはしたんだけどね。
でも、実際に環境を構築しようとrubyをインストールして、
環境変数のPathの設定も本の通りに確認したんだけど
実際に打つと#とかで内部コマンド〜ファイルとして認識されていませんって
出るんよ、 Pathって打ってみるときちんとCドライブのRubyのbinを
参照?してるんだけど・・・私はどこを間違えているんだろう。
0169デフォルトの名無しさん
垢版 |
2017/05/17(水) 05:58:15.48ID:AoGXWMN0
>>168
答えじゃなくてすまんけど感想を。
そういうことを聞ける場所が2chしかないのが残念だよね
Rubyを始める人のコミュニティってないものか
ずっとそういう場所を探している
0170デフォルトの名無しさん
垢版 |
2017/05/17(水) 06:20:15.54ID:Q6ZDgQU6
>>169
そですねー、私もまずコミュニティ的なものを探したんですけど
勉強会みたいなのはあるのに、こういった掲示板的なものは
みつけられないんですよね。初心者はわりかしきついですね。
相変わらず四苦八苦してますw
2chはマイナーなものは、あまり素人は歓迎されない気もしますね。
0172デフォルトの名無しさん
垢版 |
2017/05/17(水) 06:34:58.31ID:AoGXWMN0
>>170
無いなら作れってところなのだけど
それを作る技術を得るためには・・・
堂々巡りで困ってる

2chには妖怪が住んでいるからなぁ
0173デフォルトの名無しさん
垢版 |
2017/05/17(水) 06:50:32.62ID:AoGXWMN0
>>171
なるほど!

ruby -v
を試してみればいいんだな

#とかでという意味がよくわからないけど
0174デフォルトの名無しさん
垢版 |
2017/05/17(水) 06:53:25.51ID:+84GJVyA
きっと「#」で始まる行をコピペしてコマンドプロンプトにそのまま張り付けたんじゃないのかね
binにパス通ってるならirb起動すれば幸せになれるかもね
0175デフォルトの名無しさん
垢版 |
2017/05/17(水) 07:06:09.77ID:Q6ZDgQU6
>>171
あははw
いろいろあって混乱してたんだw
本にもテキストエディタで書けって書いてあったw
その前にPath関係の確認させられてたから勘違いしてしまった。
すごいあっさり大事なことが色々かいてあるとこ見逃してたw
C言語の勉強をrubyの勉強する前に触っておこうと思って
コンパイラに書いてたような感覚でやってしまったw
rubyのさわりもブラウザ上で書く感じの勉強だったんだ
だ、だから違うんよ?うん、違う違う。知ってた知ってた。
0176デフォルトの名無しさん
垢版 |
2017/05/17(水) 07:15:15.40ID:Q6ZDgQU6
まあ、初心者ってこういうくだらない質問するもんだから、許して笑ってくれさい。
そして、そういう初心者用のコミュニティは作れないっていうか、
初心者が作っても人集まらないだろうからここでできれば助けて下さい。
rubyスレ希少なんです・・・という初心者の声なのでした。
0177デフォルトの名無しさん
垢版 |
2017/05/17(水) 07:20:26.73ID:AoGXWMN0
>>176
俺はそういうのが作りたいんだー
0178デフォルトの名無しさん
垢版 |
2017/05/17(水) 07:21:52.55ID:AoGXWMN0
2chって「初心者」って言葉に食いつく妖怪もいるからなぁ
0180デフォルトの名無しさん
垢版 |
2017/05/17(水) 07:44:52.13ID:AoGXWMN0
>>179
それは見てなかったなぁ
よっしゃ
これからそこへ質問入れてみるぞ
0181デフォルトの名無しさん
垢版 |
2017/05/17(水) 07:53:53.40ID:S++XgTKO
>>172
掲示板を立ち上げること自体は難しくないけど、管理維持するには住人やISPなどのバックアップが必要不可欠
個人で運営する場合は、住人による自治が基本になるしそれで対応しきれない案件に関しては管理人やISPによる強権発動で対応
これらの支援を受けられなくなって久しいし、荒らしに対応できなくなるのは目に見えていて長期的維持を望めない

あと技術の初心者は構わないがコミュ力初心者は遠慮願わないと。今や「初心者は免罪符ではない」などと言われることも無くなったしなぁ・・・
0182デフォルトの名無しさん
垢版 |
2017/05/17(水) 07:55:53.94ID:AoGXWMN0
>>179
そこのRubyカテゴリは1ヶ月眠ってるがな
0184デフォルトの名無しさん
垢版 |
2017/05/17(水) 09:02:29.68ID:AoGXWMN0
>>183
teratailもstackoverflowも質問することがはっきりしてる場合なんだよね
ある程度のレベルがいるし。
Qiitaいいたっては聞くというより情報発信サイトかと思われる

でも
今Qiitaに登録したったw
0185デフォルトの名無しさん
垢版 |
2017/05/17(水) 10:02:00.71ID:vwwaD4yq
>>170
まずWindowsを使いこなせてないからだな
言語のスレだとみんな環境違うしそういう知識は身につかないかも
適切なとこ見てれば質問のしかた(必要な情報)もわかってくるはずだ
0186デフォルトの名無しさん
垢版 |
2017/05/17(水) 15:22:05.45ID:O9qCgXnQ
>>183
SOのjpはやめとけ
0188デフォルトの名無しさん
垢版 |
2017/05/17(水) 15:58:25.56ID:JDHyCaYk
日本語のスタックオーバーフローって検索の上位に出てこないイメージ
ってことは・・・・・・
0189デフォルトの名無しさん
垢版 |
2017/05/17(水) 18:45:28.28ID:AoGXWMN0
Ruby2.4のリファレンスマニュアルをダウンロードするにはどうしたらいいのー
0192デフォルトの名無しさん
垢版 |
2017/05/17(水) 19:24:12.98ID:AoGXWMN0
古いバージョンのマニュアルと最新のならダウンロードできるようになってるんだけどね
0193デフォルトの名無しさん
垢版 |
2017/05/17(水) 22:49:59.99ID:OcBoOJyM
>>164,166
どこの誰かは覚えてないといったけど、ふと思って探してみたら、あっさり見つかった。
ttps://mobile.twitter.com/kmizu/status/857032083046256641

> ソフトウェア分野一般に通じる「技術力」というのは実際には
> 存在しないのにあると信じられている幻想だと思う。その幻想が
> 広く信じられている結果として、たとえば著名プログラミング言語の
> 作者はスーパープログラマのように思われがちだとかいう現象が発生する。

たしかこれだった。
0194デフォルトの名無しさん
垢版 |
2017/05/17(水) 23:14:17.43ID:Id1y7eqA
JavaとかC#の作者は実際凄いらしいね
Matzは祭り上げられてる割にはRuby以外でほとんど実績らしい実績を聞かない
0195デフォルトの名無しさん
垢版 |
2017/05/17(水) 23:20:38.33ID:y0sg8W2t
JavaとかC#の作者の名前は?
Matz個人、人間一人と渡り合えるなんて、すごい人だろうね。
0197デフォルトの名無しさん
垢版 |
2017/05/17(水) 23:25:17.03ID:y0sg8W2t
「チーフアーキテクトは」ってことは
それ以外の役職の人がいるってこと?

Matz一人に対して複数の人があつまらないと
対抗できないってのはちょっと恥ずかしくね?
0200デフォルトの名無しさん
垢版 |
2017/05/17(水) 23:27:20.00ID:Noyf0zx+
コンパイラとインタプリタじゃ難易度全然違うしな。
C#の作者なんかはTurbo Pascal,同C,同C++,Delphi,C++Builder,Visual J++,VC#,TypeScriptと、言語もだけどライブラリも設計してる。
ベテラン中のベテラン。
センスも経験も数段上。
0201デフォルトの名無しさん
垢版 |
2017/05/17(水) 23:28:28.62ID:Noyf0zx+
あ、言語はオリジナルはC#とTypeScriptだけだから、コンパイラとライブラリの設計がほとんどやね。
0202デフォルトの名無しさん
垢版 |
2017/05/17(水) 23:30:32.17ID:zoT6JpA4
JavaとかC#はチームで作ったものだからね
基本的な部分はチーフがやったとしても全体を作り上げたのはチームだから
チーフがすべての部分についてウルトラスーパーハカーである必要はないんだよ
0203デフォルトの名無しさん
垢版 |
2017/05/17(水) 23:46:22.36ID:0i9RfNds
Javaは忘れたがC#はアンダース・ヘルスバーグって人が作ったもん、余談だがDelphi作った人だからC#はとてもDelphiくさい
0204デフォルトの名無しさん
垢版 |
2017/05/17(水) 23:54:49.77ID:q+Jp+PKK
日本人って何かにつけて神とあがめ立てて思考停止する奴が多いよね。なぜそうなのか、どうやったのかとか考えようとしない
0205デフォルトの名無しさん
垢版 |
2017/05/18(木) 00:02:07.55ID:d+oDyp66
4月に、Win10の、Windows Subsystem for Linux(WSL)の大きな更新があった。
誰か、WSLから、Rubyを使っている人、いる?

居たら、報告して

日経Linux 6月号に、WSL の特集あり
0206デフォルトの名無しさん
垢版 |
2017/05/18(木) 00:36:47.85ID:HnnQPjdl
>>193
ツイートが連続してて、そのリンクはろうとしたけどめんどくさいので、かわりにこれで。
ttp://i.imgur.com/uCg2V4P.png
だんだん思い出したけど、スーパーハッカーとかスーパープログラマーで調べてたんだった。
ルビーの作者でもスーパープログラマーじゃないなら、どうしていいのかわかんないな。日本にいなさそう。
0207デフォルトの名無しさん
垢版 |
2017/05/18(木) 00:42:18.01ID:mKKG/7h8
すごいプログラマだけどもスーパープログラマーという方向性の人ではないと思う
なんというか、仮面ライダーとウルトラマンくらい傾向が違う
だいたい正義の味方のだいたい超能力人間なんだけど、まとめると違和感
0208デフォルトの名無しさん
垢版 |
2017/05/18(木) 01:07:17.85ID:dz2c6KN5
>>206
プロの一流の選手を、ドラフトにひっかかりもしなかった三流が「あの選手は大したことない」と言ってるみたいな感じか。
たまにいるよな、こういうの。
0209デフォルトの名無しさん
垢版 |
2017/05/18(木) 02:12:28.50ID:k2/bnmai
こんなレベルの人の集まりかと思わせる雑談だな
これもパートスレの弊害だろ
0211デフォルトの名無しさん
垢版 |
2017/05/18(木) 07:40:51.40ID:HnnQPjdl
>>208
どちらかというと、半分以上は嫉妬心だと思う。つまりやっかみ。
大学の演習で作るようなレベルのものと、世界中のサービスで使われるレベルのものとでは、難易度がはるかに違うのにな。
0212デフォルトの名無しさん
垢版 |
2017/05/18(木) 07:58:52.21ID:jHW9tOS8
設計技術と実装技術って無関係とは言わずとも別物だけど区別出来ていない人は多い
プログラミングは後者である
0213デフォルトの名無しさん
垢版 |
2017/05/18(木) 07:58:54.30ID:uGmNBL+O
Matzさんはプログラミング言語の知識は凄いけど最適化周りは今一つってのは共通認識だと思っていたが…昔からずっと「Rubyは遅い」って皆でブーブー言ってたじゃない
でも前者の能力持ってる人は稀有だからやっぱりスーパープログラマーに違いないと思うよ

アニメーターの大塚康生さんが「宮さん(宮崎駿)は描くの早いけど絵は上手くない」って評してるけどMatzはプログラミング言語界の宮崎駿みたいなもんだよ
ある方向は秀でてるけどある方向はそれほどでもない。だけどスーパー○○には違いない
0214デフォルトの名無しさん
垢版 |
2017/05/18(木) 08:10:53.60ID:jHW9tOS8
Rubyが遅いのはコーディング技術の不足よりシステム設計の制約だと思っていたけど違うのか?
あのシステム設計がJIT化の障害にもなっているみたいだし、Intelのプログラマー陣に書かせたら
爆速に!とはいかないと思うんだが
0215デフォルトの名無しさん
垢版 |
2017/05/18(木) 08:52:05.04ID:a7kCQWZC
愚直なプログラミングだからドキュメントなしでやってこられたけど、未だにドキュメントが完成してないのは驚きである
0216デフォルトの名無しさん
垢版 |
2017/05/18(木) 09:02:19.96ID:mKKG/7h8
○○がないなんて非常識で公式やる気なさすぎでウチでは使えないよ、という人たちにスルーされたからこそ今があるのでは
Linuxみたいなもんだw
0218デフォルトの名無しさん
垢版 |
2017/05/18(木) 10:21:34.30ID:k2/bnmai
いまさらかもしれないがプログラマってすごく偏ってるのかな
存在も考え方も
0219デフォルトの名無しさん
垢版 |
2017/05/18(木) 12:17:40.22ID:nGaj6J50
C#の作者は普通の企業戦士としてクソ有能らしいね
ハッカーやアーキテクトとしての専門的技能を十二分に備えた上で、
マネージャとしてチームを率いて製品を作り上げられる超人
0220デフォルトの名無しさん
垢版 |
2017/05/18(木) 15:06:50.15ID:6nNpr9wz
Rubyが普及(ω)したのはドキュメントを書かなかったからだよ
0221デフォルトの名無しさん
垢版 |
2017/05/19(金) 00:02:38.38ID:JAygot/q
軽々しく他人のことを神だの超人だの言っちゃう人って実力は大したことないのにプライドだけ高いんだなろうな
しかも多分その自覚が無い。自分の能力が大したことないことを自覚できていればそういう表現の仕方はしないはずだし
神格化するより研究し自分の能力を伸ばすことを考えるはず
0223デフォルトの名無しさん
垢版 |
2017/05/19(金) 01:45:17.48ID:ge9DZPXJ
よっぽど何かコンプレックスあるんだろうねこの人

ああ、この人ってのはこのスレに何日も同じようなことグチグチグチグチとえんえん書き続けてる人ね
0224デフォルトの名無しさん
垢版 |
2017/05/19(金) 06:30:50.15ID:eboDhNue
矛盾を含んだ文章ってスパゲッティコードみたいだよね
0225デフォルトの名無しさん
垢版 |
2017/05/19(金) 06:33:50.64ID:eboDhNue
そうだ
Rubyが好きなのは
Pythonみたいにインデント強制されないし
Javaみたいに大文字小文字まで強制されないからなんだ
0226デフォルトの名無しさん
垢版 |
2017/05/19(金) 08:24:53.47ID:wMmgU2C4
>>206
なんで時系列が逆順なんだよw
2chでも古い書き込みが上で新しいほど下になってるだろ。
そのほうが自然なんだからそうしろ

>>223
>よっぽど何かコンプレックスあるんだろうねこの人
成功した人に嫉妬してる暇があれば自分で何か作ればいいのに、そうする人は少ない
0229デフォルトの名無しさん
垢版 |
2017/05/19(金) 23:21:36.00ID:vjfQYplO
実際に結果を出した人は
その結果の現実における実在性から人生に安定感なり心の余裕が出てくるように見えますよね。
0230デフォルトの名無しさん
垢版 |
2017/05/19(金) 23:29:01.51ID:JAygot/q
本当の天才や神もたまにいるけどきわめて稀。ほとんどの場合は普通の能ある人
大抵の場合聞き上手&話し上手でコミュ力が高いのと論理的な思考・判断が出来る

嫉妬している暇があるなら成功している人を分析した方が建設的だし結果を出す近道だろう
0232デフォルトの名無しさん
垢版 |
2017/05/20(土) 04:52:57.18ID:Gofa0r8M
キチガイか・・・
この言葉の取り方も人それぞれだろうけど。

もっと適当な新しい言葉はないものかね
ネットコミュニティで使えるような・・・
粘着、凝り固まった、共鳴しがたい論理、複数人を装うタイプ
ついでに嫉妬、妬みもいれとこか
そんな人をいう言葉
0233デフォルトの名無しさん
垢版 |
2017/05/20(土) 05:05:32.15ID:Gofa0r8M
そんなことより
誰かマジで教えてくれないか

herokuでRubyを動かしたいんや
RoRじゃなくてただのシンプルなRuby
Ruby環境のあるレンサバだとindex.rbで動くやん
あれと同じようにwebページを表示したい

windows7でやってる
gitでpushまでは出来るのだけど
どうしてもトップページが表示できない
Qiitaとかの情報はぐぐりまくってるいのだけど
ピッタリのものはない
php,node.jsがQiita情報では優勢や

rackというのがキーワードだということまではわかった
Gemfile,Gemfile.lock,Procfile,config.ru
も整えたつもりなのだけど
中身がまずいんやろなぁ

もういちど書くけど
RoRじゃなくて素のRubyで
一番シンプルにsinatraとかフレームワークを使わずに
herokuでindex.rbをトップページに表示したい
0234デフォルトの名無しさん
垢版 |
2017/05/20(土) 05:11:20.26ID:Gofa0r8M
>>233
これだけじゃ意味が伝わらないかもしれないから
やってることをわかってもらえるようなgithubを
24時間以内に用意するわ
なんせrubyもgithubもherokuもやり始めたばかりの素人なもので
ちょっとしたことでも時間がかかるので24時間以内な
0235デフォルトの名無しさん
垢版 |
2017/05/20(土) 05:17:48.16ID:Q4Q/cnZ9
そして一年が過ぎた・・・
0236デフォルトの名無しさん
垢版 |
2017/05/20(土) 05:46:34.75ID:WmFfeyqJ
chef, vagrant から、VirtualBox で、Linux

それか、4月に、Win10の、
Windows Subsystem for Linux(WSL)の大きな更新があったから、WSLでするとか?
0237デフォルトの名無しさん
垢版 |
2017/05/20(土) 06:58:20.85ID:S1Z+OH1L
IniFile使って初期化ファイルに"a\\b\\c\\r\\z"と書き込んで読み出してみたら
"a\\b\\c\r\\z"になっててハマったという愚痴
0241デフォルトの名無しさん
垢版 |
2017/05/20(土) 19:00:59.25ID:Gofa0r8M
>>239
それは見てなかった
でも最初の設定のgithub元はRailsのようだ
もっと単純にやりたい
どっちかというとこれに近いと思う
http://qiita.com/higuma/items/9baac9e97eeb862ef64e
これどおりにしても動作しなかったけど。
0242デフォルトの名無しさん
垢版 |
2017/05/20(土) 19:02:15.16ID:Gofa0r8M
>>240
先のステップの課題として覚えておくわ
0243デフォルトの名無しさん
垢版 |
2017/05/20(土) 22:54:23.09ID:Gofa0r8M
233の続き
誰かが間違いを指摘してくれることに望みをかけてここに公開する
244のqiitaを参考にしているのだけど
やったこと
githubは
https://github.com/sasisu/aiue01
これからherokuの方へdeploy
そうすると
https://aiue01.herokuapp.com/
このAplication errorのページになる
herokuはheroku/rubyのBuildpacksを適用

何かが足りないか間違えてるか
それとも全く勘違いなことをしているのか
わからない 👀
Rock54: Caution(BBR-MD5:b95868ef2c0ed5e765a4d10ada4cf289)
0245デフォルトの名無しさん
垢版 |
2017/05/21(日) 02:01:38.54ID:1evlh7eH
Herokuの説明書を読んだら?

それか、自分が書いたファイルに、1行ずつ、p を書いて、
変数の内容を表示するとか

まず、どこでエラーが起きたのか、切り分ける。
それがデバッグの基本
0246デフォルトの名無しさん
垢版 |
2017/05/21(日) 07:01:26.49ID:kt8opZkV
>>245
まぁな
0247デフォルトの名無しさん
垢版 |
2017/05/21(日) 21:55:20.21ID:kt8opZkV
24時間経っても>>243の応答が無いのでリンク先は削除しておきます

これからレスをしてもらってもすぐには見れないと思うので。
0248デフォルトの名無しさん
垢版 |
2017/05/22(月) 08:26:38.46ID:oFkfOiZj
>>206
これはScalaの有名な人だね。調子こいたことを言ってMatzにたしなめられることが複数回あったようだから、逆恨みしてるんだろう。

なお有名な言語の作者たちは互いに尊敬しあってるよ。一流ってそういうもの。
0249デフォルトの名無しさん
垢版 |
2017/05/22(月) 21:31:51.11ID:fASqKLCq
1.8.xの頃の拡張ライブラリを最近の2.x.xで使えるように改造したいのですが
Rubyの各バージョン間の拡張ライブラリのインターフェイスの差異がまとまっている資料とかないですかね?
0250デフォルトの名無しさん
垢版 |
2017/05/22(月) 23:55:24.58ID:ENAWgACr
『Rubyレシピブック 第3版 303の技』という本を書店に残っているのを偶然見つけたのですが
Ruby1.8〜1.9、JRuby1.5を対象にしているとあり
現行の2.2系、2.3系と互換性があるのかが分からず購入を迷っています

またもしあれば1.8系、1.9系、2.xx系以降の互換性や追加機能をまとめたサイトなどがあれば教えて欲しいです
0251デフォルトの名無しさん
垢版 |
2017/05/23(火) 00:15:49.33ID:9lq+WTHz
プロジェクトマネージャーとしては絶望的にセンスが無いとは思ったことはある。
0252デフォルトの名無しさん
垢版 |
2017/05/23(火) 01:52:19.84ID:OOs1u3xZ
Ruby2.0なら使えるんだけどね
それ以前のは「どうして使えないのか」「どこを変えればいいのか」の手間と情報の加減上全く勧めない
問題は2.xの逆引きレシピ本のいいのが現行では無いことだが
0253デフォルトの名無しさん
垢版 |
2017/05/23(火) 05:16:29.68ID:ZEoEO5ey
レシピ本には、そんな長いコードは載っていないから、
動かなければ、自分ですぐに修正できるのでは?

数値を3桁ずつ、カンマ区切りにする関数は、参考になった

Railsの1日後とか、良いよな。
1.days.from_now
0255デフォルトの名無しさん
垢版 |
2017/05/23(火) 08:14:22.26ID:Mb7W8Mqo
>>252
やっぱり2.x系のもので無いと互換性が厳しいですか・・・・・・
新しいレシピ本が出るまで見送りたいと思います
0256デフォルトの名無しさん
垢版 |
2017/05/23(火) 16:42:43.02ID:xunAucQT
Ruby で文字列が英数字とハイフンのみで構成されていることの確認 (バリデーション) を正規表現を使わずに実現するのに、
string.delete("a-zA-Z0-9-").empty?
っていうやり方でとりあえず間に合わせてるんだけど、他にスマートな書き方ある?
0257デフォルトの名無しさん
垢版 |
2017/05/23(火) 16:55:02.24ID:UVgxThtR
正規表現を使わない理由がわからないと
何言ってもそれはなしでと言われそう
0260デフォルトの名無しさん
垢版 |
2017/05/23(火) 17:12:57.96ID:/kxvtD+k
>>258
おお、情報ありがとう!
こんな感じかな。
たしかに処理的にだいぶ分かりやすくなったかも。

string.count("^a-zA-Z0-9-").zero?
0261デフォルトの名無しさん
垢版 |
2017/05/23(火) 17:22:10.11ID:/kxvtD+k
>>257
どうしても正規表現を使わないと実現出来ない処理でもないんじゃないかと思ったのと、セキュリティ的にチェック漏れが怖いっていうのが理由かな。
正規表現に詳しくて、間違いない自信があれば正規表現でも良いんだけど、俺にはその自信がない。。
0262デフォルトの名無しさん
垢版 |
2017/05/23(火) 17:25:33.79ID:/kxvtD+k
>>259
たしかに ascii_only? だとやりたいことに近いけど、アンダーバーとかその他記号も OK になっちゃって、希望する判定基準とは少し違ってきてしまうんだよね。
0264デフォルトの名無しさん
垢版 |
2017/05/23(火) 17:43:19.80ID:OOs1u3xZ
「ヒットしてほしい正規表現にマッチするかどうか」で書かれてたほうがよっぽど漏れがないし間違いがないしコードとしても明瞭で安心すると思うがね
countの引数の仕様は知ってる? あれってtrというUNIXコマンドと一緒なんだよ
アレに頼って長々書かれるよりは正規表現のほうがいいな俺は
0265デフォルトの名無しさん
垢版 |
2017/05/23(火) 18:18:44.65ID:/xgNS39l
OK な文字列以外はどんな含まれ方をしていようと一概に弾くように、delete とか count で OK な文字列だけを列挙する指定の仕方を考えたんだけど、よく考えるとそれでも抜けがある可能性は依然として否定できないわな…
正規表現を使うか使わないかは宗教的な話になりそうだけど、テストコードを書けっていうのはまさしくその通りだわ。
0266デフォルトの名無しさん
垢版 |
2017/05/23(火) 23:55:10.87ID:ZEoEO5ey
JavaScript では正規表現だな

2回以上、同じ正規表現を使うなら、
コンパイルを1回だけして、使いまわすことで、やや速くなる
0267デフォルトの名無しさん
垢版 |
2017/05/24(水) 00:37:22.71ID:NrN6swuV
evenArry, oddArry = [], []
ARGV.each_with_index{|arg, i|
evenArry.push(arg) if i.even?
oddArry.push(arg) if i.odd?
}
evenArry.zip(oddArry){|x, y| print [x,y] } if evenArry.size < oddArry.size
oddArry.zip(evenArry){|y, x| print [x,y] } if evenArry.size >= oddArry.size
puts

このコード、Pythonのzip関数は短い方に合わせてくれるのに、rubyのzipメソッドが長い方に合わせて、
短い方の不足分に勝手にnil入れるから、長さ比べて短い方でzipメソッド使うようにしてるんだけど、nilを省くメソッドあったら一行浮く。
何か良いメソッド知りませんか?
0268デフォルトの名無しさん
垢版 |
2017/05/24(水) 01:20:48.51ID:n3q9H30C
>ruby tes.rb 11 22 33 44 55 66 77
["11", "22"]["33", "44"]["55", "66"]
という出力をしてほしいだけなら
ARGV.each_slice(2).take_while{|e| e.size == 2}.each{|a| print a}
0270デフォルトの名無しさん
垢版 |
2017/05/24(水) 09:26:39.05ID:Qxrl1z8p
>>268
おお!
次世代言語スレで紹介して貰ったやつのエラー出ない版ですね?
そっちが動くならそっちが良いですね。

>>269
compactですか。
まさに小さい方に合わせるっぽいメソッド名。

両方コードで試してみます。
ありがとうございました。
0272デフォルトの名無しさん
垢版 |
2017/05/27(土) 04:40:36.04ID:SdHoYqqp
rubyからWin32APIのGetLastErrorを使用したいんだけどエラーが出てしまう。
どうしたらいいか教えてください。。
module WIN32API
extend Fiddle::Importer
dlload 'C:\\Windows\\System32\\user32.dll'
extern 'short GetKeyState(int)' #こっちはOK
extern 'char* GetLastError()' #こっちはNG
end

--以下エラー
cannot find the function: GetLastError() (Fiddle::DLError)
0273デフォルトの名無しさん
垢版 |
2017/05/27(土) 05:15:11.73ID:6GQ16ypm
「user32.dll getlasterror Win32API」で検索!

Library - Kernel32.lib
DLL - Kernel32.dll
には、有りそうだけど、user32.dll には、あるかどうか分からない

DllImport("kernel32.dll", SetLastError = true)
0274デフォルトの名無しさん
垢版 |
2017/05/27(土) 06:45:17.62ID:SdHoYqqp
>>273
早速ありがとうございました!
無事読み込めました。。。
参考までに修正版のコードはこちらです。

module WIN32API
extend Fiddle::Importer
dlload 'user32.dll','kernel32.dll'
include Fiddle::Win32Types #DWORDとか使えるようにする
include Fiddle::BasicTypes
extern 'DWORD GetLastError()'
end
WIN32API.GetLastError
0275デフォルトの名無しさん
垢版 |
2017/05/27(土) 10:22:39.80ID:SdHoYqqp
すみませんもう一つ教えてください。
SendInputを使って最終的にはマウス入力/キーボード入力を行おうと考えていますが
うまくいきません。何がおかしいのでしょうか。。
---
module WIN32API
extend Fiddle::Importer
dlload 'user32.dll','kernel32.dll'
include Fiddle::Win32Types
extern 'int SendInput(int,void* ,int)'
extern 'DWORD GetLastError()'
MOUSEINPUT=struct(["DWORD type","int dx","int dy","DWORD mouseData","DWORD dwFlags","DWORD time","ulong dwExtraInfo"])
end
module SendKey
INPUT_MOUSE = 0x00000000
MOUSEEVENTF_ABSOLUTE = 0x00008000
MOUSEEVENTF_MOVE = 0x00000001
end
input = WIN32API::MOUSEINPUT.malloc
input.type=SendKey::INPUT_MOUSE
input.dx=500
input.dy=500
input.dwFlags=SendKey::MOUSEEVENTF_ABSOLUTE|SendKey::MOUSEEVENTF_MOVE
p WIN32API.SendInput(1,input,28) #出力:0 備考:sizeof(MOUSEINPUT)=28
p WIN32API.GetLastError #出力:87(パラメータが間違っています。)
-----
0278デフォルトの名無しさん
垢版 |
2017/05/27(土) 12:46:05.61ID:SdHoYqqp
Win32API非推奨なんですね。。
ググってみた感じいまはWSHSHELLとかでしょうか?
ちなみにRubyは64bit版を使ってました。。。
0279デフォルトの名無しさん
垢版 |
2017/05/27(土) 13:10:51.88ID:reRwAhMh
非推奨とか言い出したらそもそもWinでRuby自体がアウトだから気にしなくてよい
0280デフォルトの名無しさん
垢版 |
2017/05/27(土) 13:21:59.20ID:olQh0zw8
>>272 >>274
そもそもGetLastErrorは最後に呼んだAPIのエラーだから
rubyみたいに前後の行の間で何呼ばれるかわからん環境でまともなエラーとれるとは思えない
0281デフォルトの名無しさん
垢版 |
2017/05/27(土) 14:00:44.16ID:4VVIqOhp
意図するライブラリがロードされていない or 意図しない関数がコールされているんじゃないか?

C/C++で同じ動作をするコードを書いて何のファイルのどの関数が呼ばれているのか調べた方が良さそうな気も
Rubyから呼ぶ場合に限らずその辺の管理は全てプログラマ任せの上に純正のSDKやIDEの支援も得られないしな

あとWindowsAPIを叩いて作業するならWindowsSDKはほぼ必須
0282デフォルトの名無しさん
垢版 |
2017/05/27(土) 15:09:14.53ID:6GQ16ypm
>p WIN32API.GetLastError #出力:87(パラメータが間違っています。)

カッコを付ければ?
p WIN32API.GetLastError()
0284デフォルトの名無しさん
垢版 |
2017/05/28(日) 10:53:17.15ID:pzrDxs4u
case文でgetsを使って入力を受け付けたいとき日本語ってどうするんです?
hand = gets.chomp
case = hand
when "あ"
puts "グー”
.
.
.
else
puts "反則"
end
例えばこんな感じの簡単な文だけど
"あ"の中身の部分を1にしたり
そもそも .to_iにして数値にしたりすると
ちゃんと働いてくれるから
そもそも日本語入力はなにかいるんじゃないか、もしくはできないんじゃないか
と思っていて、検索してもわからんのです
0286デフォルトの名無しさん
垢版 |
2017/05/28(日) 11:38:33.26ID:nOYRngqN
print "input anything and Enter> "
input = gets.chomp
puts "default file encoding:"+ __ENCODING__.to_s
puts "actual external encoding: " + input.encoding.to_s

実行結果 (Windowsコマンドプロンプトで単に ruby test.rb と実行)
input anything and Enter> nya-
default file encoding:UTF-8
actual external encoding: Windows-31J

ということで文字列のエンコーディングが違うので別物だと思われてる
Windows-31Jの「あ」とUTF-8の「あ」は比較上別物になる
irb> str = "にゃー"
=> "にゃー"
irb> str.encode("Windows-31J") == str.encode("UTF-8")
=> false
「Rubyの文字エンコーディング」について調べて自分で理解するんだ
これはここでちらっと「おまじない」を述べても逆に泥沼になるぞw
0287デフォルトの名無しさん
垢版 |
2017/05/28(日) 11:47:56.51ID:pzrDxs4u
>>285
ごめん=はいらんね
まちがえて打ってしまった。それは元の方では書いてない
>>286
よくわかんないけど、とりあえず先に進むよ。
逆に今、文字エンコーディングについて調べても理解出来る自信がないし、
おまじない、もいづれ出てくるかもしれない。
わいみたいな本物初心者にも答えてくれて
ふたりともありがとう。
0288デフォルトの名無しさん
垢版 |
2017/05/28(日) 11:52:43.05ID:pzrDxs4u
しまった「いづれ」ではなくて「いずれ」だった、なんかこういうミスのほうが
恥ずかしい・・・
しかし文字エンコーディングの件で気になったけど
それは文字コードを指定している場合でも・・・?
なんか最初にそれこそ、そこをおまじないと言っているのかもしれない
けど、# coding: utf-8
みたいなの書いとけって言われるじゃない。
文字化けしないようにとか、そんな感じで。
0289デフォルトの名無しさん
垢版 |
2017/05/28(日) 11:55:12.07ID:rKaPw5GE
狭義的にはスクリプトファイルのエンコーディングと外部入力文字列のエンコーディングを揃えないといかん
STDINのエンコーディングをスクリプトファイルのエンコーディングに合わせるのが楽だと思う
ruby -E UTF-8 hoge.rbでスクリプト起動しろ
getsで入ってくる文字列が全部UTF-8になる
0290デフォルトの名無しさん
垢版 |
2017/05/28(日) 12:39:36.05ID:pzrDxs4u
>>289
ちょっとわかんなかった。
色々言っていることの推測はしたんだけど、
そんなファイルねーよ!からはじまり
そんなエンコーディングネーム知らんといわれ、ランタイムエラーといわれ
あ、コマンドプロンプトって文字コードシフトJISとかいうのだから
あかんのかな?って思って
utf-8にしてみたけど、判定がelseに行くのだった。
あははは。
わざわざありがとう。でも、私初心者だからだめみたいだぜ。
おまえなんかwhile文の勉強でもしてなさいってことだと思うわ。
0291デフォルトの名無しさん
垢版 |
2017/05/28(日) 12:55:41.60ID:cMT8Sa9/
コマンドプロンプトなら"chcp 65001"しないと駄目なんじゃない?
ちょっと手許にwindows機ないからわかんないけど
0293デフォルトの名無しさん
垢版 |
2017/05/28(日) 15:22:51.06ID:aUadI2mt
VSCode使っている人いない?

デバッグモードでのgetsのって値入力処理はどうすればいいのか分からなくて困っている。
0294デフォルトの名無しさん
垢版 |
2017/05/28(日) 16:49:16.07ID:rKaPw5GE
STDIN/STDOUTのねじ曲げは現行のIDEでVSCode「でだけ」できない
素のRubyではできるのにね

require 'stringio' if $DEBUG
$stdin = StringIO.open("にゃーん".encode("Windows-31J")) if $DEBUG

puts "You are a cat" if gets.chomp == "にゃーん".encode("Windows-31J")
0297デフォルトの名無しさん
垢版 |
2017/05/28(日) 18:57:58.47ID:QwjzxVOm
コマンドプロンプトは、Windows-31J, CP932 か

PowerShell, PowerShell_ise は、UTF-8 じゃないの?
0298デフォルトの名無しさん
垢版 |
2017/05/28(日) 22:05:31.04ID:OcOYN7N8
windowsで真面目にRuby使うならコマンドプロンプトのままじゃ辛い
コンソールエミュで良さそうなの探して入れると良いよ
0300デフォルトの名無しさん
垢版 |
2017/05/29(月) 01:06:21.43ID:zS+u+zXg
出力はワイド文字に変換してくれるのでpythonみたいにchcp 65001しなくていいから楽ちん。
入力は気を利かせてくれてないから、$stdin.set_encodingで設定したほうがいいかな
あとはARGVとかDirで取得するファイル名とかをデフォルトでUTF-8にしてくれたらうれしいな
全般的にWindowsに気を利かせてくれているけど、そのノウハウをまとめたページがないから
不親切に見えるだろうな
0301デフォルトの名無しさん
垢版 |
2017/05/29(月) 13:33:58.90ID:SjlSz+oM
ネットにはデマ情報がいっぱい残ってるので正しい情報をメモ
cmd で UTF-8 使える方法 (chcp 65001 について) ttp://nazochu.blogspot.jp/2011/08/blog-post_26.html
mintty ttp://dogmap.jp/2011/11/15/mintty/
mintty ttp://tanakh.jp/posts/2011-11-15-windows-terminal.html

色々紆余曲折あったけど Git インスコして GitBash 使うのが一番楽っぽい
https://git-for-windows.github.io/
0304デフォルトの名無しさん
垢版 |
2017/05/29(月) 19:14:35.71ID:ZV+SCRde
今回の民法改正、ソフトウェア受託開発の場合、(検収後ではなく)バグ発見後1年瑕疵担保責任があるということで、地獄かよ、と思ったが、
元々問題が起きがちな受託案件がビジネス的に成立しなくなることで強制的に業界再編につながるなら良いことかもと思うようになった。
一部で地獄を見ても。
https://twitter.com/yukihiro_matz/status/869061879389343744
0309デフォルトの名無しさん
垢版 |
2017/05/29(月) 21:50:13.10ID:0c0Yo+hh
個々の契約のほうが優越なのだからふつうはそんなに問題は起きない
最低最悪のラインを決めただけ
いちばん騒いでるのが働いたことのない人といういろいろ縮図なやつだ
0310デフォルトの名無しさん
垢版 |
2017/05/29(月) 22:06:06.39ID:LfszU9UW
>>309
最低最悪ではなく、平均では?
労働基準法みたいな契約より優先されるものが最低最悪で。
0311デフォルトの名無しさん
垢版 |
2017/05/30(火) 09:22:17.83ID:hVv0NVyW
客が瑕疵担保責任法の法改正を知ってくると思うから、今後5年無償保証をお願いされるだろう
営業がそれでも仕事を取ってこれるか?たぶん無理だろう。無限の直していたら赤字になる。
こういう保守に弱い言語、ころころ仕様が変わる言語は仕事として発生しなくなってくる。
これは変わり目だ。お前らも早く逃げたほうがいいぞ。RubyやPHPなど動的言語は確実に廃れる。
保守に強い言語のみ生き残れる。
0312デフォルトの名無しさん
垢版 |
2017/05/30(火) 10:25:03.46ID:gxWnkgCC
客が瑕疵担保責任法の法改正を知ってくると思うから、今後5年無償保証をお願いされるだろう
営業がそれでも仕事を取ってこれるか?たぶん無理だろう。無限の直していたら赤字になる。
こういう保守に弱い言語、ころころ仕様が変わる言語は仕事として発生しなくなってくる。
これは変わり目だ。お前らも早く逃げたほうがいいぞ。RubyやPHPなど動的言語は確実に廃れる。
保守に強い言語のみ生き残れる。
0313デフォルトの名無しさん
垢版 |
2017/05/30(火) 13:25:40.32ID:KV35bhXw
保守に強いとか関係ないだろ
結局は技術力が高かろうと
エラーは出るからな
0316デフォルトの名無しさん
垢版 |
2017/05/31(水) 23:19:57.63ID:X74K7lOs
るびまの ePub 版ってないの?
たまに話題に出てたり個人的にやってる人はいるみたいだけど。
0317デフォルトの名無しさん
垢版 |
2017/06/01(木) 03:04:21.50ID:TLZ7U8Co
>>308
民法程度なら上書き可能……客の説得が面倒になる、という話だけど
ライブラリのバージョン変えても動くこと、という要件は突っぱねれば5年は持つわね

そりゃどこぞの誰かさんが書き換えてるのに同じように動くかどうかわかりませんわ
こっちが確認したのは特定のバージョン決め打ちでっせ、とね

>>312
C#とJavaは耐性強そうだ

Pythonはダメだ(2のを3でも対応する系クソゴミ改修案件をやった人の意見)、グイドは自称するほど互換性を大事にしねぇ
「もう二度とやりません」と、Cバインディングをぶっ壊したのととString-Bytesでいいやがったんで、次もやる
0318デフォルトの名無しさん
垢版 |
2017/06/01(木) 12:09:40.74ID:o/dQD8LP
>グイドは自称するほど互換性を大事にしねぇ

2から3の書き換えの感想でそんなこと言ってるのか
頭沸いてんな
0319デフォルトの名無しさん
垢版 |
2017/06/01(木) 17:59:48.16ID:VtNuZqDV
>>316
そんなことできるのね
チャレンジしようぜ
0320デフォルトの名無しさん
垢版 |
2017/06/01(木) 18:02:47.78ID:VtNuZqDV
あっ 勘違いしてた
「るびま」と書いてあったな
オレが関心あるのは「るりま」の方だった
0321デフォルトの名無しさん
垢版 |
2017/06/01(木) 18:14:59.52ID:n7u6yBLf
るりまは元が html5 になってるみたいだし、
メタ情報をちょろっと追加してパッケージングすりゃ ePub になるよ。
そんなに難しいことじゃない。
0322デフォルトの名無しさん
垢版 |
2017/06/02(金) 09:51:10.10ID:8FvNWFqN
>>321
教えて欲しいんだけど
例えば2.0.0のバージョンのドキュメントをまとめてダウンロードするにはどこに行けばいいんだろ?
https://www.ruby-lang.org/ja/documentation/
0323デフォルトの名無しさん
垢版 |
2017/06/04(日) 07:56:22.18ID:4B60732N
書き込みできない?
0324デフォルトの名無しさん
垢版 |
2017/06/04(日) 07:57:07.55ID:4B60732N
322はできることなら削除したい
もうレスを確認する為にここに来ることはない
0325デフォルトの名無しさん
垢版 |
2017/06/06(火) 19:13:48.69ID:wrPFF999
windowsでirb使うとき何か一文字打たないと
↑キーで履歴が出ないんだけど何とかならない?
ググってreadlineとかbinに入れてみたけどダメだった
0327325
垢版 |
2017/06/08(木) 21:11:29.66ID:cdZWf+lt
マジか。>>325はActiveScriptRubyだがいろいろ試した結果(環境はWin7 32bit)
ActiveScriptRuby 出ない
+ readline.dll 出ない
RubyInstaller 出ない
+ readline.dll 出る
0328デフォルトの名無しさん
垢版 |
2017/06/16(金) 16:28:56.85ID:qOsPLqtM
うちのRubyInstaller2(Win8.1)ではirbやpryは大丈夫
jirb(JRubyのirb)は何か一文字打たないと↑が反応しない
あとruby -pe ""も何か一文字撃たないと駄目な模様
0330デフォルトの名無しさん
垢版 |
2017/06/17(土) 14:36:25.65ID:qMkdrUOQ
過去に一度だけプチブームになったことがあったんだけど
その原因と、そのあと下火になった理由を探求するとかかな
駄目と分かっている人は初めから駄目だよ、って言ってたんだけど
残念ながら世の中の全員が賢明というわけではなかったから
やはり、一過性のブームとか、時代でとか、そういうのはあるもので
今から追体験したければRubyはよい選択だと思うよ
ただ、さっきも書いたけど、全員が間違ったわけじゃないんだよ
半数以上かそれ以上の人はダメって初めから言ってたんだよ

あとはMarzの勉強かな
あの人、頭の弱い人を騙すことに関してはものすごい技術を持ってるから
そういうのに興味があればって感じ
具体的には「モノ」を中心に考えさせて、大事なものを見えなくさせたり
一見効率的に見えて実は遠回りっていう「局所解」に追い込んだりするその手法
おもしろいのはRuby3.0をどうするのか、なぜか今本人も困ってるところ
人を呪わば穴二つって言うように、他人を追い込むツールを作ってるつもりで
自分自身もまた追い込まれるってのは在るみたいね
0332デフォルトの名無しさん
垢版 |
2017/06/17(土) 16:22:03.43ID:b4+zDofQ
>>329
日本人の場合
あらゆる言語の中で一番易しいプログラミング言語
(子供用のおもちゃを除く)
0336デフォルトの名無しさん
垢版 |
2017/06/17(土) 18:11:55.35ID:n14YEU6w
>>330
初見のコピペ
0338デフォルトの名無しさん
垢版 |
2017/06/17(土) 19:44:55.62ID:KrWMylVm
>>330 の文章とか論理展開とか見てて何かに似てるなーと思っててずっと思い出せなかったが
やっと思い出した

これって、「ゲンダイ」の論調に似てるんだ!w
0339デフォルトの名無しさん
垢版 |
2017/06/17(土) 19:46:39.93ID:KgLuH5ks
まつもと氏は合理主義のようだけどGUIにはそういうのは及んでないんですか?
0340デフォルトの名無しさん
垢版 |
2017/06/17(土) 20:05:28.72ID:x959dLvJ
>>339
まつもと氏の行動原理は「IT土建屋死ね」
だからWinでのGUI開発でRubyが広く使われるようなことはあってはならない
0341デフォルトの名無しさん
垢版 |
2017/06/17(土) 21:40:11.74ID:83r52Wsn
>>329
普通にメジャー言語だから
そのメリットはあると思うけど

他のメジャー言語でも別にいいが
日本語情報が豊富なのが良い
0343デフォルトの名無しさん
垢版 |
2017/06/17(土) 21:42:43.07ID:83r52Wsn
>>330
何がダメでどうすればいいのか言わないなら
たんなる代替なき批判に見える
あとMarzってなんだよ!
0345デフォルトの名無しさん
垢版 |
2017/06/17(土) 22:00:59.26ID:qMkdrUOQ
あぁごめんな
ただあの人のインタビューとか読めばわかるけど
逆張り逆張り言ってる
あの人自身もRubyの筋が良いとかメインストリーム的な思想であるとは
考えてないんだよ
ただ、自分の人生の中で逆張りした場合にうまくいくことが多かったので
逆張りし続けているんだとか
だからRuby3.0でも逆張りの一種として
静的型の機能は導入しない方向を検討しているんだろうな
ただそう何度も逆張りが上手くいくとは思わないし
逆張りはしょせん逆張りだろ?あだ花というかなんというか
そういうこともあって結局Rubyはプチブームで終わった現状があるわけだし
変なことして注目を集めることはあってもそれは一過性だよ、芸人じゃあるまいし
しかも逆張りしたときに自分にとって都合がよいことが多かったってだけで
使い手のことは別に考慮されてないんだよなー
0347デフォルトの名無しさん
垢版 |
2017/06/17(土) 22:07:45.91ID:qMkdrUOQ
普通に考えたら静的型を導入しない理由は全くないんだよ
ただ、あえて理由を挙げるとしたら、最初Rubyは動的型で出発したから
いまさら静的型の機能を入れ込むのは非常に難しいってことなんだよ
過去との互換性もあるし、そういうコミュニティーになっちゃってるしな
もちろんこれは動的型に「逆張り」した結果なんだろうけど
あとあと苦しいわなー
0348デフォルトの名無しさん
垢版 |
2017/06/17(土) 22:10:52.30ID:KrWMylVm
>>347
もうちょっと言語について勉強してから長文で語ってくれないかなー
正直今のレベルではゲンダイにも載せてもらえないレベルのただの妄言だしさ
0349デフォルトの名無しさん
垢版 |
2017/06/17(土) 22:22:53.33ID:qMkdrUOQ
ただここまで静的型が「ハマる」とは俺も想像してなかったし
Matzも想像できなかったんじゃろな
何だか知らないが、静的型はすべてにおいて丁度よい感じになってるんだよな
神がかった偶然がいくつも重なってるかんじで、最適解になってる
この牙城はなかなか崩せないよ、一つや二つのメリットじゃないからね
なんでこんなに上手くいったんだろうね
0350デフォルトの名無しさん
垢版 |
2017/06/17(土) 22:26:25.66ID:83r52Wsn
>>347
>普通に考えたら静的型を導入しない理由は全くない
そんなことない

Python、JavaScriptなど
メジャーな言語が導入してるんだから
0352デフォルトの名無しさん
垢版 |
2017/06/17(土) 22:59:47.96ID:qMkdrUOQ
まず動的型の根本的な慢性的ともいえる文法上の悩みの種は
どうにかして変数宣言をなくしたい欲求にかられるって点にある
動的型であるから変数宣言に型を書く必要がないので
なんとかして変数宣言自体をなくしたいっていう
まぁ分からなくもない
しかしながら変数宣言には変数の型を決める役割があるのとは別に
「変数のスコープを決める」という役割もあったわけで
安易に変数宣言を削除してしまったRubyやPythonのような言語は
大体において変数のスコープが奇妙なことになっているのじゃ
例えばRubyにおいては「@」であったり、ブロックローカル変数であったり
Pythonであればnonlocalであったり、なにか場当たり的だし
実質的な変数宣言の一種のような気もする
あと、if文や繰り返し文の後ろに続くブロックなどでスコープを持てなくなって
しまったりもな、なんせ、文法上、宣言を代入で代用しているから
代入と宣言の区別がつかないような状態で、かゆいところに手が届かない
だから結局、実は変数宣言は有ったほうが良いんじゃね?ってなって
ならついでに型も書けばってなって、今はさらにこれに加えて
型を書きたくなければ型推論使えば?ってことにまでなっちゃってる
型推論使えば変数宣言をする手間はほぼなくなるし
スコープを細かく制御できるようになるんだから
もう変数宣言が無いことはメリットにならなくなってしまった
まぁこんなのは氷山の一角でジャブだ
コンパイラによる型チェック云々言いたくなるところだがそれ以外にも
文法上の問題としてこういうのもあるということ
その他にも実行性能であったり、ドキュメントの自動生成であったり
リファクタリングの容易さであったり
IDEの入力補完etcのサポートのしやすさであったり
人間も型があったほうが読みやすいんじゃないかとか
結局コメントで型を書いてるんじゃね?とか
色々あるわな
なんか複合的なんだよ
動的型がここまでケチョンケチョンになるとは流石に想像できなかったわ
0354デフォルトの名無しさん
垢版 |
2017/06/17(土) 23:04:50.91ID:qMkdrUOQ
ただ動的型にも良い点があって
「処理系の実装が楽」
しかしこれも実用性を考えて突き詰めていけばJSのV8エンジンのように
加速度的にむしろ大変なことになるというね
とにかく旨みが無い
0357デフォルトの名無しさん
垢版 |
2017/06/18(日) 02:54:31.67ID:MwiRGqjx
動的型付けでダックタイピングみたいに
組みやすくなってるメリットがあるから

実際Ruby以外にもPerl、Python、PHPの
P言語はみんな動的型付けになってる

小規模Webサービスのサーバサイド言語
としての用途には動的型が合ってる
0358デフォルトの名無しさん
垢版 |
2017/06/18(日) 07:50:58.11ID:ppLsekVC
>>357
何か勘違いしてるみたいだけど、ダックタイピングっていうのはオブジェクト指向言語の実装手法の一つで、プログラマにメリットなんかないよ
特にRubyだと多態をダックタイピングに任せるのは嫌われる傾向があって
無意味でも空のメソッドを定義しておいて継承したりするし
0359デフォルトの名無しさん
垢版 |
2017/06/18(日) 08:09:30.26ID:ppLsekVC
ちなみに、Rubyでダックタイピングが好まれないのはドキュメントよりもコード読めという文化のせいだと思ってる
ダックタイピングだと「このパラメータにはアヒルを渡してくれ」じゃなくて
「このパラメータにはアヒルのように歩きアヒルのように鳴くものを渡してくれ」といちいちドキュメントに書かなきゃいけない
(静的型になる前の)Pythonはドキュメントを重視する文化だから実際そういうドキュメントの書き方をすることもあるんだけどね
Rubyだとそれを避けるために無意味とわかっていても空のスタブとしてアヒルクラスを定義しておいて「アヒルを渡してくれ」と書くわけ
0360デフォルトの名無しさん
垢版 |
2017/06/18(日) 08:24:04.22ID:mREyO8+w
>>352
Rubyが動的型って言うより、
型宣言不要と特徴付けるのがええんちゃうかなぁ。

変数宣言なしは良いとして、変数のスコープが判りにくくなったってのは、
そうかも。
0361デフォルトの名無しさん
垢版 |
2017/06/18(日) 08:29:35.01ID:F94toio2
ダックタイピング任せはメンバの追加がしづらいのも問題
静的型ならインターフェースにメンバを足せばコンパイルエラーになるからエラー箇所を直せばいいが
完全なダックタイピングだと手掛かりがなく修正漏れが発生しやすい
とりあえずスタブを継承させるようにしておけばメソッドを足してもメソッド未定義のエラーにはならない
0362デフォルトの名無しさん
垢版 |
2017/06/18(日) 16:45:30.43ID:xPH4G83l
いまさら$とか@とかつけたくないな
0363デフォルトの名無しさん
垢版 |
2017/06/18(日) 17:45:55.35ID:MwiRGqjx
>>358
>Rubyだと多態をダックタイピングに任せるのは嫌われる傾向
>>359
>Rubyでダックタイピングが好まれない

勝手に決めんなって
それはJavaみたいな静的型の発想で
Rubyを使おうとする奴の話だろ

インターフェイスの継承不要なのが
ダックタイピングのメリットだから
0364デフォルトの名無しさん
垢版 |
2017/06/18(日) 17:56:41.46ID:mREyO8+w
Rubyのスクリプトをバックグラウンドで動かすにはどうすれば良いでしょう?
>ruby someScript.rb &

と実行してもTerminal.Appを閉じるとrubyも終了してしまいます。
OSはmacOS Sierraです。

以前、HP-UXで作業して居た時には、xtermを閉じても、logoutしてもバックグラウンドで動き続けてくれました。

launchdとかいうdeamonをコントロールするコマンドがある様なんですけど、これを使って動かさないといけないのでしょうか?
0366デフォルトの名無しさん
垢版 |
2017/06/18(日) 18:13:50.36ID:mREyO8+w
>>365
レスTHX
terminal multiplexerを使えば良いのでしょうか?

someScript.rbを動かすには、someScript.plistを書いて
>launchctl load someScript.plist
ってやるらしいのですが、plistファイルなんて書いた事ないぞぉ。

書き方がよく判らん。
なにか、勘違いしてたら、ご指摘を!
0367デフォルトの名無しさん
垢版 |
2017/06/18(日) 18:27:18.73ID:mREyO8+w
>launchctl load a.plist
/work/a.plist: Invalid property list


property listの書き方がよく判らん。
ただのxmlファイルじゃないのか?コメントの放り込み方が悪いのか?
無効なproperty listだとぉー?
0368デフォルトの名無しさん
垢版 |
2017/06/18(日) 18:38:44.94ID:mREyO8+w
やったぁー。動き出しタァ。
Terminal.Appを閉じても動いてる。ふぅー。
0369デフォルトの名無しさん
垢版 |
2017/06/18(日) 19:28:18.01ID:mREyO8+w
俺的忘備録

必須key、3つ
<key>Label</key>
<key>ProgramArguments</key>
<key>KeepAlive</key>

3つ目のやつを<true/>にしないとbackgroundで動かん!
さらに、最後のはOnDemand=falseと等価なのだが、
OnDemandはshould not use!だって。
man launchd.plistに詳細が記載。
0370デフォルトの名無しさん
垢版 |
2017/06/18(日) 19:51:32.81ID:mREyO8+w
Labelが無いとどうなるんでしょう?
0371デフォルトの名無しさん
垢版 |
2017/06/18(日) 19:54:50.51ID:mREyO8+w
Invalid or missing service identifier
0372デフォルトの名無しさん
垢版 |
2017/06/18(日) 20:02:09.12ID:mREyO8+w
さて、stdoutはどうやって拾うのだ?
0373デフォルトの名無しさん
垢版 |
2017/06/18(日) 20:13:05.46ID:mREyO8+w
man lauchd.plist
して/stdout
すれば出て来た。
0374デフォルトの名無しさん
垢版 |
2017/06/18(日) 22:47:06.74ID:o43mtcr6
>>364-368
Linux では、プロセス間に親子関係がある。
端末から、Aプロセスを起動すれば、端末が親で、Aが子

「親亀こけたら、子亀もこける」から、端末が終了すると、Aも終了する。
端末から、SSHで、リモートサーバーへアクセスしても、
接続断などで、リモートのシェルが終了すると、
シェルから起動したコマンドも終了してしまう

リモートで、tmux をずっと起動させておけば、コマンドは動き続ける

他には、サービス・デーモンのように、プロセスの親をなくす(デーモン化)

ptree コマンドで、プロセスツリーを見てみ
0375デフォルトの名無しさん
垢版 |
2017/06/19(月) 00:00:57.99ID:7PGcweVa
>>364
マッキンは知らんので、Linuxだとして。
おそらくプロセスを切り離さないと。

nohup、disownとかぐぐれ。
0378デフォルトの名無しさん
垢版 |
2017/06/19(月) 10:00:51.58ID:zE2VOzv5
>>375
THX

mackin’でもnohup使えた。
launchctlなんて使わなくて良さそう。

>>376
hoge.app&ではterminal.appの終了時にhoge.appがkillされちゃうんだよねぇ。
mackin’では。Linuxでは違うのか?
最近LInux触ってないのでよく知らんのだ。
0379デフォルトの名無しさん
垢版 |
2017/06/20(火) 00:23:19.32ID:8wgIueO/
pstree コマンドで、プロセスの親子関係をツリー表示して、見てみれば?

結局、Ruby を学んでも、OS を学んでいなければ、
システム系のプログラミングは出来ない

だから普通、プログラマーよりも、LPIC資格を持っている、
サーバー構築・運用者の方が、給料が高い
0381デフォルトの名無しさん
垢版 |
2017/06/20(火) 08:29:32.89ID:rapwcYHc
>>379
system callを知らなくても、まあ、一部知ってるけどRubyスクリプト、スマホアプリは作れるよ。

OSを学ぶって、言うけど、それ幅が広すぎ!
まあ、パタ・ヘネ位は読んでます。
0382デフォルトの名無しさん
垢版 |
2017/06/20(火) 10:01:32.57ID:8wgIueO/
まあ、プログラマーで、プロセスに親子関係があるとか、
cron の使い方とか、tmux とか、知っている奴はいない

cron あるあるとか、SSH あるあるとか、Linuxでは定番
0383デフォルトの名無しさん
垢版 |
2017/06/20(火) 10:41:15.76ID:rapwcYHc
>>382
プロセスに親子関係がある。コマンド実行時にshellがforkされるのは知ってたんだけど。。。
以前はnohupなんて使わなくても、
>someCommand &
とすれば
>nohup comeCommand &
した事になったのに!

いつから、nohupなんて現れたのだ?
0384デフォルトの名無しさん
垢版 |
2017/06/20(火) 10:45:41.82ID:rapwcYHc
どうやらbashは終了時に起動したプロセスにSIGNHUPを送るらしい。

俺が昔使って居た、csh, tcshではそんな事はなかったのに!
時代は変わったんだな。
0385デフォルトの名無しさん
垢版 |
2017/06/20(火) 12:38:36.99ID:5s5M5H6z
>>383
だよな
いつからだっけ
0386デフォルトの名無しさん
垢版 |
2017/06/20(火) 12:39:25.49ID:5s5M5H6z
>>384
ああそれか
なんでbashみたいな糞が流行ったんだろ
0387デフォルトの名無しさん
垢版 |
2017/06/20(火) 12:51:49.38ID:rapwcYHc
zshってのが便利だってのを、webの記事でよく見るけど、
どうなん?

bashが糞なら、zshを使って見るかな。
zshもbashの親戚みたいな動きをするなら、zshも糞って事になるけど。
0388デフォルトの名無しさん
垢版 |
2017/06/20(火) 13:51:30.44ID:DOO3yEYl
>>387
zsh もデフォの振る舞いは bash とおなじ。
設定で setopt nohup すれば、hup 送らなくなる。
bash でも huponexit オプション外せば送らなくなる。
ソフトウェアのマニュアルも読まずに糞とか言うのは、
自分は所詮そのレベルの人間ですと言ってるようにしか聞こえないよ。
0389デフォルトの名無しさん
垢版 |
2017/06/20(火) 13:59:24.54ID:rapwcYHc
>>388
はい!
無闇に糞って言った事を、反省します。
0390デフォルトの名無しさん
垢版 |
2017/06/20(火) 14:18:05.45ID:rapwcYHc
>>388
うぅーん。
macOS Sierraのbashにもshopt huponexitってのがあるが、
どうも、最初からoffになってるにも関わらず、signhupを送ってる。

ためしにonにしてみたが、bash終了時にbackground実行しているプロセスが死んでしまう事に、変わりなし。

nohupコマンドを付けないと、background実行できないみたいだ。
0391デフォルトの名無しさん
垢版 |
2017/06/20(火) 15:04:00.33ID:DOO3yEYl
>>390
bash の終了を exit じゃなくてウィンドウ閉じるでやってない?
明示してないのにバックグラウンドで動きっぱなしになっていて欲しいユースケースってどんな時なの?
nohup/disown の方が好きな自分からは想像できないわ。
0392デフォルトの名無しさん
垢版 |
2017/06/20(火) 15:20:19.60ID:rapwcYHc
>>391
Scrapingスクリプトをproxy経由で動かす場合、proxyのレスポンスが悪いので、数時間掛かります。proxyは10箇所を順に変えながらScrapingします。

ruby someScript.rb &で即backgroundで動いて欲しいです。
まあ、慣れればいいだけかもしれんけど、nohupっていうprefixが必要なのは、ちょいとなぁ。
0393デフォルトの名無しさん
垢版 |
2017/06/20(火) 15:22:05.91ID:rapwcYHc
>>391
Terminal.appは動かしッパでも構わないのですが、
Vim7.4, Vim8.0が時々落ちます。その際、Terminal.appも巻き添いなんです。
すると、Scrapingも落ちちゃって困ってたのです。
0394デフォルトの名無しさん
垢版 |
2017/06/20(火) 15:23:21.50ID:rapwcYHc
Vimが落ちるのはterminal typeがxterm-256colorが悪さをしていて、ansiへ変更がwork aroundだと聞いて、今様子を見ているところです。
0395デフォルトの名無しさん
垢版 |
2017/06/20(火) 15:29:54.49ID:DOO3yEYl
>>393
vim 上の shell で実行してるの?
tmux か screen の上で動かすか、あきらめてnohup 書く癖を身につけるしかないかと。
0396デフォルトの名無しさん
垢版 |
2017/06/20(火) 15:36:38.36ID:rapwcYHc
>>395
nohup書きます。
時代はnohupなんすね。

macOSアプリ作り始めたけど、AppKitってUIKitと似てるけど違うので、混乱するわぁ。
0399デフォルトの名無しさん
垢版 |
2017/06/21(水) 00:25:07.92ID:39OgiOwj
>>392
> 即backgroundで動いて欲しいです。

冷静になったら、そうでないほうがたしかによい、と思うはず。
誤ってbgにしたり、bgにしたまま忘れたりした状態でログアウトした場合のリスクを考えれば。
0400デフォルトの名無しさん
垢版 |
2017/06/21(水) 13:07:38.08ID:L1LFWazB
むしろ、WSH で、Excel など外部アプリを起動すると、Excel のプロセスが残り続けるから、

どんどん、Excel のプロセスが増えていき、
これらをどうやって終了するのか、皆苦しんでいるんだが
0402デフォルトの名無しさん
垢版 |
2017/06/23(金) 10:35:54.52ID:0OdP20aK
>>399
bgの何が問題?
0403デフォルトの名無しさん
垢版 |
2017/06/23(金) 10:36:22.71ID:0OdP20aK
>>400
馬鹿だな
0404デフォルトの名無しさん
垢版 |
2017/06/23(金) 13:24:40.77ID:AzvmtT2M
初心者です、自作の汎用関数を定義したのですが、いちいちスクリプト内にコピペするのが面倒なので
外部ファイルにして冒頭でrequireすることにしました。
ですが、ここに具体的なファイルパスを書くと、ファイルの設置場所を変えたい場合に問題があるのでパスは書きたくないです。
require 'myfunc'
と簡便に書ければいいのですが、どこに置けばいいでしょうか?
0405デフォルトの名無しさん
垢版 |
2017/06/23(金) 13:37:52.68ID:9PTuVR6v
現実の開発ではきちんとバージョン管理するのでフォルダの構成変更なんかそんなに頻繁にやることではない
だからリポジトリを分けるほどでもないなら気にせずパス決め打ちでいい
独立性と再利用性が高いものであればリポジトリを分けてgemにする
0407デフォルトの名無しさん
垢版 |
2017/06/23(金) 14:40:20.24ID:tdHTYauf
rails で、自作ライブラリの、autoload なら、

lib/モジュール名/クラス名.rb
lib/foo/bar.rb

module Foo
class Bar

ファイル名は小文字で、単語の区切りは'_'に変える

class FooBar
lib/foo_bar.rb
0410デフォルトの名無しさん
垢版 |
2017/06/23(金) 18:31:41.63ID:PAAniHx4
馬鹿には無理
0413デフォルトの名無しさん
垢版 |
2017/06/24(土) 18:05:14.46ID:M5zFSS9+
>>404
モジュールファイルへの相対パスなら確定できる場合はrequire_relative。
特定ディレクトリの設定だけなら許容できる場合は、そのディレクトリを$:に追加。
0415デフォルトの名無しさん
垢版 |
2017/06/28(水) 09:33:18.25ID:+O8L6XqQ
瑕疵担保責任(かしたんぽせきにん)

瑕疵担保責任のポイント

民法改正で事実上期限が「無制限」になった
バグや設計のミスなどは、瑕疵担保責任
納品物に不具合があれば損害賠償を請求される可能性もある
不具合を指摘されたらすぐに行動をとるべし
軽微なミスでも先延ばししない

http://www.atmarkit.co.jp/ait/articles/1706/26/news014.html
http://itpro.nikkeibp.co.jp/atcl/news/17/052601508/?rt=nocnt

改正法では欠陥に気付いてから1年以内にITベンダーに通知すれば、
通知後5年以内は修正や報酬の減額などを求められるとしている

全ベンダーが泣いた民法改正案を解説しよう その1
http://www.atmarkit.co.jp/ait/articles/1609/14/news009.html
http://www.atmarkit.co.jp/ait/articles/1609/14/news009_2.html
http://www.atmarkit.co.jp/ait/articles/1609/14/news009_3.html

ポイント1:修補や損害賠償、契約解除の期限がなくなる

従来あった「瑕疵担保期間は引き渡しから1年」という考えはなくなる。
条文にある通り、注文者は成果物が契約の目的に適合しないことを発見したら、
その「発見したときから1年以内」ならさまざまな請求ができる。発見が10年後なら、
11年後まで請求可能なのだ。

もっとも、現実のユーザーとベンダーの関係でも、たとえ契約書に「瑕疵担保責任期間は納品から1年と」明記されていても、
「2年目以降は不具合の修正に対応しない」と主張するベンダーはまれだ。多くの場合は、納品から何年たっても、
バグが見つかればユーザーのところに飛んで行き、無償で改修するだろう。
0416デフォルトの名無しさん
垢版 |
2017/06/28(水) 10:47:59.83ID:+O8L6XqQ
366 :nobodyさん 2017/05/29(月) 16:07:39.16 ID:6v4UcGhE
今回の民法改正、ソフトウェア受託開発の場合、(検収後ではなく)バグ発見後1年瑕疵担保責任があるということで、地獄かよ、と思ったが、
元々問題が起きがちな受託案件がビジネス的に成立しなくなることで強制的に業界再編につながるなら良いことかもと思うようになった。
一部で地獄を見ても。
https://twitter.com/yukihiro_matz/status/869061879389343744

367 :nobodyさん 2017/05/29(月) 16:28:06.55 ID:6v4UcGhE
ニュース - 改正民法が成立、「瑕疵担保責任」などシステム開発契約に影響大:ITpro
http://b.hatena.ne.jp/entry/itpro.nikkeibp.co.jp/atcl/news/17/052601508/

372 :nobodyさん2017/05/29(月) 19:10:37.12 ID:???
Railsでシステム作って納品する

Railsはマイナー、メジャーのアップデートが半年以内に必ずある

客がアップデートする。アップデートによるエラーやバグ、動作の不具合に気づく

気づいてから1年以内に通知すれば、5年間無料保証ゲット

つまりRailsがアップデートするたびに、無償の修正作業を発生するということかな

376 :nobodyさん2017/05/30(火) 09:20:20.09 ID:L5po86sS
>>378>>379>>375
客が瑕疵担保責任法の法改正を知ってくると思うから、今後5年無償保証をお願いされるだろう
営業がそれでも仕事を取ってこれるか?たぶん無理だろう。無限の直していたら赤字になる。
こういう保守に弱い言語、ころころ仕様が変わる言語は仕事として発生しなくなってくる。
これは変わり目だ。お前らも早く逃げたほうがいいぞ。RubyやPHPなど動的言語は確実に廃れる。
保守に強い言語のみ生き残れる。
0417デフォルトの名無しさん
垢版 |
2017/06/28(水) 19:56:54.80ID:ZzpJpley
> RubyやPHPなど動的言語は確実に廃れる。
軽々しくこういう断言する人間の言葉は話半分どころか1/4以下にして聞け、ってばっちゃが言ってた
0419デフォルトの名無しさん
垢版 |
2017/06/28(水) 21:48:23.90ID:WbQwz649
ぶっちゃけて言えば、意味論的には普通なのに文法がぐちゃぐちゃすぎて使いづらい。
Perl のあまりの一貫性のなさに Ruby を試したりしたこともあるが、
多少はマシって程度でうんざりするような無茶苦茶さを指向していることにかわりない。
parse.y が黒魔術の塊だというのは聞いていたが、実際に見てみると常軌を逸している。
せっかく yacc を使ってるのに純粋な LALR として解釈できないようなわけわかんないクソが埋め込まれてて、
もはや統制が取れてない。
mruby をベースにして拡充していった方がいい気がする。
0420デフォルトの名無しさん
垢版 |
2017/06/30(金) 00:38:26.19ID:UcGpMueB
使いづらいなら他の言語使えばいいじゃん
わざわざRubyスレ覗いてRubyの悪口書いてる暇があるなら他の言語でコード書こうぜ
0421デフォルトの名無しさん
垢版 |
2017/06/30(金) 01:21:01.84ID:svEzz20W
>>420
だからもう十年以上使ってない。
事実として文法規則のごちゃごちゃしたところはあるという話だよ。
そして事実として私はそれを気に入らなかったという話だよ。

よくある場面を短く書けるとか人間の一般的な感覚に合わせたりもした結果だというのはわかっているし、
Ruby に向いた用途があるのは知ってるよ。
ただ、それの行く先には実装上の行き詰まりが生じそうだという懸念だ。
0422デフォルトの名無しさん
垢版 |
2017/06/30(金) 01:37:54.59ID:UcGpMueB
>>421
うん、そんな人間がなぜRubyスレを覗いてて、なおかつ悪口を書き込むのか
はっきり言えば粘着質で気持ち悪い
0423デフォルトの名無しさん
垢版 |
2017/06/30(金) 02:32:52.47ID:7V8Jdo2I
Rubyは読み書きしやすいから使ってる
規則が統一された文法が良ければLispを使えよ
0425デフォルトの名無しさん
垢版 |
2017/06/30(金) 09:50:34.06ID:flSVgAwO
rubyは上級者には不満があるのかもしれんが、俺の様な素人が使うには使いやすい。
メソッドチェインも「.」でつなげていくだけだし、
正規表現使うのにimportとかしなくていいし。
でも複数行のコメントアウトは面倒。
0426デフォルトの名無しさん
垢版 |
2017/06/30(金) 09:51:37.98ID:BBkM2EA1
>>422

Rubyスレに来て悪態さらすヤツってのは、喩えて言えばこんな感じだ。
最初は、良い会社だと思って就職した。
けど、外から見るのと、入って見るのとでは大違いで、内部は火の車だった。
(例:最近の東芝、タカタ)

転職活動も、うまくいかず、悪態をつかざるを得なくなる。
0428デフォルトの名無しさん
垢版 |
2017/06/30(金) 11:25:06.46ID:BBkM2EA1
>>427
そうかぁ?殺人予告とかあったんだぞ!
そんでもって、本当に発生してビックリなんてのが、2chなのだ。
0429デフォルトの名無しさん
垢版 |
2017/06/30(金) 11:30:06.98ID:hBaGJvUf
>>425
> でも複数行のコメントアウトは面倒。

初心者スレということでいちおうマジレスしておくと
=begin
=end
で囲むと一挙にコメントアウトできる
0430デフォルトの名無しさん
垢版 |
2017/06/30(金) 11:33:27.81ID:BBkM2EA1
>>429
たしか、こんなのも
__END__

以下の行は全てコメント!
うる覚えだが。
0432デフォルトの名無しさん
垢版 |
2017/06/30(金) 11:45:54.89ID:flSVgAwO
>>429
すみません。知っているんですが、
jsとかみたいに/**/とかだと入力がラクだなーって話です。
0434デフォルトの名無しさん
垢版 |
2017/06/30(金) 12:50:26.31ID:hBaGJvUf
タイピングの文字数に拘るあたりが初心者だよな
(↑それが悪いことだとは言っていないし、一切の悪意は無い)
プログラミングを指の労働と捕らえてるんだよな
0437デフォルトの名無しさん
垢版 |
2017/06/30(金) 13:35:43.48ID:2Da2vksV
>>434
それはMatz批判か?
処理系を黙らせるためだけの冗長な記述を強いられることは屈辱であると神が仰っている
0438デフォルトの名無しさん
垢版 |
2017/06/30(金) 13:40:13.66ID:625dciv9
そんなperlのパクリ機能なんかもう使ってる人いないよ
普通は#で複数行コメントアウトするようなエディタ使ってるでしょ
0440デフォルトの名無しさん
垢版 |
2017/06/30(金) 16:49:14.50ID:tesV9X+3
一時的に処理から外したいときは「そういやRubyにも複数行コメントの記述法があったななんだったかな」と思いながら
#と方向キーを交互に連打してるかコメントリージョン機能を使ってるかどっちかだな
0442デフォルトの名無しさん
垢版 |
2017/07/01(土) 04:05:27.85ID:J52nGMUC
俺は if false 〜〜〜 else 〜〜〜 end を使ってる
あるいは後置 if false
元の処理を走らせる場合は否定演算子を付けて if !false みたいにしてるなあ
0444デフォルトの名無しさん
垢版 |
2017/07/01(土) 05:26:51.20ID:PPsHHHSM
>>434
まったくその通りだな
「=begin」程度でタイプ数多くてダルいとか

Rubyは記述だと簡潔な方だし
コメントアウトを多用するなんて
書き方してたらそもそも筋が悪い
0446デフォルトの名無しさん
垢版 |
2017/07/01(土) 14:26:38.71ID:R60vnDrO
同じ処理をさせようとしても
初心者が書くのと慣れてる奴が書くのとですでに差が出てる
a = ['a', 'b', 'c']
b = []
i = 0
a.each {|c| b << (i.to_s + c); i += 1}
p b

↑こーいう書き方する人ほどタイプ数に拘り
↓こーいう人はもはやそこでは騒がない

c = %w(a b c).each_with_index.map {|c, i| i.to_s + c}
p c
0448デフォルトの名無しさん
垢版 |
2017/07/01(土) 15:48:19.58ID:qX8eRJNR
>>446
それはわかる
ダメな奴は抽象度を上げようとせずに同じことを短く書こうとする
地頭悪いのをプログラミングの小手先のスキルで誤魔化してる奴にありがち
0450デフォルトの名無しさん
垢版 |
2017/07/01(土) 19:39:10.28ID:QATpSz/4
>>443
駄目でもないのじゃ。
違う処理を簡単に試してみたいときなんかは、外したい部分にも最低限の文法チェックがかかるので、事故が少なかったりな。
0451デフォルトの名無しさん
垢版 |
2017/07/01(土) 20:41:44.60ID:M8KylmXN
b = []
b << 要素

1つずつ、配列に追加していく処理だけど、
エラー処理などがいらないなら、簡潔に書くべき
0452デフォルトの名無しさん
垢版 |
2017/07/01(土) 21:37:44.67ID:sOThA7TG
>>446
> 初心者が書くのと慣れてる奴が書くのとですでに差が出てる

せやね

お前が書くと
c = %w(a b c).each_with_index.map {|c, i| i.to_s + c}

俺が書くと
c = %w(a b c).map.with_index {|c, i| i.to_s + c}

これはタイプ数の問題じゃねーよ?
配列から配列に変換して入れる処理で
eachって単語がでてくることキモいって話
0453デフォルトの名無しさん
垢版 |
2017/07/01(土) 22:38:49.78ID:M8KylmXN
関数厨は、Ruby・JS のスレにやって来て、

何でもかんでも、map を使って、1行で書いてしまうからなw
0454デフォルトの名無しさん
垢版 |
2017/07/01(土) 22:44:59.49ID:Tp0p2tiJ
>>452のようなことに特に興味がなくて
正直どっちでもよくね?
って考える普通の人はRubyを使わなくてもよいってことなんだよ
まさにこれがRuby
「タイプ数にこだわるのは初心者」
「そうそうそうなんだよね〜」
とか言いながら動的型言語を使うのって最高でしょ
0456デフォルトの名無しさん
垢版 |
2017/07/01(土) 23:49:19.16ID:cxvWbv+r
いくらRubyのコード効率が良いと言っても可読性を犠牲にするつもりはないな
無用に行数を減らしたりオブジェクト名の長さを減らしたりはしない
そういう書き方をすると後で苦労するのは自分だし
0457デフォルトの名無しさん
垢版 |
2017/07/01(土) 23:54:52.06ID:sOThA7TG
>>456
可読性というのは読むべき「単語」を減らすものであって
行数を減らすことやオブジェクト名を減らすことは
単語を減らすことにはつながらない。

例えば行数を減らしたとしても、それが 空行や { などの
カッコだけの行を減らした所で単語数は変わらない。
むしろ空行がある方が読みやすい文章となることもある
名前も、短い名前にしても単語数は変わらない

単語数を減らすと結果的に行数が減ることはあるが、
行数を減らすことは可読性を上げる行為ではない。
0458デフォルトの名無しさん
垢版 |
2017/07/01(土) 23:56:03.86ID:5xgWPcGQ
>>453
本当の関数厨は今時map程度に拘らんぞ。
どの言語でも採用されてるしな。

{|c, i| i.to_s + c }

のがどうにか出来ないか気になるw
0459デフォルトの名無しさん
垢版 |
2017/07/01(土) 23:56:04.59ID:sOThA7TG
ちなみにさっき書いたこれ。

c = %w(a b c).each_with_index.map {|c, i| i.to_s + c}
c = %w(a b c).map.with_index {|c, i| i.to_s + c}

下の方が「単語数」が減っている。
each with index map ・・・ 4単語
map with index ・・・ 3単語
0461デフォルトの名無しさん
垢版 |
2017/07/02(日) 00:03:47.37ID:0SO6fajC
あ、間違った。こうなw

c = %w(a b c).map.with_index {|c, i| "#{i}#{c}" }

俺としては、なんでmapがデフォルトでindexを持ってないかのほうが気になるな。
JavaScriptならこれでいいのに

a = ['a', 'b', 'c']
c = a.map((v, i) => i+v)
0464デフォルトの名無しさん
垢版 |
2017/07/02(日) 00:23:24.49ID:0SO6fajC
>>462
Rubyでもこの文脈では引数の数のチェックをしてないようですが?

%w(a b c).map.with_index {|c| "#{c}" } # 引数が足りなくてもエラーなし
%w(a b c).map {|c, i, x, y, z| "#{i}#{c}" } # 引数が多くてもエラーなし
0468デフォルトの名無しさん
垢版 |
2017/07/02(日) 00:38:11.58ID:yqVk05l0
>これはタイプ数の問題じゃねーよ?
と言いつつも
>可読性というのは読むべき「単語」を減らすものであって
と言うのであった

そして多くの人はこう思うのであった
「単語数と可読性ってそんなに関係あるか?」
「ここで言ってた可読性って、少々冗長であっても
 読みやすいほうが良いって話じゃなかったの?」

>下の方が「単語数」が減っている。
>each with index map ・・・ 4単語
>map with index ・・・ 3単語

一単語減らせて本当によかったね
>これはタイプ数の問題じゃねーよ? 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0469デフォルトの名無しさん
垢版 |
2017/07/02(日) 00:49:17.22ID:0SO6fajC
>>468

> >これはタイプ数の問題じゃねーよ?
> と言いつつも
> >可読性というのは読むべき「単語」を減らすものであって
> と言うのであった

矛盾してないよ?

例えばコピペ、コピペを使うとタイプ数は減る。
CTRL+vとたった1文字タイプするだけで、
過去に書いたコードを複製できる。
だけど、読むべき単語は倍増していく


可読性のためにやらなければいけないのは、タイプ数を
減らすことではなくて単語数を減らすこと
0470デフォルトの名無しさん
垢版 |
2017/07/02(日) 00:55:38.04ID:0SO6fajC
>>468
> 「単語数と可読性ってそんなに関係あるか?」
> 「ここで言ってた可読性って、少々冗長であっても
>  読みやすいほうが良いって話じゃなかったの?」

日本語に置き換えて考えればわかるだろ?
文章はシンプルな方が読みやすい。
ただそれだけのことなんだが。


まああと付け加えるとするならば「誰にとって」の話だな。
もちろんプログラマにとってだ。

これは数学に例えればわかるか?

数学者同士が会話をする時、数式を使ったほうがより簡単に説明できる。
数学者同士の会話で素人がわかるように数式を使わないで
会話するのは話をわかりにくくするだけ
なぜか? 数式を使えば短い単語数で説明できるから。

ここで素人でもわかるように難しい単語を使わない方がいいという意見は
数学者同士の会話で、素人でもわかりやすく話せといってるようなもん。
素人のために生産性を大きく落とすだけ
0472デフォルトの名無しさん
垢版 |
2017/07/02(日) 01:08:47.26ID:yqVk05l0
プログラムを書くのであれば誰しも可読性が良いプログラムを書きたいと考える
部分があるかもしれないが、そんなとき、単語数などというものの脳内に
占めるウエイトは、ほぼ無い

「あのプログラムのソースコードは単語数が少ないから非常に読みやすかったよ〜」
なんて会話は、無い

というと、じゃあ単語数が多いほうが良いのか?と言い出すかもしれないが
そもそも単語数など論点にするのがピンボケ

労力の方向がおかしいし、論点がおかしい
0474デフォルトの名無しさん
垢版 |
2017/07/02(日) 01:15:48.32ID:0SO6fajC
>>472

> 「あのプログラムのソースコードは単語数が少ないから非常に読みやすかったよ〜」
> なんて会話は、無い

無駄がないとかシンプルっていう言い方をしてるはずだよ。
無駄がないとかシンプルとはどういうことか?というと
それは殆どの場合単語数が少ないことを意味してる
単に言い方の違いだねw
0475デフォルトの名無しさん
垢版 |
2017/07/02(日) 01:23:00.07ID:yqVk05l0
ついでに言っておくと、俺は別に冗長に書けばわかりやすくなるとも思ってない
元の人がそのようなことを言っていたから、そういった風なことも書いたが
俺自身はそうとも思っていない
というか、そういったことは、割とどうでもよいというか
多少コードがシンプルになったぐらいで一喜一憂する気分ではない
そりゃ少しはうれしいが、それはまぁなんていうか、青信号だったラッキー、みたいな感覚
どちらかというと、1円見つけた!のほうが嬉しいかなー
0476デフォルトの名無しさん
垢版 |
2017/07/02(日) 01:28:42.17ID:0SO6fajC
> 多少コードがシンプルになったぐらいで一喜一憂する気分ではない

割合で考えようか?

4単語が3単語になったら、25%もシンプルになったとみなすことができる
0477デフォルトの名無しさん
垢版 |
2017/07/02(日) 01:36:42.12ID:yqVk05l0
ほらもう、プログラムの美的センスがまるでないでしょ

>無駄がないとかシンプルとはどういうことか?というと
>それは殆どの場合単語数が少ないことを意味してる

大体において、ソフトウェアの可読性について考えたとき
そのほとんどは設計に依存していると考える人は多いっつーか
まぁ普通の感覚であるところだけど
じゃあなるべく素晴らしい設計をしようって意気込んだ時
「できるだけ単語数を減らせるような設計にしよう」
なんてこと考える奴居るのかね
そんなことがシンプルさの基準になるんかね
これはコードレベルでも同じことだろう
と、俺は思っているわけ
0478デフォルトの名無しさん
垢版 |
2017/07/02(日) 01:39:30.83ID:yqVk05l0
>4単語が3単語になったら、25%もシンプルになったとみなすことができる

なんでシンプルさの基準が単語数なのか本当に不思議な奴だ
プログラム書いたことないんじゃね?説
0479デフォルトの名無しさん
垢版 |
2017/07/02(日) 03:26:13.52ID:0SO6fajC
>>477
> 「できるだけ単語数を減らせるような設計にしよう」
> なんてこと考える奴居るのかね

いるだろうな

言語とかライブラリの比較みてみ?

あの言語・ライブラリではこんなに面倒なコードが
たったこれだけのコード(単語数)で書けるって
話になってるから。
0480デフォルトの名無しさん
垢版 |
2017/07/02(日) 03:29:27.16ID:0SO6fajC
>>478
> なんでシンプルさの基準が単語数なのか本当に不思議な奴だ

単語数だけじゃないけど?

それ以外の条件が同じ時。
単語数が少ないほうがシンプルなコード


それ以外の条件っていうのは、単語の長さはどちらも同程度であること
一行の文字数はどちらも同程度であること
関数の行数はどちらも同程度であること
ファイル数やクラス数や関数数はどちらも同程度であること

それ以外の条件を同じか、同程度にした時
単語数が少ないほうがシンプルなコードになる。
0481デフォルトの名無しさん
垢版 |
2017/07/02(日) 05:05:29.89ID:mUyXxhhW
各「.」で何の型が返ってきているのか、実装を見ずとも自明になっている。

最悪でも、マウス当てただけで自明になる書き方。

これを守ってるほうが遥かに重要だわ。
0484デフォルトの名無しさん
垢版 |
2017/07/02(日) 12:23:01.69ID:Ey9UZy2f
>>461
確かにその文法欲しいな。
0485デフォルトの名無しさん
垢版 |
2017/07/02(日) 13:05:35.53ID:NbWg8gon
>>477
同意
プログラミングの難しさは設計の難しさ
コードの美しさは設計の美しさ

それが分かっている奴は
初心者が騒ぐ観点で騒がない
真顔で黙ってる

タイプ数が少ない?よかったね
単語数が少ない?よかったねえ
0487デフォルトの名無しさん
垢版 |
2017/07/02(日) 13:49:07.69ID:27xX9ykc
>>422
改善してほしいところさ。
Ruby を使いたいのに全然使いこなせる気がしない部分をなんとかしてほしいっていう要望は悪口なのか?
いや、ユーザーたちは本当にクソだと思わずに使ってんの?
0488デフォルトの名無しさん
垢版 |
2017/07/02(日) 17:59:14.19ID:NbWg8gon
既存の言語が気に入らないんなら
自分で作ってみればいいんじゃね?
クソじゃない言語とやらを
0489デフォルトの名無しさん
垢版 |
2017/07/02(日) 18:07:42.30ID:IGa4njyh
>>487
使ってて言うのならまだしも、10年使ってない人間が言ってもそりゃ悪口にしか聞こえないだろうよ
しかも10年使ってないのにRubyスレを覗いてるという粘着性の高さ
0490デフォルトの名無しさん
垢版 |
2017/07/02(日) 21:49:13.80ID:19kDKEGS
>>487
Haskell良いぞぉ〜。
0491デフォルトの名無しさん
垢版 |
2017/07/02(日) 22:48:36.18ID:ynDhLM7Z
Java + Groovy = Kotlin

Groovy == Ruby

つまり、Kotlin は、Ruby, Groovy に静的型チェックを付けたもの。
型チェックがあるから面倒くさいが、型推論もある

または、Java に関数型を付けたものとも言える
0493デフォルトの名無しさん
垢版 |
2017/07/03(月) 00:51:18.19ID:6nx2OSAK
>>461
>デフォルトでindexを持って
それは思う

「with_index」って冗長だし
eachでもデフォで持ってて欲しい
0496デフォルトの名無しさん
垢版 |
2017/07/03(月) 03:30:38.10ID:6nx2OSAK
>>494
たしかに記述が冗長か構成が冗長かだけど別に良くね
イテレータがインデックス持っててもおかしくない

配列はデフォで配列の長さ分かるじゃん
そんなようなもん
0497デフォルトの名無しさん
垢版 |
2017/07/03(月) 03:42:56.46ID:2SpTAV0H
構成が冗長ってどういうことだろう?
普通、冗長ってそういう意味に使わないよね?
0498デフォルトの名無しさん
垢版 |
2017/07/03(月) 10:06:01.55ID:looyCaxt
>>493
each_with_index は素の each に比べて 3~4 割遅い。
each のデフォルトで index を持つよりは、遅くても index が使いたいときに明示するという使い方の方がリーズナブルだと思うけど。
0499デフォルトの名無しさん
垢版 |
2017/07/03(月) 10:29:47.39ID:edaN+zHQ
でもそういう使い分けこそ、まつもとさんに言わせればムダなわけだし
あのひとは機械にできることはすべて機械にやらせるべし、って言ってるからね
コンパイラはインデックスを必要としているかどうか、判断できるわけだから
勝手に使い分けてくれればよいんじゃね?
てことでRubyを静的型にしてオーバーロードで解決すればよいだろう
静的型にするとコンパイル時に型チェックをさせることができるし
最適化もかけやすくなるし、入力補完との相性もよい
機械で出来ることがどんどん増えるから
まつもとさんの機械にできることは〜の考えによく合ってるね
0500デフォルトの名無しさん
垢版 |
2017/07/03(月) 11:00:51.38ID:looyCaxt
>>499

> あのひとは機械にできることはすべて機械にやらせるべし、って言ってるからね
発言を自分に都合よく拡大解釈してない?

> コンパイラはインデックスを必要としているかどうか、判断できるわけだから
あなたの脳内のコンパイラはそれができるみたいだけど、
現状のMRIにその機能は無いよ。

> てことでRubyを静的型にしてオーバーロードで解決すればよいだろう
> 静的型にするとコンパイル時に型チェックをさせることができるし
> 最適化もかけやすくなるし、入力補完との相性もよい
機械で出来ることがどんどん増えるから

現時点で解決したいならCrystal使ったほうがいいよ。
変数の型を変えると言う言語の根幹に影響する変更が受け入れられるとは思わないけど、あなたがそんなに強く望むのならコミュニティに参加して意見が通るほどの功績を積むのが最短の道。
0501デフォルトの名無しさん
垢版 |
2017/07/03(月) 20:57:22.46ID:91Pqu4Id
>>500
久々に普通な常識を元にしたレスを見た
0502デフォルトの名無しさん
垢版 |
2017/07/03(月) 23:47:51.07ID:7Hia1uWl
まあ別にeachにインデックスを渡してても良かったと思うけどね
(3..9).each_with_index {|e| p e }
0503デフォルトの名無しさん
垢版 |
2017/07/04(火) 04:47:02.02ID:nYPV9UDZ
つーかeach_with_indexが長いから
each_iとかで良かったんじゃね?
極端な省略だけどto_iとかもあるから
0504デフォルトの名無しさん
垢版 |
2017/07/04(火) 10:42:41.42ID:olJiM2Cb
オブジェクト指向なんだからオブジェクトによって振る舞いが変わればよくね?
なんでこっちで使い分けなきゃならんの?
0505デフォルトの名無しさん
垢版 |
2017/07/04(火) 11:11:52.06ID:XKRg/8mz
最初に each_with_index つくったのがいまとなっては浅はか
もしかしたら当時 Enumerator がなかったんかもしれんけど
0506デフォルトの名無しさん
垢版 |
2017/07/04(火) 12:27:20.90ID:FYa81knm
それとは別でeach.with_indexもあるって言うね。。。
0507デフォルトの名無しさん
垢版 |
2017/07/04(火) 12:29:22.36ID:jC9x4mB4
JavaScriptみたいにcallback関数(ブロック)の引数の数で
挙動を変えられるようにできたら良いんじゃね?

つまり

[1,2,3].map(v => v) だったらインデックスなしのコードが実行されて
[1,2,3].map((v,i) => i + ':' + v) だったらwith_index相当
0508デフォルトの名無しさん
垢版 |
2017/07/04(火) 12:36:39.44ID:Qa2xT13J
話をぶった切るけど

Rubyで人工知能、それもワトソンのクローンを作りたいんだけど
Ruby界隈ではどうやって人を集めたら良い?
成果としてRubyの人工研究関連の書籍がだせるし、出来上がったソフトかそのサポートでビジネス出来る可能性あるし、何かの縁で研究関連の所と一緒に仕事できるかもしれないし、政経的な所に話を持っていける実績つくしで、
良いことばかりだからやってみたいんだけど

基本、金は出したくないけど、Rubyで大きな事がやりたい
0509デフォルトの名無しさん
垢版 |
2017/07/04(火) 12:37:00.52ID:XKRg/8mz
>>506
流れに逆らうけど勝手にindex乗るのはきもい
Enumerator#with_index
のみならよかったとおもってる
0510507
垢版 |
2017/07/04(火) 12:40:29.48ID:jC9x4mB4
補足しておくとJavaScriptは

function foo() {}
function bar(i) {}
function baz(i,j) {}

foo.length => 0
bar.length => 1
baz.length => 2
のように関数定義の引数の数が取得できる

const hoge = (i) => i+1
hoge.length => 1
アロー関数でも使える

function map(callback) { console.log(callback.length + ' arguments') } みたいにしておくと

map(i => i+1) => 1 arguments
map((i, j) => i+1) => 2 arguments
map((i, j, k) => i+1) => 3 arguments
みたいに関数の中で、コールバック関数の引数の数で処理を変更することができる
0511デフォルトの名無しさん
垢版 |
2017/07/04(火) 12:40:38.40ID:Fv1Dj8Gj
>>508
人は金に群がるから、その性質を利用して人を集めるが良し。

ただし、若い人は、やり甲斐とか求める人も居るから、うまく説得
するのも良し。
0512デフォルトの名無しさん
垢版 |
2017/07/04(火) 12:42:55.91ID:Qa2xT13J
ワトソンの解説みたいなのをRubyでコード実装して試す本、
ってのなら割と興味もたれて売れると思うんだよ
どうかな?
0513デフォルトの名無しさん
垢版 |
2017/07/04(火) 12:43:23.19ID:Fv1Dj8Gj
>>508
ワトソンは厳密にはAIでは無い。
人口無能ってやつだ。基本、失敗した技術。
マーケティング的に成功している。
クイズの回答をさせるのとか、いかにも考えて居る風に装って、
実は探索を行うのだ。
0514デフォルトの名無しさん
垢版 |
2017/07/04(火) 12:44:13.45ID:Fv1Dj8Gj
>>512
Rubyで作る人工無脳、って本があったはず。
0515デフォルトの名無しさん
垢版 |
2017/07/04(火) 12:45:12.42ID:Fv1Dj8Gj
>>514
>Rubyで作る人工無脳
はじめてのAIプログラミング―C言語で作る人工知能と人工無能

こんなのもある。
0516デフォルトの名無しさん
垢版 |
2017/07/04(火) 12:47:14.56ID:Qa2xT13J
しってるしってる
だからワトソンのクローンをRubyでつくるんだよ

で、あの人工無能のどこに深層学習やら何やらの技術が使われてるかRuby使って解説する本を出すんだよ
0517デフォルトの名無しさん
垢版 |
2017/07/04(火) 12:47:34.81ID:jC9x4mB4
>>508
ワトソンよく知らないけど、これが本当なら泥臭いソフトだと思うわ
https://wirelesswire.jp/2016/11/57683/

> しかし、それは失望と呼ぶしかないものでした。
>  WatsonのAPIとして提供されているものは、「自然言語分類」
> 「検索およびランク付け」「文書変換」「会話」「音声認識」
> 「音声合成」といったもので、これは基本的にはディープラーニングとは
> 無関係な、既存技術の寄せ集めに過ぎません。もっというと、
> Watsonを有名にしたはずの、クイズに正解する機能すらありません。
> 少なくとも汎用的は皆無です。

人工無能でも膨大なデータを投入して、ちゃんとした
検索エンジンを使えば、それなりに使えるものができる。
みたいな認識。
0518デフォルトの名無しさん
垢版 |
2017/07/04(火) 12:47:46.71ID:Fv1Dj8Gj
>>512
ontrogy、オントロジーってのを学ぶのがよろしい。
AI冬の時代ってのがあって、ontrogyを追求した結果、だめだぁー、となって冬の時代に突入した。
0519デフォルトの名無しさん
垢版 |
2017/07/04(火) 12:51:53.36ID:jC9x4mB4
ワトソンは人工知能ではない
だが商業的には成功している
人工知能ではないが使える技術はある
使える技術=検索エンジン

↓ってことでこれなw

本当に必要ものは人工知能ではなくて検索エンジン [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1498937148/

検索エンジンを求めている客に
人工知能ですよという言葉で近づいて
検索エンジンを売る商売w
0521デフォルトの名無しさん
垢版 |
2017/07/04(火) 12:55:29.02ID:Qa2xT13J
先ずはワトソンを、組織的かつ学術的に解析するために、
資料集めたり研究者に聞きにいったりする必要があるんだけど、
一人でやるのとは違うから会社みたいに事務というか書類や議事といった形式をまとめないといけない

で、Rubyでやるわけだから誰かruby界隈での人の集め方知っているかな?って思いでレスしたんだ
出版社さんあたりが絡んでくれると、バックボーンができるから(確実に出版にまで漕ぎ着けられるから)うれしいんだけど
0522デフォルトの名無しさん
垢版 |
2017/07/04(火) 12:57:14.60ID:Fv1Dj8Gj
人工知能とは、Neural Net、しかも学習済みのNeural Net(スペル自信なし)なのだ。

NNの構造に、自己学習、つまり入力から入力を出力するNNを取り入れて居るところに、昨今のNNのbreak throughがある。

この認識でOK?エロい人?
0523デフォルトの名無しさん
垢版 |
2017/07/04(火) 12:59:01.56ID:Fv1Dj8Gj
>>521
大学の図書室へ行ってまずは、文献調査するのが良いでしょう。
会社も交通費出してくれるでしょう。

少なくとも、二百人位の俺の会社は、文献調査に金出してくれるよ。
0524デフォルトの名無しさん
垢版 |
2017/07/04(火) 13:01:25.57ID:jC9x4mB4
>>520
mapはデフォルトでインデックスあり(with_index相当)であればいいのにって話じゃないの?

そしたらwith_indexは遅いって話が出たから、
ブロックの引数を見て、indexを参照しているときだけ
with_index相当にすれば、速度は遅くならないって話をしてるんだけど
0525デフォルトの名無しさん
垢版 |
2017/07/04(火) 13:02:50.26ID:Fv1Dj8Gj
>>521
あんたが、どういう組織に属し、これまでどの様な実績を積んできたか、知らんが、出版社に飛び込みで、話しをしに行ってみれば!

多分、鼻で笑われる。けど、それも良い経験だよ。
0526デフォルトの名無しさん
垢版 |
2017/07/04(火) 13:03:01.58ID:Qa2xT13J
そもそも人工知能研究ってその当代の計算機性能で出来る、自動で組み合わせて問題を解く研究なんだよ
でも計算機性能で無限じゃないからできることには制限がある
だから人の手等をつかって計算量を減らしたり人手で統計を用意したりして、計算機性能の低さをカバーしてきた
それが計算機性能があがっていきできる事が増えてきた、というのが現在
ワトソンでクイズに答えられるようにまなった

人工知能研究の成果で出来た物は本来はもう人工知能とは呼ばないんだけど、
マーケティング用語というか通りが良いから人工知能ってつけてるわけなんだ
0527デフォルトの名無しさん
垢版 |
2017/07/04(火) 13:13:51.50ID:1Tk0DRaF
ID変えてネガキャンする流れからは変えられたみたいだけど今度は人工知能に噛み付きだしたか
そんなに噛み付いて荒らすだけならrubyスレにくるな
rubyの興隆が気にくわないとか知ったことではない
0529デフォルトの名無しさん
垢版 |
2017/07/04(火) 13:29:09.59ID:Qa2xT13J
Rubyで人工知能って書籍はすでにいくつかあるけど、
Rubyでワトソンを解説するってのは凄く面白いと思う
いままでワトソンの資料を個人的に集めて見てきたけど、
ワトソンをRubyで誰でも作れるようになれば、これってrailsの次のRubyブームにならない?
0530デフォルトの名無しさん
垢版 |
2017/07/04(火) 13:39:30.76ID:jC9x4mB4
>>528
俺もwith_indexなんかやめてJavaScriptみたいに
map(やそれに類するもの)は全てインデックスがあればいいと思ってるよ。
速度よりもシンプルさ、可読性のほうが重要
0531デフォルトの名無しさん
垢版 |
2017/07/04(火) 13:40:58.31ID:Qa2xT13J
深層学習はPythonが有名だけど、
みんながみんな深層学習じゃなくてワトソンのような、技術そのものじゃなくて実用できるものを作りたいんだと思う
だったらRubyで大元の部分をつくっちゃえば良くない?って考えなんだけど
0532デフォルトの名無しさん
垢版 |
2017/07/04(火) 13:54:58.37ID:Fv1Dj8Gj
昨日と同じく、眠くなってきた。
カフェインを摂取した。
0533デフォルトの名無しさん
垢版 |
2017/07/04(火) 14:07:04.87ID:jC9x4mB4
>>531
そうするとRubyで?ことになるんだけどな。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ゲームからデータ抜いたらゲームじゃない
知能から知識抜いたら知能じゃない
0550デフォルトの名無しさん
垢版 |
2017/07/04(火) 18:26:26.94ID:nYPV9UDZ
>>548
ワトソンはたんなる検索エンジンじゃない
仕組みが似てる部分はあるけど
たんなる検索エンジンはクイズに答えられない

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

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

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

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

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

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

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

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

なんでワトソンなら自分にもできると思っちゃうの?
0556デフォルトの名無しさん
垢版 |
2017/07/04(火) 18:47:18.87ID:nYPV9UDZ
>>554
違う違う

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

自演かこれ
誰か団子呼んでこいよ
0566デフォルトの名無しさん
垢版 |
2017/07/04(火) 19:21:22.51ID:jC9x4mB4
>>565
ワトソンの構造はこちら

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

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

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

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

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

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

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

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

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

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

壮大な目的はあるけど人集めが初心者スレなのは笑う所かなw
0576デフォルトの名無しさん
垢版 |
2017/07/04(火) 22:44:59.86ID:KFTmH+Xw
案外そういう怖いもの知らずのが成功するから世の中分からんね。
パラボラアンテナもスパコンのけい
0577デフォルトの名無しさん
垢版 |
2017/07/04(火) 22:46:30.79ID:KFTmH+Xw
途中で送信。。。
スパコンの京も、海外より予算少ないのに海外より性能良かった。
パラボラアンテナなんか、それで世界に広がった。
0578デフォルトの名無しさん
垢版 |
2017/07/04(火) 22:47:49.56ID:KFTmH+Xw
フロッピーディスク、切り口で怪我をしない缶詰めetcetc...
0579デフォルトの名無しさん
垢版 |
2017/07/04(火) 23:28:44.33ID:olJiM2Cb
まずまともな人望があったらこんなところで人集めの質問しないだろってのがあってだね
逆に一人でもやり遂げてやるぜって訳でもなさそうだし
そーゆー部分を見て、判断しよるよ、大人は
内容とか以前に
0580デフォルトの名無しさん
垢版 |
2017/07/05(水) 05:47:53.58ID:WM8wHrYP
どうやって正答のための元となるデータを形成するか、どうやって問から正答を導く処理を行うか
この二つがワトソンにとって重要な部分なんだけど、文で色々書くよりRubyのコードで示した方がわかりやすいと思う
IDをかえて一人で書き込んでいる人のレスみてるとやっぱりそこを理解できていないみたい
0583デフォルトの名無しさん
垢版 |
2017/07/05(水) 13:44:49.29ID:Qpg00Afa
っつーかむぎ茶も出所しておまいらくらいの歳になってんだな
2chに住み着いてるかもな
0584デフォルトの名無しさん
垢版 |
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系とかなりマイナーな環境。
0586デフォルトの名無しさん
垢版 |
2017/07/05(水) 18:40:35.78ID:nlxiuXwv
>>584
ruby-2.4.1もgcc5でビルドして比較してみたらどう?
あるいはruby-2.1.5をgcc7で比較するとか
新しいものが常に最良とは限らないし
0587デフォルトの名無しさん
垢版 |
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上で実行
0588デフォルトの名無しさん
垢版 |
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秒もは我慢できないとおもうよ
0589デフォルトの名無しさん
垢版 |
2017/07/05(水) 21:36:48.67ID:LKhZWwoW
すまん
誰か>>588 の言っている事を翻訳してくれ
0590デフォルトの名無しさん
垢版 |
2017/07/05(水) 21:42:41.90ID:z3CI8qH6
処理の規模によってはアルゴリズム考えないとヤヴァイぞ☆
って言ってる。
0592デフォルトの名無しさん
垢版 |
2017/07/05(水) 22:00:41.82ID:IBgoqo2I
二つの意味が含まれているから確かにわかりにくな

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

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

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

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

失せろ、スレチだボケェ
0596デフォルトの名無しさん
垢版 |
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++を触るより速いと言われてる。」

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

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

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

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

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

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

つまり速度だけにフォーカスした比較は大きく間違ってるということだ
0601デフォルトの名無しさん
垢版 |
2017/07/05(水) 23:20:10.86ID:WM8wHrYP
588ってどのレスへの返しなの?
遡って100レス程見たけどどこからも繋がっていないように見えるんだけど

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

3秒ならまぁ何とかってところ
0612デフォルトの名無しさん
垢版 |
2017/07/06(木) 00:06:41.72ID:EqEhEZ9Z
>>610
徒歩というたとえだから5分と設定しただけだよ

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

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

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

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

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

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

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

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

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

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

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

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

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

そのへんの間隔というか距離感というか
忘れちゃってる奴おるよな
自分のオカンに対して無限に批判するような態度の
0631デフォルトの名無しさん
垢版 |
2017/07/06(木) 12:15:37.69ID:OTGRz3s4
リファクタリングのRuby版読むと、
Rubyのコードが如何に解説するのに向いているかわかる

こんな感じのRubyのコード使った解説本はもっと増えて良い
0632デフォルトの名無しさん
垢版 |
2017/07/06(木) 12:41:45.00ID:JvJmzwJo
とりあえず
> 今現在はどちらかというと静的型のほうが生産性があるんじゃないか、とすら言われている
このソースが欲しいとこだな
まーこいつの妄想だろうが
0633デフォルトの名無しさん
垢版 |
2017/07/06(木) 13:20:06.18ID:YVvleWfm
リファクタリングするときとかIDEの力を借りれば
静的のほうが生産性が上がるかもとは
散々言われてきたが?
0635デフォルトの名無しさん
垢版 |
2017/07/06(木) 22:14:31.93ID:DNqxUdzY
>>619
> Rubyが今の100倍速くなったとしたらどうなんだ?
速い代わりに、C++言語みたいになったりしたら
戻してくれって言うよ。生産性が落ちるんだから当たり前じゃないかw
0636デフォルトの名無しさん
垢版 |
2017/07/06(木) 22:19:42.92ID:DNqxUdzY
プログラム言語っていうのは道具だからね。(その言語の開発者以外は)

一般的な道具で考えてみればわかる
速いけど不便。少し遅いけど便利。

遅くても実用上問題なければ、便利な方を
取ることの方が多いだろう。

誰もがF1カーに乗るわけじゃあるまいしw
0637デフォルトの名無しさん
垢版 |
2017/07/06(木) 23:14:22.78ID:jsnas7L+
既存の言語に文句いうやつが
その言語以上の素晴らしい言語を作った例は皆無

あるとしたら…それこそperlに対するrubyくらいのもん
0638デフォルトの名無しさん
垢版 |
2017/07/06(木) 23:19:58.00ID:OTGRz3s4
633 :
デフォルトの名無しさん
2017/07/06(木) 13:20:06.18 ID:YVvleWfm
リファクタリングするときとかIDEの力を借りれば
静的のほうが生産性が上がるかもとは
散々言われてきたが?
634 :
デフォルトの名無しさん
2017/07/06(木) 13:39:42.81 ID:tNWdrmh7
>>631
それ暗にRubyはクソコードはが多いとdisられてるんじゃね

流石にこれは気持ちわる過ぎる
0639デフォルトの名無しさん
垢版 |
2017/07/06(木) 23:24:14.70ID:DNqxUdzY
>>633
> リファクタリングするときとかIDEの力を借りれば
> 静的のほうが生産性が上がるかもとは

大規模システムの場合はそうだけど、
小規模の場合は大差ない。

そして技術力が高い人ほど、システムを小規模に保つことができる。

技術力が高い人ほど動的の方が生産性が高い場合が多くなる
0640デフォルトの名無しさん
垢版 |
2017/07/06(木) 23:29:32.44ID:OTGRz3s4
そんなに健常者に混じりたいのか?
0641デフォルトの名無しさん
垢版 |
2017/07/07(金) 01:03:55.66ID:6Wd58F7c
OpenGLのgemつっこんでぐりぐり動かしてるけど、
テクスチャ関連やアニメーションモデルのデータの持ち方がいまいちピンと決まらない
その場で決めても後日、なんか手をいれなければならなくなる気がして二進も三進も

Rubyならでは冴えたやり方ってない?
0642デフォルトの名無しさん
垢版 |
2017/07/07(金) 05:22:24.20ID:1OiH67XQ
>>596
>>593だけど、おいらのレスに乗っかって何やら面白いことになってんね。
自分で関数から何からLLで書けばそうなんだけど、LLのライブラリじゃCで書かれてること多いからね。
それにI/O多いLLお得意の文字列処理とかは>>594の言う通り大差ない。
計測した事あるけど誤差の範囲って言って良い。
小説何十冊分が1ファイルに入ったりした時に差が体感できる程度。
100冊分超えたらCや他のコンパイラ言語検討して良いと思う。
30MHZが遅いって言ってもPICとかのマイコンは4MHzとかで、それでも十分人間より速い。

Prolog勉強した時はプログラミング言語は本来こうあるべきって書いてるページあって、方向性はそうだけど、その解は絶対Prologじゃねーって思ったけども。
確かにここまでCPU速くなったなら、人間がコンピュータのアーキテクチャに合わせる必要はない。
とは言え、CPUのx86と同じ、すでにコード資産が無視出来ないんよな。。。
0643デフォルトの名無しさん
垢版 |
2017/07/07(金) 08:48:43.90ID:ntVt91QO
バージョン上げたgccでrubyのバージョン更新したら遅くなったからgccに要因があるのかrubyに要因があるのかヒントになる情報をくれって>>584 が訊いてるのに
なぜこんなアホな話が出てくるんだ?
0644デフォルトの名無しさん
垢版 |
2017/07/07(金) 11:01:19.92ID:ntVt91QO
晒しage
0645584
垢版 |
2017/07/07(金) 12:15:57.82ID:de0deAJS
まあ関係ない話はおいといて…

>>585
gemの入れ直しが面倒なのでプロファイラは後回しの予定.
>>586
家のマシンだとgccの入れ替えに10時間かかるんだ……(フルビルドしてるせいだけど)
というわけで手元にソースがあった3種類のrubyをgcc7.1.0でビルドし直して入れ替えて
問題のスクリプトをtimeで計ってみた。

ruby2.1.2 2.0秒 -> ruby2.3.1 2.4秒 -> ruby2.4.1 2.8秒
もちろんioとか抜いたuser時間ね。

修正履歴をざっと調べたところ
Bignum(だっけ?とにかくでかい整数)周りの修正が影響しているんじゃないかと現在考慮中。
0646デフォルトの名無しさん
垢版 |
2017/07/07(金) 12:35:48.56ID:6Wd58F7c
二日前の話をなぜ今に?

もしかして情報がもっと欲しいの?
だったらrubyのソースコードを読むしか無いよ
0647584
垢版 |
2017/07/07(金) 14:11:00.10ID:de0deAJS
>>646
あーいや、情報についてはあんまり期待してない。

もともと
「実際に体感できるレベルで速度低下してるが適当にググっても情報が無い」+
「gccの入れ替え面倒というか今週暑過ぎ」
というのが質問の理由だったからね.

実際幾つか他の適当なスクリプトでも実行時間を計測して比較してみたところ、
ここまで大きな速度低下は無かったというのもあって今では少し安心してる。
入れ替え後最初に実行したスクリプトで地雷を踏んだのは運が悪かった。
0649デフォルトの名無しさん
垢版 |
2017/07/08(土) 13:12:39.97ID:3StuOUHl
>>619
>>635
CとのインターフェースならPythonの方が良いよ
0650デフォルトの名無しさん
垢版 |
2017/07/08(土) 13:18:08.48ID:lhqNZaXL
いつまその話引っ張るつもりだよ
0653デフォルトの名無しさん
垢版 |
2017/07/08(土) 15:45:07.53ID:FfZt44/H
>>645
まさか、Fixnum関係ではないよなあ?
ペナルティがないこともIntegerに統合した理由だろうと思ってたんだけど。
0654デフォルトの名無しさん
垢版 |
2017/07/11(火) 01:41:06.03ID:MbVhLJ6O
railsスレから移動してきました。

def index
UNIXSocket.open('/tmp/myapp.sock') do |sock|
sock.write(params.to_query)
rt = sock.readline
render text: rt
end
end

みたいなことがしたいのですが、どうも
rt = sock.readline
のところで処理が止まってしまうように見えています。
renderの部分まで処理を進めるにはどのような書き方をすればよいのでしょうか。
教えて頂けますと嬉しいです。
0655デフォルトの名無しさん
垢版 |
2017/07/11(火) 02:00:52.46ID:7uNv3Rqd
sock.write(params.to_query)
rt = sock.readline

書き込んで、読み込む?
矛盾してないか?
読み書き両用なのか?

もし両用なら、相手からの返事を待っているのだろう
0656デフォルトの名無しさん
垢版 |
2017/07/11(火) 02:19:22.94ID:MbVhLJ6O
レスありがとうございます。
やりたいこととしては、socket.writeでソケットにクエリを投げて
通信先で処理を行ってレスポンスが返ってくるので、
それを sock.readline で読み取るという双方向な感じのことです。

通信先のプロセスをkillするとなぜか処理が進んで、rtに正しいデータが格納され、
render まで処理が進むのですが・・アドバイスいただけると幸いです。
0658デフォルトの名無しさん
垢版 |
2017/07/11(火) 02:46:23.42ID:MbVhLJ6O
レスありがとうございます。
すみません自己解決しました。

def index
s = UNIXSocket.new("/tmp/myapp.sock")
s.send(params.to_query, 20)
render text: s.recv(20)
end

こっちの方の書き方を試してみたところ、うまくいきました。(20は適当な数値)
何がどう違うのかよくわからないですが・・
0661デフォルトの名無しさん
垢版 |
2017/07/11(火) 19:44:38.95ID:3Ue5zlRS
>>658
sendで使っている数値の20だけど、第二引数は flags になってる

mingw32(windows)だと (MSG_MAXIOVLEN | MSG_DONTROUTE)
linuxだと (MSG_PROBE | MSG_DONTROUTE)
FreeBSDだと (MSG_TRUNC | MSG_DONTROUTE)

を意味することになり、あなたの意図するところじゃないはず

recvの方は第一引数で最大20バイトの読み込みを意味するけど、
readlineは改行まで読み込むメソッドだから、振る舞い方に違いがある


一つの通信単位が任意長で、改行で終わらせたいなら
s.send(params.to_query, 20) を s.puts(params.to_query); s.flush

s.recv(20) を s.readline じゃだめかな?

もっとも params.to_query に改行が含まれているとうまく行かないけれど
0662デフォルトの名無しさん
垢版 |
2017/07/12(水) 06:30:11.01ID:HQm2gXhD
バッファリングされているから、flush で出力するのか
0663デフォルトの名無しさん
垢版 |
2017/07/12(水) 10:12:13.87ID:z1EDa6/Q
>>661
そのあたりは、通信先のkillで挙動が変わらないのでは?
どうせ真のkillではないんだろうし、flushがありがちじゃない?
0664デフォルトの名無しさん
垢版 |
2017/07/13(木) 10:59:11.29ID:0lfkoIF4
エラーの時のスタックトレースがコンソールに大量のログが出るのを減らすことってできませんか?
0666デフォルトの名無しさん
垢版 |
2017/07/13(木) 12:17:59.84ID:FtHnJB7n
エラーなんだから仕方なかろうよ
もしプロダクションレベルであんまり内部パスとか詳らかにしたくないというのなら全体をrescueするしかないね
begin

# main_thread()

rescue RuntimeError => e
warn e.message
exit(1)
end

RuntimeErrorじゃないのだったら適当に増やしとけ
0667デフォルトの名無しさん
垢版 |
2017/07/13(木) 17:38:19.70ID:fH9gUBRZ
ruby -W0 で起動して減らなかったらどうしようもない
そういう便利オプションみたいなのはないのですわ
0668デフォルトの名無しさん
垢版 |
2017/07/14(金) 12:23:44.38ID:M2zlfEHR
○○課
○○課○○室
○○課○○係
○○課○○室○○係
○○課○○ライン

みたいな文字列を入れたときに

[○○課]
[○○課, ○○室]
[○○課, ○○係]
[○○課, ○○室, ○○係]
[○○課, ○○ライン]

みたいに分割してくれる関数を作りたいのですが上手くいきません
いい方法はないでしょうか
0669デフォルトの名無しさん
垢版 |
2017/07/14(金) 12:53:09.53ID:M2zlfEHR
>>668
とても下手くそなやり方だと思いますが一応できました

def my_split(str)
 arr = Array.new
 str_arr = Array.new
 arr.push 0
 str.each_char.with_index do |ch, i|
  arr.push i+1 if ch == "課".encode("windows-31j")
  arr.push i+1 if ch == "室".encode("windows-31j")
  arr.push i+1 if ch == "係".encode("windows-31j")
 end
 arr.each_with_index do |e, i|
  str_arr.push str.slice(arr[i-1]..(arr[i]-1)) unless i == 0
 end
 str_arr
end
0670デフォルトの名無しさん
垢版 |
2017/07/14(金) 14:04:05.91ID:Oez5CIDd
>>668
def spj(s)
reg = Regexp.new("[課室係]|ライン")
a1=s.split(reg)
a2=s.scan(reg)
return a1.zip(a2).map{|x| x.join("")}
end
0671デフォルトの名無しさん
垢版 |
2017/07/14(金) 14:48:32.40ID:JyiCltLg
>>668
"○○課○○室○○係"..scan /.*?(課|室|係|ライン)/ # => ["○○課", "○○室", "○○係"]
なお○○の部分に"課"等の文字が来てはいけない
0673668
垢版 |
2017/07/14(金) 17:28:16.98ID:+o1J8cU+
>>670>>671
ありがとうございます
すごくシンプルに書けるんですね
0685デフォルトの名無しさん
垢版 |
2017/07/16(日) 18:59:56.18ID:yo5XpH/o
壊れてもバックアップ環境あるから
使いにくくなって効率下がるだけで他は変わらない
0686デフォルトの名無しさん
垢版 |
2017/07/17(月) 11:01:21.40ID:cSztc20o
未だにgemって良く判らない。インタプリタなども含めて一式を配布するような場合は邪魔でしかない印象
0687デフォルトの名無しさん
垢版 |
2017/07/17(月) 11:05:59.42ID:5WhJSLEy
外部のライブラリをスッ…とインスコできるやつ、色々作ってる側からすると便利、まああんまり好きじゃないけど
0688デフォルトの名無しさん
垢版 |
2017/07/17(月) 11:14:05.33ID:fxU6unKK
バージョン変わって依存関係めちゃくちゃなって
何か月とか何年かあとになって
再度同じ環境構成しようとしても
以下略
0690デフォルトの名無しさん
垢版 |
2017/07/17(月) 11:59:55.25ID:V9kDayPy
>>686
>インタプリタなども含めて一式を配布するような場合
Rubyでそういうことをしてはいけない
スクリプト言語にとってのインタプリタバイナリはライブラリ選択前に既にインストールされているものなのだ
rubyがインストールされ(てい)ない環境でも実行して欲しいようなものをRubyで作っては「絶対に」いけない
0692デフォルトの名無しさん
垢版 |
2017/07/17(月) 13:41:49.80ID:CuRtYSJT
>>691
VagrantやChefはユーザーによるスクリプティングを可能にするためにRubyを入れてるんであって、
プロダクトをRubyで作っちゃったから仕方なくRubyを入れてるわけではないよ
一方SASSはRubyで作っちゃった例だけど、Rubyが嫌われてnodeへ移行した
0696デフォルトの名無しさん
垢版 |
2017/07/17(月) 18:22:28.87ID:cSztc20o
gemを使わないで何とかしようとすると情報が一気に減るんだよな。下手するとビルド方法の資料すらなかったり

>>688
あるあるすぎる。今まさにそれで頭を抱えている。昔出来たはずのことを再現しようとしているけどどうしたものか・・・

>>689-690
exerbやocraを全否定ですか

>>694
mrubyは検討したけど使えそうなライブラリが無くてcrubyにせざるを得なかった。ライセンス不明はやめてほしい
0697デフォルトの名無しさん
垢版 |
2017/07/18(火) 00:28:34.69ID:2jGZGtzj
わかってると思うけど、Rubyのネガキャンやってるのがこのスレに粘着してる
こういうのは見付け次第叩いてやらないといけない
0699デフォルトの名無しさん
垢版 |
2017/07/18(火) 07:19:41.41ID:soRF6X66
いまだにRuby万能説に縋りRuby万能を否定されると発狂する人が住んでるのか
それは10年も前に終わった言説だ
いつまで寝ているんだ目を覚ませ
0700デフォルトの名無しさん
垢版 |
2017/07/18(火) 12:48:36.31ID:6DbTRi2A
Ruby が最上流。
他の言語よりも、常に、2, 3年早い

Rails, vagrant, chef, SASS など

DSL では、Ruby, Groovy が優れているから、
最初にこれらの言語で作られてから、Python, JS へ移植される

Kotlin も注目されているけど、型を指定するのが面倒。
まあ、型を省略して、型推論もできるけど
0701デフォルトの名無しさん
垢版 |
2017/07/18(火) 16:13:18.86ID:bC2KM4MS
rubyが最上流?
ワロス
そんな優れてるならphpもpythonも喰ってるよ。

しかも、落ち目だし。
0702デフォルトの名無しさん
垢版 |
2017/07/18(火) 16:18:08.82ID:bC2KM4MS
しかも、型省略して型推論とか微妙な言い回ししてるあたり、分かってない臭がすごくてやばい
0704デフォルトの名無しさん
垢版 |
2017/07/18(火) 18:59:56.81ID:jUpeemmL
Kotlinの型推論はただの典型的な型推論ですよ
それこそ「型指定が必要だけど型推論に任せることもできます→まあ便利」で済むレベル
わかってないのは間違いないのだろうけれど
0705デフォルトの名無しさん
垢版 |
2017/07/19(水) 22:04:21.42ID:nwQCI0l5
たとえばArrayにメソッドfuncAを追加する時は
class Array
 def funcA
  return ["AAA"]
 end
end
みたいに書けば出来ますがこれをCの拡張ライブラリにしたい場合ってどうすれば良いんでしょうか?
Cからメソッドの登録を行う場合は
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(), int argc)
を使用するようですが第一引数をどのように得ればいいのか判りません
0706デフォルトの名無しさん
垢版 |
2017/07/19(水) 22:15:34.36ID:kPQDkgCo
rb_define_method(rb_cArray, "funcA", hoge_func_a, 1);

static VALUE hoge_func_a(VALUE self, VALUE arg1) { }
0707デフォルトの名無しさん
垢版 |
2017/07/19(水) 22:52:50.29ID:nwQCI0l5
え?"Array"というRubyの名前空間上の文字列?からklassを得る方法って無いの?
実際にメソッドを追加したいのは拡張ライブラリなんだけど、クラスやメソッドの登録は
関数内で行われていてklassが明示的に外部へ公開されているようには見えないのだが・・・
0710デフォルトの名無しさん
垢版 |
2017/07/20(木) 14:22:33.47ID:+aBWrhxZ
697の見え見えの釣り針にひっかかる粘着なんておらんやろ
って思ってたけど、見事に食い付いてるな

マジスゲー
0711デフォルトの名無しさん
垢版 |
2017/07/20(木) 22:29:26.18ID:wsBNKQXr
>>708
ありがとう
弄りたいのは野良の拡張ライブラリです
rb_path2classで出来そうなのでこれを使ってみます
0712デフォルトの名無しさん
垢版 |
2017/07/22(土) 14:27:06.95ID:GRw82bJl
拡張ライブラリをコンパイルする時に任意の場所にあるヘッダファイルやライブラリファイルを
探索させるようにするにはどのようにすればいいのでしょうか
0715デフォルトの名無しさん
垢版 |
2017/07/22(土) 15:46:06.83ID:GRw82bJl
>>713
そうですけどextconf.rbで作ったMakefileをいちいち手編集するのは正攻法ではないですよね

>>714
have_header("C:\\foo\\hoge.h")
とか
have_header("C:/foo/hoge.h")
とかやってもnoと言われてしまいます
0716デフォルトの名無しさん
垢版 |
2017/07/22(土) 15:56:18.40ID:GRw82bJl
あ、自己解決。dir_configを使えば良かったのか
dir_config("myproject")
とか書いて
ruby extconf.rb --with-myproject-include=C:\foo
とかするとそのディレクトリを探索対象に加えてくれるみたいです
0720デフォルトの名無しさん
垢版 |
2017/07/23(日) 08:53:05.99ID:1hI9T8Bk
ひとまず形にはなった。ALLOC_Nの開放の仕方が判らないのでALLOCA_Nにした
ALLOC〜って初期化してくれないんだな。ゴミが混じってメモリ破壊の
バグがあるのかとしばらく悩んだ。でもCはど素人だしなんかありそう

>>718
コマンドラインの方が容易に変更できるのでdir_configで行こうと思います
0721デフォルトの名無しさん
垢版 |
2017/07/23(日) 10:43:01.15ID:FBMkfY4k
>>720
ruby/ruby.hを大文字のALLOCで文字列検索してみ
RB_ZALLOCとかRB_ZALLOC_Nとかが0で初期化してくれる

あと確保したこれらはxfree(void*)で解放してね
0722デフォルトの名無しさん
垢版 |
2017/07/23(日) 21:56:04.93ID:1hI9T8Bk
>>721
ありがとう。ZALLOC_N&xfreeにしてみました
ALLOCA_Nってruby/ruby.hをみたらallocaを呼んでいるだけじゃないかw

拡張ライブラリ内部における動的なメモリの確保ってどうするのが好ましいんだろうな
スタックに積む方法はメモリのリークはないけどスタックを圧迫する(.今の環境だったら気にするほどでもない?)
allocして後にfreeする方法だと意図せず途中で抜けた時にメモリがリークする
Rubyの文字列を作ってそれを利用すると言う方法を紹介しているblogもあったけど・・・う〜む・・・
0723デフォルトの名無しさん
垢版 |
2017/07/23(日) 23:04:03.89ID:FBMkfY4k
>>722
俺も外部の人間だから本当に適切な方法なんて知らないけど……

VALUE bufvalue;
size_t bufsize = 1024;
void *ptr = RB_ALLOCV(bufvalue, bufsize);

任意の処理を行う
ここで例外が発生しても次のGCで勝手に開放される
bufvalueはrubyの世界へと出さないように気をつける

/* メモリの即時開放(freeされる) */
RB_ALLOCV_END(bufvalue);



VALUE bufstr = rb_str_buf_new(bufsize);
void *ptr = RSTRING_PTR(bufstr);

任意の処理を行う
rubyの世界に出しても問題なし
ただし出したあとで再び使う場合は必ず
rb_str_modify(bufstr); /* freezeされたらaboneするけどな */
ptr = RSTRING_PTR(bufstr);
をやり直す

/* メモリの開放(即時開放されるかは実装任せ) */
rb_str_resize(bufstr, 0);


こんな感じかな
0724デフォルトの名無しさん
垢版 |
2017/07/24(月) 00:44:09.77ID:7DZLuR6j
今気がついたのだが・・・
自作メソッドの入力値が不適切→rb_raiseを叩く→Segmentation fault
rb_raiseの引数に動的な物は含まれていないし、未解放のメモリがあるわけでもないしどうなっているんだ
例外を発生させる時の作法とかあるのだろうか

しかも2個作ったメソッドの片方だけこの現象が起きる。処理内容に問題があるわけではないけど
これを放置するのはマズイよな

>>723
ありがとう。参考になります
0725デフォルトの名無しさん
垢版 |
2017/07/24(月) 05:46:45.69ID:q6ge4pC6
メモリスタック確認するのが一番じゃね?適当だけど
0726デフォルトの名無しさん
垢版 |
2017/07/24(月) 08:11:09.42ID:rFx+DNZY
なるほど・・・ってVC++環境でコアダンプってどうやって取れば良いんだろ
ググるとWindows Error Reportがトラップしている時にタスクマネージャからダンプさせる
とか出てくるけどトラップされている訳じゃないのでこの方法は使えないし・・・
それともどこかにダンプが保存されているんだろうか
0730デフォルトの名無しさん
垢版 |
2017/07/27(木) 10:11:51.47ID:FeDFxsXm
ソフトウェアデザインがインターフェースの記事を丸々パクって問題になったことがあったな
0731デフォルトの名無しさん
垢版 |
2017/07/29(土) 18:02:23.06ID:Xgmp5DuD
VisualC++でビルドすると--disable-debug-envを付けてもデバッグビルドになってしまうように見えるけど気のせいかな・・・
インストールされるサイズが--enable-debug-envと比べてちっとも変わらない
生成したMakefileにデバッグ関係のオプションを削ったCFLAGSとLDFLAGSを書き込んだらインストールサイズが大分小さくなった
0732724
垢版 |
2017/07/31(月) 01:44:48.62ID:0NH1HYUL
ようやく原因がわかった
rb_scan_argsの第3引数が"22"と不適切な値にしていたことが原因だった。適切な"2"にしたら問題なくなった
複数のスレッドが動いているため?か例外を起こす場所が一定になるわけではない模様
rb_pでデバッグしていくと>>724の位置で例外が起きる(rb_raiseの第一引数がぶっ壊れていると
思われる)んだけど、デバッガで追いかけるとrb_scan_args内部で例外が起きる
0733デフォルトの名無しさん
垢版 |
2017/07/31(月) 02:05:04.23ID:9Hgupd7z
要約すると
Ruby ⇔ C と行き来するのはえらく面倒だ
ってことだな
これなら、Rubyを使うことそのものが目的じゃないのならだが
初めから Java、C#、C++ などを使ったほうが良かったってこったな
0734デフォルトの名無しさん
垢版 |
2017/07/31(月) 07:03:37.88ID:VY/jm5nF
というか今時はRPCやメッセージキューを使って完全に分離してしまえばいい
WindowsでRubyの時点でどのみち実用性のないオナニーなんだから好きにすればいいけど
0735724
垢版 |
2017/07/31(月) 08:10:27.67ID:S3S/4XWd
引数を間違えると警告もなくメモリをぶっ壊す関数って絶対にこれだけじゃないよね・・・
今回の件で困ったことまとめ
・VC++のコマンドラインからビルドした物をデバッグする例が全然見つからない
 VC++のIDEで開発したプロジェクトやgcc&makeで開発した物をgdbでデバッグする例なら沢山出てくるんだけどな
・CLIアプリケーションのためかデバッガから起動させるとgem関係のファイルがないとRubyが例外を吐いて動かない
 requireの後に$<.getsを書いてコマンドプロンプトから起動。デバッガからアタッチしてブレークポイントをセット後に
 Enterを入れて実行を再開。ただし100%上手くいくわけではない模様。無限ループ?にはまる時もある
 エントリーポイントで止めて環境変数やカレントディレクトリを適切に設定した後に再開すれば動くのかな?
 やり方が判らないけど
・RubyがSegmentation faultをトラップしてしまうためにメモリダンプを取れない?
 signal.cやwin32.cでそれっぽそうなところを書き換えてみたけどトラップを止めさせることは出来なかった
 どこを弄ればいいのだろうか・・・

C/C++は不慣れなので変なことを書いていたらスマン
0736デフォルトの名無しさん
垢版 |
2017/07/31(月) 15:59:11.85ID:2wHF06gt
ファイル名以外でファイルを識別するにはどうしたらいいんだ?
ファイル名変更したとしてもファイル名変更前とファイル名変更後のファイルを同じものとしてみたい
ファイルクラスのドキュメント見てみたけとそれらしいのはなかった
0742デフォルトの名無しさん
垢版 |
2017/08/01(火) 16:59:50.09ID:T1EbqLjy
いまどきのファイルシステムなら拡張属性つかえんじゃない?
索引つくれないと面倒だけど中身比較するよかまし
0743デフォルトの名無しさん
垢版 |
2017/08/01(火) 19:11:35.76ID:ggiqqoER
>>742
拡張属性をRubyから使うのは面倒じゃないか?

オレとしては、要件を考え直すことを勧めたいが。
そういうアプリを見ないのはそれだけの理由があるんだから。
0744デフォルトの名無しさん
垢版 |
2017/08/01(火) 19:40:15.57ID:PARHYe6N
まあ「inode見ればファイル名変更にも追従できる!」なんてやらなきゃいけない時点でなにかがとてつもなくおかしいわな
gitみたいなかんたんファイル変更検知機能付きアプリケーションを見てみると絶望できるかもしれないね
0745デフォルトの名無しさん
垢版 |
2017/08/02(水) 13:55:20.56ID:5on7mlkV
rubyでcoincheck apiを使ってみたいんだけど、いまドットインストールを見終わって、たのしいRubyを見終わったんだけど、opensllとかuriとかnet/httpとかの使い方はどうやったら分かるようになるのかな
0746デフォルトの名無しさん
垢版 |
2017/08/02(水) 20:17:50.89ID:Y8o6EGzu
それくらいはマニュアル見ろよ
ということでマニュアルの読み方の勉強が必要

ただ、それらのライブラリはプロトコルをちっとも隠蔽してくれてないのでOpenSSLやURIやHTTPの基礎知識は必須だぞ
普通なら使いたいapi試しながら勉強しろと言うんだが絶妙にトライアルアンドエラーのしにくい分野のapiなのが辛いな
0750デフォルトの名無しさん
垢版 |
2017/08/03(木) 21:17:20.06ID:Wy5AX0em
>Ruby並みに生産性が高く、C並みに高速で何でも作れる言語

じゃーC++だね
生産性はJavaやC#には負けるかもしれないが
静的型言語だから少なくともRubyより生産性あるしな
0752デフォルトの名無しさん
垢版 |
2017/08/03(木) 22:12:01.14ID:Wy5AX0em
8万行ぐらいのフリーソフトなら作ったことあるけど
逆にRubyでこの規模のソフト開発するのは嫌だなぁ
0753デフォルトの名無しさん
垢版 |
2017/08/03(木) 22:14:29.74ID:Wy5AX0em
C++は割と何でも作れる懐の深い言語だと思うよ
速度も最速といってよいレベルだし
C++で作って重かったらもう諦めるっつーか
諦めも付く
0754デフォルトの名無しさん
垢版 |
2017/08/03(木) 22:16:49.93ID:Wy5AX0em
そもそも
>ある程度の規模のアプリ書いたことある?
って聞き方がおかしいんだよなぁ
どちらかと言えばRubyは短いプログラムをサクッと作るのが得意分野なのに
ある程度の規模が前提なら、そりゃ、静的型の方が良いだろうよ
0755デフォルトの名無しさん
垢版 |
2017/08/03(木) 22:20:14.12ID:rbKeWnbz
一般的にメモリの保護機構を持たないと言うだけでその言語の生産性はかなり下がる
後に開発された言語の多くがメモリの保護機構を用意していることからもこれは明らか
C++でコンパイルが通れば一発動作のスーパーハッカーなら生産性は高いだろうけど
そりゃ言語の生産性が高いわけではなくそいつが凄いだけw
0758デフォルトの名無しさん
垢版 |
2017/08/03(木) 22:27:27.39ID:Wy5AX0em
だから
>(C++は)生産性はJavaやC#には負けるかもしれないが
って書いただろ
でもRubyより有ればひとまずそれで良いんだろ?
しかも>>751なんかは「ある程度の規模」って条件を指定してるし
0759デフォルトの名無しさん
垢版 |
2017/08/03(木) 22:29:36.38ID:yhj86Quo
>>758
C++はRubyより生産性は明らかに低いよ
メモリ管理は面倒だし、ちょっとなにかやればSEGVするし
0760デフォルトの名無しさん
垢版 |
2017/08/03(木) 22:36:03.43ID:Wy5AX0em
それでも静的型の方が生産性があるってのが業界のFAだろ?
最近出てきた言語はどうなってる?当たり前に静的型の機能を持ってるだろ
あと、C++はRubyよりシェア(という言い方が適切かは分からないが)高いし
コミュニティーも活発だよ
だから
>Ruby並みに生産性が高く、C並みに高速で何でも作れる言語
の回答はC++だ
他に選択肢有るか?
0761デフォルトの名無しさん
垢版 |
2017/08/03(木) 22:37:48.85ID:Wy5AX0em
あと、C++はライブラリも結構豊富な方だと思うよ
Cのライブラリも使えるし、まぁ、大体は何でも
言語の生産性を考えたとき、利用者が多いことも有利に働くよ
0762デフォルトの名無しさん
垢版 |
2017/08/03(木) 22:44:10.59ID:yhj86Quo
>>760
> 最近出てきた言語はどうなってる?当たり前に静的型の機能を持ってるだろ
最近出てきた言語はどうなってる?当たり前にメモリ管理機能を持ってるだろ

静的型のメリットをメモリ管理のデメリットが塗りつぶしてるんだよ、C++は
0764デフォルトの名無しさん
垢版 |
2017/08/03(木) 22:51:34.98ID:Wy5AX0em
それに周りを見渡してみればC++で書かれた
大規模中規模アプリが山のようにあるのに
本当に生産性が低いといえるのかどうなのか
0765デフォルトの名無しさん
垢版 |
2017/08/03(木) 22:58:07.67ID:6SHaFuae
生産性が高ければそこそこの「シェア」も自然とあるだろうが
そこそこの「シェア」があるからといって生産性が高いとは限らない
0767デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:02:53.79ID:yhj86Quo
>>764
スーパーハカーがよってたかって書いてるからね
残念ながら一般人はスーパーハカーではない
0768デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:08:35.02ID:Wy5AX0em
>>765
>生産性が高ければそこそこの「シェア」も自然とあるだろうが
いいこと言うね、つまりRubyは生産性が無いってことだな

>>766
Java使えばよいよ
ただ、質問者?はC並みの速度って注文を付けてるからね
だったらC++だね、と
それでもRubyよりは生産性有るから問題ないだろう

>>767
君の思ってる一般人の基準がおかしいんじゃないの?
0769デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:10:08.67ID:yhj86Quo
>>768
> 君の思ってる一般人の基準がおかしいんじゃないの?

君の方がおかしいよ
C++の方が生産性が高いかどうかアンケとってみた方がいいよ
0770デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:11:31.02ID:9Ns8iW3Z
>>759
メモリ管理が面倒と思えるのは下手な証拠
C++ の RAII は手放せないのだが,他の言語でこの手の手法は使えないんだよね
0771デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:12:12.72ID:yhj86Quo
第一、なんでそんな人間がRubyスレ覗いてるの?
君の意見だとRubyには見るべきところなんて一切ないはずなのにさ

別の言語を叩いてスッキリしたいのか、煽ってるだけなのかどっちかだよね
どちらにしても性格最悪だね
0773デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:20:08.59ID:Wy5AX0em
>>770
実際問題、スマポもあるしな
問題になるのは循環参照がある場合だけだけど
でもそれは設計段階でわかることだから
片方をweak_ptrにすれば良いだけだしな
言うほど面倒ということもないし
世の中のC++アプリは普通に動いてるし
あと、短い間しか生きてない、常駐しないプログラムなら
メモリをいちいち開放する必要もないしな
OSに任せておけばよいだろうよ

>別の言語を叩いて
俺は別にC++に所属しているわけじゃないし
「別」も糞もない、俺にとってC++もRubyも一言語にすぎないよ
0774デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:21:25.18ID:Wy5AX0em
だいぶズレてきてしまっているけど、もともとは
>Ruby並みに生産性が高く、C並みに高速で何でも作れる言語
ってお題だぞ
C++しか無いだろ
0775デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:24:01.10ID:rbKeWnbz
C++の生産性が次世代C、C++を目指して開発されたD、Go、Rustなどを上回ることはないと断言して良いはず
C++の名を挙げるならその前にこれらを挙げるべきだ
0776デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:28:11.69ID:Wy5AX0em
シェアが少なかったり使える人が少ない言語なんか選んじゃだめだよ
今は生産性の話をしているのに
だからC++なのさ
0778デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:30:28.02ID:6SHaFuae
>>768
「生産性が高ければそこそこの「シェア」も自然とあるだろうが
そこそこの「シェア」があるからといって生産性が高いとは限らない」
という言説からどういう論理で
「つまりRubyは生産性が無いってことだな」
という結論が出るんですかね
これらから言えることは飽くまで「シェア」があることからは生産性に関して何も推論できないということ
肝心なところの説明がふわっとしてて独善的なんだよ
0779デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:31:12.11ID:Wy5AX0em
特にD言語なんか挙げてる時点で何もわかってないね
あれはもうダメでしょ、誰がどう見ても
D言語の開発がいつ始まったか知らないけど
10〜15年ぐらい経ってこの状況なのに
これから先どう化けるってのよ
あんなので開発するのは生産性以前の問題だよ
0780デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:33:45.92ID:yhj86Quo
結局何が言いたいんだろうね
Rubyなんて使えないってことですかね?
だとしたらそれはRubyスレで語ることですかね?
0781デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:38:14.16ID:Wy5AX0em
>>778
自分で
>生産性が高ければそこそこの「シェア」も自然とあるだろう
って言ったんだろ
言い換えれば、シェアが無い言語は生産性が無いってことになるだろ?
分かりにくかったら会話風にして例を出してやろうか?
A:Rubyって生産性高いんですか?
B:生産性が高ければそこそこの「シェア」も自然とあるだろう(実際には無い)
A:あ、低いんだ・・・

>これらから言えることは飽くまで「シェア」があることからは生産性に関して何も推論できない
そういうことが言いたかったら
「生産性が高くてもシェアがあるとは限らないし
 シェアがあるからと言って生産性が高いとも限らない」
っていうべきじゃん
でも君の言ったのは
「生産性が高ければそこそこの「シェア」も自然とあるだろう」
だからね、お忘れなく
0785デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:43:34.73ID:rbKeWnbz
生産性は成果/コスト
C++を含むC系言語の生産性ってどのくらいなんだろうね
非標準ライブラリの信頼性検査コストや、デバッグのコスト、言語仕様に
起因する事故の損失や対応に要したコストを積み重ねたら悲惨なことになりそう
0786デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:46:00.36ID:yhj86Quo
>>784
初心者がなぜRubyはC++より生産性が低いって断言してるの?
使ってもいないくせに断言できるわけないよね?
0787デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:52:39.73ID:85r5WZPx
ぶっちゃけて言うと、メモリ管理がびみょいC++は生産性低いかも知らん



「特定の業種だと」C++がデフォルトって話にはなるわな
なに組み込んでんの? 的な意味で
ゲームもそうらしいが俺はゲーム業界知らんので

あとは単純な「慣れ」の問題もあるだろう
「慣れ」は個人の主観的感想
キチンとポジション明確にしてる人(例:「俺組み込みやってるんだけどさ」と前置きがあったといった人)
が言ったのでなければ無視すべき項目

とりあえず >> 768 の
> それでもRubyよりは生産性有るから問題ないだろう
という一文を見る限り、RubyじゃなくてC++スレに行くべき人ではないかなぁと判断している
RubyよりC++のほうが得意ならC++の話をC++スレでしているべきだ
0788デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:55:37.05ID:6SHaFuae
「生産性が高ければ「シェア」もある」は
「「シェア」がある」が真ならこの命題は満たされてこれ以上『生産性に関して何も推論できない』でしょ
もちろんこのことから「シェア」がなければ生産性が高くないと言えるという指摘は正しい
しかしそれまでにC++はRubyより「シェア」があるとは言っているがRubyには「シェア」が無いとは言っていないのでふわっとしてて独善的と評しただけの話
0789デフォルトの名無しさん
垢版 |
2017/08/03(木) 23:56:56.33ID:85r5WZPx
うわー俺酔っぱい度高ぇな、もう寝るか

あと久々にRubyist Magagineみたら「RubyからPython蹴ったら統計処理の対応できなくね?」という
変態の記事があったので……ああ、うんRuby使いっぽいなって思った(小学生の日記風感想)
Pygmentsもそれで対応してるからな、どんだけ他人の成果を再利用するつもりだあいつら(いい意味で)
0790デフォルトの名無しさん
垢版 |
2017/08/04(金) 00:01:33.92ID:6xnwiv0x
「C++のほうがRubyより生産性高い ※個人の感想です」

とか書いておいたら誰もケチ付けなかったと思うがねえ
レスは全部「お前の中ではな」になるだろうが
0792デフォルトの名無しさん
垢版 |
2017/08/04(金) 08:10:50.87ID:NssrcL9O
つーか言語の評価に標準ではないライブラリを持ち込んでいる時点で頭のおかしい人だろ
これが許されるならRubyで数値計算ライブラリや画像処理ライブラリを利用した時の速度をもって
Rubyでも高速に演算できると主張できてしまう。そんなことを吠えている奴がいたらアホ丸出しw
0793デフォルトの名無しさん
垢版 |
2017/08/04(金) 09:14:05.59ID:PF1N3/4o
>>790
言語を比較する際に、生産性のみを論点にするのはナンセンスだ。
生産者は人間および組織であって、その人間、組織の言語習熟度が生産性に大きく影響するからだ。



言語を比較する際に、
1. 学習容易さ
2. 作ったアプリの実行効率(実行に要する、時間、バッテリーの効率性)
3. 多様なアプリを作れるか?
4. 大規模、多人数組織でアプリを構築容易か?

こういった観点で比較しないと!
0794デフォルトの名無しさん
垢版 |
2017/08/04(金) 09:44:59.17ID:ABZoxKZM
初心者なら明らかにrubyのが生産性高いな
自分でプログラミング用のツール組むようになってくるとどの言語も大差なくなってくる気がする
簡素に書けるとかはストレスやミスを減らすのには役立つけど
自分がフレームワーク使ったり作ったりして結局ビジネスロジック記述だけが最終的な仕事だと思ってるからかもしんない
0795デフォルトの名無しさん
垢版 |
2017/08/04(金) 10:22:37.37ID:PF1N3/4o
Ruby初心者が毎日
# sample.rb
foo 14
bar 15
boo { | val | val > 5 }
bar 18

こんなビジネスロジックを記述するDSLばかり仕事で書かされていても、
Rubyについて習熟する事にはならない。

このファイルsample.rbがconfig.instance_eval File.read sample.rb
されている事を知らないと、全く何やってるか?判らんだろうなぁ。

おまけに、configがどのクラスのインスタンスなのか?判らんと初心者は、
生産活動しているとは言え、それはロボットと同じだ。

Railsアプリなんかは、こんな感じじゃ無いのか?
0796デフォルトの名無しさん
垢版 |
2017/08/04(金) 10:28:16.49ID:PF1N3/4o
SinatraのDSLの例

#sinatra.rb
get '/' do
'how are you?'
end

get '/path/to' do
"this is [/path/to]"
end

get '/erb_template_page' do
erb :erb_template_page
end

こんなん、がWebサイトになるなんて、初心者は納得できるのだろうか?
0797デフォルトの名無しさん
垢版 |
2017/08/04(金) 10:36:36.83ID:ABZoxKZM
お前だってtcpとかhttpレスポンスヘッダいちいち書かないだろ
大事なのは理解してるか、何かあったとき対応できるか
0798デフォルトの名無しさん
垢版 |
2017/08/04(金) 11:24:56.64ID:zdzyWEfw
プログラミング好きな奴がWebに籠もりたがるのは、仕事でソフトウェア開発すれば気持ちがわかるよ
手の届かないところに自分のコードをリリースするということがどれほど忌々しいことか
0799デフォルトの名無しさん
垢版 |
2017/08/04(金) 14:03:05.98ID:7yKCvYxX
実行環境を制御できないこともね
たとえ仮想でもサーバごと納品できるのは(その点においてだけ)最高
JavaScript書かなくてもよくなればもっといいんだけど、まあ、そこは現実のお金との兼ね合いということで
うまくいっている部分があればあるほど我慢もききますわいな
0800デフォルトの名無しさん
垢版 |
2017/08/04(金) 15:15:50.08ID:Mgeezcro
これだけ反応があってモゴモゴしてるってことは図星だったってことだな
>少なくともRubyより生産性あるしな
0802デフォルトの名無しさん
垢版 |
2017/08/04(金) 19:57:38.99ID:US5e0j3V
>>794
> どの言語も大差なくなってくる気がする

あーそれ分かる
意外とねぇ、言語ごとのあれこれってのはどうにでもなる
どうにでもならない部分は逆に言うとどの言語でも同じ
苦しむところはどこでも同じと思う
0803デフォルトの名無しさん
垢版 |
2017/08/04(金) 21:02:33.10ID:Mgeezcro
だとしたら実行速度が速い言語ほど優秀って事になりますね
1.5倍ぐらいなら全然許容範囲だろうけど
50倍〜100倍遅い言語は存在価値ありませんよね
0805デフォルトの名無しさん
垢版 |
2017/08/04(金) 21:42:15.51ID:Jq4PnWl3
出来ることに大差ないっていう文言を生産性等に大差がないと臆することなく換言する図々しさよ
0806デフォルトの名無しさん
垢版 |
2017/08/04(金) 21:47:51.74ID:Mgeezcro
>初心者なら明らかにrubyのが生産性高いな
>自分でプログラミング用のツール組むようになってくるとどの言語も大差なくなってくる気がする

>あーそれ分かる
>意外とねぇ、言語ごとのあれこれってのはどうにでもなる

↑これは生産性についての話じゃないのかね?
0807デフォルトの名無しさん
垢版 |
2017/08/04(金) 23:51:53.04ID:US5e0j3V
日付変わる前に見たので一応レスしとく

>>806
ごめん
流れも読んでないし
さらに
切り取って部分的にレスしただけ
生産性とかについて特にコメントしたつもりはない
何に大差が無いかについては
実はなーんも考えてない
0808デフォルトの名無しさん
垢版 |
2017/08/05(土) 00:01:37.19ID:CDgy3mrn
>何に大差が無いかについては
>実はなーんも考えてない

そういうことにしないとRubyに良いところが何も無くなるからな
遅い、だけが残る
0809デフォルトの名無しさん
垢版 |
2017/08/05(土) 06:58:32.21ID:pAL2FsqO
速度はだいたいIOがボトルネック
なのでどの言語でも実行時間同じになってくる

一部のアプリでは速度が大事でアセンブラとかで最適化されてたりもするけど
0811デフォルトの名無しさん
垢版 |
2017/08/05(土) 08:01:57.22ID:Zex8il51
漏れは、10言語ぐらい知っているけど、DSL を作りやすい、Ruby が圧倒的。
次いで、Groovy

vagrant, chef, SASS, Homebrew とか、ツールを作る際、
真っ先に、Ruby を候補に上げる

型安全性を高めるなら、Kotlin。
Kotlin = Java + Groovy

GC が無い、C/C++ などは、数年やってもバグるから、まともなアプリを作れない。
MISRA-C とか、安全にするには、学習コストが高い

派遣で行けば、分かるけど、数十人来ても、即さよならw
できる人が見つからない

デバイスとか、やる事が低レベルだから、
募集企業は、コンピューターリテラシーが必要って書いてる

コンピューターリテラシーって書いてる所は、要注意。
コンピューターのすべてを知ってる人の意味だから、
何百年勉強しても、分かることは、絶対にあり得ない

「Linux プログラミング・インタフェース」の著者は、
Linuxのman ページを書いてるけど、世界で唯一の、すべてを知る人
0813デフォルトの名無しさん
垢版 |
2017/08/05(土) 13:09:40.79ID:ncTzjPCq
バージョンアップのたびに、互換性を心配しなくちゃいかんのが面倒。
Microsoftとかすこしはみならえ。
0815デフォルトの名無しさん
垢版 |
2017/08/05(土) 13:36:41.39ID:CKOXuY3S
rubyも長期サポート対象となるバージョンを出せば多少はよくなるかな
と思ったけどエンタープライズエディションってのがあったっけ
0816デフォルトの名無しさん
垢版 |
2017/08/05(土) 14:53:35.10ID:wQFjSmwa
MatzをはじめとしたMRIの連中はドカタIT大嫌いだから望みはないよ
実際、意図的にドカタITとは馴染まないようにしてる面もあるみたいだし
0817デフォルトの名無しさん
垢版 |
2017/08/06(日) 06:23:44.08ID:HgYWswov
RubyでElectoronみたいなツールないの?
Rubyだとマルチプラットフォームで動くGUI付きのアプリ作りづらいわ
0818デフォルトの名無しさん
垢版 |
2017/08/06(日) 06:44:56.72ID:8894pkNA
> Rubyだとマルチプラットフォームで動くGUI付きのアプリ作りづらいわ
それはRubyの仕事ではないからもうちょっとツールキットに優しい言語使え、がいちおう答ではあるのだが
0822デフォルトの名無しさん
垢版 |
2017/08/06(日) 21:04:44.54ID:kcWz1cTJ
マルチプラットフォームのGUIはだいたいクソ。
よっぽど本気のアプリでなければ。
0823デフォルトの名無しさん
垢版 |
2017/08/06(日) 21:07:30.87ID:fFJNwhsI
wxRubyは悪くない感じだが最近のRubyで使えるコンパイル済みバイナリが無かった気がする
0824デフォルトの名無しさん
垢版 |
2017/08/07(月) 01:29:48.60ID:A20vwfd9
SDLとRubyで良いじゃん
winでもlinuxでもmacでも可能で、
互換性もばりばりあるだろ
0829デフォルトの名無しさん
垢版 |
2017/08/08(火) 00:28:18.36ID:m8GLf68F
まさに「Perlがあるのに何故Rubyを作るのですか?」状態だなww
ジョークのように思えて実は的を得ているのが面白い
0830デフォルトの名無しさん
垢版 |
2017/08/08(火) 00:46:50.98ID:qcoC0xc5
自分用のソフトだとGUI必要になること滅多にないな
画像や動画関係のソフトはともかく
0831デフォルトの名無しさん
垢版 |
2017/08/08(火) 02:57:24.40ID:HqOSCtNa
>>811
>世界で唯一の、すべてを知る人
いやいやそれは言い過ぎ
「Linuxのすべてを知る人」ならともかく

無名だけどメチャクチャ有能な奴が
グーグルとかにいっぱいるから
0832デフォルトの名無しさん
垢版 |
2017/08/08(火) 03:03:21.71ID:HqOSCtNa
>>813
Win32APIとか長持ちしてるからな
Javaもそうだが大企業が作ってる言語は
後方互換性がしっかりしてるよな

RubyみたいなLLは
行き当たりばったりでバージョンアップしてる
0833デフォルトの名無しさん
垢版 |
2017/08/08(火) 03:06:05.95ID:HqOSCtNa
>>818
>それはRubyの仕事ではない
オブジェクト指向はGUIで真価を発揮するので
むしろRuby本来の仕事だと思う

良いGUIツールキットがないのはRubyの弱点
まあRailsのWebアプリが主力なんだろうけど……
0834デフォルトの名無しさん
垢版 |
2017/08/08(火) 03:07:45.02ID:HqOSCtNa
>>826
Tkは見た目がショボイとかで
すごく不人気で標準から外された

でも個人的には学習量が少なくて
手軽に使えて良いと思う
Pythonとか他言語でも潰しが利くし
0837デフォルトの名無しさん
垢版 |
2017/08/08(火) 09:42:20.79ID:z6OjstMn
わざわざ起動引数を指定させたり説明したりミニスクリプト作ってメソッドを呼んでもらったりするよりかは
10行程度の記述でボタンやテキスト欄やスライダーなどを作りそこから指定できるようにしたほうが絶対便利で楽だろうということでRuby/Tkが採用されたのだが
フツーの人が期待するところのGUIアプリケーションというのはそういう機能重視の素朴なものではなくもっとリッチで精緻で高速描画なものであったのだというオチである
まあガチプログラマの考える添付GUIサポートライブラリなんてのはそんなもんだw
Tkもツールキット部分の見た目は頑張ってたのだがね
0838デフォルトの名無しさん
垢版 |
2017/08/08(火) 11:42:08.06ID:akdCGEty
>>832
× RubyみたいなLL
○ Ruby

いわゆるLLでも、Perl5は高い互換性を維持してる。
あっちはさすがの伝統と資産があるからな。
0839デフォルトの名無しさん
垢版 |
2017/08/08(火) 13:01:36.82ID:HqOSCtNa
でもPerlよりRubyの方が
読み書きしやすいから
もっぱらRuby使ってる

Rubyの長所は可読性が大きい
0840デフォルトの名無しさん
垢版 |
2017/08/08(火) 18:16:05.55ID:/HyVzMZd
短く書けることは正義
見通しの良さを生かしてDRYを徹底し
その場限りの言語を作って構造を要約する
省力に拘るオタク遊びをするだけで
最も読みやすいプログラムが勝手にできるし
読みやすいからコメント入れる作業もほぼ不用
0841デフォルトの名無しさん
垢版 |
2017/08/08(火) 19:54:43.96ID:9yxzxkwB
昔wxRubyでGUIアプリを作った時はGUI関係のコードが7〜8割いっていた気がする。GUIって効率悪いよね
0842デフォルトの名無しさん
垢版 |
2017/08/08(火) 20:44:41.18ID:HqOSCtNa
プログラマ側はCLIの方が作りやすいけど
一般ユーザが使いにくいので
商業アプリではほぼGUI必須だね
0844デフォルトの名無しさん
垢版 |
2017/08/08(火) 23:38:22.50ID:m8GLf68F
Rubyがもっと素晴らしいものだったらよかったんだよ
例えば今風の最新の静的型の機能を持ったスクリプト言語とか
もし当時あったら珍しかったんじゃないかな
https://ja.wikipedia.org/wiki/Standard_Template_Library
↑はC++のテンプレートの話だが、「歴史」の項目が面白い
Matzが一所懸命Ruby作ってた裏では天才たちがこんなことしてたんだな
動的型のような将来性のない(今となっては負の遺産)もの作ってもしょうがないだろ
まさにPerlがあるのに何故Rubyを作るのですか?だな
今後どうなるのかわからないけど、もう、どうにもならないでしょ
本人も静的型は入れたくない(というか入れれない)ってゲロってるし
今後Rubyの時代は絶対来ない、コボルみたいな存在になるんだよ
0845デフォルトの名無しさん
垢版 |
2017/08/08(火) 23:44:09.88ID:m8GLf68F
当時JavaもC++のテンプレートを馬鹿にしていて
あんなものはオブジェクト指向じゃない
オブジェクト指向言語のJavaにあんなものは必要ない
って言ってたんだけど
結局似たようなのを導入したよね
やっぱコンパイル時に型チェックが入るのはメリット有るんだよ
0848デフォルトの名無しさん
垢版 |
2017/08/09(水) 00:04:27.70ID:hEgnFYnk
君が多様性があったほうが良いと思っているのは承知だけど
それならそれで、もっと良いものじゃないと意味ないだろ、ということだ
0849デフォルトの名無しさん
垢版 |
2017/08/09(水) 00:09:22.53ID:hEgnFYnk
Perlを増築してオブジェクト指向を導入する方向で頑張ってもよかったんだよ
そしたら過去のPerlの資産も使えるからね
だけどそれが気に入らないから一から作ったんなら
もっと最善を尽くさなきゃ作る意味ないでしょ
特に最初の一歩は重要で、Rubyは動的型にしてしまったから
今現在にっちもさっちもいかなくなったわけ
0850デフォルトの名無しさん
垢版 |
2017/08/09(水) 00:52:16.87ID:zBzPXqGw
Perlは覚えようとして挫折してRubyに流れ着いたのは自分だけか
Perlはパッと見て何をやっているのか全然判らない
0851デフォルトの名無しさん
垢版 |
2017/08/09(水) 01:14:55.85ID:v3IDtueA
>>848
俺が思ってる事に勝手に限定してんじゃねえよ
Perlが標榜するものの一部だろうが
それに人間性に問題があるのか知性に問題があるのか知らねえけど、
Perl6ならオブジェクト指向プログラミングが可能だし変数を型で縛れるぞ
0852デフォルトの名無しさん
垢版 |
2017/08/09(水) 01:19:24.43ID:v3IDtueA
>>850
俺は一度Ruby-1.6シリーズを触ったけどその時は合わなくてPerlに行った
PerlでCGIゲームを書いたけど結局1年半でRubyに流れ着いた
その時はRuby-1.8.1か2になってたかな
それからは個人利用だとRubyが中心になってる
決定的となったのはRuby Hacking Guideの存在だったな
Web版で済ませましたスンマセン
0853デフォルトの名無しさん
垢版 |
2017/08/09(水) 08:17:40.99ID:/WbeABcG
Rubyが動的言語なのは必然
何も分かってない

影響を受けたPerl、Lisp、Smalltalkが動的言語
利用形態が近いLAMPのP言語のPerl、Python、PHPが動的言語
0854デフォルトの名無しさん
垢版 |
2017/08/09(水) 09:35:00.76ID:ocU/hJiZ
>>852
>Ruby Hacking Guide
これって、今でもWeb版が閲覧できね。
知らんかった。
0855デフォルトの名無しさん
垢版 |
2017/08/09(水) 18:40:53.88ID:C8BEXwt3
Win7(32bit)上のRubyInstaller2からwin32oleを使ってデータベースに接続しようとしてるんだけど
ODBCデータソースのOpenで例外が出てしまう。
エラーメッセージは↓
システムエラーコード126 指定されたモジュールが見つかりません (〜)
カッコ内はODBCドライバのフルパスが書かれているけどファイルは間違いなくそこにある。
試しにActiveScriptRubyでやってみたらうまく繋がる。
これってどんな原因が考えられるでしょうか?
0857デフォルトの名無しさん
垢版 |
2017/08/09(水) 21:47:11.29ID:v3IDtueA
>>855
不確かな答えになるけど
ODBCドライバが依存しているライブラリが読み込めないから?
環境変数のPATHを確認してみると違いがあるのかな
ruby -e 'p ENV["PATH"]'

あとはActionScriptRubyのruby.exeがあるディレクトリに移動してRubyInstaller2のruby.exeを起動してみるとか
0860デフォルトの名無しさん
垢版 |
2017/08/10(木) 03:49:56.14ID:HGihyxQL
今現在も苦しんでる途中といってよいんじゃないかな
初めから静的型を導入してれば何でもなかったのにな
Pythonのこの様子をみてmarzは
Rubyに静的型を入れるのを止めたわけで
どのみち行くも留まるも地獄
初めから静的型にしておくのが正解だったわけだな

動的型っていったい何のために有るんだろうな
開発速度も実行速度も遅いんじゃ意味わからないよな
処理系を用意するのが楽ってこと以外はメリットが見当たらない
0861デフォルトの名無しさん
垢版 |
2017/08/10(木) 04:03:30.21ID:HGihyxQL
JSも非常に苦労が絶えないよね
まず使いにくいから静的型のTypeScriptとか作られたり
ブラウザのJSエンジンも速度上げるためにキチガイじみたことやってるよね
なしてこんなことにって感じ
動的型って世の中を混乱させて無駄なエネルギーを使わすために有るんかね
0863デフォルトの名無しさん
垢版 |
2017/08/10(木) 06:58:53.68ID:1rmPYDcN
スレが伸びてると思ったらまた例の粘着荒しか
こんなのを生み出したこいつの親に製造責任とって欲しいよ、ホント

win32oleの話題が出てるけど、
ファイルダイアログ扱うCOMってOSのメインバージョン、xpとかvistaとか7とか違っていても共通でいけるの?
それともメインバージョン毎に異なるCOM使わないといけないの?
0864デフォルトの名無しさん
垢版 |
2017/08/10(木) 07:05:51.34ID:1rmPYDcN
メインじゃなくてメジャーだったな
0866デフォルトの名無しさん
垢版 |
2017/08/10(木) 09:29:44.68ID:HGihyxQL
>>865
TypeScriptって凄い名前でしょ
なんたって「Type」Scriptだもんな
言いたいことが名前に表れてる
何に対するアンチテーゼなのか明確
これが今後の常識
0867デフォルトの名無しさん
垢版 |
2017/08/10(木) 09:36:29.21ID:stL+geP9
>>855
"mfc71.dll"、"msvcp71.dll"、"msvcr71.dll"の3つのファイルを入手してOSのシステムディレクトリ"c:¥windows¥system32"に保存すればよい。
0868デフォルトの名無しさん
垢版 |
2017/08/10(木) 09:40:32.90ID:stL+geP9
VC++ 2010(32bit版)、VC++ 2012(32bit版、64bit版)、VC++2013(32bit版、64bit版)の計5つのランタイムの内、1つをinstallすれば解決できるかも。

まあ、この手のエラーは、ランタイム地獄とか、DLL Hellとかで検索!
0869デフォルトの名無しさん
垢版 |
2017/08/11(金) 16:38:50.24ID:XzR2MkFB
プログラム初心者がrubyを1から学ぶ上でおすすめの本とおすすめのサイト・ブログを教えてほしいです。
ちなみにルビィの冒険はすでに持ってます。
というかルビィの冒険を読んで興味持ちました。
0870デフォルトの名無しさん
垢版 |
2017/08/11(金) 17:43:52.20ID:rRCrIO51
ルビィの冒険

はじめてのRuby

パーフェクトRuby

Rubyベストプラクティス
EffectiveRuby
メタプログラミングRuby1版or2版
Rubyによるデザインパターン

リファクタリングRubyエディション
Rubyのしくみ。

ウェブアプリ方面
パーフェクトRubyonRails
RubyonRails5アプリケーション・プログラミング
Docker教科書
JapaScript本格入門第二版
入門Git
GitHub実践入門
SQL 第2版 ゼロからはじめるデータベース操作
達人に学ぶ SQL徹底指南書
SQLアンチパターン
0872デフォルトの名無しさん
垢版 |
2017/08/11(金) 18:27:13.22ID:XzR2MkFB
>>870
沢山ありがとうございます!
ちなみに発売日が古い本でも問題はないでしょうか?
昔と今との変更点とかで
0874デフォルトの名無しさん
垢版 |
2017/08/11(金) 20:51:31.14ID:rRCrIO51
>>872
基礎的なことを学んでいくなら問題はない、

しかしJavaScript等は最近大幅なテコ入れがあった。
だから不安なら、ここ最近1年以内の本を買ったほうがいい。

またそもそも基礎的な事、基本的な事なら10年以内の本でも
名著であり続ける。だがその数は少ない。
0876デフォルトの名無しさん
垢版 |
2017/08/12(土) 03:50:23.72ID:oUZskOr3
Rubyの言語仕様をある程度覚えたら、
次にリファクタリングRubyエディションを読むと良い
コードの最も筋の良い書き進め方を会得できるし、一般的なプログラミング作法の本質を学べる
コードをバリバリ書けるようになるし、Rubyを便利に使いこなす理解も深まる
0877デフォルトの名無しさん
垢版 |
2017/08/12(土) 05:52:30.53ID:w+TtGEkw
ary = ["a", "b"]

ary[0] = ary[0] + "x"
puts ary[0] #=> ax

ary[1] =+ "y"
puts ary[1] #=> y

上なら、文字列が連結されて、
下なら、b が消えて、上書きになるのは、なぜ?

文字列の、=+ 演算子は意味が異なるの?
0878877
垢版 |
2017/08/12(土) 06:04:00.61ID:w+TtGEkw
ary = ["a", "b"]

ary[0] = ary[0] + "x"

# ary[1] =+ "y"
ary[1] += "y"

puts ary

表示
ax
by

自己レス
+= だったか。
=+ と逆に書いていたw

でも、コンパイルエラーが出ない
0879デフォルトの名無しさん
垢版 |
2017/08/12(土) 06:10:46.47ID:YomJun0W
よっぽど仮想学習的な環境でない限りNoMethodErrorが出るよ
irb> a = %w(a b)
irb> a[1] =+ "y"
NoMethodError: undefined method `+@' for "y":String
0881877
垢版 |
2017/08/12(土) 08:33:50.03ID:w+TtGEkw
paiza.IO で実行したけど、コンパイルエラーにならなかった
0882デフォルトの名無しさん
垢版 |
2017/08/12(土) 08:47:10.82ID:4WztSMRy
>>881
paizaは2.4系だから。あと細かいけど、インタプリタだからコンパイルエラーと呼ぶのは違う気がする
0884デフォルトの名無しさん
垢版 |
2017/08/12(土) 11:53:23.96ID:CSnAjTr3
>>882
言いたいことはわかるが、コンパイルエラーでも問題ないと思う。
実行前の文法エラーなのであれば、あきらかに事前のコンパイル段階のエラーなんだから。
0885デフォルトの名無しさん
垢版 |
2017/08/12(土) 11:59:10.11ID:CSnAjTr3
あ、>>884に追記。
インタプリタどうこうの点についてのつもりなので、念のため。
881がコンパイルエラーといってるのはおかしいと思うよ。
0887デフォルトの名無しさん
垢版 |
2017/08/12(土) 12:33:20.77ID:4WztSMRy
>>883
+@, -@の追加は別にいいけど3.0以降のデフォルトimmutable化はさすがに勘弁して欲しいなあ、Railsの声が強すぎる……

>>884
RubyのNoMethodError(というかException全般)は実行を試みて初めて出されるから実行時のエラーだよ。(ランタイムエラーと呼びたいがRuntimeErrorクラスと混同しかねないので悩ましい)
endが足りないとかのSyntax Errorとは別物だと思うけど。こっちは実行前の構文解析。
0888デフォルトの名無しさん
垢版 |
2017/08/12(土) 13:33:01.18ID:K4TPp3Ad
>3.0以降のデフォルトimmutable化
定数は自動的にfreezeするくらいの対応で良かったな
0893デフォルトの名無しさん
垢版 |
2017/08/12(土) 14:25:04.02ID:zLZ79VVH
Railsさんを追い出したら島根のお役所へのPRに使えるようなRuby採用事例がほとんど無くなって金貰えなくなるからね
Chefみたいなインフラ系の事例を出されても役所の人「ハァ?」だろうし
0894デフォルトの名無しさん
垢版 |
2017/08/12(土) 14:51:06.74ID:4WztSMRy
RoR上でのみデフォルトでimmutable、ってのも立派な"Rail"じゃないのかなあ。
どうせマジックコメントで切り替えられるようにするんだったらわざわざRuby全体のデフォルトを変えんでもいいでしょうに……
0895デフォルトの名無しさん
垢版 |
2017/08/12(土) 15:19:12.43ID:K4TPp3Ad
>>892
よくねーよ

Rubyで作れるのは
Webアプリだけじゃねーから

Railsみたいなフレームワークを
言語仕様にしちゃうと窮屈になる
0896デフォルトの名無しさん
垢版 |
2017/08/12(土) 15:26:53.07ID:zLZ79VVH
>>895
他に何に使われていようが、金を産んでるのもMRIにコミットしてる開発者が作ってるのも事実上Webアプリだけだから
他は無視しても全く問題ないのよ、残念なことに
0897デフォルトの名無しさん
垢版 |
2017/08/12(土) 15:28:23.95ID:K4TPp3Ad
>>896
そんな発想だから
機械学習とかWeb以外の
ライブラリが充実してるPythonに
国際的に負けてしまう
0899デフォルトの名無しさん
垢版 |
2017/08/12(土) 23:34:01.47ID:QBhBJkcV
>>870
俺的今日のNo1、カキコ
0900デフォルトの名無しさん
垢版 |
2017/08/13(日) 00:56:22.58ID:SYaWjJhn
Rubyが、ドンドン、Elixir に近づいていく

>>887
そう言えば、「メタプログラミング Ruby」にも、
NoMethodError を上書きするな、って言う格言があった
0901デフォルトの名無しさん
垢版 |
2017/08/13(日) 01:10:49.40ID:PA7iDDOj
これも結局速度のために手動で変な最適化をプログラマに課してるだけのことだよな
こーゆーノリはC言語時代にはよくあったと思うけど
なんせ当時のCPUは今から考えるとものすごく遅かったからなぁ
だけど今時だとCPUも速いしコンパイラの最適化も凄いから
特に何も考えなくても十分に速いので、変な最適化に技巧を凝らすより
読みやすいコード書けってのが主流だよな
だけどRubyはメジャー言語より平気で50倍とか遅いし
コンパイラの最適化も糞なので手動で最適化するんだなwww

3.0GHzの最新CPUを使ってても50〜100MHzのCPU相当の速度になるし
加えてコンパイラの最適化も糞で手動で最適化とか
まるで20年ぐらい前の感じだな

動的型でプログラミングが楽になるはずが
静的な型チェックもなければ速度が遅くて手動で最適化とか
本当に動的型は素晴らしいですね
0902デフォルトの名無しさん
垢版 |
2017/08/13(日) 01:15:14.97ID:WE0t0sIJ
スクリプトで手間暇かけて凝ったアルゴリズムで計算量減らすより
C++でブルートフォースしちゃった方がてっとり早くて速かったりするのはよくある話
スクリプト向きのタスクか否かを感覚的に見抜けることは大切
0903デフォルトの名無しさん
垢版 |
2017/08/13(日) 01:20:36.73ID:PA7iDDOj
今もう2017年だよな
Rubyはこんな最適化のために
今更言語仕様を変えるだとか変えないとかで盛り上がってて
何なんだろうな
これから先もずっとこんな調子なのかね
元の実行速度が遅いから速くするための最適化のために言語仕様をどうのこうの

今はforループを自動で並列展開してマルチスレッドとかSIMDとかで
コンパイラに頑張ってもらって速度を稼ごうとか
そういうこと言ってる時代なのに
やってることがあまりにも原始的というかなんというか
技術的に何も面白くないし、触ってて本当に楽しいんだろうか?
よく考えられた静的型のシステムがあるわけでもないし
化石言語だな
ありとあらゆることをプログラマに丸投げ
0904デフォルトの名無しさん
垢版 |
2017/08/13(日) 01:31:38.50ID:PA7iDDOj
ありとあらゆることが悪い方に作用している様は本当にすごいよ
動的型のおかげでそもそも遅そうなのにろくに最適化もかからないから鈍足
遅すぎるのでプログラマが手動で最適化してください
加えて静的な型チェックもしないのでテストするなりなんなり
プログラマが頑張ってください
動的型って何なんだろうね
0905デフォルトの名無しさん
垢版 |
2017/08/13(日) 02:53:31.36ID:9GyPh5fY
専ブラを使っている人は次の正規表現をNGIDとして突っ込んでおきましょう
\b(ppLsekVC|qMkdrUOQ|IBgoqo2I|AOJFjP\+S|bC2KM4MS|Wy5AX0em|m8GLf68F|hEgnFYnk|HGihyxQL|PA7iDDOj)\b
0906デフォルトの名無しさん
垢版 |
2017/08/13(日) 04:14:05.84ID:SQfD9dn9
ワッチョイじゃないからあんまり意味ないんだよなぁ
1行読んで心のNGフィルターに突っ込んでるから問題ないけど
0907デフォルトの名無しさん
垢版 |
2017/08/13(日) 14:33:04.78ID:bHAx/aO4
ま〜た涌いてるのか
はよー親に製造責任とってもらえよ
0908デフォルトの名無しさん
垢版 |
2017/08/17(木) 15:09:10.89ID:ESEriUZI
趣味で作られた「オレ様の考える最強言語」にちょっと高望みしすぎじゃないの とか言っちゃダメかな
0909デフォルトの名無しさん
垢版 |
2017/08/17(木) 15:16:46.98ID:+kyvImyc
初心者スレで暴れまわって機能不全に陥れるとは
Rubyは完全に澱んでるな
Pythonコミュニティとすっかり差が開いてしまった

人気ランキング1位
Pythonは今のうちに習得すべき?『スラスラわかるPython』著者・岩崎さんとPyCon JP理事の寺田さんが語る:CodeZine(コードジン)
http://codezine.jp/article/detail/10329
0911デフォルトの名無しさん
垢版 |
2017/08/17(木) 20:41:32.26ID:ENaOxomf
コマンドライン引数が表示できません。
OSはwin10、rubyのバージョンは2.4.1-2-x64です。

コードはprint_arg_1.rbという名前で、
#!c:/ruby/bin/ruby
print ARGV[0]

コマンドプロンプトには
c:\ruby\samples>print_arg_1.rb A

と入れてみるのですが、何も(エラーも)表示されません。
Aと表示させるつもりなのですが・・・。
ちなみに、powershellに入力した場合はAと表示できます。
0916デフォルトの名無しさん
垢版 |
2017/08/17(木) 21:28:46.60ID:ENaOxomf
>>915

コードを
#!c:/ruby/bin/ruby
p ARGV[0]
と書き換えるということですか?

やってみたところ、nilとでました
0923デフォルトの名無しさん
垢版 |
2017/08/18(金) 01:34:08.78ID:0sQWyUaj
以下、そういうときの正確な状況を確認する方法。

次のコマンドラインを実行して、関連付けを確認。
assoc .rb

その出力結果を引数にしてftypeを実行して、実行されるコマンドラインを確認。
0924デフォルトの名無しさん
垢版 |
2017/08/18(金) 05:42:06.33ID:kayGF/0k
powershellで実行してるものと、コマンドプロンプトで実行してるものが別ファイルである可能性くらいしか無いのでは
0925デフォルトの名無しさん
垢版 |
2017/08/18(金) 09:35:17.44ID:dcEfP3Wf
rubyでOpenglいじってるけどコード書き換えやすくて楽しすぎ
他にも楽しそうなもの無い?
0926デフォルトの名無しさん
垢版 |
2017/08/18(金) 10:03:46.81ID:5/NGjmsA
Sequel4でSQL server上の日本語てんこ盛りのテーブルに接続できるか試しているんですが
日本語以前にシンボルを使ったアクセスだと全部upcaseされているっぽくて
大文字小文字混在の識別名?が指定できなくて詰んでます。

これどこで設定すればいいんでしょうか?
0927デフォルトの名無しさん
垢版 |
2017/08/18(金) 11:21:40.62ID:MkY1nhvU
.\print_arg_1.rb A
.\ は、カレントフォルダだから、相対パス付き

c:\ で始まっていたら、絶対パス

print_arg_1.rb A
これは、パスではない。
print_arg_1.rb というコマンドになるから、そんなコマンドは存在しない

基本は、実行したいスクリプトファイルのあるフォルダへ、
cd で移動して、そのフォルダで、.\ を付けて、
.\print_arg_1.rb A
とする

#!c:/ruby/bin/ruby
Windows でも、シバンが使えるのか。
パス区切り文字は、/ でも認識できるのか
0931デフォルトの名無しさん
垢版 |
2017/08/19(土) 00:44:19.65ID:drv+oAyy
rbのファイルタイプを常に
ruby.exeで開くように設定したんだろう
そのときにたぶん"%1"ぐらいは設定されてるのだろうけど
0932デフォルトの名無しさん
垢版 |
2017/08/19(土) 01:00:58.21ID:WAJdahb2
pythonのインストーラーが尋ねる2通りの選択
pathに設定するかwindowsシステムにアプリケーションを登録(推奨)みたいなやつがあって謎だったが
今意味が分かった
0933デフォルトの名無しさん
垢版 |
2017/08/19(土) 12:53:30.00ID:9KU7ntuJ
環境変数PATH をいじくったら,

すべてのコマンドの起動に影響するから、大変
0934デフォルトの名無しさん
垢版 |
2017/08/19(土) 13:10:45.58ID:s/Tmv27m
WindowsでのRubyプログラムで
一番大変なのは環境構築だからな
環境変数がどうこうはよく調べておくように
0935デフォルトの名無しさん
垢版 |
2017/08/19(土) 13:47:01.70ID:9KU7ntuJ
pyenv, rbenv など、仮想環境を使うと、
環境変数PATH の先頭に追加するから、極めて危険

〜python2
〜python3;〜python2

例えば、python コマンドの実行ファイルが、
〜python2 ではなく、先に、〜python3 のパスで見つかるから

そのコマンドが、どの実行ファイルを起動しているのか、くれぐれも注意せよ
0936デフォルトの名無しさん
垢版 |
2017/08/19(土) 15:34:54.77ID:vQyZjPpv
ruby って -K で文字コード指定して実行出来るみたいだけど
バージョン指定して実行するようなオプションってあったっけ
0938デフォルトの名無しさん
垢版 |
2017/08/20(日) 20:41:41.88ID:UK9Z84hT
version指定というか、ruby処理系を指定しての実行なら可能なはず
上ででてきた#!c:/ruby/bin/rubyを応用して、
version毎にディレクトリ作ってパス指定
0940926
垢版 |
2017/08/21(月) 10:32:12.71ID:b3IxGKL2
突き止めました
エクステンションを導入して変換を無効化すればよかったです。

DB.extension :identifier_mangling
DB.identifier_input_method = nil
DB.identifier_output_method = nil
0941926
垢版 |
2017/08/21(月) 15:46:43.43ID:b3IxGKL2
間抜けなことしてました。
ODBC使うのにsequelが自前でやってると思ったらruby-odbc使ってた。
だからodbc-utf8を先にrequireしないとutf8が通らなくて日本語以前だった。
ほかにもfreeTDSでutf-8だと指定効かないとか気がつかなかった。

bundlerが依存関係全部処理してたから気がつかなかった…
0942デフォルトの名無しさん
垢版 |
2017/08/21(月) 19:28:02.56ID:QB5Pvnbo
おつかれい
0943926
垢版 |
2017/08/21(月) 21:57:25.45ID:b3IxGKL2
ありがと。

さらに問題発覚。というかsequelの手抜きなんだけど
likeを発行するときにsql server向けの互換レイヤはLatin1_General_*を強制的に付け足す。
ハードコードされてて切り替えできない。とりあえずlib/sequel/adapters/shared/mssql.rbにパッチ当てたけど
gitみてもこの辺対処されて無いっぽい。5になれば期待できそうな感じはあるけど。

あーやっとやっつけ集計バッチをこれで置換できるかもしれん
あとはsinatraとhamlとsassか…
0944926
垢版 |
2017/08/22(火) 11:19:06.95ID:BnyIu5Np
いろいろいじった結果
FreeBSD 11.1R
ruby 2.4.0
sequel 4.48.0
ruby-odbc 0.99998
unixODBC 2.3.4
freeTDS 1.00.131,1
Microsoft SQL Server 2008 R2
の組み合わせで日本語てんこ盛りのデータベースを読むは問題なさそう。作ったり書いたりはこれからだけど基本集計だけだし。
結局utf8周りの設定は一切合切消してもrequire 'odbc-utf8'があれば普通に日本語通ってしまった。
数年前に試したときにうまくいかなかったのも多分これのせいだったんだろう。
0945デフォルトの名無しさん
垢版 |
2017/08/23(水) 08:24:54.57ID:UQYl7YfQ
そういば、1.8かどうか忘れたけど、
Arrayの派生クラス同士に+をつかって、新しい派生クラスのインスタンス出力しようとしたら、
派生元のArrayのインスタンスが出力されることがあったな

長い間気づかずどつぼにハマッてたのを思いだした
0946デフォルトの名無しさん
垢版 |
2017/08/23(水) 08:33:32.73ID:UQYl7YfQ
Arrayの派生クラス同士に

Arrayの派生クラスのインスタンス同士に
0948デフォルトの名無しさん
垢版 |
2017/08/23(水) 19:49:57.47ID:XbrvJbom
>たいがいの言語でそうなっちゃうでしょ。

そんなことないよ
静的型だったならどこかでコンパイルエラーになって気づけた可能性もあるよ
0949デフォルトの名無しさん
垢版 |
2017/08/23(水) 20:17:43.31ID:UQYl7YfQ
まーた涌きやがったかコイツ

まぁRubyだからこそ直接Arrayクラスのメソッドをself.classをつかったコードに書きえて、
派生先のクラスでも問題なく動かすようにできるわけだけど
当時もそうやって楽に対応できたし、今のverなら書き換える必要も無く対応してるんじゃないか?
確認してないけど
0950デフォルトの名無しさん
垢版 |
2017/08/24(木) 04:24:49.42ID:tqCPVr7b
このような実例があると
動的型にすると無駄な時間が増えることが
初心者にも分かりやすくてよいですね
0951デフォルトの名無しさん
垢版 |
2017/08/24(木) 07:03:14.83ID:gO5USKuu
普通、配列のような基本的なクラスからは、クラスを派生させない

継承を使うのは、自分で作ったクラスか、
継承されることが前提のクラスだけ

一般的には、継承より包含を使う

包含の方が、継承よりも柔軟だから、
配列のような基本的なクラスには、合っている
0952デフォルトの名無しさん
垢版 |
2017/08/24(木) 12:21:31.80ID:NrLz+nwx
DSLに何言ってんだか
Rubyの書きやすさ書き換えやすさは他の言語にない重要なポイントのひとつだろ
0953デフォルトの名無しさん
垢版 |
2017/08/24(木) 12:32:10.15ID:5a7RKQDl
>>952
意味不
0954デフォルトの名無しさん
垢版 |
2017/08/24(木) 14:28:41.04ID:gfjynZsV
>>948
静的型とか動的型とか全く関係ない

>>945
マニュアルくらい読もうぜ
Array#+ は self + other -> Array
https://docs.ruby-lang.org/ja/2.4.0/method/Array/i/=2b.html

pryでshow-doc, show-sourceすればすぐ分かる内容
show-source Array#+

>>951
言いたいことはわかるがArrayを派生したい場合だってある
Rubyはそういうことを制限しない言語
そのかわりに相応の力量が求められる
0955デフォルトの名無しさん
垢版 |
2017/08/24(木) 14:56:19.91ID:gfjynZsV
Arrayから直接派生させるよりも、
EnumerableやForwardable使うほうが普通だとは思うけどね
0956デフォルトの名無しさん
垢版 |
2017/08/24(木) 15:12:33.89ID:+u51O4Tc
結果収束的には「可能ではあるが極力行わないようになる」こと自体は間違いはない
なんでもかんでもメソッドチェーンにしないのと似たような感覚
ただし(古い表現だが)足元を弾痕穴だらけにしないとわからない感覚なので、未経験者に最初から指示するようなものでもないな
それはそれで「本当は何もできないやらないわかっていない」机上の人だろう
0957デフォルトの名無しさん
垢版 |
2017/08/24(木) 15:38:18.44ID:NrLz+nwx
DSLに何言ってんだか
Rubyの書きやすさ書き換えやすさは他の言語にない重要なポイントのひとつだろ
0958デフォルトの名無しさん
垢版 |
2017/08/24(木) 16:33:57.27ID:gfjynZsV
>>956
Arrayを継承したいと考えた理由次第だろ

モンキーパッチ、リファインメント、継承、コンポジション
それぞれメリットデメリットあるんだから初心者であっても
そのトレードオフが理解して自分で判断できるようにならないとダメだよね?

基本クラスであってもどういう方式を選ぶのがいいのかは状況次第だから
背景理由を無視して、一つの選択肢を採用したほうがいいっていうのはちょっとっ極端に感じるよ
0959デフォルトの名無しさん
垢版 |
2017/08/24(木) 20:44:43.22ID:tqCPVr7b0
🐒
0960デフォルトの名無しさん
垢版 |
2017/08/24(木) 20:49:02.11ID:tqCPVr7b
>>954
仮にArrayを継承させたとして
何かのメソッドで思っていた型と違う型が返ってきたとして
静的型ならコンパイルエラーになって即気づける可能性が高いよね
せっかく>>945がRubyが動的型のせいで
> 長い間気づかずどつぼにハマッてたのを思いだした
って告白してくれてるのに

あるメソッドが、どのような仕様になってるかなんて
そんなものはどのような仕様にでも実装できてしまうわけで
(そう書けばそう動く、というだけ)
大事なのは、勘違いしたとき、間違ったときに、直ぐに気づけるかどうか

だからArrayを継承すべきじゃないとかってのは話の本質じゃなくて
長い間気づかずドツボにハマってたのは何故かって部分なんだよ
0964デフォルトの名無しさん
垢版 |
2017/08/24(木) 21:37:49.84ID:gfjynZsV
>>960
言語を使う側の能力の問題を
全部言語のせいにしちゃだめだよ

var result = myArray1 + myArray2

↑みたいに型推論使ってたら似たような事起きるだろ
それは型推論自体がダメだからなのか? 型推論使用禁止にする?
使う道具のメリットデメリットをちゃんと理解して使いこなせてないからだろ

静的型にメリットがあるのはわかるが結局それはトレードオフなんだよ
何を選択するかの問題
0965デフォルトの名無しさん
垢版 |
2017/08/24(木) 21:46:32.32ID:tqCPVr7b
その場合でもresultをどこかに渡したり
継承で拡張したメソッドを使ったり
実用的なことをしようとした瞬間にコンパイルエラーになる
お前はそのresultを何も使わずにそのまま捨てるのか?
結局、現実的な部分が全くないんだよね
机上の空論、それがRuby
0966デフォルトの名無しさん
垢版 |
2017/08/24(木) 21:51:04.51ID:tqCPVr7b
しかも俺は
>気づける可能性が高いよね
とも書いてるわけで
現実的にはどこかの段階でコンパイルエラーになる可能性が高い、と
0967デフォルトの名無しさん
垢版 |
2017/08/24(木) 21:55:21.82ID:Z79NM4TL
スレッドの進行を妨害するのは止めてください
みんなが迷惑を被っています
0969デフォルトの名無しさん
垢版 |
2017/08/24(木) 22:02:02.88ID:gfjynZsV
>>965
オーバーライドしたメソッド呼び出してもコンパイルエラーにならないだろ
静的型でも同じこと十分起こりえるよ

運良くコンパイルエラーで拾えるケースだけ上げて
静的型使うべきなんていう主張はナンセンス

力量が低いやつは静的型選んだほうがいいよっていうアドバイスなら
まだ理解できるけどね
0970デフォルトの名無しさん
垢版 |
2017/08/24(木) 22:05:10.57ID:Z79NM4TL
再三にわたり伝えましたが、もう一度
スレッドの進行を妨害するのは止めてください
みんなが迷惑を被っています
0971デフォルトの名無しさん
垢版 |
2017/08/24(木) 22:10:19.62ID:tqCPVr7b
起こりえるが、可能性は低いわけだ
運良くコンパイルエラーで拾える、というより
運悪くコンパイルエラーで拾えないケースもありうる、ということ

運が良くないとコンパイルエラーで拾えないんなら
静的型言語はこんなに普及してないし、もてはやされてもない
現実が全く見えていないんだね
0973デフォルトの名無しさん
垢版 |
2017/08/24(木) 22:13:45.33ID:gfjynZsV
>>970
「だから動的型はダメなんだ」とか思っちゃう初心者が出ないように
きちんと反論しとくことは重要じゃねーの?

>再三にわたり伝えましたが、
って>>967の1回だけじゃんww
0978デフォルトの名無しさん
垢版 |
2017/08/24(木) 22:26:09.58ID:yIhxd10m
>>969
力量が低いだけに留まらず、現実逃避する頭の悪い知ったかぶりのお馬鹿さんなら
あなたが話しかけてるそこにいますよ
0979デフォルトの名無しさん
垢版 |
2017/08/24(木) 22:39:55.72ID:tqCPVr7b
俺が言うのもなんだけど
ID:Z79NM4TLやID:lIOBscykのが正解だと思うよ
「そんなことは初めから分かってて承知の上で使っているのだから
 放っておいてくれ」
って所でしょ
欠点を認められずに使ってる方が異常
0980デフォルトの名無しさん
垢版 |
2017/08/24(木) 23:09:32.94ID:Z79NM4TL
スレッドの進行を妨害するのは止めてください
みんなが迷惑を被っています
スレッドの趣旨が分からないなら1を読んで下さい
これ以上妨害を続ける場合は、過去の妨害行為時のログを元に弁護士との相談の上、
措置を取ります
0981デフォルトの名無しさん
垢版 |
2017/08/24(木) 23:11:07.39ID:h4EzWrOx
自分が何をしてるか全く理解できないんだろうな
レスがつくことそのものに興奮してここがどこかも判断できていない

貴方達そのものを我々は必要としていない
貴方達が書き込んだそのものを私たちは歓迎しない
我々私たちの望みはひとつだけ、二度とここに来るな
0983デフォルトの名無しさん
垢版 |
2017/08/24(木) 23:38:06.01ID:Z79NM4TL
スレッドの進行を妨害するのは止めてください
みんなが迷惑を被っています
スレッドの趣旨が分からないなら1を読んで下さい
これ以上妨害を続ける場合は、過去の妨害行為時のログを元に弁護士との相談の上、
措置を取ります
0984デフォルトの名無しさん
垢版 |
2017/08/24(木) 23:39:36.79ID:c/yv4qcw
過去のgem配布サイト復活しないかな
0985デフォルトの名無しさん
垢版 |
2017/08/25(金) 05:58:03.30ID:ZShOFEd5
「Effective Ruby」項目21にも書いてある

コアクラスを継承するな。委譲・包含(Forwardable)を使え。
is-a よりも、has-a を使え

たいていの言語では、String型なども継承できない。
final 指定されてる

初心者は、コレクションを継承したがるが、アンチパターン。
継承すれば、バグるだけ

たいていの「Effective 何々」とか、デザインパターンの本にも、書いてある
0986デフォルトの名無しさん
垢版 |
2017/08/25(金) 06:40:42.06ID:aRYPlL4U
>>981
例の人は自分が来るせいで誰も居なくなったんだってわかってないからな
コミュニティは衰退したのではなく特定の人物の書き込みにより破壊されたのだ
0987デフォルトの名無しさん
垢版 |
2017/08/25(金) 07:08:25.93ID:w/d6Mddl
Arrayのような多くの人が慣れ親しんだインタフェースを提供したいと考えてるんだが、
それ自体が慣れで運用してしまうから問題、ということなのか?
極端な話myaddとかにした方がいいのか
0989デフォルトの名無しさん
垢版 |
2017/08/25(金) 10:40:58.89ID:ZShOFEd5
JavaScript の、prototype.js なども、コアクラスを上書きして、挙動が変わるから、
皆から、うっとうしがられてる

とにかく、バグるから、個人で、コアクラスを修正してはいけない

やってもいいのは、Date クラスに、便利な関数を追加したり、
Rails とか、使用説明書・メンテナンスもしっかりしている、
有名なフレームワークだけ
0991デフォルトの名無しさん
垢版 |
2017/08/25(金) 11:27:54.95ID:BwHFndLq
>>985
項目21の根拠はなんでしょう?

1. 継承を使うとなるとSuper Classの詳細を知る必要がある。
2. 移譲なら使いたい機能をつまみ食いすれば良いので楽。

こう言う事でしょうかねぇ?
0992985
垢版 |
2017/08/25(金) 12:26:40.27ID:ZShOFEd5
例えば、親のArray から、子のDerivedArray を派生させて、
reverse を呼んでも、子クラスを返さず、親クラスを返してしまう

全メソッドを、派生クラスに対応させるのが、無理だから

委譲で、Forwardable モジュールの、def_delegators で、
使うメソッドだけ、宣言する方が簡単

漏れも、10言語以上、数十冊の本を読んでるけど、
配列など、コアクラスを継承した、ソースコードは見た事がないし、
たいていの言語で、継承よりも委譲を使うように書いてある

そういう論文も多い
0993デフォルトの名無しさん
垢版 |
2017/08/25(金) 12:36:03.24ID:BwHFndLq
>>992
ところで、論文はどのJournalから?
0994985
垢版 |
2017/08/25(金) 13:01:27.87ID:ZShOFEd5
「c++ 継承 委譲」で検索!

ほとんどの論文が、継承よりも委譲
0996デフォルトの名無しさん
垢版 |
2017/08/25(金) 15:28:23.63ID:sLUvaIRs
a=[[1,2],3,4,5,[6,7],8,[9,10],[11,12],[13,14]]
b=[[1,3,4,5,6,8,9,11,13],[2,3,4,5,7,8,10,12,14]]
aの配列からbの配列を作り出すにはどの様にしたらいいでしょう?
0997デフォルトの名無しさん
垢版 |
2017/08/25(金) 15:32:56.84ID:BwHFndLq
>>996
>a=[[1,2],3,4,5,[6,7],8,[9,10],[11,12],[13,14]]
まずは、
a=[[1,2],[3, 3],[4,4],[5,5],[6,7],8,[9,10],[11,12],[13,14]]
を作る。
0998デフォルトの名無しさん
垢版 |
2017/08/25(金) 15:36:12.98ID:BwHFndLq
ar = []
a.each do |e|
if !e.instance_of?(Array) then
ar << [e, e]
else
ar << e
end

まずはこんな感じ!
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 118日 13時間 58分 11秒
10021002
垢版 |
Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/

▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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