プログラミング言語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/
探検
Ruby 初心者スレッド Part 60 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/04/29(土) 02:01:58.34ID:urVXnFrH
419デフォルトの名無しさん
2017/06/28(水) 21:48:23.90ID:WbQwz649 ぶっちゃけて言えば、意味論的には普通なのに文法がぐちゃぐちゃすぎて使いづらい。
Perl のあまりの一貫性のなさに Ruby を試したりしたこともあるが、
多少はマシって程度でうんざりするような無茶苦茶さを指向していることにかわりない。
parse.y が黒魔術の塊だというのは聞いていたが、実際に見てみると常軌を逸している。
せっかく yacc を使ってるのに純粋な LALR として解釈できないようなわけわかんないクソが埋め込まれてて、
もはや統制が取れてない。
mruby をベースにして拡充していった方がいい気がする。
Perl のあまりの一貫性のなさに Ruby を試したりしたこともあるが、
多少はマシって程度でうんざりするような無茶苦茶さを指向していることにかわりない。
parse.y が黒魔術の塊だというのは聞いていたが、実際に見てみると常軌を逸している。
せっかく yacc を使ってるのに純粋な LALR として解釈できないようなわけわかんないクソが埋め込まれてて、
もはや統制が取れてない。
mruby をベースにして拡充していった方がいい気がする。
420デフォルトの名無しさん
2017/06/30(金) 00:38:26.19ID:UcGpMueB 使いづらいなら他の言語使えばいいじゃん
わざわざRubyスレ覗いてRubyの悪口書いてる暇があるなら他の言語でコード書こうぜ
わざわざRubyスレ覗いてRubyの悪口書いてる暇があるなら他の言語でコード書こうぜ
421デフォルトの名無しさん
2017/06/30(金) 01:21:01.84ID:svEzz20W >>420
だからもう十年以上使ってない。
事実として文法規則のごちゃごちゃしたところはあるという話だよ。
そして事実として私はそれを気に入らなかったという話だよ。
よくある場面を短く書けるとか人間の一般的な感覚に合わせたりもした結果だというのはわかっているし、
Ruby に向いた用途があるのは知ってるよ。
ただ、それの行く先には実装上の行き詰まりが生じそうだという懸念だ。
だからもう十年以上使ってない。
事実として文法規則のごちゃごちゃしたところはあるという話だよ。
そして事実として私はそれを気に入らなかったという話だよ。
よくある場面を短く書けるとか人間の一般的な感覚に合わせたりもした結果だというのはわかっているし、
Ruby に向いた用途があるのは知ってるよ。
ただ、それの行く先には実装上の行き詰まりが生じそうだという懸念だ。
422デフォルトの名無しさん
2017/06/30(金) 01:37:54.59ID:UcGpMueB423デフォルトの名無しさん
2017/06/30(金) 02:32:52.47ID:7V8Jdo2I Rubyは読み書きしやすいから使ってる
規則が統一された文法が良ければLispを使えよ
規則が統一された文法が良ければLispを使えよ
424デフォルトの名無しさん
2017/06/30(金) 09:41:10.74ID:jqp1y4Nc 何で使ってない言語を見に来ているの?
暇なの?
暇なの?
425デフォルトの名無しさん
2017/06/30(金) 09:50:34.06ID:flSVgAwO rubyは上級者には不満があるのかもしれんが、俺の様な素人が使うには使いやすい。
メソッドチェインも「.」でつなげていくだけだし、
正規表現使うのにimportとかしなくていいし。
でも複数行のコメントアウトは面倒。
メソッドチェインも「.」でつなげていくだけだし、
正規表現使うのにimportとかしなくていいし。
でも複数行のコメントアウトは面倒。
426デフォルトの名無しさん
2017/06/30(金) 09:51:37.98ID:BBkM2EA1 >>422
Rubyスレに来て悪態さらすヤツってのは、喩えて言えばこんな感じだ。
最初は、良い会社だと思って就職した。
けど、外から見るのと、入って見るのとでは大違いで、内部は火の車だった。
(例:最近の東芝、タカタ)
転職活動も、うまくいかず、悪態をつかざるを得なくなる。
Rubyスレに来て悪態さらすヤツってのは、喩えて言えばこんな感じだ。
最初は、良い会社だと思って就職した。
けど、外から見るのと、入って見るのとでは大違いで、内部は火の車だった。
(例:最近の東芝、タカタ)
転職活動も、うまくいかず、悪態をつかざるを得なくなる。
427デフォルトの名無しさん
2017/06/30(金) 10:15:14.59ID:pDIkSJMf 2ちゃんも昔は良かった
428デフォルトの名無しさん
2017/06/30(金) 11:25:06.46ID:BBkM2EA1429デフォルトの名無しさん
2017/06/30(金) 11:30:06.98ID:hBaGJvUf430デフォルトの名無しさん
2017/06/30(金) 11:33:27.81ID:BBkM2EA1431デフォルトの名無しさん
2017/06/30(金) 11:38:01.54ID:625dciv9 >>429
こんな糞みたいなの教えたって誰も使わない
こんな糞みたいなの教えたって誰も使わない
432デフォルトの名無しさん
2017/06/30(金) 11:45:54.89ID:flSVgAwO433デフォルトの名無しさん
2017/06/30(金) 12:42:16.16ID:UcGpMueB >>432
メモ帳使ってるわけじゃないんだろうからそれぐらいショートカット使えば差はない
メモ帳使ってるわけじゃないんだろうからそれぐらいショートカット使えば差はない
434デフォルトの名無しさん
2017/06/30(金) 12:50:26.31ID:hBaGJvUf タイピングの文字数に拘るあたりが初心者だよな
(↑それが悪いことだとは言っていないし、一切の悪意は無い)
プログラミングを指の労働と捕らえてるんだよな
(↑それが悪いことだとは言っていないし、一切の悪意は無い)
プログラミングを指の労働と捕らえてるんだよな
435デフォルトの名無しさん
2017/06/30(金) 13:04:45.36ID:mtvSOUWH436デフォルトの名無しさん
2017/06/30(金) 13:09:33.76ID:UcGpMueB >>435
=begin, =end は一時的なコメントアウトにはよく使うよ
=begin, =end は一時的なコメントアウトにはよく使うよ
437デフォルトの名無しさん
2017/06/30(金) 13:35:43.48ID:2Da2vksV438デフォルトの名無しさん
2017/06/30(金) 13:40:13.66ID:625dciv9 そんなperlのパクリ機能なんかもう使ってる人いないよ
普通は#で複数行コメントアウトするようなエディタ使ってるでしょ
普通は#で複数行コメントアウトするようなエディタ使ってるでしょ
439デフォルトの名無しさん
2017/06/30(金) 14:08:18.32ID:W0OUnv8/ 黙らせるならexit!やな
440デフォルトの名無しさん
2017/06/30(金) 16:49:14.50ID:tesV9X+3 一時的に処理から外したいときは「そういやRubyにも複数行コメントの記述法があったななんだったかな」と思いながら
#と方向キーを交互に連打してるかコメントリージョン機能を使ってるかどっちかだな
#と方向キーを交互に連打してるかコメントリージョン機能を使ってるかどっちかだな
441デフォルトの名無しさん
2017/06/30(金) 18:29:44.40ID:4uO/IbWe atomやvscodeだったら Ctrl + / で行コメントの挿入削除
442デフォルトの名無しさん
2017/07/01(土) 04:05:27.85ID:J52nGMUC 俺は if false 〜〜〜 else 〜〜〜 end を使ってる
あるいは後置 if false
元の処理を走らせる場合は否定演算子を付けて if !false みたいにしてるなあ
あるいは後置 if false
元の処理を走らせる場合は否定演算子を付けて if !false みたいにしてるなあ
443デフォルトの名無しさん
2017/07/01(土) 04:30:56.70ID:yR6MEKU9444デフォルトの名無しさん
2017/07/01(土) 05:26:51.20ID:PPsHHHSM445デフォルトの名無しさん
2017/07/01(土) 11:17:02.68ID:N+ZXroXE >>414
爺なの?
爺なの?
446デフォルトの名無しさん
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
初心者が書くのと慣れてる奴が書くのとですでに差が出てる
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
447デフォルトの名無しさん
2017/07/01(土) 14:59:17.39ID:yR6MEKU9 いい加減壁に向かって物言うのやめたら
誰もそれを話題にしてはいないよ
誰もそれを話題にしてはいないよ
448デフォルトの名無しさん
2017/07/01(土) 15:48:19.58ID:qX8eRJNR449デフォルトの名無しさん
2017/07/01(土) 16:44:27.93ID:R60vnDrO450デフォルトの名無しさん
2017/07/01(土) 19:39:10.28ID:QATpSz/4451デフォルトの名無しさん
2017/07/01(土) 20:41:44.60ID:M8KylmXN b = []
b << 要素
1つずつ、配列に追加していく処理だけど、
エラー処理などがいらないなら、簡潔に書くべき
b << 要素
1つずつ、配列に追加していく処理だけど、
エラー処理などがいらないなら、簡潔に書くべき
452デフォルトの名無しさん
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って単語がでてくることキモいって話
> 初心者が書くのと慣れてる奴が書くのとですでに差が出てる
せやね
お前が書くと
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って単語がでてくることキモいって話
453デフォルトの名無しさん
2017/07/01(土) 22:38:49.78ID:M8KylmXN 関数厨は、Ruby・JS のスレにやって来て、
何でもかんでも、map を使って、1行で書いてしまうからなw
何でもかんでも、map を使って、1行で書いてしまうからなw
454デフォルトの名無しさん
2017/07/01(土) 22:44:59.49ID:Tp0p2tiJ >>452のようなことに特に興味がなくて
正直どっちでもよくね?
って考える普通の人はRubyを使わなくてもよいってことなんだよ
まさにこれがRuby
「タイプ数にこだわるのは初心者」
「そうそうそうなんだよね〜」
とか言いながら動的型言語を使うのって最高でしょ
正直どっちでもよくね?
って考える普通の人はRubyを使わなくてもよいってことなんだよ
まさにこれがRuby
「タイプ数にこだわるのは初心者」
「そうそうそうなんだよね〜」
とか言いながら動的型言語を使うのって最高でしょ
455デフォルトの名無しさん
2017/07/01(土) 23:45:31.46ID:N+ZXroXE mapperかな
456デフォルトの名無しさん
2017/07/01(土) 23:49:19.16ID:cxvWbv+r いくらRubyのコード効率が良いと言っても可読性を犠牲にするつもりはないな
無用に行数を減らしたりオブジェクト名の長さを減らしたりはしない
そういう書き方をすると後で苦労するのは自分だし
無用に行数を減らしたりオブジェクト名の長さを減らしたりはしない
そういう書き方をすると後で苦労するのは自分だし
457デフォルトの名無しさん
2017/07/01(土) 23:54:52.06ID:sOThA7TG >>456
可読性というのは読むべき「単語」を減らすものであって
行数を減らすことやオブジェクト名を減らすことは
単語を減らすことにはつながらない。
例えば行数を減らしたとしても、それが 空行や { などの
カッコだけの行を減らした所で単語数は変わらない。
むしろ空行がある方が読みやすい文章となることもある
名前も、短い名前にしても単語数は変わらない
単語数を減らすと結果的に行数が減ることはあるが、
行数を減らすことは可読性を上げる行為ではない。
可読性というのは読むべき「単語」を減らすものであって
行数を減らすことやオブジェクト名を減らすことは
単語を減らすことにはつながらない。
例えば行数を減らしたとしても、それが 空行や { などの
カッコだけの行を減らした所で単語数は変わらない。
むしろ空行がある方が読みやすい文章となることもある
名前も、短い名前にしても単語数は変わらない
単語数を減らすと結果的に行数が減ることはあるが、
行数を減らすことは可読性を上げる行為ではない。
458デフォルトの名無しさん
2017/07/01(土) 23:56:03.86ID:5xgWPcGQ459デフォルトの名無しさん
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単語
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単語
460デフォルトの名無しさん
2017/07/01(土) 23:57:42.07ID:sOThA7TG461デフォルトの名無しさん
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)
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)
462デフォルトの名無しさん
2017/07/02(日) 00:18:14.45ID:IGa4njyh463デフォルトの名無しさん
2017/07/02(日) 00:19:08.94ID:J2BCSwZK JavaScriptはJavaの名前にあやかっただけで全くJavaじゃないって本当ですか?
464デフォルトの名無しさん
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}" } # 引数が多くてもエラーなし
Rubyでもこの文脈では引数の数のチェックをしてないようですが?
%w(a b c).map.with_index {|c| "#{c}" } # 引数が足りなくてもエラーなし
%w(a b c).map {|c, i, x, y, z| "#{i}#{c}" } # 引数が多くてもエラーなし
465デフォルトの名無しさん
2017/07/02(日) 00:24:36.29ID:0SO6fajC >>463
Rubyも宝石の名前にあやかってるだけで全くRubyじゃないよw
Rubyも宝石の名前にあやかってるだけで全くRubyじゃないよw
466デフォルトの名無しさん
2017/07/02(日) 00:24:58.24ID:J2BCSwZK >>465
なるほどw
なるほどw
467デフォルトの名無しさん
2017/07/02(日) 00:29:32.61ID:WUsDB0eH JavaScriptはLISPっぽい所ある
468デフォルトの名無しさん
2017/07/02(日) 00:38:11.58ID:yqVk05l0 >これはタイプ数の問題じゃねーよ?
と言いつつも
>可読性というのは読むべき「単語」を減らすものであって
と言うのであった
そして多くの人はこう思うのであった
「単語数と可読性ってそんなに関係あるか?」
「ここで言ってた可読性って、少々冗長であっても
読みやすいほうが良いって話じゃなかったの?」
>下の方が「単語数」が減っている。
>each with index map ・・・ 4単語
>map with index ・・・ 3単語
一単語減らせて本当によかったね
>これはタイプ数の問題じゃねーよ? 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
と言いつつも
>可読性というのは読むべき「単語」を減らすものであって
と言うのであった
そして多くの人はこう思うのであった
「単語数と可読性ってそんなに関係あるか?」
「ここで言ってた可読性って、少々冗長であっても
読みやすいほうが良いって話じゃなかったの?」
>下の方が「単語数」が減っている。
>each with index map ・・・ 4単語
>map with index ・・・ 3単語
一単語減らせて本当によかったね
>これはタイプ数の問題じゃねーよ? 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
469デフォルトの名無しさん
2017/07/02(日) 00:49:17.22ID:0SO6fajC >>468
> >これはタイプ数の問題じゃねーよ?
> と言いつつも
> >可読性というのは読むべき「単語」を減らすものであって
> と言うのであった
矛盾してないよ?
例えばコピペ、コピペを使うとタイプ数は減る。
CTRL+vとたった1文字タイプするだけで、
過去に書いたコードを複製できる。
だけど、読むべき単語は倍増していく
可読性のためにやらなければいけないのは、タイプ数を
減らすことではなくて単語数を減らすこと
> >これはタイプ数の問題じゃねーよ?
> と言いつつも
> >可読性というのは読むべき「単語」を減らすものであって
> と言うのであった
矛盾してないよ?
例えばコピペ、コピペを使うとタイプ数は減る。
CTRL+vとたった1文字タイプするだけで、
過去に書いたコードを複製できる。
だけど、読むべき単語は倍増していく
可読性のためにやらなければいけないのは、タイプ数を
減らすことではなくて単語数を減らすこと
470デフォルトの名無しさん
2017/07/02(日) 00:55:38.04ID:0SO6fajC >>468
> 「単語数と可読性ってそんなに関係あるか?」
> 「ここで言ってた可読性って、少々冗長であっても
> 読みやすいほうが良いって話じゃなかったの?」
日本語に置き換えて考えればわかるだろ?
文章はシンプルな方が読みやすい。
ただそれだけのことなんだが。
まああと付け加えるとするならば「誰にとって」の話だな。
もちろんプログラマにとってだ。
これは数学に例えればわかるか?
数学者同士が会話をする時、数式を使ったほうがより簡単に説明できる。
数学者同士の会話で素人がわかるように数式を使わないで
会話するのは話をわかりにくくするだけ
なぜか? 数式を使えば短い単語数で説明できるから。
ここで素人でもわかるように難しい単語を使わない方がいいという意見は
数学者同士の会話で、素人でもわかりやすく話せといってるようなもん。
素人のために生産性を大きく落とすだけ
> 「単語数と可読性ってそんなに関係あるか?」
> 「ここで言ってた可読性って、少々冗長であっても
> 読みやすいほうが良いって話じゃなかったの?」
日本語に置き換えて考えればわかるだろ?
文章はシンプルな方が読みやすい。
ただそれだけのことなんだが。
まああと付け加えるとするならば「誰にとって」の話だな。
もちろんプログラマにとってだ。
これは数学に例えればわかるか?
数学者同士が会話をする時、数式を使ったほうがより簡単に説明できる。
数学者同士の会話で素人がわかるように数式を使わないで
会話するのは話をわかりにくくするだけ
なぜか? 数式を使えば短い単語数で説明できるから。
ここで素人でもわかるように難しい単語を使わない方がいいという意見は
数学者同士の会話で、素人でもわかりやすく話せといってるようなもん。
素人のために生産性を大きく落とすだけ
471デフォルトの名無しさん
2017/07/02(日) 00:57:54.25ID:NbWg8gon >>470
その冗長なレスをまず自覚しろ
その冗長なレスをまず自覚しろ
472デフォルトの名無しさん
2017/07/02(日) 01:08:47.26ID:yqVk05l0 プログラムを書くのであれば誰しも可読性が良いプログラムを書きたいと考える
部分があるかもしれないが、そんなとき、単語数などというものの脳内に
占めるウエイトは、ほぼ無い
「あのプログラムのソースコードは単語数が少ないから非常に読みやすかったよ〜」
なんて会話は、無い
というと、じゃあ単語数が多いほうが良いのか?と言い出すかもしれないが
そもそも単語数など論点にするのがピンボケ
労力の方向がおかしいし、論点がおかしい
部分があるかもしれないが、そんなとき、単語数などというものの脳内に
占めるウエイトは、ほぼ無い
「あのプログラムのソースコードは単語数が少ないから非常に読みやすかったよ〜」
なんて会話は、無い
というと、じゃあ単語数が多いほうが良いのか?と言い出すかもしれないが
そもそも単語数など論点にするのがピンボケ
労力の方向がおかしいし、論点がおかしい
473デフォルトの名無しさん
2017/07/02(日) 01:14:15.76ID:0SO6fajC >>471
お前が短く書き直せば?w
お前が短く書き直せば?w
474デフォルトの名無しさん
2017/07/02(日) 01:15:48.32ID:0SO6fajC >>472
> 「あのプログラムのソースコードは単語数が少ないから非常に読みやすかったよ〜」
> なんて会話は、無い
無駄がないとかシンプルっていう言い方をしてるはずだよ。
無駄がないとかシンプルとはどういうことか?というと
それは殆どの場合単語数が少ないことを意味してる
単に言い方の違いだねw
> 「あのプログラムのソースコードは単語数が少ないから非常に読みやすかったよ〜」
> なんて会話は、無い
無駄がないとかシンプルっていう言い方をしてるはずだよ。
無駄がないとかシンプルとはどういうことか?というと
それは殆どの場合単語数が少ないことを意味してる
単に言い方の違いだねw
475デフォルトの名無しさん
2017/07/02(日) 01:23:00.07ID:yqVk05l0 ついでに言っておくと、俺は別に冗長に書けばわかりやすくなるとも思ってない
元の人がそのようなことを言っていたから、そういった風なことも書いたが
俺自身はそうとも思っていない
というか、そういったことは、割とどうでもよいというか
多少コードがシンプルになったぐらいで一喜一憂する気分ではない
そりゃ少しはうれしいが、それはまぁなんていうか、青信号だったラッキー、みたいな感覚
どちらかというと、1円見つけた!のほうが嬉しいかなー
元の人がそのようなことを言っていたから、そういった風なことも書いたが
俺自身はそうとも思っていない
というか、そういったことは、割とどうでもよいというか
多少コードがシンプルになったぐらいで一喜一憂する気分ではない
そりゃ少しはうれしいが、それはまぁなんていうか、青信号だったラッキー、みたいな感覚
どちらかというと、1円見つけた!のほうが嬉しいかなー
476デフォルトの名無しさん
2017/07/02(日) 01:28:42.17ID:0SO6fajC > 多少コードがシンプルになったぐらいで一喜一憂する気分ではない
割合で考えようか?
4単語が3単語になったら、25%もシンプルになったとみなすことができる
割合で考えようか?
4単語が3単語になったら、25%もシンプルになったとみなすことができる
477デフォルトの名無しさん
2017/07/02(日) 01:36:42.12ID:yqVk05l0 ほらもう、プログラムの美的センスがまるでないでしょ
>無駄がないとかシンプルとはどういうことか?というと
>それは殆どの場合単語数が少ないことを意味してる
大体において、ソフトウェアの可読性について考えたとき
そのほとんどは設計に依存していると考える人は多いっつーか
まぁ普通の感覚であるところだけど
じゃあなるべく素晴らしい設計をしようって意気込んだ時
「できるだけ単語数を減らせるような設計にしよう」
なんてこと考える奴居るのかね
そんなことがシンプルさの基準になるんかね
これはコードレベルでも同じことだろう
と、俺は思っているわけ
>無駄がないとかシンプルとはどういうことか?というと
>それは殆どの場合単語数が少ないことを意味してる
大体において、ソフトウェアの可読性について考えたとき
そのほとんどは設計に依存していると考える人は多いっつーか
まぁ普通の感覚であるところだけど
じゃあなるべく素晴らしい設計をしようって意気込んだ時
「できるだけ単語数を減らせるような設計にしよう」
なんてこと考える奴居るのかね
そんなことがシンプルさの基準になるんかね
これはコードレベルでも同じことだろう
と、俺は思っているわけ
478デフォルトの名無しさん
2017/07/02(日) 01:39:30.83ID:yqVk05l0 >4単語が3単語になったら、25%もシンプルになったとみなすことができる
なんでシンプルさの基準が単語数なのか本当に不思議な奴だ
プログラム書いたことないんじゃね?説
なんでシンプルさの基準が単語数なのか本当に不思議な奴だ
プログラム書いたことないんじゃね?説
479デフォルトの名無しさん
2017/07/02(日) 03:26:13.52ID:0SO6fajC >>477
> 「できるだけ単語数を減らせるような設計にしよう」
> なんてこと考える奴居るのかね
いるだろうな
言語とかライブラリの比較みてみ?
あの言語・ライブラリではこんなに面倒なコードが
たったこれだけのコード(単語数)で書けるって
話になってるから。
> 「できるだけ単語数を減らせるような設計にしよう」
> なんてこと考える奴居るのかね
いるだろうな
言語とかライブラリの比較みてみ?
あの言語・ライブラリではこんなに面倒なコードが
たったこれだけのコード(単語数)で書けるって
話になってるから。
480デフォルトの名無しさん
2017/07/02(日) 03:29:27.16ID:0SO6fajC >>478
> なんでシンプルさの基準が単語数なのか本当に不思議な奴だ
単語数だけじゃないけど?
それ以外の条件が同じ時。
単語数が少ないほうがシンプルなコード
それ以外の条件っていうのは、単語の長さはどちらも同程度であること
一行の文字数はどちらも同程度であること
関数の行数はどちらも同程度であること
ファイル数やクラス数や関数数はどちらも同程度であること
それ以外の条件を同じか、同程度にした時
単語数が少ないほうがシンプルなコードになる。
> なんでシンプルさの基準が単語数なのか本当に不思議な奴だ
単語数だけじゃないけど?
それ以外の条件が同じ時。
単語数が少ないほうがシンプルなコード
それ以外の条件っていうのは、単語の長さはどちらも同程度であること
一行の文字数はどちらも同程度であること
関数の行数はどちらも同程度であること
ファイル数やクラス数や関数数はどちらも同程度であること
それ以外の条件を同じか、同程度にした時
単語数が少ないほうがシンプルなコードになる。
481デフォルトの名無しさん
2017/07/02(日) 05:05:29.89ID:mUyXxhhW 各「.」で何の型が返ってきているのか、実装を見ずとも自明になっている。
最悪でも、マウス当てただけで自明になる書き方。
これを守ってるほうが遥かに重要だわ。
最悪でも、マウス当てただけで自明になる書き方。
これを守ってるほうが遥かに重要だわ。
482デフォルトの名無しさん
2017/07/02(日) 05:55:04.26ID:X/s5VUlf ああもうあなたが初心者であることはよくわかったので他のスレでやってくれ
https://mevius.2ch.net/test/read.cgi/tech/1475332848/
https://mevius.2ch.net/test/read.cgi/tech/1475332848/
483デフォルトの名無しさん
2017/07/02(日) 06:33:34.29ID:tl1wWlTJ うますぎるプログラムはいけない
484デフォルトの名無しさん
2017/07/02(日) 12:23:01.69ID:Ey9UZy2f >>461
確かにその文法欲しいな。
確かにその文法欲しいな。
485デフォルトの名無しさん
2017/07/02(日) 13:05:35.53ID:NbWg8gon >>477
同意
プログラミングの難しさは設計の難しさ
コードの美しさは設計の美しさ
それが分かっている奴は
初心者が騒ぐ観点で騒がない
真顔で黙ってる
タイプ数が少ない?よかったね
単語数が少ない?よかったねえ
同意
プログラミングの難しさは設計の難しさ
コードの美しさは設計の美しさ
それが分かっている奴は
初心者が騒ぐ観点で騒がない
真顔で黙ってる
タイプ数が少ない?よかったね
単語数が少ない?よかったねえ
486デフォルトの名無しさん
2017/07/02(日) 13:08:21.66ID:0SO6fajC コードが美しい?よかったねえ
487デフォルトの名無しさん
2017/07/02(日) 13:49:07.69ID:27xX9ykc488デフォルトの名無しさん
2017/07/02(日) 17:59:14.19ID:NbWg8gon 既存の言語が気に入らないんなら
自分で作ってみればいいんじゃね?
クソじゃない言語とやらを
自分で作ってみればいいんじゃね?
クソじゃない言語とやらを
489デフォルトの名無しさん
2017/07/02(日) 18:07:42.30ID:IGa4njyh490デフォルトの名無しさん
2017/07/02(日) 21:49:13.80ID:19kDKEGS >>487
Haskell良いぞぉ〜。
Haskell良いぞぉ〜。
491デフォルトの名無しさん
2017/07/02(日) 22:48:36.18ID:ynDhLM7Z Java + Groovy = Kotlin
Groovy == Ruby
つまり、Kotlin は、Ruby, Groovy に静的型チェックを付けたもの。
型チェックがあるから面倒くさいが、型推論もある
または、Java に関数型を付けたものとも言える
Groovy == Ruby
つまり、Kotlin は、Ruby, Groovy に静的型チェックを付けたもの。
型チェックがあるから面倒くさいが、型推論もある
または、Java に関数型を付けたものとも言える
492デフォルトの名無しさん
2017/07/02(日) 22:51:40.39ID:WUsDB0eH >>491
使ったことないでしょ君
使ったことないでしょ君
493デフォルトの名無しさん
2017/07/03(月) 00:51:18.19ID:6nx2OSAK494デフォルトの名無しさん
2017/07/03(月) 01:32:13.92ID:95u0vCaW デフォでindex持ってたらそれこそ冗長じゃないの
495デフォルトの名無しさん
2017/07/03(月) 01:33:52.97ID:NVKo/d7Z >>494
冗長であるとはどういうこと?
冗長であるとはどういうこと?
496デフォルトの名無しさん
2017/07/03(月) 03:30:38.10ID:6nx2OSAK497デフォルトの名無しさん
2017/07/03(月) 03:42:56.46ID:2SpTAV0H 構成が冗長ってどういうことだろう?
普通、冗長ってそういう意味に使わないよね?
普通、冗長ってそういう意味に使わないよね?
498デフォルトの名無しさん
2017/07/03(月) 10:06:01.55ID:looyCaxt >>493
each_with_index は素の each に比べて 3~4 割遅い。
each のデフォルトで index を持つよりは、遅くても index が使いたいときに明示するという使い方の方がリーズナブルだと思うけど。
each_with_index は素の each に比べて 3~4 割遅い。
each のデフォルトで index を持つよりは、遅くても index が使いたいときに明示するという使い方の方がリーズナブルだと思うけど。
499デフォルトの名無しさん
2017/07/03(月) 10:29:47.39ID:edaN+zHQ でもそういう使い分けこそ、まつもとさんに言わせればムダなわけだし
あのひとは機械にできることはすべて機械にやらせるべし、って言ってるからね
コンパイラはインデックスを必要としているかどうか、判断できるわけだから
勝手に使い分けてくれればよいんじゃね?
てことでRubyを静的型にしてオーバーロードで解決すればよいだろう
静的型にするとコンパイル時に型チェックをさせることができるし
最適化もかけやすくなるし、入力補完との相性もよい
機械で出来ることがどんどん増えるから
まつもとさんの機械にできることは〜の考えによく合ってるね
あのひとは機械にできることはすべて機械にやらせるべし、って言ってるからね
コンパイラはインデックスを必要としているかどうか、判断できるわけだから
勝手に使い分けてくれればよいんじゃね?
てことでRubyを静的型にしてオーバーロードで解決すればよいだろう
静的型にするとコンパイル時に型チェックをさせることができるし
最適化もかけやすくなるし、入力補完との相性もよい
機械で出来ることがどんどん増えるから
まつもとさんの機械にできることは〜の考えによく合ってるね
500デフォルトの名無しさん
2017/07/03(月) 11:00:51.38ID:looyCaxt >>499
> あのひとは機械にできることはすべて機械にやらせるべし、って言ってるからね
発言を自分に都合よく拡大解釈してない?
> コンパイラはインデックスを必要としているかどうか、判断できるわけだから
あなたの脳内のコンパイラはそれができるみたいだけど、
現状のMRIにその機能は無いよ。
> てことでRubyを静的型にしてオーバーロードで解決すればよいだろう
> 静的型にするとコンパイル時に型チェックをさせることができるし
> 最適化もかけやすくなるし、入力補完との相性もよい
機械で出来ることがどんどん増えるから
現時点で解決したいならCrystal使ったほうがいいよ。
変数の型を変えると言う言語の根幹に影響する変更が受け入れられるとは思わないけど、あなたがそんなに強く望むのならコミュニティに参加して意見が通るほどの功績を積むのが最短の道。
> あのひとは機械にできることはすべて機械にやらせるべし、って言ってるからね
発言を自分に都合よく拡大解釈してない?
> コンパイラはインデックスを必要としているかどうか、判断できるわけだから
あなたの脳内のコンパイラはそれができるみたいだけど、
現状のMRIにその機能は無いよ。
> てことでRubyを静的型にしてオーバーロードで解決すればよいだろう
> 静的型にするとコンパイル時に型チェックをさせることができるし
> 最適化もかけやすくなるし、入力補完との相性もよい
機械で出来ることがどんどん増えるから
現時点で解決したいならCrystal使ったほうがいいよ。
変数の型を変えると言う言語の根幹に影響する変更が受け入れられるとは思わないけど、あなたがそんなに強く望むのならコミュニティに参加して意見が通るほどの功績を積むのが最短の道。
501デフォルトの名無しさん
2017/07/03(月) 20:57:22.46ID:91Pqu4Id >>500
久々に普通な常識を元にしたレスを見た
久々に普通な常識を元にしたレスを見た
502デフォルトの名無しさん
2017/07/03(月) 23:47:51.07ID:7Hia1uWl まあ別にeachにインデックスを渡してても良かったと思うけどね
(3..9).each_with_index {|e| p e }
(3..9).each_with_index {|e| p e }
503デフォルトの名無しさん
2017/07/04(火) 04:47:02.02ID:nYPV9UDZ つーかeach_with_indexが長いから
each_iとかで良かったんじゃね?
極端な省略だけどto_iとかもあるから
each_iとかで良かったんじゃね?
極端な省略だけどto_iとかもあるから
504デフォルトの名無しさん
2017/07/04(火) 10:42:41.42ID:olJiM2Cb オブジェクト指向なんだからオブジェクトによって振る舞いが変わればよくね?
なんでこっちで使い分けなきゃならんの?
なんでこっちで使い分けなきゃならんの?
505デフォルトの名無しさん
2017/07/04(火) 11:11:52.06ID:XKRg/8mz 最初に each_with_index つくったのがいまとなっては浅はか
もしかしたら当時 Enumerator がなかったんかもしれんけど
もしかしたら当時 Enumerator がなかったんかもしれんけど
506デフォルトの名無しさん
2017/07/04(火) 12:27:20.90ID:FYa81knm それとは別でeach.with_indexもあるって言うね。。。
507デフォルトの名無しさん
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相当
挙動を変えられるようにできたら良いんじゃね?
つまり
[1,2,3].map(v => v) だったらインデックスなしのコードが実行されて
[1,2,3].map((v,i) => i + ':' + v) だったらwith_index相当
508デフォルトの名無しさん
2017/07/04(火) 12:36:39.44ID:Qa2xT13J 話をぶった切るけど
Rubyで人工知能、それもワトソンのクローンを作りたいんだけど
Ruby界隈ではどうやって人を集めたら良い?
成果としてRubyの人工研究関連の書籍がだせるし、出来上がったソフトかそのサポートでビジネス出来る可能性あるし、何かの縁で研究関連の所と一緒に仕事できるかもしれないし、政経的な所に話を持っていける実績つくしで、
良いことばかりだからやってみたいんだけど
基本、金は出したくないけど、Rubyで大きな事がやりたい
Rubyで人工知能、それもワトソンのクローンを作りたいんだけど
Ruby界隈ではどうやって人を集めたら良い?
成果としてRubyの人工研究関連の書籍がだせるし、出来上がったソフトかそのサポートでビジネス出来る可能性あるし、何かの縁で研究関連の所と一緒に仕事できるかもしれないし、政経的な所に話を持っていける実績つくしで、
良いことばかりだからやってみたいんだけど
基本、金は出したくないけど、Rubyで大きな事がやりたい
509デフォルトの名無しさん
2017/07/04(火) 12:37:00.52ID:XKRg/8mz510507
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
みたいに関数の中で、コールバック関数の引数の数で処理を変更することができる
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
みたいに関数の中で、コールバック関数の引数の数で処理を変更することができる
511デフォルトの名無しさん
2017/07/04(火) 12:40:38.40ID:Fv1Dj8Gj512デフォルトの名無しさん
2017/07/04(火) 12:42:55.91ID:Qa2xT13J ワトソンの解説みたいなのをRubyでコード実装して試す本、
ってのなら割と興味もたれて売れると思うんだよ
どうかな?
ってのなら割と興味もたれて売れると思うんだよ
どうかな?
513デフォルトの名無しさん
2017/07/04(火) 12:43:23.19ID:Fv1Dj8Gj >>508
ワトソンは厳密にはAIでは無い。
人口無能ってやつだ。基本、失敗した技術。
マーケティング的に成功している。
クイズの回答をさせるのとか、いかにも考えて居る風に装って、
実は探索を行うのだ。
ワトソンは厳密にはAIでは無い。
人口無能ってやつだ。基本、失敗した技術。
マーケティング的に成功している。
クイズの回答をさせるのとか、いかにも考えて居る風に装って、
実は探索を行うのだ。
514デフォルトの名無しさん
2017/07/04(火) 12:44:13.45ID:Fv1Dj8Gj >>512
Rubyで作る人工無脳、って本があったはず。
Rubyで作る人工無脳、って本があったはず。
515デフォルトの名無しさん
2017/07/04(火) 12:45:12.42ID:Fv1Dj8Gj516デフォルトの名無しさん
2017/07/04(火) 12:47:14.56ID:Qa2xT13J しってるしってる
だからワトソンのクローンをRubyでつくるんだよ
で、あの人工無能のどこに深層学習やら何やらの技術が使われてるかRuby使って解説する本を出すんだよ
だからワトソンのクローンをRubyでつくるんだよ
で、あの人工無能のどこに深層学習やら何やらの技術が使われてるかRuby使って解説する本を出すんだよ
517デフォルトの名無しさん
2017/07/04(火) 12:47:34.81ID:jC9x4mB4 >>508
ワトソンよく知らないけど、これが本当なら泥臭いソフトだと思うわ
https://wirelesswire.jp/2016/11/57683/
> しかし、それは失望と呼ぶしかないものでした。
> WatsonのAPIとして提供されているものは、「自然言語分類」
> 「検索およびランク付け」「文書変換」「会話」「音声認識」
> 「音声合成」といったもので、これは基本的にはディープラーニングとは
> 無関係な、既存技術の寄せ集めに過ぎません。もっというと、
> Watsonを有名にしたはずの、クイズに正解する機能すらありません。
> 少なくとも汎用的は皆無です。
人工無能でも膨大なデータを投入して、ちゃんとした
検索エンジンを使えば、それなりに使えるものができる。
みたいな認識。
ワトソンよく知らないけど、これが本当なら泥臭いソフトだと思うわ
https://wirelesswire.jp/2016/11/57683/
> しかし、それは失望と呼ぶしかないものでした。
> WatsonのAPIとして提供されているものは、「自然言語分類」
> 「検索およびランク付け」「文書変換」「会話」「音声認識」
> 「音声合成」といったもので、これは基本的にはディープラーニングとは
> 無関係な、既存技術の寄せ集めに過ぎません。もっというと、
> Watsonを有名にしたはずの、クイズに正解する機能すらありません。
> 少なくとも汎用的は皆無です。
人工無能でも膨大なデータを投入して、ちゃんとした
検索エンジンを使えば、それなりに使えるものができる。
みたいな認識。
518デフォルトの名無しさん
2017/07/04(火) 12:47:46.71ID:Fv1Dj8Gj519デフォルトの名無しさん
2017/07/04(火) 12:51:53.36ID:jC9x4mB4 ワトソンは人工知能ではない
だが商業的には成功している
人工知能ではないが使える技術はある
使える技術=検索エンジン
↓ってことでこれなw
本当に必要ものは人工知能ではなくて検索エンジン [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1498937148/
検索エンジンを求めている客に
人工知能ですよという言葉で近づいて
検索エンジンを売る商売w
だが商業的には成功している
人工知能ではないが使える技術はある
使える技術=検索エンジン
↓ってことでこれなw
本当に必要ものは人工知能ではなくて検索エンジン [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1498937148/
検索エンジンを求めている客に
人工知能ですよという言葉で近づいて
検索エンジンを売る商売w
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- テレビ朝日 本社から男性が転落し死亡。関連会社社員か 当たった通行人が左肩軽傷 [阿弥陀ヶ峰★]
- 「これいいじゃん!!!」 セブン-イレブンの1620円で買える“1人用クリスマスケーキ”🎂に注目殺到「天才すぎる」 [パンナ・コッタ★]
- テレビ朝日本社から20~30代の関連会社社員とみられる男性が転落し死亡 六本木けやき坂通りの通行人にはけが人なし [少考さん★]
- 高市早苗首相が天理教系企業に“巨額発注” 総額5000万円 本人は「政治団体の活動に必要な支出」と回答 ★2 [Hitzeschleier★]
- 小島瑠璃子さん、代表取締役を務める会社を破産申請 [牛丼★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★3 [少考さん★]
