X



Ruby 初心者スレッド Part 61 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
2017/08/25(金) 15:59:11.22ID:HsL9LVKJ
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 60
https://mevius.2ch.net/test/read.cgi/tech/1493398918/

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

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

逆引きRuby
http://www.namaraii.com/rubytips/
0003デフォルトの名無しさん
垢版 |
2017/08/25(金) 16:05:48.85ID:HsL9LVKJ
たのしいRuby 第5版、2016

Effective Ruby、2015

メタプログラミング Ruby 第2版、2015

Rubyのしくみ、2014

改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015

リファクタリング:Rubyエディション、2010
0005前スレ996
垢版 |
2017/08/25(金) 16:11:37.65ID:sLUvaIRs
前スレ>>997,999
ありがとうございます。

自分のレベル的に997の方しか理解できていませんが、
999の方もがんばって読み解いてみます。
0006デフォルトの名無しさん
垢版 |
2017/08/25(金) 16:12:33.08ID:BwHFndLq
each_with_object
なんて初めて見た。


a=[[1,2],3,4,5,[6,7],8,[9,10],[11,12],[13,14]]

b = a.each_with_object([[],[]]) {|(x, y), acc| acc[0] << x; acc[1] << (y || x) }
p b # => [[1, 3, 4, 5, 6, 8, 9, 11, 13], [2, 3, 4, 5, 7, 8, 10, 12, 14]]
0007デフォルトの名無しさん
垢版 |
2017/08/25(金) 16:18:41.59ID:BwHFndLq
evens = (1..10).each_with_object([]) {|i, a| a << i*2 }
# => [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

each_with_objectってのは引数一個(空の配列)とブロックを取るみたい。
ブロックには、引数が2つ渡り、最初は、列挙される要素、2番目は引数(空の配列)が渡るらしい。

ブロックの戻値がeach_with_objectの戻値かな?
0008デフォルトの名無しさん
垢版 |
2017/08/25(金) 16:25:39.04ID:BwHFndLq
a=[[1,2],3,4,5,[6,7],8,[9,10],[11,12],[13,14]]
p a

a.each{|(x, y)| puts "x = " + x.to_s + "y = " + y.to_s}

このtupleみたいな(x, y)ってのは何だ?
Rubyにtupleがあるのか?
0009デフォルトの名無しさん
垢版 |
2017/08/25(金) 16:26:35.62ID:4MOWRfGQ
ブロック中での最後の評価値、じゃないのがこれの使い易いところ
戻り値には、each_with_object(ここのオブジェクト)を返す

injectでやろうとして
b = a.inject([[],[]]) {|acc, (x, y)| acc[0] << x; acc[1] << (y || x); acc}
ブロックの最後でこうやってaccを返そうとして頑張っちゃうような時には考えたい
0010デフォルトの名無しさん
垢版 |
2017/08/25(金) 16:30:33.90ID:BwHFndLq
よく判らんが、要素2個の配列をブロックの引数で(x, y)って受け取れば、
2個の要素はx,yとして受け取れるらしい。
0011前スレ996
垢版 |
2017/08/25(金) 16:55:24.12ID:sLUvaIRs
aの配列の個数が変わる場合があるので、とりあえず以下のようにしてみたのですがrslt1とrslt2で結果が異なるのは何故ですか?
tobj==[[],[]]はtrueと出ます。

a=[[1,2],3,4,5,[6,7],8,[9,10],[11,12],[13,14]]
tobj=[[]]*2
rslt1 = a.each_with_object([[],[]]) {|x,tary|; tary.each_with_index{|n,i| x.instance_of?(Array) ? tary[i]<<x[i] : tary[i]<<x}}
rslt2 = a.each_with_object(tobj) {|x,tary|; tary.each_with_index{|n,i| x.instance_of?(Array) ? tary[i]<<x[i] : tary[i]<<x}}
0012前スレ996
垢版 |
2017/08/25(金) 17:00:35.79ID:sLUvaIRs
すみません。上のは不要なセミコロンが入っていました。(動作は問題ないみたいですが)

a=[[1,2],3,4,5,[6,7],8,[9,10],[11,12],[13,14]]
tobj=[[]]*2
rslt1 = a.each_with_object([[],[]]) {|x,tary| tary.each_with_index{|n,i| x.instance_of?(Array) ? tary[i]<<x[i] : tary[i]<<x}}
rslt2 = a.each_with_object(tobj) {|x,tary| tary.each_with_index{|n,i| x.instance_of?(Array) ? tary[i]<<x[i] : tary[i]<<x}}
p rslt1,rslt2
0013デフォルトの名無しさん
垢版 |
2017/08/25(金) 17:06:01.66ID:W3qddKKH
Rubyの初め方

ルビィの冒険

たのしいRuby、初めてのRuby

パーフェクトRuby

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

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

ウェブアプリ方面
パーフェクトRubyonRails
RubyonRails5アプリケーション・プログラミング
Docker教科書
JapaScript本格入門第二版
入門Git
GitHub実践入門
SQL 第2版 ゼロからはじめるデータベース操作
達人に学ぶ SQL徹底指南書
SQLアンチパターン
0014デフォルトの名無しさん
垢版 |
2017/08/25(金) 17:51:40.95ID:HsL9LVKJ
リファクタリングRubyエディション
Rubyのしくみ

このふたつは必読
0015デフォルトの名無しさん
垢版 |
2017/08/25(金) 18:32:17.61ID:w/d6Mddl
>>前スレ989
それ継承でなくて上書きがダメって言ってるだけじゃん
Objectクラス継承しちゃうんだからもうオブジェクト指向言語使うのやめなよ
0016デフォルトの名無しさん
垢版 |
2017/08/25(金) 18:48:50.81ID:W3qddKKH
>>13
最初からwebアプリ(Rails)を作りたい人は
ルビィの冒険

たのしいRuby、初めてのRuby

パーフェクトRuby

パーフェクトRubyonRails
達人に学ぶ SQL徹底指南書
達人に学ぶ DB設計徹底指南書
SQLアンチパターン

テスト駆動開発をやりたい人は
Railsチュートリアル
はじめて学ぶソフトウェアテスト技法
Everyday Rails - RSpecによるRailsテスト入門
0017デフォルトの名無しさん
垢版 |
2017/08/25(金) 19:18:38.80ID:3NyVHrhs
>>12
そりゃあんた2次元配列の初期化の基本でしょ。
tobj[0].object_id == tobj[1].object_id なんだから。
tobj = Array.new(2).map([]) とでもしないと。
0019デフォルトの名無しさん
垢版 |
2017/08/25(金) 19:27:54.09ID:UfR6nGBm
Rubyに多次元配列は存在しない
とかいう例のアレにも通じるアレだな

Array#*は単純にレシーバを引数回繰り返した結果を返す(値は複製しない)
複製しないってことは同じ配列がいくつも繰り返されるだけだ
つまり [[]]*2 と [[],[]] は違う
0020デフォルトの名無しさん
垢版 |
2017/08/25(金) 20:37:35.28ID:rKeka8MH
a=[[1,2],3,4,5,[6,7],8,[9,10],[11,12],[13,14]]
a.map {|e| [[e].flatten[0], [e].flatten[-1]] }.transpose
=> [[1, 3, 4, 5, 6, 8, 9, 11, 13], [2, 3, 4, 5, 7, 8, 10, 12, 14]]
0021デフォルトの名無しさん
垢版 |
2017/08/25(金) 21:01:41.73ID:rKeka8MH
[a.map {|(e)| e }, a.map {|(*,e)| e }]
=> [[1, 3, 4, 5, 6, 8, 9, 11, 13], [2, 3, 4, 5, 7, 8, 10, 12, 14]]
0022デフォルトの名無しさん
垢版 |
2017/08/25(金) 21:09:45.04ID:rKeka8MH
[a.map {|(e,*)| e }, a.map {|(*,e)| e }]
=> [[1, 3, 4, 5, 6, 8, 9, 11, 13], [2, 3, 4, 5, 7, 8, 10, 12, 14]]
こっちのほうがきれい >>21は撤回で
0025デフォルトの名無しさん
垢版 |
2017/08/25(金) 22:46:54.39ID:teISJdbp
>>10
メソッドやブロックの引数の受け取り方は多重代入と似た挙動になってるから
入れ子になった配列も展開して変数に受け取ることもできる

def test(a, (b, (c, d)))
 ……
end

test 1, [2, [3, 4]]
0026デフォルトの名無しさん
垢版 |
2017/08/25(金) 22:56:33.15ID:UfR6nGBm
コードゴルフ(もどき)はあまり好ましいことではないように思える
初心者スレであるから特に
splat*を書いてしまったら立ち止まるべきかと
0029デフォルトの名無しさん
垢版 |
2017/08/26(土) 00:18:15.51ID:6TCzEPsc
>>26
好ましくないが、楽しいので初心者向き。
0030デフォルトの名無しさん
垢版 |
2017/08/26(土) 00:23:16.07ID:6TCzEPsc
>>18
うぅーん。よく判らん。
Rubyの多重代入が、ブロック引数にも使えるって事なのか?
0032デフォルトの名無しさん
垢版 |
2017/08/26(土) 00:31:33.66ID:GUwpgiyr
カンマで区切る代入はRubyの魔境のひとつなので半端に深入りするのも半端に慣れるのも事故のもとだからやめといたほうがいいかも
0033デフォルトの名無しさん
垢版 |
2017/08/26(土) 01:28:41.95ID:8HsFh7FA
多重代入でもハッシュが使えればなーって思うことがたまにある

(x:, y: 1, z: 1.5) = { x: -1 }
0036デフォルトの名無しさん
垢版 |
2017/08/26(土) 07:51:03.88ID:6TCzEPsc
>>32
ホントだ。魔境だ。変な仕様だ。

多重代入は括弧により、ネストした配列の要素を代入することもできます。

(foo, bar), baz = [1, 2], 3 # foo = 1; bar = 2; baz = 3
0037デフォルトの名無しさん
垢版 |
2017/08/26(土) 07:53:51.24ID:6TCzEPsc
そういえばMatz自身が魔境だと言う動画を見たことある。
Matz 多重代入 で検索。

$変数も魔境だ。C言語の関数ポインタの宣言の読み方も魔境だ。
SwiftのStringも魔境だ。


おっと、失礼!
0038デフォルトの名無しさん
垢版 |
2017/08/26(土) 08:14:32.01ID:6TCzEPsc
多重代入、trickyすぎる。


files = ['Gemfile', 'LICENSE.txt', 'README.md', 'Rakefile', 'bin', 'lib', 'maliq.gemspec', 'pkg', 'spec']

多重代入+括弧で解決します。

(gemspec, *_), files = files.partition { |f| f.match(/¥.gemspec$/) }
gemspec # => "maliq.gemspec"
files # => ["Gemfile", "LICENSE.txt", "README.md", "Rakefile", "bin", "lib", "pkg", "spec"]
0040デフォルトの名無しさん
垢版 |
2017/08/26(土) 18:34:53.74ID:8HsFh7FA
>>35
それだとその後に
x, y, z = hash[:x], hash[:y], hash[:z]
ってやるか
x, y, z = hash.values_at(:x, :y, :z)
ってやった上に必須キー・不正なキーの確認処理が必要になるじゃない

((x1:, y1:, color1: 0xffffffff), (x2:, y2:, color2: 0x00ffffff)) = obj
みたいに配列中のハッシュも多重代入で済ませられたらなってのが動機

……新しい魔境ができそう
0042デフォルトの名無しさん
垢版 |
2017/08/26(土) 20:31:00.33ID:0rCQx/Jc
いやアスタリスクはアスタリスクだよ
引数展開をsplatと呼ぶ
それに使われるときの演算子だからsplat
0044デフォルトの名無しさん
垢版 |
2017/08/26(土) 21:22:20.08ID:6TCzEPsc
>>41
splat = ビシャ
スプラトゥーンってゲーム流行ってるらしいけど、俺は興味無い。
0045デフォルトの名無しさん
垢版 |
2017/08/26(土) 21:32:43.71ID:CwpB94hG
>>32,36
魔境?、よくわからんけど ML や Haskell といったモダンな関数型言語にある
タプルのパターンマッチングをRubyが部分的に導入した(パクった)だけでは?

たとえば SML(Standard ML) だと、以下は魔境でも魔術でもなんでもなく
単なるパターンマッチングの初歩でしかない

- val ((x, y), z) = ((1, 2), 3); (* 先頭の ‘-‘ はSML/NJのプロンプト *)
val x = 1 : int (* 以下はSML/NJ の応答 *)
val y = 2 : int
val z = 3 : int

少なくとも、これをSMLの世界で魔境やら多重代入と呼ぶ人は存在しない
君たちを見ていると、何やら未開の土人がテレビという文明に接して、
それを魔境の道具などと謎に満ちた深淵な事象に認識してしまう映像を思い出す
0048デフォルトの名無しさん
垢版 |
2017/08/26(土) 22:03:41.96ID:CwpB94hG
>>46
モダンな関数型言語のパターンマッチングが単なる変数への代入に限定されると
思い込んでるってことは、君も彼らと同じく未開の土人なんだろな
そんなのネットで調べればすぐにわかることなのに気の毒な
0049デフォルトの名無しさん
垢版 |
2017/08/26(土) 22:26:45.42ID:CwpB94hG
>>47
Prolog だと>>45の例は以下のようになる

?- ((X, Y), Z) = ((1, 2), 3). % 先頭の ‘?-‘ は SWI-Prolog のプロンプト
X = 1, % 以下は SWI-Prolog の応答
Y = 2,
Z = 3.

なお ML や Haskell といった関数型言語(および Ruby)のパターンマッチングは
変数と値の代入に限定されるけど、Prolog では変数と変数のマッチも許容され、
それを単一化(ユニフィケーション)と呼び、論理型言語の特質の一つになっている

まあそれを魔境と捉えるのはその人しだいだし、確かに初対面では魔境にしか
見えないのも仕方ないのかもしれない
でも自分にとっては、Lisp の caadr やら cadar やらに嫌気がさしていたから、
なんて(人に)優しい構文なんだと Prolog に入れ込む理由の
大きな要因の一つになっていた

同じく、Ruby のケースも導入されたのは 1.8 の頃だと思うけど、
自分はそれを肯定的に捉えている
0050デフォルトの名無しさん
垢版 |
2017/08/26(土) 22:33:08.15ID:MD6b0JEZ
パターンマッチングを参考に取り入れたはいいけど、つまみ食い的に取り入れたために
きちんとした仕様を策定できなくて魔境になっちゃった

…という感じでは?
0052デフォルトの名無しさん
垢版 |
2017/08/26(土) 22:33:49.77ID:azDqTcfP
>>45
パターンマッチングと多重代入は別もの
destructuringとかunpackingする部分が共通してるだけ

MLはしらんけどHaskell含めて関数型言語には
基本的に多重代入って考え方がないからそう呼ばないだけだと思うよ
0053デフォルトの名無しさん
垢版 |
2017/08/26(土) 22:35:01.43ID:r2wyjps1
>>50
上でもちらっと言われてるがただの変数代入なら複雑ではない
片方がメソッドの評価であるような場合何が何やらわからなくなる
0055デフォルトの名無しさん
垢版 |
2017/08/26(土) 22:37:22.86ID:MD6b0JEZ
魔境ってのも、仕様的魔境なのか、実装的魔境なのか、その辺があいまいだよねー
0057デフォルトの名無しさん
垢版 |
2017/08/26(土) 22:58:24.74ID:CwpB94hG
>>53
どうやら >>46 のお仲間みたいですね、しかたないから具体的なコードで

Ruby の場合:
 $ irb
 irb(main):001:0> [[1,2], [3, 4], [5, 6]].map { |(x, y)| x + y }
 => [3, 7, 11]

SMLの場合:
 $ sml
 Standard ML of New Jersey v110.79 [built: Sun Oct 4 14:45:06 2015]
 - map (fn (x, y) => x + y) [(1, 2), (3, 4), (5, 6)];
 val it = [3,7,11] : int list

Ruby のメソッド Enumerable#map の引数であるブロックに相当する
SML の構文 が “fn” <pat> => <expr> になる
>>45 の代入の構文は “val” <pat> = <expr> でしかない

さらに具体的なコードをお求めなら、以下を読んで:
 関数型プログラミングにおけるクイックソート・アルゴリズムの実装
 http://www.h6.dion.ne.jp/~machan/misc/qsort-in-fp.html
0058デフォルトの名無しさん
垢版 |
2017/08/26(土) 23:09:14.73ID:CwpB94hG
>>56
直感的に言えば、単一化の概念はそれで合ってる(左辺と右辺を同等に扱う)
そして Prolog に代表される論理型言語では、変数とは未知の存在を表し、
単一化により未知を未知のまま扱う(=計算する)ことができる
それは、人間の持つ自然な「等しい」という高度で抽象的な概念により近いはず

これ以上はスレ違いになるから、続きは Prolog スレで
0059デフォルトの名無しさん
垢版 |
2017/08/27(日) 00:07:15.35ID:b/YM8B/u
a,=[1,2,3]
こういうのがキモい。
そうしたいときはあえて(a,)とカッコをつけて書くようにしてる。
0060デフォルトの名無しさん
垢版 |
2017/08/27(日) 01:23:32.91ID:1JS8bjMA
>>49
LispよりPrologの方が難しいと思うけどな
Lispは表記が読みにくいだけで動作はシンプルだけど
Prologは言語の挙動を理解するのが大変
0061デフォルトの名無しさん
垢版 |
2017/08/27(日) 03:30:57.21ID:dsz1YMQy
Ruby, JS スレには、関数厨が、わんさか湧いてくるw

魔境に、片足を突っ込んでる、言語だからかな?w
0062デフォルトの名無しさん
垢版 |
2017/08/27(日) 07:12:35.01ID:OA8i5cQF
「回答」ではなく「自分の知っていること」を長々と書くだけだから同定と回避はしやすいね
0063デフォルトの名無しさん
垢版 |
2017/08/28(月) 11:35:58.16ID:hSp+oBxP
https://togetter.com/li/1021897
"型は絶対書きたくない" "Ruby3は東京オリンピックまでに
" Rubyの父Matzによる、「楽しいプログラミング体験を届けるために」
#rubykaigi 2016 Keynote

↑これを読んで本当に安心した
少なくともあと10年はRubyで型を書かなくてもよさそうな雰囲気
これで他の言語よりさらに10年遅れることになる
そのころにはすっかり浦島太郎でゴミになってることだろう、良かった
いや、もうすでにゴミなんだろうけど、その認識がもっと広まって
周知徹底していく過程が楽しめる
それでも完全放置プレーされてて単に周りから取り残されて風化していくんなら
それは自然現象なのでありふれてるっつーか、俺自身も含めて皆そうだしアレなんだけど
Rubyの良いところは頑張るんだけど方向性がおかしくてダメ、無意味な努力というのが良い
どのあたりで「折れる」のか、はたまた意地を貫き通して本当に「終わる」のか、見ものだ
これだけ啖呵を切って自ら退路を断ったのだから、ぜひとも華々しく散ってほしい
0064デフォルトの名無しさん
垢版 |
2017/08/28(月) 12:11:24.54ID:hSp+oBxP
このようなことが本当に可能なのかどうなのか
メソッドが動的に生える場合は対応できないのは仕方が無いとしても
代入という代入を過去も含めてすべて精査しなければ、その変数に
何が入りえるかなど分かりようもない
プログラムが分岐していたら可能性が二つに分岐する
もっと端的に、配列のようなコンテナで
静的型言語なら同じインターフェースを持ったオブジェクトしか入らないわけだが
Rubyのような言語の配列はごった煮状態になりえるわけで・・・
さらに言えば変数への代入にしたって、同じ変数を、使いまわすかもしれない
変数へアクセスするときに適切に型スイッチしているならそれは合法なコードだが
検査ツールはそのことを検出して合法と決断を下さなければならない
型推論もコードを追わないといけないし、適切に使われているかもコードを追わないといけない
両方が泥団子であり、全くの不毛である
型という仲介を通して両者をつなぐとスッキリすることは既に十分実験されていて
分かり切ってるのにあえてこのような泥団子を好む人はいない
これから先このような無意味で壮大なことに労力を割くことで
Rubyのその他の面の進歩はどんどん遅れて、周りから取り残されていくだろう
10年単位で
是非そうなってほしい
0065デフォルトの名無しさん
垢版 |
2017/08/28(月) 12:31:29.95ID:hSp+oBxP
動的型が当たり前の時代が有ったり、静的型が当たり前の時代が有ったり
両社は振り子のように揺れ動くものであるから
今は静的型が人気だが、いづれ動的型の時代が来るかもしれない
今、安易に静的型を取り入れると、そのときになって対応できなくなるから
Rubyには静的型を入れない

↑という言い分だが、そもそもが全くの嘘、でっち上げである
思い出してみれば分かるが、動的型の時代など、「無かった」
C言語が登場して以来、ずっと静的型の時代だっただろう
時系列で言えば、C → C++ → Java → C# という感じの登場順かな
これらの言語は今でも人気がある、というか、先頭集団
ずっと継続して人気者のグループ
これらの言語にRubyが勝ってた時代があったか?
だから振り子のような現象というのが、もう、真っ赤なウソ
動的型言語の時代などなかったし、これから動的型言語の時代が来ることもない
とにかくあの人は隙あらば嘘をついて人をだまそうとする
例のカルト宗教の勧誘で得たテクニックなんだろうか、知らんがな

もう一つの嘘は、動的型言語でもJavascriptのように速度が速い言語もある
だから速度を上げるために静的型を入れる必要はない、っていうやつ
まぁ嘘っつーかアレだが、Javascriptは物凄く多大な労力かつ非常に高度なことをやって
あの速度を得ているわけだが、そんな実装はRubyでは無理って自分で分かってる癖に
しれっとこういうことを言う
だったら今すぐV8エンジン並みの実装用意しろよ、出来るんだろ?
0068デフォルトの名無しさん
垢版 |
2017/08/28(月) 16:00:48.15ID:sXxziykI
RubyだけでなくPythonやJavaScriptのような
広く普及している動的言語があるのに
一方的にゴミ呼ばわりする方がゴミ
0069デフォルトの名無しさん
垢版 |
2017/08/28(月) 17:02:01.88ID:hSp+oBxP
本当にそうであろうか
Pythonは型アノテーションを入れて過去の過ちを修正して未来へ向かおうとしているし
JavaScriptは実際ゴミ呼ばわりで、静的型のTypeScriptが評判良いし
まぁそのうち静的型の機能を取り入れるでしょう
あと、PHPも静的型の機能を取り入れているし
Perlも静的型の機能を取り入れている
徐々に周りは進歩している
ちょうど資本主義を受け入れた中国のようだ
Rubyだけが時が止まってて取り残される恰好なのに
さらに時を止めるつもりらしい ->「型は絶対書きたくない」
まるで北朝鮮といったところか
今は東京オリンピックまでに大陸間弾道ミサイルを作りたいと張り切っている
斜めっぷりというか、掛け違えたボタンというか
一回崩壊しないと正すのは無理なのかもしれないな
0071デフォルトの名無しさん
垢版 |
2017/08/28(月) 18:28:27.74ID:6lvjC5oK
海を越えられないから自転車は使えないとか言って近所のコンビニに行くだけのために
テポドンを持ち出してくるようなゴミクズがまた出たのか
0072デフォルトの名無しさん
垢版 |
2017/08/28(月) 18:38:27.51ID:G4YrO8Fv
なぜ、ある言語を批判したいというモチベーションが沸くのか不思議
オカンの料理を食うだけの穀潰しによって、オカンの料理は批判されるのである
0073デフォルトの名無しさん
垢版 |
2017/08/28(月) 20:23:51.87ID:sXxziykI
>>69
>まるで北朝鮮といったところか
>斜めっぷりというか、掛け違えたボタンというか
>一回崩壊しないと正すのは無理なのかもしれないな
自己紹介乙
0074デフォルトの名無しさん
垢版 |
2017/08/29(火) 09:43:04.32ID:sLm25inw
東京のIT企業が松江に進出08/28 20:15nhk
松江市の技術者が開発したプログラミング言語「Ruby」を活用したシステム開発
を目指して、東京に本社を置くIT企業が松江市に進出することになりました。
新たに進出するのは東京に本社を置くIT企業、「パソナテック」で、28日、
吉永隆一社長が県庁を訪れました。
県庁では調印式が行われ、吉永社長と溝口知事、それに松江市の松浦市長が互いに
連携して事業を進めていくとする覚書にサインをしました。
「パソナテック」は新たな事業所を松江市朝日町のビルの一室に設けて、9月から
運営を開始します。
今後3年間で10人を採用する計画で、松江市の技術者が開発したプログラミング
言語「Ruby」を活用して企業の管理システムの開発を手がけるほか地元のIT
人材の育成などにも力を入れることにしています。
県や松江市も雇用の創出や地域産業の高度化につながるとして企業への助成など支援
を行うことにしています。
吉永社長は「人口減少や高齢化などの課題がある中、地方であっても優秀な人が活躍
できる環境を、産官学で連携しながらつくっていきたい」と話していました。
0076デフォルトの名無しさん
垢版 |
2017/08/29(火) 15:46:16.01ID:JnW2kyj+
スレチかもしれませんが質問です。
爆サイというサイトで「なりすまし防止」でパスワードを入れたんですが、解析されて同じトリップを相手に使用されました。
気持ち悪くて怖くなり、それ以来やっていません。
62^4=14776336通りもあるパスワードをどうやって解析したんでしょうか?
もし解析ができるなら、やり方までは聞きません。
解析ができるのかできないのかを知りたいです。お願いします。
0077デフォルトの名無しさん
垢版 |
2017/08/29(火) 16:15:40.30ID:BJnPfb6J
>>76
本当に62^4通りなのでしょうか?
もしそうなら、総当たりで調べたのでは無いでしょうか?
0080デフォルトの名無しさん
垢版 |
2017/08/29(火) 16:44:27.99ID:JnW2kyj+
>>77
数字と英文字の小文字も入れられるんで、その数字になります。
総当たりと言っても、ほんの数分で解析されてしまいました。
カメラから「おまえの顔も見えているぞ」とまで言われました。
ハッタリかと思っていたんですが、なりすまし防止のパスを解析されて、正直おどろき、どこからどこまでがハッタリなのか判らなくなってしまいました。
>>79
数字と英文字を混ぜたパスだったのですが、なぜか解析されてしまいました。

ご返答ありがとうございます。
0081デフォルトの名無しさん
垢版 |
2017/08/29(火) 16:47:02.27ID:pis/sDRy
>>76
トリップはぶつかることがある
元のパスワードと違うパスワードでも同じになるから
正確には62^4=14776336通り以下ってことになる
0082デフォルトの名無しさん
垢版 |
2017/08/29(火) 16:49:49.66ID:BJnPfb6J
Ruby + Sinatra + thinでWebアプリの開発を始めました。
ruby Server.rb -p 8080でthinを起動し、ブラウザで表示を確認しながら作ってます。
Server.rbを編集する毎にthinをstop'n'runしてます。
thinを終了する事なくServer.rbを編集結果をブラウザに反映させる事はできないでしょうか?
いちいちCTRL+C to stopしたく無いです。
0084デフォルトの名無しさん
垢版 |
2017/08/29(火) 17:04:48.19ID:JnW2kyj+
>>81
そうなんですか、参考になります。
しかし、ほんの数分で一致させるなんて偶然では無理ですよね?
解析ソフトのようなものが存在してるんでしょうか?
不思議で仕方ありません。
クレクレで、すみません。
0085デフォルトの名無しさん
垢版 |
2017/08/29(火) 17:10:47.07ID:BJnPfb6J
やったぁ。解決
Sinatra/reloader
つかうのね。
0086デフォルトの名無しさん
垢版 |
2017/08/29(火) 17:11:11.49ID:BJnPfb6J
>>83
THX
0088デフォルトの名無しさん
垢版 |
2017/08/29(火) 20:28:38.26ID:I7TvgsKU
>>87
すみません。どこのカテゴリーで尋ねればよろしいでしょうか?
0090デフォルトの名無しさん
垢版 |
2017/08/30(水) 00:38:57.38ID:LiEDh+or
>>89
カテゴリー→プログラム→初心者という文字発見→スレチ覚悟で質問→マルチ扱いで、早速いじられる
こんな感じです。
ここなら専門的な人達が揃ってると思ったの質問してみました。
0091デフォルトの名無しさん
垢版 |
2017/08/30(水) 00:46:01.29ID:RiHZq49u
セキュリティ板とかインターネット板の
質スレで聞くか自分でスレ立てるか
0093デフォルトの名無しさん
垢版 |
2017/08/30(水) 00:58:13.48ID:LiEDh+or
>>91
スレは立てられないんです。
このホストでは……という言葉が出てきてしまいまして。
すみません。ありがとうございます。
>>92
ご親切にありがとうございます。
0094デフォルトの名無しさん
垢版 |
2017/08/30(水) 06:12:43.86ID:CwX8twwO
>>74
大阪のハローワークでも、キヤノンなど、パソナテックの募集は多い。
つまり、できる人が見つからない

スレ違いだけど
0095デフォルトの名無しさん
垢版 |
2017/08/30(水) 06:32:03.89ID:0BSTFJq7
>>94
>パソナテック

プログラマの派遣会社
0096デフォルトの名無しさん
垢版 |
2017/08/31(木) 16:34:34.12ID:wERnZJ6b
>>1
【緊急】
すき家の定食に衝撃異物!
ずさんな管理体制が明らかとなった
指摘したその時!わざとらしく店員が声をあげごまかした!

229 名前:やめられない名無しさん [sage] :2017/08/29(火) 07:31:54.64 ID:EfhOnUp0
俺の朝はいつもすき家
楽しみにしてたのに・・今日に限って朝定食にしたんだ

見てくれ、これが証拠
店員さんも驚いて声をあげてる・・
https://www.youtube.com/watch?v=wjD4hUeU-CA

ちなみに半分食べた
お客様センターが通じない・・病院行く・・
(´・ω・`)すき家が大好きだったのに・・
0097デフォルトの名無しさん
垢版 |
2017/08/31(木) 16:38:19.03ID:h+V1mYta
progateでruby勉強してるんだけど到達点どれくらい?
0100デフォルトの名無しさん
垢版 |
2017/08/31(木) 23:55:12.77ID:AVEhrEiF
Win32APIライブラリでCreateWindowExいじってたら、割りと簡単にウィンドウ表示までは出来た
この先、作成したウィンドウのイベントメッセージ読むのとかプロシージャーの登録とかって可能なの?
Rubyのオブジェクトをwindowsのシステム側で扱う事に全然イメージがわかない
0102デフォルトの名無しさん
垢版 |
2017/09/01(金) 06:07:20.32ID:i93+5y4B
>>101
へ?秀丸とか、Win32API直に使ってるが。
0106デフォルトの名無しさん
垢版 |
2017/09/01(金) 09:21:39.76ID:Ob/n1Hvz
>>105
require 'Win32API'
method = Win32API.new('UNZIP32.DLL', 'UnZipGetVersion', %w(v), 'l')
method.call()

こういうのは今は書けないのだっけか?
0107デフォルトの名無しさん
垢版 |
2017/09/01(金) 10:39:18.56ID:q9GEiqjl
>>74
インド人エンジニアが松江に就職08/31 21:27nhk
松江市など5市でつくる経済圏域と経済連携協定を結んでいるインド南部のケララ州
から、初めて、エンジニアが松江にあるIT企業に就職することになり、松浦市長を
表敬訪問しました。
松江市でエンジニアとして働くことになったのは、インド・ケララ州出身の
ポール・ジョー・ジョージさんです。
市役所を表敬訪問し、松浦市長と対談しました。
ポールさんはことし1月、松江市にあるIT企業のインターンシップに参加したこと
をきっかけに松江で働くことに興味を持ち、受け入れ先の企業に入社することになりました。
ポールさんは、ケララ州から就職する初めてのエンジニアで、松浦市長から松江市の
印象について聞かれると「景色が美しく、人も親切な人が多いです。
働くことができてとてもうれしいです」と話していました。
また、松浦市長が「ケララ州と松江市を結ぶ人材となり、市の魅力を伝えてほしい」
と話すと、ポールさんも「ケララ州には日本に興味を持っている人が多いと思うので
ぜひ松江の魅力を友達に伝えていきたいです」と応じていました。
ポールさんは今後、松江市の技術者が開発したプログラミング言語「Ruby」
を用いて、スマートフォンアプリなどの開発に取り組むということです。
0108デフォルトの名無しさん
垢版 |
2017/09/01(金) 11:10:27.06ID:5FevI1x1
>>106
現時点での書ける書けないとobsoleteはあんまり関係ないけどな。w
-wオプションをつけると、警告が出ないか?
0110デフォルトの名無しさん
垢版 |
2017/09/02(土) 17:36:15.59ID:FxmYDPin
>>100
pythonの方が楽
0113デフォルトの名無しさん
垢版 |
2017/09/02(土) 19:51:26.40ID:jwTYoGam
>>112
wscriptの方が楽
0114デフォルトの名無しさん
垢版 |
2017/09/02(土) 21:44:45.82ID:bg+UFj/h
クロスプラットフォームGUIアプリであるAtomもVisualStudioCodeもお前らの嫌いなJavascript で動いているという事実。
それに引き換えRubyは初期からWindows環境冷遇し、英語ドキュメント揃えずソース読めで外人初心者冷遇し、今になってどっちも真面目に取り組んでたPythonに水を開けられた格好だね。
0116デフォルトの名無しさん
垢版 |
2017/09/02(土) 22:07:36.87ID:3OWZxoem
ぐぐって調べたんだけど、
DLライブラリってruy1.8までのDL1みたいなものと、ruby1.9からのDL2みたいなものがあるのか
それはさて置き、
言われてたDLライブラリでは、ちゃんとウィンドウプロシージャでメッセージを読む所までいけた
webページ参考にしながらだったけどありがとう
0117デフォルトの名無しさん
垢版 |
2017/09/02(土) 22:40:25.94ID:ffADZB+6
Rubyに日本人が多いから
英語ドキュメントの不足は仕様がないにしても
Windowsはもっと対応すべきだったね
0118デフォルトの名無しさん
垢版 |
2017/09/02(土) 22:41:38.02ID:ffADZB+6
Rubyの言語仕様は使いやすいけど
Windowsの環境構築が大変だし
Win用のGUIライブラリがパッとしない
0120デフォルトの名無しさん
垢版 |
2017/09/03(日) 17:47:18.77ID:skndupQG
wxRuby
0121デフォルトの名無しさん
垢版 |
2017/09/03(日) 23:11:40.50ID:q5J4dG7T
あかん
DLの挙動を確認したいけど、構造体を値渡しする関数が思いつかん
手近なところで試すのにめんどくさくない関数ってなにかない?
0123デフォルトの名無しさん
垢版 |
2017/09/03(日) 23:26:38.55ID:RvVPFZuP
おっといきちがい。

スクリーン座標かマウスポインタかをどうこうするAPIにそういうのがあったと思う。
オレはそれで乗り換えた記憶がある。
0124デフォルトの名無しさん
垢版 |
2017/09/05(火) 22:33:24.08ID:MbNhWD1A
MFC、ATLと続き、Cランタイムまでロードして色々試してまわったけど
構造体を値渡しする関数は自分で作らないとないっぽい
どれもこれもポインターをわたしとった
スマートポインターやインターフェイス、クラスやインスタンス、メンバーやメソッドの扱いなんかも、
DLではちょっと無理そう
こういうのは横着せずラッパー書いてやるしかないと思う
0126デフォルトの名無しさん
垢版 |
2017/09/06(水) 00:41:36.28ID:eoNcIyiq
な〜にキレてんだよ
不都合なレスでもでもあったのか?
0127デフォルトの名無しさん
垢版 |
2017/09/06(水) 01:26:41.12ID:iI8edc8I
>構造体を値渡しする
構造体みたいなサイズが大きいものは、普通、値渡し(コピー)しない

ポインタで渡すとコピーされないから、普通は、ポインタ(参照)渡し
0128デフォルトの名無しさん
垢版 |
2017/09/06(水) 02:14:32.33ID:eoNcIyiq
age
0129デフォルトの名無しさん
垢版 |
2017/09/06(水) 10:37:36.24ID:J8xaYq/0
>>124
探したったぞ。
WindowFromPoint()

凝ったことをやりたいならffiモジュールを調べてみろ。
すくなくともコールバック関数は使える。
0132デフォルトの名無しさん
垢版 |
2017/09/06(水) 17:23:37.45ID:0rliz1cq
dlでcallack使えるとかはもう出ていて、
今問題になってるのはdlでも構造体の値渡しができるかどうか

>>129
結果、下記ので呼べたけどこれじゃダメなの?

module MODU

関数ロード部分
extern "int WindowFromPoint(int,int)"

end

p MODU.windowFromPoint(x,y)
0134デフォルトの名無しさん
垢版 |
2017/09/06(水) 19:08:12.67ID:2frueYn2
ん?
荒らしが嫌がるという事は有益なレスなのか

いいぞ、もっとやれ
0135デフォルトの名無しさん
垢版 |
2017/09/06(水) 19:36:05.78ID:vILuBDeW
>>132
たしかに素直な構造体ならいけそうだ。

場合によってはアラインメントとかパディングとかでひっかかりそうだが、回避しきる自信があるのなら、もうそれでもいんじゃね?
オレならさっさと逃げるけどな。
0136デフォルトの名無しさん
垢版 |
2017/09/06(水) 20:19:48.12ID:2frueYn2
単にリファレンスを読んでないだけじゃないのかそれ?
0138デフォルトの名無しさん
垢版 |
2017/09/07(木) 03:19:34.26ID:ItXgki7C
133 名前:デフォルトの名無しさん 2017/09/06(水) 18:39:39.83 ID:xWkzKu3e
みんなffi使ってるからもうその話いいよ
134 名前:デフォルトの名無しさん 2017/09/06(水) 19:08:12.67 ID:2frueYn2
ん?
荒らしが嫌がるという事は有益なレスなのか

いいぞ、もっとやれ
135 名前:デフォルトの名無しさん 2017/09/06(水) 19:36:05.78 ID:vILuBDeW
>>132
たしかに素直な構造体ならいけそうだ。

場合によってはアラインメントとかパディングとかでひっかかりそうだが、回避しきる自信があるのなら、もうそれでもいんじゃね?
オレならさっさと逃げるけどな。
136 名前:デフォルトの名無しさん 2017/09/06(水) 20:19:48.12 ID:2frueYn2
単にリファレンスを読んでないだけじゃないのかそれ?
137 名前:デフォルトの名無しさん 2017/09/06(水) 23:23:31.25 ID:ygscOEFy
↑ユーザー層が良く表れててサイコー
0139デフォルトの名無しさん
垢版 |
2017/09/07(木) 23:57:00.12ID:04reamdt
別々のgemなのにrequireする時の名前がかぶってしまって、しかも両方を呼び出す必要がある場合、
どうやってrequireするのが正しいの?

例で、OpenGLのgemがいくつかあるけど、そのうちの二つが"opengl"でrequireする事になっている
0140デフォルトの名無しさん
垢版 |
2017/09/08(金) 01:34:25.09ID:3vC4jpKo
問題ないです
名前が衝突することは良くありますが
Rubyはダックタイピングを基調としているので
名前(メソッド名)が同じなら同じような振る舞いをします
たとえ出所が違っていても名前が同じなら同じような振る舞いをします
これがダックタイピングであり
そのようなことはRubyが言語側で保証しているので
プログラマが心配することは有りません
0142デフォルトの名無しさん
垢版 |
2017/09/08(金) 03:04:34.55ID:K2jDcQfO
・・・/上のディレクトリ/opengl
となっているのを
・・・/上のディレクトリ/exampl1/opengl
・・・/上のディレクトリ/exampl2/opengl
のように手作業で新しいディレクトリつくってそこに移動させる

で、
require "exampl1/opengl"
require "exampl2/opengl"
みたいな感じで呼び出す、とか
0143デフォルトの名無しさん
垢版 |
2017/09/08(金) 03:19:41.86ID:mcCYyLIS
ん、同じrbファイル内でrequireするの?
モジュール名も同じなら1つのモジュールの中に両方入ることになる気がするけど
0144デフォルトの名無しさん
垢版 |
2017/09/08(金) 05:59:14.78ID:/QLRsA7o
通常、Load-Pathで最初に見つかったファイルひとつをrequireする
requireはファイルパスつきで指定もできるので、区別できる程度のパスつきで指定すると実質複数読み込める
んでRubyはオープンクラスなのでAA#bbの定義が2回目のrequireで発見されたら2回目ので上書きされる

で、gemに限っては gem 'gemリポジトリ名' で指定して読み込むことができる(これは登録上被らないので)
一般的にはLoad-Path依存という回答
0145デフォルトの名無しさん
垢版 |
2017/09/08(金) 15:38:22.30ID:K2jDcQfO
モジュール内だけとかにファイルを読み込めれば名前空間的な扱いができそう

requireやloadじゃなく、第三の読み込み方法が必要になるけど
0146デフォルトの名無しさん
垢版 |
2017/09/08(金) 18:13:46.58ID:mcCYyLIS
異なるgemだけどトップレベルのモジュール名が同じものを
一つのrbファイルの中で扱う場合の対処方法として一般的に認知されてるものは無いっぽいね
(別のrbファイル内ならgemコマンドとrequireかな)

loadの第二引数でtrueを渡してAnonymousにしたモジュールに別名を付けるような仕組みがあればいいみたいだけど
loadはAnonymousモジュールを返してくれないから少しtrickyなことをしないと無理

ダサいけどdupして別名で使うのが簡単な気がする
あとはforkしてrenameとかかな

#load_foo.rb
require ‘foo'
Bar = Foo.dup
Object.send(:remove_const, :Foo)

#main.rb
require ‘load_foo’
Bar.something
0147デフォルトの名無しさん
垢版 |
2017/09/08(金) 20:25:09.24ID:dCkrwQvc
でも、違うクラスのほうを見にいって、うまく動作しないはめになりそうだけどな。
0148デフォルトの名無しさん
垢版 |
2017/09/08(金) 21:38:34.51ID:K2jDcQfO
適当なモジュールを定義して、
そのモジュールに対してmodule_evalでファイルを評価させるとかどう?

ファイル側はトップレベルでのloadを想定してるだろうから、何らかから派生させたモジュールを用意する必要があると思うけど
kernelだったかmainだったか

で、同名のファイルも別のモジュールでeval
0149デフォルトの名無しさん
垢版 |
2017/09/09(土) 08:22:23.23ID:A2Lkc5St
ヤフー株式会社が中途採用していたので応募した。
会社半休とって、深夜01時までかけて、写真付き履歴書、職務経歴書(必須提出書類)つくった。

火曜に提出、金曜に不採用通知が来た。

ショック!でもまあ、さすが爆速開発の会社。
まあ、しょうがない。
0150デフォルトの名無しさん
垢版 |
2017/09/10(日) 21:05:31.91ID:16Gqj/Qh
RubyはマルチパラダイムなLLって言われるけど、
ほんとどんな書き方でも可能だよな

逆に、他の言語で可能だけどRubyじゃできない書き方って何かあるの?
0151デフォルトの名無しさん
垢版 |
2017/09/10(日) 21:08:03.14ID:n6o1Bnrv
n++
0153デフォルトの名無しさん
垢版 |
2017/09/10(日) 21:31:59.45ID:CfAD8p5O
>>150
少し前にあるけど
同じ名前の2つの異なるモジュールを
それぞれ別名でロードして使うことが簡単に出来ないみたい
0156デフォルトの名無しさん
垢版 |
2017/09/11(月) 03:20:30.57ID:jNI6u+LE
こりゃあ自演やってますわ

晒しage
0157デフォルトの名無しさん
垢版 |
2017/09/11(月) 03:47:13.89ID:uZhmkQHT
嘘をつかないとネガキャンもできないとか、
どんだけこの言語は強力なんだよ


それ程rubyが怖いの?
0160デフォルトの名無しさん
垢版 |
2017/09/11(月) 05:26:08.54ID:uZhmkQHT
python騙るなボケ
このpythonの恥さらしが
勝利宣言なんか負けですと言ってる様なもんだろ
0161デフォルトの名無しさん
垢版 |
2017/09/11(月) 05:49:53.28ID:qwui3b48
書き方を聞いたんだけど、なんで答えてるレスはどれも同じ様な勘違いしてるの?
もしかして自演するほどRubyが怖い?
0162デフォルトの名無しさん
垢版 |
2017/09/11(月) 06:11:35.71ID:6TazFtUw
使えない言語ならそもそもアンチなんて湧かないし
使える言語だからこそ怖いんだよ
0163159
垢版 |
2017/09/11(月) 06:50:21.08ID:VvF2iP9D
>>150
>>159
>>161
Prologのパラダイムは論理型でそれを
Rubyは標準でサポートしてないから
「マルチパラダイム〜」の反証になってる
0164デフォルトの名無しさん
垢版 |
2017/09/11(月) 07:01:29.60ID:6TazFtUw
嘘を付いてまでネガキャンしてる人がいるから言語の話は無理だと思うよ
もうちょっと荒れていない時を見計らったら?
それに、それ、異論がばんばん出そうだし
0165デフォルトの名無しさん
垢版 |
2017/09/11(月) 09:25:49.87ID:9tUjHIzk
クラスはClassクラスのインスタンスだってのがよく判らん。
Fixnum, String, ArrayもClassクラスのインスタンスだって事らしい。

こんな仕様が一体、何の役に立つんだ?
0166デフォルトの名無しさん
垢版 |
2017/09/11(月) 09:28:34.16ID:9tUjHIzk
インスタンスなのだから、クラスのメソッドをもちろん呼べる。スーパークラスのメソッドも呼べる。

それから、Classクラスのメソッドも呼べる。こういう仕様にしたかったという事なのだろうか?
0167デフォルトの名無しさん
垢版 |
2017/09/11(月) 09:43:53.15ID:9tUjHIzk
Classクラスにインスタンス変数を定義すれば、すべてのクラスのクラス変数(Static変数みたいなもん)となる。

class Class
attr_accessor :foo
end
class Foo;end
Foo.foo = 10
puts Foo.foo # => 10

どうやら、こういう事が出来る様になるらしい。
0168デフォルトの名無しさん
垢版 |
2017/09/11(月) 09:50:42.79ID:R+JnAI3g
どのサイト見てそういう話になっていっているのか少し気になる
Webサイトは焚書できないからな
0169デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:03:46.95ID:9tUjHIzk
BasciObject, Objectがクラスで
Kernel, Moduleがモジュールだ。

ClassはModuleを継承したクラスだ。Classにあるメソッドは、new, superclassだ。全てのクラスはClassのインスタンスなので、

Foo.new, String.new, Foo.superclass, String.superclassといったクラスメソッドを呼び出す事ができる。

ModuleにはRubyのリフレクション機能を実現するメソッドやeval族がある。
例:nacestors, instance_method, method_defined?
例:class_eval, instance….おっと、instance_evalはBasicObjectにある。


うぅーん。独特な世界観だ。
0170デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:05:04.24ID:9tUjHIzk
>>168
みてるのは、『メタプログラミングRuby」第一版。
0171デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:08:48.21ID:9tUjHIzk
あと見ているのは、Ruby 2.0.0 Reference Manual。macOS SierraにはRuby2.0が最初から入っているから、ちょいと古いRubyを使ってる。

Ruby2.2あたりでGCの改良があって、その関係でSecurity重視のWebアプリ作る場合は、2.0はNGらしい。

誤解してる?
0172デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:10:47.61ID:OodeiMD8
そういう問題じゃなくて、Webアプリ作るなら実行環境と開発環境をなるべく同じにするのは当たり前。
特にRubyみたいに互換性のいい加減なものを使うなら尚更のこと。
0173デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:15:39.57ID:hxvjUFQQ
webサーバやDSLの主流言語の一つって時点で他の主要言語を繋げて扱える上に手軽だから
使える人が増える事はあっても、減ることは無い
そしてRuby恐怖症患者が恐れているのはこの部分だと思う
0174デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:17:31.55ID:9tUjHIzk
俺的ざっくりRubyのバージョンによる違い。

1. 2.0 - 2.1は1.9.3のbugfix版
2. 2.2 - 2.4はGC改良されてるが、言語仕様的には1.9.3と大差無い。

Fixnum, BignumがIntegerに統合された(2.4)とか、String Literalがdefaultでfrozenされている(2.3)とか、細かな仕様変更があるが、俺への影響は無いな。
0175デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:21:25.75ID:9tUjHIzk
俺:昔Ruby1.8 - 1.9.2の頃、WebスクレイピングをRubyでやってた。Mechanizeとか便利だぁ。。。とか言いながら。その頃DSLなんてあまり気にしなかった。

しばらくXcodeばかりいじって居て、Rubyに戻ってきたら2.4になってた。SinatraとかRailsとか触ってみたら、DSLバリバリで、これはまずいと感じて、「メタプログラミング」の本読んでます。
0176デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:23:03.39ID:9tUjHIzk
Rubyの歴史については、en.wikipediaのRuby(programing language)のpageがよく纏まっている。
0177デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:29:24.77ID:9tUjHIzk
今後、Ruby2.5, Ruby3.0が予定されているが、3.0の仕様は流動的みたいだ。

1. 並列処理
2. 静的型付け

1は技術的に難しそうだし、2はコミュニティに受け入れられるのか?
0180デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:36:20.19ID:ggzNTq4z
>>165
クラス自体を処理の対象にできる。
.NETでも、Typeクラスがあったりする。
C++などではできないこと。
0181デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:42:25.66ID:9tUjHIzk
>>180
クラス自体を処理の対象にする場面って?
一つ見つけたけど、他にある?

見つけた一つ!
1. クラスメソッドを提議
0182デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:43:38.99ID:OodeiMD8
>>180
それは違う
Rubyのクラスはそれ自体が本当にオブジェクトだけど、
.NETのTypeオブジェクトやJavaのClassオブジェクトはリフレクションのためのハンドルに過ぎず、オブジェクトとは明確に異なる
0183デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:48:45.33ID:9tUjHIzk
クラス自体を処理の対象にする、ってのは例えばStringクラスのsizeメソッドの仕様が気に食わん。

だったら、俺が好きな仕様に変えてやる!(モンキーパッチング)

って事ができるのは、StringクラスがClassクラスのインスタンスだから出来るってことなのかも。
0184デフォルトの名無しさん
垢版 |
2017/09/11(月) 10:56:59.59ID:9tUjHIzk
クラス拡張、オブジェクト拡張は
class << self; end
class << obj; end
って感じで行うが、extendメソッドを使ってもできる。
こいつがクラス拡張、オブジェクト拡張のショートカットみたいだ。

class MyClass
extend MyModule
end
こんな感じ。

class MyClass
class << self
include MyModule
end
end
こんな事しなくても良くなる。
0185デフォルトの名無しさん
垢版 |
2017/09/11(月) 11:14:01.54ID:9tUjHIzk
俺の備忘録、スレ汚しスマソ

aliasを使うとメソッドの再定義ができる。
String#lengthメソッドを再定義して、再定義前の実装をreal_lengthで呼び出せる様に退避させる様にする例。
class String
alias :real_length :length
def length
# anaother implementation
end
end
0186デフォルトの名無しさん
垢版 |
2017/09/11(月) 11:21:39.37ID:9tUjHIzk
aliasを使うと同じ実装を2つの名前で、可視性private/publicをコントロールしながら呼び出したりできる。

class C
def x; “OK”; end
alias :y :x
private :x
end

obj = C.new
obj.y # => “OK”
obj.x # => private methodだから呼べまシェーン。
0187デフォルトの名無しさん
垢版 |
2017/09/11(月) 12:03:38.85ID:ggzNTq4z
>>182
違わない。用途を限定しすぎ。
型を引数にできたり、型のリストが作れたり、型自体の基底クラスが存在するから可能になることがいくつもある。
0188デフォルトの名無しさん
垢版 |
2017/09/11(月) 14:19:18.95ID:VvF2iP9D
>>165
>クラスはClassクラスのインスタンス
>こんな仕様が一体、何の役に立つんだ?
メタプログラミング
0189デフォルトの名無しさん
垢版 |
2017/09/11(月) 15:26:04.86ID:4atU11H8
うわ、まだこんな言語やってるやついたんだ
endとかきめえ
0190デフォルトの名無しさん
垢版 |
2017/09/11(月) 15:46:37.43ID:y9RYm9ja
自分が使ってない言語の出来なんかどうでもいいだろ
関係ないんだよ、君には
0191デフォルトの名無しさん
垢版 |
2017/09/11(月) 15:51:37.08ID:9tUjHIzk
中かっこで、一行で治るblockを記述し、
do end, class endで複数行に渡るblockを記述する。

class endもblockらしい。
例:
class Foo
puts ‘OK’ # => OK、なんと実行されちゃう!
end
0192デフォルトの名無しさん
垢版 |
2017/09/11(月) 15:53:04.47ID:9tUjHIzk
class Bar
attr_accessor :a
end

これもModule#attr_accessorメソッドの呼び出し(引数:a)だって。
0193デフォルトの名無しさん
垢版 |
2017/09/11(月) 15:53:50.74ID:9tUjHIzk
putsはKernel#putsで定義されている。
0194デフォルトの名無しさん
垢版 |
2017/09/11(月) 15:55:48.32ID:9tUjHIzk
putsってグローバル関数だと思ってた。Rubyにはグローバル関数ってのは無いのか?

たしか、$fooでグローバル変数だよねぇ。
0195デフォルトの名無しさん
垢版 |
2017/09/11(月) 16:15:12.72ID:I3u+9T/v
ID:9tUjHIzkこそRubyを使うのに相応しい人材だ
Rubyはこうでなくてはダメだ
0196デフォルトの名無しさん
垢版 |
2017/09/11(月) 16:24:37.91ID:9tUjHIzk
試しにやってみた。
class Bar
#attr_accessor :a
attr_accessor “a”
end

puts (Bar.new).a = 3 # => 3

なんと、attr_accessorの引数はputsと同じ様に文字列でもOK!
調子に乗って、
puts :OK
puts :Failed NG # error
puts :”Failed NG”

うぅーん。Symbolと文字リテラルは違うはず。
0198デフォルトの名無しさん
垢版 |
2017/09/11(月) 17:28:46.19ID:VvF2iP9D
>>194
>グローバル関数ってのは無いのか?
ない

ただトップレベルのメソッドを
実質的にグローバル関数として利用するのは可能
0200デフォルトの名無しさん
垢版 |
2017/09/11(月) 19:01:04.46ID:dKd+OEyf
ruby 2.1
WEBrick 1.3.1

Internal Server Error
(erb):58: syntax error, unexpected end-of-input, expecting keyword_end ; _erbout.force_encoding(__ENCODING__) ^
文法エラー、予期せぬend-of-input、keyword_endを待つ;

_erbout.force_encoding(__ENCODING__) ^
って何でしょうか?
0202デフォルトの名無しさん
垢版 |
2017/09/11(月) 20:12:04.40ID:Se8bNuoM
>>200
erbがエラー吐いてんじゃね?
template engineだから、*.html.erbに問題あるんちゃうか?
0203デフォルトの名無しさん
垢版 |
2017/09/11(月) 20:31:42.69ID:8y57wnUU
>>163
確かに「Rubyはマルチパラダイム言語である」の明確な反証になっているね

ところで、Python の公式文書には以下の記述がある:
  https://docs.python.jp/3/howto/functional.html
  >> 複数のアプローチに対応した言語もあり、
  >> Lisp, C++, Python はそうしたマルチパラダイム言語です

故に、少なくとも Python は標準で論理型をサポートしていないから、
>>163 の主張は「Python はマルチパラダイム言語である」の反証でもある訳だ

たかだか2chの通りすがりのカキコ(>>150)どころか、
Python様の公式文書にすら堂々と反証してしまう >>163 ってスゲーよなあ(棒
0205デフォルトの名無しさん
垢版 |
2017/09/11(月) 20:43:18.49ID:wRb7h9Km
>>200
endを期待してるところでendが無いよってエラーだよ

_erbout.force_encoding(__ENCODING__) は
ERB#set_eoutvar内で呼ばれてる処理だけど
今の理解状況なら気にする必要ない
0206デフォルトの名無しさん
垢版 |
2017/09/11(月) 20:47:01.81ID:8y57wnUU
>>174
自作のRubyで書いたドキュメンテーションツールを日常的に使っているけど、
1.9 で28秒だったのが(ほんの気まぐれで) 2.4 へ変えただけで6秒になった
レスポンスが4倍から5倍変わるのは大きなインパクトだった

付け加えると、こうしてバージュンアップを繰り返してもなお
後方互換性を維持し続けてくれているのはありがたい
(もちろん自作ツールでメタプログラミングといった魔術は使っていないが)
0208200
垢版 |
2017/09/11(月) 20:55:04.19ID:dKd+OEyf
>>201-202 >>205
助言くださった皆様、どうもありがとうございます。
とりあえずendを閉じ忘れていないかチェックしてみます。
0209デフォルトの名無しさん
垢版 |
2017/09/11(月) 21:28:47.33ID:8y57wnUU
>>207
>ナイスジョーク👍

確かに世の中にはバージョンアップしただけで、たかだか
Hello world すら動かなくなるナイスジョーク👍な言語も存在する(棒

Rubyの設計上の欠点とは何か?
http://mevius.2ch.net/test/read.cgi/tech/1413113999/126
0210デフォルトの名無しさん
垢版 |
2017/09/11(月) 22:10:48.79ID:8y57wnUU
>>150
>逆に、他の言語で可能だけどRubyじゃできない書き方って何かあるの?

Ruby と競合するLLで、かつ関数型というパラダイムに限定すれば、
「関数は一級市民ではない」という制限がある
これは Ruby の世界だと「メソッドがオブジェクトではない」と
言い換えることができる

具体的なコードを Python で示そう:
(注:以下は Python を例にしているが、JavaScriptでも同様なコードは書ける)
  >>> def add(x, y): return x + y  # 関数 add を定義
  ... ^D
  >>> add(1, 2)  # 関数へ実引数 (1, 2) を適用
  3
  >>> f = add  # 関数は値(=一級市民)だから、それを別の変数 f として宣言
  >>> f(1, 2)  # 変数 f へ実引数 (1, 2) を適用しても add と同じ結果になる
  3

それに対して Ruby では:
  irb(main):001:0> def add(x, y); x + y; end  # メソッド add を定義
  => :add
  irb(main):002:0> f = add # メソッドは値(=一級市民)ではないから..(略
  ArgumentError: wrong number of arguments (given 0, expected 2)
     from (irb):1:in `add'
  from (irb):2
  from /opt/local/bin/irb:11:in `<main>'
0211デフォルトの名無しさん
垢版 |
2017/09/11(月) 22:53:57.56ID:/+/7clo/
ブロックがオブジェクトじゃないのはほんと糞
Rubyは基本的に嫌いじゃないけどこれだけは擁護できないわ
0214163
垢版 |
2017/09/12(火) 00:16:04.48ID:EWvqPynr
>>203
「マルチパラダイム」への反証じゃなくて
「どんな書き方でも可能」への反証
「他の言語で可能だけどRubyじゃできない書き方」の例証でもある
0215デフォルトの名無しさん
垢版 |
2017/09/12(火) 00:26:02.80ID:FDETfUWp
メソッド呼び出し時の括弧をオプショナルにしてるから
f = add みたいなのは出来ないよね
でもそういう使い方をするときはメソッドじゃなくProcオブジェクト使う
だからObject#methodを実際のコードで使ったことはない
0216デフォルトの名無しさん
垢版 |
2017/09/12(火) 00:37:53.72ID:JOxdLua/
俺が質問したのは書き方
Rubyは純オブジェクト指向で書けるし、関数言語的な書き方も可能、ワンライナーやダックタイピング、メタプログラミングも書ける
だから逆に他の言語で実用的な書き方を挙げてほしかったんだけど
0217デフォルトの名無しさん
垢版 |
2017/09/12(火) 01:09:50.45ID:HQWpPXKt
n++
0218デフォルトの名無しさん
垢版 |
2017/09/12(火) 01:10:31.53ID:HQWpPXKt
rubyの連中は、初心者、日本人をバカにするからきらいだ
0219デフォルトの名無しさん
垢版 |
2017/09/12(火) 01:11:34.30ID:HQWpPXKt
マルチパラダイムの言語をしらべればいいだろ
D, pike, いろいろある
0220デフォルトの名無しさん
垢版 |
2017/09/12(火) 01:12:37.06ID:K8M+GTE7
>>215
何でそんな言い訳がましい書き方すんの?
defで宣言した関数は変数に代入出来ない。そのような場合はProcを使う必要がある。この行き当たりばったりな仕様は関数を第一級オブジェクトとして扱える言語が流行ってきたため「る、rubyでもできるし!」と言いたいがために適当に実装したためである、ってスパっと言えよ。
0221デフォルトの名無しさん
垢版 |
2017/09/12(火) 01:15:08.18ID:EWvqPynr
>>216
それは「書き方」の定義が曖昧だから

でもまあもう少し小さな区分で言うと
動的型付けの関係でJavaができるような
メソッドのオーバーロードは標準のRubyではできない
0227デフォルトの名無しさん
垢版 |
2017/09/12(火) 10:04:19.58ID:9jgbEmKh
>>218
Rubyの連中ってのは、「たのしい」だとか、「直感的」とか、「生産性が高い」
とかってよく言う。

けど、メタプログラミング、DSLの辺りで躓く人って多そう。
SinatraのDSLがどう言う実装になっているのか理解するのに相当時間かかった。

特に、こんなコードがキモだとは、長らく気づかんかった。
class A
puts “OK”
end
0228デフォルトの名無しさん
垢版 |
2017/09/12(火) 11:06:52.61ID:WW0MtbKa
JavaScript でも、関数内の地の文は、実行される

たぶん、Python, Groovy なども同じだろ
0229デフォルトの名無しさん
垢版 |
2017/09/12(火) 11:11:57.63ID:9jgbEmKh
>>228
THX
JavaScriptでも同じなのね。class定義内の地の文が実行されるの。
0230デフォルトの名無しさん
垢版 |
2017/09/12(火) 11:25:19.54ID:h0iAeYHr
> けど、メタプログラミング、DSLの辺りで躓く人って多そう。

その前に自分みたいにオブジェクト指向とか言う暗号が理解できなくてC言語で止まってしまう人もいると思います。
アセンブラからC言語は問題なかったんですけどね…
0231デフォルトの名無しさん
垢版 |
2017/09/12(火) 11:57:03.55ID:onUD/nnU
>>230
オブジェクトのポインタも暗黙の引数として渡される、と割り切ってしまえばとにかく理解はできるはず。
オブジェクト指向だからのこともあるけど、全体像がわかれば、たいして難しいことではないと思う。
0232デフォルトの名無しさん
垢版 |
2017/09/12(火) 12:04:12.58ID:WW0MtbKa
まずこの本で、オブジェクト指向を学ぶ
スッキリわかる Java入門 第2版、2014

その後、この2冊を順に読む
たのしいRuby 第5版、2016
みんなのPython 第4版、2017

だから、勉強する順番が、この順になる

この後に、4つの道に分かれる。
1. Groovy, Kotlin
2. C#
3. C++
4. JavaScript
0233デフォルトの名無しさん
垢版 |
2017/09/12(火) 18:53:46.13ID:JOxdLua/
リファクタリング:Rubyエディションを読んだ方がもっと直接的にオブジェクト指向を学べる
リファクタリングと名が付いてるけどオブジェクト指向が何のためにあるのか、源流から把握できるよ
0234210
垢版 |
2017/09/12(火) 23:44:30.69ID:hhSY9FWw
>>220
>defで宣言した関数は変数に代入出来ない

defで宣言できるのはメソッドであって関数ではない
またRubyには(関数型言語における)関数は存在しない
基本に立ち返って、計算モデルという視点でメソッドと関数との違いを
学習したほうがいいと思われる

また関数型言語の流行を見て適当な実装したのはナイスジョーク言語(>>209)だよ
・クロージャって何がいいの?
 http://mevius.2ch.net/test/read.cgi/tech/1415419907/197
このカキコをまとめると、君の文章スタイルを真似れば:
  lambda式の本体には式しか書けない。文を書きたい場合はdefで名前付きの関数を
  宣言する必要がある。この行き当たりばったりな仕様は関数型プログラミングを
  扱える言語が流行ってきたため「ば、pythonでもできるし!」と言いたいがために
  適当に実装したためである、
ってスパっと言えるね

少なくとも、Rubyはその誕生の時からすでにオブジェクト指向と関数型を融合した
マルチパラダイム言語として設計された
・推薦図書/必読書のためのスレッド 74
 http://peace.2ch.net/test/read.cgi/tech/1409526637/857
手続き型言語として誕生し後から流行を追ってオブジェクト指向と関数型を
行き当たりばったりで適当に実装したナイスジョーク言語とRubyを一緒にしないでね!!(棒
0235デフォルトの名無しさん
垢版 |
2017/09/13(水) 00:11:46.24ID:ZSgQvDIS
>>234
>defで宣言できるのはメソッドであって関数ではない
この難癖は頭おかしい。
トップレベルで定義したメソッドを関数と呼ぶのは便利な方便じゃないか。
そんなこと言ったらいちいち演算子もメソッドと言わなければならないのか?
たしかまつもと著の初期の書籍でも
関数を定義してみましょう→実はRubyでは関数はメソッドとして〜という流れだったはず。たしか。たぶん。
0236デフォルトの名無しさん
垢版 |
2017/09/13(水) 00:40:14.46ID:S8v0D06m
そしたらブロックローカル変数という
糞ダサいものは何故必要になったのですか?
やっぱり変数宣言は必要だったのですか?
0237デフォルトの名無しさん
垢版 |
2017/09/13(水) 00:43:26.25ID:n1InxPaY
>>235
少しRubyやったことある人なら「defで宣言した関数」なんて理解の仕方をしないからさ
>>234の言い回しはともかく>>220はRubyのメソッドを理解してないって指摘でしょ

演算子はメソッドの一部をさす言葉なんだから演算子って呼んでもおかしくないよ
でもRubyの場合メソッドは関数じゃないから「defで宣言した関数」とは言わない
0239デフォルトの名無しさん
垢版 |
2017/09/13(水) 06:57:22.00ID:QnpmdH9u
鏡の自分と話していないでいい加減リアルで話し相手を見つけろ
いつまでごっご遊びする気だ?
0240デフォルトの名無しさん
垢版 |
2017/09/14(木) 05:43:14.25ID:MKn91q5M
>>232
スッキリわかる Java入門 第2版
658ページ

すごいなぁ。

俺が良かったのは、Java流オブジェクト志向入門、この薄い本でOOPに合点が言った。
それから、Master Mind of Programming.

OOPのキモは、差分プログラミング。
0241デフォルトの名無しさん
垢版 |
2017/09/14(木) 05:49:47.26ID:CERdfB5z
オブジェクト指向の初期に言われてた
(継承による)差分プログラミングは
今はOOの主流でない
0242デフォルトの名無しさん
垢版 |
2017/09/14(木) 06:39:33.22ID:DHSnOET6
主流ではないどころか現代では継承による差分プログラミングはクラスの典型的な間違った使い方であるというのが一般的な認識だよね
あまりにも時代錯誤が過ぎる
0243デフォルトの名無しさん
垢版 |
2017/09/14(木) 09:15:38.86ID:RGoLM/1P
class Product < ApplicationRecord
end

この継承だけで、
p = Product.new
p.name = “Some Book”
と書き始める事ができるが!

これは、差分プログラミングでは無いのか?
0246デフォルトの名無しさん
垢版 |
2017/09/14(木) 13:45:04.43ID:emC4w7HW
差分プログラミングは継承元のクラスの細かな仕様
特に処理の流れのようなものまでしっかり把握してないと
破綻するからな
複雑な動きをするクラスの一部だけ上書きして破綻なく動かすのは難しい
0247デフォルトの名無しさん
垢版 |
2017/09/14(木) 13:58:16.02ID:hmZWacm7
オブジェクト指向って継承とか差分とかをなくしたら
それって関数型プログラミングじゃないのか?
0248デフォルトの名無しさん
垢版 |
2017/09/14(木) 14:04:35.89ID:QnR6ews3
差分と増分は違う。
一般的に差分プログラミングというと、243の例のように元あるものに足するだけではなく
上書きして元あったものを「引く」ことを伴うやり方を指す。
これは大抵の場合、論理的なis-A関係を無視した実装継承になる。
0250デフォルトの名無しさん
垢版 |
2017/09/14(木) 14:44:12.14ID:RGoLM/1P
>>242
何が、「だよね」だよ。
変なやつ。
たんなる、知ったかだわぁ、こいつ。
0251デフォルトの名無しさん
垢版 |
2017/09/14(木) 18:45:33.64ID:MKohVal2
>>246
そうでもない
0252デフォルトの名無しさん
垢版 |
2017/09/14(木) 19:46:31.21ID:QnR6ews3
>>249
簡単な話だよ
クラスを継承するとき、スーパークラスの実装を潰してはいけない
常に増分の形になるようにする
たとえばクラスAのメソッドaの動作を変更したいとき、サブクラスBでaをオーバーライドして置換えてしまうのが継承による差分プログラミング
そういう場合、AとBを共通のスーパークラスCを継承するようにして、Cのaは空にしておき、A, Bそれぞれでaを実装するのが一つの正解
0253デフォルトの名無しさん
垢版 |
2017/09/14(木) 20:29:04.75ID:emC4w7HW
多分意味が無いと思う
物分かりが良い人だったら今時Rubyなど触ってるわけないし
そのなかでも特別アレな人がここに集まっているわけだし
こういう人に何言ったって、なぁ・・・
そりゃ、聞く気があって向上心があるならRubyなんか触ってないって

差分プログラミングがあまり良くないって話は随分昔からあって
他スレッドだと、それを言っても、何今更当言ってるんだ?
となるだけなんだが、こんなことに食って掛かるやつがいるってのがね
さすがのRubyなんだわ

冗談みたいな話だけど、マジで
Rubyは今の流行りと全く反対の方向に全速力な言語だから
こういう言語を好む人に常識を解いても無駄なんだわ
0255デフォルトの名無しさん
垢版 |
2017/09/14(木) 20:36:29.79ID:DHSnOET6
まあ既存のクラスのメソッドを置き換えたりする醜悪なモンキーパッチをクールだと有難がってる連中が沢山いるくらいだから、
継承を使った差分プログラミングなんて可愛いもんだ
0256デフォルトの名無しさん
垢版 |
2017/09/14(木) 20:50:14.91ID:i72uwPMW
>>253
> そりゃ、聞く気があって向上心があるならRubyなんか触ってないって
つまりお前は聞く気がなくて向上心がない、という自己紹介?
0257デフォルトの名無しさん
垢版 |
2017/09/14(木) 20:56:24.98ID:DHSnOET6
念のためイメージしやすいように具体例を出しておこう。
何らかの処理結果をHTTPで出力するHTTPPublisherクラスがあったとしよう。
これをHTTPではなくFTPで出力したくなったが、最終的に送信するところ以外は実装は全て同一だ。
そこで、HTTPPublisherクラスを継承して最終的な送信のところだけをオーバーライドしたFTPPublisherクラスを作った。
その結果、FTPPublisher is HTTPPublisherという継承関係になった。
これが継承による差分プログラミングだ。何がおかしいか考えてみよう。
0260デフォルトの名無しさん
垢版 |
2017/09/14(木) 22:12:26.20ID:i72uwPMW
>>259
> 失敗した発明に興味があるだけ
嘘はいけない
お前は単に叩いてスッキリしたいだけだよ
そのためには捏造も辞さない、半島系メンタリズムなんだよ
恨の文化ってやつだ
そこを自覚しよう
0261デフォルトの名無しさん
垢版 |
2017/09/14(木) 22:17:27.79ID:mzgiopKB
荒らしはまーた嘘ついちゃったのか
0262デフォルトの名無しさん
垢版 |
2017/09/14(木) 23:07:38.38ID:z8360qWk
ガチ初心者で申し訳ないっす。
rake db:migrate:reset
rake db:seed
railsで作るサイトに上を実行してくれるボタンを作ることって出来ますか?
0263デフォルトの名無しさん
垢版 |
2017/09/15(金) 00:06:02.35ID:pcdb6BZK
>>259
あらま!
見る目が無いのね
0265デフォルトの名無しさん
垢版 |
2017/09/15(金) 02:50:07.52ID:NqjvejJe
>>264
ありがとうございました!感謝感激雨あられっす
0267デフォルトの名無しさん
垢版 |
2017/09/15(金) 13:17:19.48ID:M6zHVajf
>そりゃ、聞く気があって向上心があるならRubyなんか触ってないって

今年一番説得力あるレスだった
0268デフォルトの名無しさん
垢版 |
2017/09/15(金) 21:25:27.63ID:gy747Xnp
まあRubyは使いやすくて楽だからな
Lispみたいな言語だと
向上心や忍耐力が必要とされる
0269デフォルトの名無しさん
垢版 |
2017/09/16(土) 00:44:23.41ID:54wKV8j0
手軽だし、便利だし、どこにでも手が届くわりに、細部まで言語として背景や地盤が整備されてる
確かに、使える人が増える事はあっても減る事は無い言語だ
0270デフォルトの名無しさん
垢版 |
2017/09/16(土) 03:15:44.04ID:cRp93fnk
>>269
俺、その背景や地盤ってのを理解するのに、めっちゃ時間かかった。
0271デフォルトの名無しさん
垢版 |
2017/09/16(土) 07:19:19.83ID:ja70x9oy
Gradle は、Groovy だけど、
vagrant, chef, SASS とか、ツールを作る時は、真っ先に、Ruby が選ばれる。
他の言語は、Rubyよりも、2年ぐらい遅れる

この2つは、DSL も作りやすい。
さらに、Groovyには、JavaVM が必要だけど、Rubyには必要ない

おまけに、シェルスクリプトの代わりにもなるし、
PowerShell よりも、プログラミングしやすい
0272デフォルトの名無しさん
垢版 |
2017/09/16(土) 07:28:00.02ID:AcW1bn43
>>271
>ツールを作る時は、真っ先に、Ruby が選ばれる
おっそうだな
静的サイトジェネレータならJekillとか

Rubyはプロトタイプを早く作るのに向いてるから
新ジャンルを開拓するのにふさわしい
0273デフォルトの名無しさん
垢版 |
2017/09/16(土) 09:14:50.48ID:dauRpkAs
そう感じるのは君がRuby村の中から見える世界しか見てないからだ
少なくとも今はRubyが最先端とはとてもじゃないが言えないよ
0274デフォルトの名無しさん
垢版 |
2017/09/16(土) 11:26:43.15ID:54wKV8j0
アンチって平然と人を騙そうとするよな
0275デフォルトの名無しさん
垢版 |
2017/09/16(土) 11:33:09.75ID:DEccgWHW
>>271
その手のツールがRuby製なのはちょっと不思議なんだよな。
バージョンアップで壊されるかもしれないんだから。
もっと安定性のあるものを選べばいいのに。
0276デフォルトの名無しさん
垢版 |
2017/09/16(土) 11:45:25.97ID:gf/ZkNkm
Railsと違ってRuby自体の後方互換性はかなり高いよ。1.8や1.9で作ったコードも今もそのまま問題なく使えてる。使えなくなる機能があっても数バージョン前から警告出るから対応しやすい。
0277デフォルトの名無しさん
垢版 |
2017/09/16(土) 11:50:32.56ID:54wKV8j0
rbenvで全ver入れてOK
0278デフォルトの名無しさん
垢版 |
2017/09/16(土) 15:03:52.29ID:cRp93fnk
>>273
Rubyは最先端ではない。
首相は獣医学科設置に関与してない。
首相は、国有地を森友学園へ売却するよう指示してない。

これらは、証明できない。

ツールを作る時の選択肢にRubyがある。
これらの証明は例を示せば良い。

例:vagrant, chef, SASS
0280デフォルトの名無しさん
垢版 |
2017/09/16(土) 17:39:16.46ID:ja70x9oy
自分がツールを作る時に、シェルスクリプトは論外だろ。
PowerShell は、補完が効くけど、
クラスを使うような、本格的なプログラミングは出来ない

Kotlin は大掛かりで、厳格なものを作れるけど、
静的チェックが厳しすぎるような気もする

結局、Groovy, Ruby が手軽。
DSL も作りやすい

Haxe も、様々な言語に変換できるから、面白そうだけど
0282デフォルトの名無しさん
垢版 |
2017/09/16(土) 18:03:45.86ID:3y963gmF
あと静的チェックが厳しすぎるというのも意味不明だな
Rubyだって想定してる型を間違えたら落ちるかバグるだろう
型書くのが面倒というならわかるけど、静的チェックが緩いこと自体にメリットはない
0284デフォルトの名無しさん
垢版 |
2017/09/16(土) 20:35:26.41ID:AcW1bn43
>>280
要はLLとかグルー言語っていうか
シェルスクリプトと静的言語の中間が
Ruby(やPython)の守備範囲ね
0285デフォルトの名無しさん
垢版 |
2017/09/16(土) 20:37:44.80ID:AcW1bn43
>>281
PSはバージョンアップでクラス構文が追加されたね
でもまあ本格的なオブジェクト指向はRubyの方がやりやすい

>>282
動的型付けにも多態するのに継承いらないとか
ダックタイピングとかメリットがある
0286デフォルトの名無しさん
垢版 |
2017/09/16(土) 20:38:28.09ID:PUFjteak
>>282
>静的チェックが緩いこと自体にメリットはない

たとえばC言語が標準ライブラリ関数である printf を
容易に実装できたのは、C言語の「静的チェックが緩い」という
特性がメリットになった実例だろ
0287デフォルトの名無しさん
垢版 |
2017/09/16(土) 20:43:55.95ID:54wKV8j0
アンチはまた自演で誘導しようとしてんのか

ほんと嘘をついて騙すのが好きだな
0288デフォルトの名無しさん
垢版 |
2017/09/16(土) 21:02:57.30ID:PUFjteak
>>280
ためしに「Kotlin dsl」でググって見たら最初にヒットした記事
・KotlinでイケてるDSLを作る
 http://qiita.com/kikuchy/items/7c8893c4e7e11dafdb6c

この記事では DSL を作るのに有益な Kotlin の言語機能を
6つ紹介しているけど、先頭の4つは Ruby と共通しているね
・拡張関数
 ―> 既存のクラスへ後からメソッド定義を追加できる
・引数の最後がラムダ式であれば、メソッド呼び出しの …(略)
 ―> Ruby の「ブロック付きメソッド呼び出し」
・ラムダ式のreturnは省略可能
 ―> もちろん Ruby もメソッド/ブロックの最後に書くreturnは省略できる
・thisは省略可能
 ―> Ruby も同じく

特に3つ目の「ブロック付きメソッド呼び出し」は Apple の新世代言語である
Swift でも「Tailing Closure」という名前で導入されている
・クロージャって何がいいの?
 http://mevius.2ch.net/test/read.cgi/tech/1415419907/262

世界は Ruby 良さに気付いている、そして Ruby の良き特性を取り込んだ
新世代言語が次々に登場している(>>283 の Crystal、他には Elixir もある)
0289デフォルトの名無しさん
垢版 |
2017/09/16(土) 23:13:55.67ID:+qyS/XRX
日々アンチっぽいと感じる書き込みがあるかもしれないが
書き込んでいる本人たちは、そんな気は決してない
これは皆さんに末永くRubyを使ってもらおうと思ってしていること
未だなおRubyが好きな人に、何言っても回心しないのは分かり切ってるから
逆に強化していこうって方向なわけ
0290デフォルトの名無しさん
垢版 |
2017/09/16(土) 23:18:50.04ID:+qyS/XRX
たとえばシステムにsafeな部分とunsafeな部分があったら
unsafeな部分は一か所にまとめて管理したいって考えるだろう
スラム街みたいなもんだな
別にこの世は俺の管轄するシステムでも何でもないから
どうでも良いっちゃどうでも良いんだが
2chにも隔離スレという文化があるし
似たような感覚ではある
0292デフォルトの名無しさん
垢版 |
2017/09/17(日) 05:11:26.55ID:7k/HywsS
Rails5.1.4を使用しています
アホしてsendカラムを含んだテーブルをmigrateしたところ、あちこちでエラーが発生するようになりました。
すぐにロールバックし、DBからはカラムが消えたことを確認しましたが、ApplicationRecordを継承したクラスではいまだに生きているようで、症状が改善されません。
ロールバック以外にできることがあれば、教えてください。
0294デフォルトの名無しさん
垢版 |
2017/09/17(日) 13:27:05.45ID:iyMogwhx
エスパーするが
Rubyではメソッド名が同じであれば同じような振る舞いをします
そのことはRubyで保証されているので
プログラマは振る舞いについて何も考えなくてよいです
メソッド名が同じなら、同じような振る舞いをします
なのでそうしてください
そのあと言語仕様から変数宣言を無くして代入で代用してください
一見すると「変数宣言」と「代入」の区別がつかなくなるように思えるかもしれませんが
変数宣言が無くなるので変数のスコープのことを考えなくてよくなります
これらはRubyでサポートされているので、そのようにしてください
0297デフォルトの名無しさん
垢版 |
2017/09/17(日) 20:54:55.57ID:vAwE04IK
>>294
> Pythonではメソッド名が同じであれば同じような振る舞いをします
> そのことはPythonで保証されているので
> プログラマは振る舞いについて何も考えなくてよいです
> メソッド名が同じなら、同じような振る舞いをします
> なのでそうしてください
> そのあと言語仕様から変数宣言を無くして代入で代用してください
> 一見すると「変数宣言」と「代入」の区別がつかなくなるように思えるかもしれませんが
> 変数宣言が無くなるので変数のスコープのことを考えなくてよくなります
> これらはPythonでサポートされているので、そのようにしてください

試しに Ruby を Python に変えて見たけど、何ら違和感が無い
そもそも「オブジェクト指向+動的型付け+手続き型言語」という特性を備えた
あらゆる言語(Python/JavaScript/Perl/PHP..etc)に通じる単純明快な事柄だね
いったいぜんたい >>294 は何を言いたいのだろうか?

あえて >>294 の主旨をエスパーすると:
「私はプログラミングを習い始めたばかりの初心者です、よろしくお願いします」
ってことではなかろうか
0298デフォルトの名無しさん
垢版 |
2017/09/17(日) 21:59:40.46ID:iyMogwhx
>試しに Ruby を Python に変えて見たけど、何ら違和感が無い

それで何が問題?
あと、Pythonは型アノテーションを取り入れてるから
過去の過ちを修正していこうということだろうね
一方Rubyは逆走中
失敗しちゃったから、もういっそ、突き抜けちゃおう、という勢い
0299デフォルトの名無しさん
垢版 |
2017/09/17(日) 22:05:37.68ID:G7neoTxj
Ruby 以外の動的言語は、関数の外で宣言した変数が、
関数の内側で、使えるよな

つまり、関数スコープが厳格ではない

Rubyで、変数宣言が無いのは、関数スコープが厳格だからかな?
0300デフォルトの名無しさん
垢版 |
2017/09/17(日) 22:15:19.17ID:5DAGa3Dm
>>299
Rubyはオブジェクト指向言語なので
カプセル化するために基本的に
他のオブジェクトの変数をそのまま使わない

使う必要がある場合は引数またはアクセサを通して使う
またグローバル変数も使えるが非推奨
0301デフォルトの名無しさん
垢版 |
2017/09/17(日) 22:58:55.88ID:iyMogwhx
|x; foo|
↑の foo のような、変素宣言と変わらない素晴らしい存在と出会うことが出来ます
ちなみに python にも nonlocal という素晴らしいお友達が居ます
変数宣言を無くして代入で代用するアイデアは本当にうまく行きます
「@」に出会うことが出来るし
レキシカルスコープについて考えると夜も眠れないほどです
0302デフォルトの名無しさん
垢版 |
2017/09/17(日) 23:06:07.39ID:G7neoTxj
Ruby のブロック(クロージャ内の)変数だろ

python のnonlocal は、いらんわ。
親のスコープへ、遡って探しに行く、変数だよね
0303デフォルトの名無しさん
垢版 |
2017/09/17(日) 23:20:45.74ID:vAwE04IK
>>298
>過去の過ちを修正していこうということだろうね

その Python の過ちがあまりに低レベルな訳だが:
(1) print 機能が文として実装され、ライブラリとして分離されていなかった(>>209)
  すでに1970年代に登場したC言語では、
  print は標準ライブラリ関数として言語仕様から
  分離していたにもかかわらず
(2) 整数の割り算という極めて基礎的な計算仕様が安定していない
 ・割り算の扱い – Python2からPython3への変更 –
  http://www.trusted-design.net/archives/455/
(3) 関数型言語ブームを追って行き当たりばったりで適当に実装したおかげで、
  ラムダ式の本体には式しか書けない
  改善要望は過去から存在したが、作者のGuid氏はGuido氏は
  「複数行のラムダは解けないパズル(unsolvable puzzle)」と匙を投げた(>>234)

(1)と(2)はようやく Python3 で修正を終えたけど、その代償として
「後方互換性の断絶」という事態を招いた
(3) の「解けないパズル」に至っては Python3 でも修正の目処が立たず先送り
おそらく Python4 で修正して「後方互換性の断絶」が再現されることになる

つまり Python における「過去の過ちの修正」の歴史って、こういうこと
繰り返すけど、Python は過ちのレベルがあまりに初歩的すぎるのよ
0304デフォルトの名無しさん
垢版 |
2017/09/17(日) 23:28:50.19ID:vAwE04IK
>>299
>Ruby 以外の動的言語は、関数の外で宣言した変数が、
>関数の内側で、使えるよな

いや、そもそも Ruby ではメソッド定義の中で入れ子になった
メソッドは定義できないよ
これは Smalltalk や Java といった最初からオブジェクト指向言語として
設計された仲間に共通する特性


>Rubyで、変数宣言が無いのは、関数スコープが厳格だからかな?

いや、メソッドの入れ子定義を禁止したことで、スコープの定義が簡潔なだけ
というか、Python や JavaScript のような関数の入れ子定義ができる
動的型付け言語でも、関数宣言は必要無いから、何を言いたいのだろうか?
0305デフォルトの名無しさん
垢版 |
2017/09/17(日) 23:36:32.98ID:vAwE04IK
>>301
>↑の foo のような、変素宣言と変わらない素晴らしい存在と出会うことが出来ます

Ruby:
 lambda { |foo| …… }
Python:
 lambda foo: ……
JavaScript:
 function(foo) { …… }
Scheme:
 (lambda (foo) …… )
SML:
 fn foo => ……

言語によってブロック、ラムダ式、無名関数と呼び名は様々だけど、
どの言語でも「変素宣言と変わらない素晴らしい存在」foo とは出会えるよ
ひょっとして >>301 は「仮引数(パラメタ)」という概念を知らないのかなあ?
0306デフォルトの名無しさん
垢版 |
2017/09/17(日) 23:54:56.42ID:vAwE04IK
>>304
>動的型付け言語でも、関数宣言は必要無いから、何を言いたいのだろうか?

最後の文章を自己レスで訂正:
X:関数宣言は必要無いから、
O:変数宣言は必須では無いから、

補足しておくと:
・JavaScript は予約語 var で始まる変数宣言の構文があるけど、
 省略すれば暗黙的に宣言される
・Python の型アノーテーションは、その名アノーテーションとあるように
 コメント扱いだから変数宣言の意味とは全く異なる存在であるし、
 当たり前だけど省略できる
0307デフォルトの名無しさん
垢版 |
2017/09/18(月) 00:24:39.32ID:Rs/BRyvp
> Ruby:
>  lambda { |foo| …… }
ではなく
Ruby:
 lambda { |x; foo| …… }
この仮引数ではない余計な「foo」の事ですよ
明らかに浮いてますね、変ですね
何なんですかね、このfoo
変数宣言を代入で代用するアイデアは本当に素晴らしいですね

>(2) 整数の割り算という極めて基礎的な計算仕様が安定していない
http://postd.cc/sick-of-ruby-dynamic-typing-side-effects-object-oriented-programming/
Ruby: それはstdlibが搭載されているモジュールをrequireすると、
整数割り算の動き方に影響を与えてしまう言語。 @tomdale
0308デフォルトの名無しさん
垢版 |
2017/09/18(月) 01:38:17.76ID:+b1AQYPX
>>307
>Ruby: それはstdlibが搭載されているモジュールをrequireすると、
>整数割り算の動き方に影響を与えてしまう言語。 @tomdale

それは整数割り算のメソッドをオーバーライド(上書き)したからだよ
リンク先の文書だとモジュール “mathn” を require で指定しているね

外部モジュールの import うんぬんとは無関係に、バージョンによって
素の「整数割り算の動き方」が変わってしまうナイスジョーク言語(>>209)と
一緒にしないでね!!(棒
0310デフォルトの名無しさん
垢版 |
2017/09/18(月) 04:01:15.69ID:rETRD+xz
lambda { |x; foo| …… }

ブロック(クロージャ内の)変数として、使いたい場合、
わざと、foo に代入しない

JavaScript でも、undefined が予約語ではないから、
わざと引数に代入せずに、undefined を作る方法がある
0313デフォルトの名無しさん
垢版 |
2017/09/18(月) 09:47:51.23ID:rETRD+xz
X だけに代入して、foo には何も代入しなければよい

そうすれば、foo は、ブロック内だけのローカルスコープを持つ、
ブロック変数として使える
0314デフォルトの名無しさん
垢版 |
2017/09/18(月) 10:13:22.15ID:Rs/BRyvp
fooに代入出来るけどあえてしない場合は
lambda { |x, foo| …… }
って書くんじゃないの?
俺の書いたのは
lambda { |x; foo| …… }
「;」以降の変数って何なんですかね、こんな変な文法
変数宣言してるのと変わらないですよね
変数宣言を代入で代用するアイデアは本当にうまくいってますね
「@」もサイコーですし、python の nonlocal も最高
0316デフォルトの名無しさん
垢版 |
2017/09/18(月) 11:15:25.67ID:Rs/BRyvp
> >>307
> >Ruby: それはstdlibが搭載されているモジュールをrequireすると、
> >整数割り算の動き方に影響を与えてしまう言語。 @tomdale

> それは整数割り算のメソッドをオーバーライド(上書き)したからだよ
> リンク先の文書だとモジュール “mathn” を require で指定しているね

> バージョンによって
> 素の「整数割り算の動き方」が変わってしまうナイスジョーク言語(>>209)と
> 一緒にしないでね!!(棒

これもはっきり言ってPythonのがマシ
問題になるのは2から3への移植の時だけだから
自分で移植しようとしているのは明らかに分かり切っているから
当然注意深くやるし

requireするしないで、割り算の挙動が変わる方が悪質
0317デフォルトの名無しさん
垢版 |
2017/09/18(月) 11:19:25.70ID:Rs/BRyvp
ああ分かりにくい日本語になってしまったな

移植の時だけ気にすればよいPythonと違って
常に気を付けなければならないRubyの方が悪質
requireするしないで、割り算のような基本的な四則演算の
挙動が変わるのはあり得ない
0319デフォルトの名無しさん
垢版 |
2017/09/18(月) 11:34:58.89ID:ePom9dNv
>>317
Rubyはオープンクラスなのでそれを致命的なデメリットと感じる人は使わないよね、というだけ
そう感じない人が多いから使う人も多いんだけどね
0320デフォルトの名無しさん
垢版 |
2017/09/18(月) 11:53:48.10ID:VM+b53w3
> requireするしないで、割り算の挙動が変わる方が悪質

何の話かと思ってmathnを検索したら標準クラスをオーバーライド?するのね。

ただやるかやらないかと出来る出来ないは別の話だと思うし
requireする前に説明文読まない人はいないでしょう。
まあ間接的にrequireされてたら憤死ものですが…。
0323デフォルトの名無しさん
垢版 |
2017/09/18(月) 13:19:24.65ID:KVRZIFdh
なんかこのアンチ、思い込みが激しくない?
0324デフォルトの名無しさん
垢版 |
2017/09/18(月) 14:08:56.09ID:T75MpWNi
確認したらmathnライブラリは非推奨扱いになってる
リファインメントを使う代替ライブラリがあるのかな
mathn自体使った事はないけどさ
0328デフォルトの名無しさん
垢版 |
2017/09/19(火) 00:51:54.54ID:qwtMAuXO
荒らしはまずその嘘をつく癖を直さないと
0329デフォルトの名無しさん
垢版 |
2017/09/19(火) 11:48:35.35ID:oRSrnZEU
オープンクラス、つまりモンキーパッチは嫌われてる

JS の、prototype.js と同じ。
基本的なAPI を上書きするから、挙動が変わる

だから、嫌われる
0330デフォルトの名無しさん
垢版 |
2017/09/19(火) 11:59:30.04ID:PO17xH6Y
なぜそんなものを作ったとなじる前にそんなものじゃない実装をお作りになったらどうでしょうか。
オーバーライドな実装が気に入らない、だから自分でそれをしない実装を作った!というのは別に誰にも否定されませんよ。

出来たそれが多くの人に支持されるかどうか?の話はまた別ですが。
0331デフォルトの名無しさん
垢版 |
2017/09/19(火) 12:23:14.37ID:PJTSF08k
オープンクラス自体が必ずしも悪いわけではないけど、問題はどこかで一回requireしたら影響がVM全体に波及してしまうことだね。
そのことは重大な問題としてよく認識されていて、
例えばC#の拡張メソッドはそれを含む名前空間を同一ソースファイル内で明示的にインポートしないと使えない。
Rubyも必ず毎回requireしないといけないようにすればよかったんだよ。Matzに言わせれば屈辱かもしれないけど。
0333デフォルトの名無しさん
垢版 |
2017/09/19(火) 14:07:33.30ID:PO17xH6Y
それは逆のこともあってグローバルにしたいからそのようにヤルってのもあるでしょう。

それがそのように作成されているのはそのようにする意図があるのだし
影響受けまくりの共同開発のリポジトリで独断なら話は戦争ですが
使う人がいなきゃ肥やしにもならないライブラリにいちいち文句つけるなんて時間の無駄ですよ。
ただそこにあるだけで目障りという話でしたらまったく同じ理由で罵詈雑言の応酬になるのがオチでしょう。
0334デフォルトの名無しさん
垢版 |
2017/09/19(火) 14:12:31.68ID:qwtMAuXO
アンチは思い込みの激しい性格だから、まともな社会生活をおくれなくて孤独なんだよ
0336デフォルトの名無しさん
垢版 |
2017/09/19(火) 15:11:46.91ID:OkajuEzq
必要ならrefinementを使おうで終わる話をグダグダ続けるなよ
初心者なら素直に、こういう場合はどうすればいいのって聞こうね
0337デフォルトの名無しさん
垢版 |
2017/09/19(火) 15:36:30.17ID:AHugq77Y
孤独な人生を送るのは親の育て方が間違っていただけ
だから思い込みが激しいのは本人の責任ではない
0338デフォルトの名無しさん
垢版 |
2017/09/19(火) 19:13:47.20ID:sOczhhK4
標準クラスを上書きしようって発想に至らしめる原因は
Rubyが遅いからなんだけどね
C++ならユーザー定義の数値クラス作って終わり
0340デフォルトの名無しさん
垢版 |
2017/09/19(火) 20:56:09.99ID:pVbgaDCi
自演で構って下さいアピールは逆効果だよ
0341デフォルトの名無しさん
垢版 |
2017/09/20(水) 07:19:28.44ID:+O4Z8sr5
昔、Rubyのコードを他言語のソースコードに翻訳したり逆翻訳するコンパイラツールを見た覚えがあるんだけど、
誰か詳細知っている人いる?
0342デフォルトの名無しさん
垢版 |
2017/09/20(水) 10:18:26.15ID:cwCxN8ct
>>341
Crystal:Ruby風の文法を解釈し、LLVM IRを生成

こんなんあるけど。
0343デフォルトの名無しさん
垢版 |
2017/09/20(水) 10:19:21.40ID:cwCxN8ct
>>341
Opal: Ruby to JavaScript Compiler

こんなんも。
0344デフォルトの名無しさん
垢版 |
2017/09/21(木) 02:02:31.36ID:zN1Ojhkv
どっかでrubyからC/C++に変換する物を見たけど、
どこだったかな?
0347デフォルトの名無しさん
垢版 |
2017/09/21(木) 08:59:07.48ID:az3FYHb4
単位取得ギリギリの学生さんは、夏休み中イライラ爆発してんだろうねぇ。
最近は、単位バラマキなんだけか?
0350デフォルトの名無しさん
垢版 |
2017/09/21(木) 18:51:20.23ID:Ei962/hq
>>348
JRubyのランタイムにがっつり依存したクソビッチなコードをゲロゲロするから使い物にならんよ
0353デフォルトの名無しさん
垢版 |
2017/09/21(木) 22:50:21.57ID:ttsHKcWH
しかし、釣った後の魚をどうするかで困るんだよな
本当に魚じゃあるまいし、無下にも出来ない
せっかくスコープをグチャグチャにしてまで変数宣言を無くしたわけで
それが結局メリットが無いのが皆にバレても、今更ね
0354デフォルトの名無しさん
垢版 |
2017/09/21(木) 23:01:34.46ID:ttsHKcWH
変数宣言に型を書かなくてもよいって所までは
動的型にすれば簡単なんだけど
ここで誤って勢いあまって変数宣言自体を無くすところまでやると
スコープがぐちゃぐちゃになる
代入で変数宣言を代用しても
新しい変数への代入なのか、既存の変数への代入なのか、区別がつかない
そこへきて、動的型自体にメリットが無いことが広く知れ渡ってしまったもんだから
スコープをグチャにしてまで変数宣言を無くした意味がもうワケワカ
ここで変数に静的な型を付けるよう改良するなら、変数宣言も復活する話になるし
変数宣言があるなら普通のレキシカルスコープでよい話になるので
今までのキメラ的な苦労が水の泡
素晴らしい
0356デフォルトの名無しさん
垢版 |
2017/09/22(金) 00:00:54.86ID:GRZGpevQ
1行未満って0行じゃんw
消えろっていう表現ってことかーいいね、その使い方w
0358デフォルトの名無しさん
垢版 |
2017/09/22(金) 08:48:34.24ID:CYSXe8iX
単位没収確定
0359デフォルトの名無しさん
垢版 |
2017/09/23(土) 13:02:09.34ID:WtNBJIHg
今だにruby1.9.3以下がメインですが、今の言語・システムの設計では、変数宣言とスコープが今の論点の一つなんですか?
思いついた解法を書くつもりは特に無いですが。
0360デフォルトの名無しさん
垢版 |
2017/09/23(土) 14:54:45.80ID:j6VCxv0o
全然
皆もっと先を行ってるけど
Rubyは一番最初の時点で躓いてるってだけだね
「@」
0362デフォルトの名無しさん
垢版 |
2017/09/23(土) 15:23:09.65ID:xCJjTQ1w
>>359
lambdaの引数で、|a,b;x,y|という記法が追加されたんだよね。
事実上、ここにだけ変数宣言が追加されたってことなので、ヘンな弱みみたいになってるかも。
0363デフォルトの名無しさん
垢版 |
2017/09/23(土) 15:32:32.74ID:WtNBJIHg
つまづく原因は、履いてる靴が悪いのか、障害物があるのか、のどちらかでしょう。頑張り過ぎ、何でもござれ、全方位対応は、昭和時代の思い出です。
stringの、force_encoding (String)あたりはrubyならではの釣りだと思います。java9のstringは内部はbyte[]みたいになるそうですけど。
ところでrubyの、初心者じゃない方の質問スレは、いつ消えたんですか?
0365デフォルトの名無しさん
垢版 |
2017/09/23(土) 15:42:24.35ID:WtNBJIHg
>>361
pl,rbで比較したんですが、僅差でrbの勝ちでした。
plだけあればなんでもできます。が、plはawk+rbで代替するのを善しとします。
u8サポートないならplです。けれど、バイナリ操作はjava,c99があります。pl5に未来はありません。rbは複雑ですがshell scriptと考えれば、rbはplと比較するものではなく、bashの仲間です。
>>362
最近js(es6)の方がおもしろいので、rb1.9.3も使ってないです。js: function(a,b){}みたいな話ですか?
0366デフォルトの名無しさん
垢版 |
2017/09/23(土) 16:14:06.50ID:89h9xiW6
FXRubyなんていう便利な代物を今更知った
RubyにもちゃんとGUI作れるツールあるじゃないか!
0367デフォルトの名無しさん
垢版 |
2017/09/23(土) 16:50:37.72ID:xCJjTQ1w
>>365
> pl5に未来はありません。
きっとまだまだ未来はある。
クソ変化をする可能性がほとんどないからな。

> rbはplと比較するものではなく
比較するものだよ。シェルとは違う。

> >>362
> js: function(a,b){}みたいな話ですか?
近いかも。
jsも、関数スコープしかないけど、ムリヤリ無名関数にすれば外を汚染しないとかあるからな。
0368デフォルトの名無しさん
垢版 |
2017/09/23(土) 17:28:51.15ID:WtNBJIHg
私のお聞きしたことに答えないなら、このスレで私がお役に立てることは無いです。
>>366
www.fxruby.orgは接続できませんでした。fox tkですね。guiは、はるか昔に考えたことがあります。が、普通はwxwidgets,tcltk,javaswingじゃないですか。guiを今ならhtmlしかないです。
作ってみても、どうせformもどきでしょ。しかもコードは、処理(命令)と云うより構造(宣言)だらけだし。
>>367
あなたとお話することはなさそうです。私が知ってることばかり、または、容易に推論できることばかりです。その程度の指摘しかできないなら、ググれば十分です。なので、あなたが、私へ、時間を使う、必要は、ありません。
0369デフォルトの名無しさん
垢版 |
2017/09/23(土) 18:41:00.21ID:oQZcLwSS
>guiを今ならhtmlしかないです。
xmlならwx,qt,gtkなどよく見るけどhtmlってどんなの?
HTA的なものがあるのかな
0374デフォルトの名無しさん
垢版 |
2017/09/23(土) 20:46:17.06ID:WtNBJIHg
>>373
ID導入の数年前までは少しいましたよ。今は、rubyの達人さんたちはどこにいるんでしょうか?
0375デフォルトの名無しさん
垢版 |
2017/09/23(土) 21:42:42.17ID:lJM5VEju
>>354
いくつか勉強不足な箇所はあるけど、「スコープがぐちゃぐちゃ」という
指摘に関しては、まったくもってそのとおりだね

>>> x = 1  # グローバル変数 x を初期値 1 で宣言
>>> def f(dx): x = x + dx  # 変数 x を破壊的に更新する手続き f を定義
... ^D
>>> f(2)  # 手続き f を引数 2 で呼び出してみると・・・
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in f
UnboundLocalError: local variable 'x' referenced before assignment

まさに公式文書に書かれている通りの結果になった:
 https://docs.python.jp/3/glossary.html#term-nested-scope
   ネストされたスコープはデフォルトでは変数の参照だけができ、
   変数の代入はできないので注意してください。

では、続けてみよう
>>> array = [1,2,3]  # グローバル変数 array を初期値 [1,2,3] で宣言
>>> def f(x): array.append(x)  # 変数 array を破壊的に更新する手続き f を定義
... ^D
>>> array  # 念のため、変数 array の内容を確認
[1, 2, 3]
>>> f(4)  # 手続き f を引数 4 で呼び出してみると・・・
>>> array
[1, 2, 3, 4]  # あれれ、グローバル変数なのに書き込みできてしまったぞぉ?!(棒
0377357
垢版 |
2017/09/23(土) 23:11:57.93ID:lJM5VEju
Python を知らない人には >>357 はワケワカメだと思うので補足しとく

変数への破壊的代入を基本とする大半の手続き型言語、例えば Ruby や JavaScript、
さらには古典的な Pascal や C において、スコープは以下のように定義される:
 (1) あるスコープの内側で宣言された変数は、スコープの外側にあるコードから読み書きできない
 (2) あらゆるスコープの内側のコードは外側の変数を自由に読み書きできる

ところが Python という言語だけは、ナゼか (2) をオレ様定義した
 (2)’ あらゆるスコープの内側のコードは外側の変数を自由に読めるが、書き込みはできない

まあそんなオレ様定義も設計哲学やら個性と見れば批判にはならないのだけれど、
>>375 で実際のコードを使って示したように、このオレ様定義が実装されたのは
数値や文字列といった単純型だけで、配列/集合/辞書およびユーザ定義クラスといった
複合データ型では実装を忘れたものだから、何のためのオレ様定義だったの?と批判されている

おまけにこのスコープ問題を解決するために世の中の常識的なスコープ定義へ訂正するという
根本策を採用せず、わざわざ予約語 nonlocal やら grobal を消費してまで変数宣言文という構文を
追加するといふ「行き当たりばったりで適当な泥縄実装」を Python3 でやらかしたものだから、
>>354氏が指摘したように「スコープがぐちゃぐちゃ」になったわけです

このスコープ問題もラムダ式問題(>>303 の (3))と同様に Python4 で修正されて
「後方互換性の断絶」が再現されるんでしょうね
0378デフォルトの名無しさん
垢版 |
2017/09/23(土) 23:21:12.35ID:b6I3iAXW
>>376
このスレに達人がいると言うつもりもないけど
そんな一方的に上から目線になるほど
レベルの高いレスしたの?

>>365
>rbは複雑ですがshell scriptと考えれば、
>rbはplと比較するものではなく、bashの仲間です。
こんなのただの雑な印象論で
別にレベル高くないと思う

「Rubyってbashの仲間だよなー」って思ってる
Rubistがどれくらいいるかね?
0379357
垢版 |
2017/09/23(土) 23:34:44.90ID:lJM5VEju
>>359
>変数宣言とスコープが今の論点の一つなんですか?

いいえ、それらがホットな論点であるのは Python といふナイスジョーク言語だけです(>>377)


>>362
>ヘンな弱みみたいになってるかも。

あまりにひどい言い方ではないでしょうか(棒
Ruby のそれは単純明快なブロックというスコープの内側だけで有効なローカル変数宣言の構文です
それに対して Python は nonlocal などといふ否定形の単語で「非ローカル変数宣言」という
前代未聞で意味不明瞭な構文を追加してしまったんですよ

Ruby のそれが「ヘンな弱み」なら Python のそれは「トラウマレベルの致命的欠陥」です
でも、そこまで言うのはあまりに酷すぎるんじゃないかと思います(棒
かわいそうなので、Python に関する話題は止めにしませんか?
0382357 改め 375
垢版 |
2017/09/23(土) 23:55:10.03ID:lJM5VEju
名前欄と>>377内のアンカが間違っていたので訂正:

>>377
X:Python を知らない人には >>357 はワケワカメだと思うので補足しとく
O:Python を知らない人には >>375 はワケワカメだと思うので補足しとく

あと >>377 の grobal はglobal の typo
0383デフォルトの名無しさん
垢版 |
2017/09/24(日) 00:06:19.23ID:ry31kkE4
pyの話やpyの言語specはすれ違いです。まず、pyを使い続けることに疑問を持ったほうがいいでしょう。
人工知能など、十数年の周期で起きているインフルエンザです。あと2年は流行が続くでしょうけど、ノイマン型の限界で研究も限界が来るでしょう。そのときにpyの人気も終息します。
どうせバイトコードにするなら実行速度など比べても仕様がないと思うんですけど。なんでどうしようもないところを気にするんでしょうか。シングルスレッド?マルチスレッド?知能が低い人の考えてることは、なんだかよく分かりません。
0385デフォルトの名無しさん
垢版 |
2017/09/24(日) 06:59:11.54ID:bAyFiwH3
最近、このスレ以外でもマッチポンプ目的で荒らしが出没してるから気をつけて
0386デフォルトの名無しさん
垢版 |
2017/09/24(日) 09:08:31.15ID:L7/sMAP/
Pythonのスコープはひどいが、Rubyスレで言うことではないし
同じようにRubyのスコープもひどいのだから笑えない
「@」はどう見ても今時ではないし
if文などがスコープを持てないのも酷い
これらは変数宣言を無くしたからそうなった
明らか
0387デフォルトの名無しさん
垢版 |
2017/09/24(日) 09:21:53.62ID:bAyFiwH3
みんな釣られないでね
0388デフォルトの名無しさん
垢版 |
2017/09/24(日) 09:32:00.62ID:L7/sMAP/
Pythonのスコープは本当にバグってて
変数への代入の有る無しでスコープが変わる
どこのスコープに属しているか調べるのに
代入の有る無しを調べなければならない
変数への代入があればインナースコープで
参照のみならアウタースコープ
つまりは 変数宣言を無くしたことで
変数宣言->変数への(最初の)代入 としたので
代入の有る無しでスコープが変わるという糞になった
これに加えてnonlocalまである
このような動作は安全性の面から好ましいという人もいるが
それは絶対嘘で、実装上の都合でそうなったに過ぎない
本当にひどいと思うが
しかしRubyのスコープが優れているという結論には繋がらない
0389デフォルトの名無しさん
垢版 |
2017/09/24(日) 09:38:59.52ID:L7/sMAP/
Pythonは一例だが
基本的に変数宣言を無くすとスコープの仕様がバグる
だから変数宣言は有ったほうが良いし
どうせ変数宣言するんならオプショナルで型をけても悪くない
という風に考えていくと、すごくありきたりな言語が出来上がる
Rubyの最初のバージョンがそういう形で出来上がっていたら良かったが
一番最初の基本的な部分で誤ってしまって今更修正できない
修正すると、ごく普通の言語の仲間入りをするがRubyではなくなる
だから素晴らしい
0390デフォルトの名無しさん
垢版 |
2017/09/24(日) 09:40:47.21ID:EATy0LdH
スレ違い

なんでわざわざRubyスレ来てるんだろうかこの荒らし
寂しいの?
0393デフォルトの名無しさん
垢版 |
2017/09/24(日) 17:06:53.98ID:bAyFiwH3
10スレ程前のスレを試しに見てみ
0395デフォルトの名無しさん
垢版 |
2017/09/24(日) 22:11:40.34ID:bAyFiwH3
荒らしはうせろ
0397デフォルトの名無しさん
垢版 |
2017/09/25(月) 00:59:05.75ID:CVLN5qtY
>>386
>Pythonのスコープはひどいが、Rubyスレで言うことではないし

などと言っておきながら、>>388っすか?


>同じようにRubyのスコープもひどいのだから笑えない
>「@」はどう見ても今時ではないし
>if文などがスコープを持てないのも酷い

結論として、Ruby のスコープ仕様に関する具体的な問題は、
主観的なその2点だけしか見つけられないほど小さいのだと
納得しますた


>>388
>しかしRubyのスコープが優れているという結論には繋がらない

誰一人「Rubyのスコープが優れている」なんて言っていませんけど

個人的には、Rubyのスコープ仕様は複雑だけど矛盾は無く一貫しているし、
きちんと理解すれば現実のプログラミングに支障は無いと思っています
ただし、とりたてて「Rubyのスコープが優れている」と言うほどのものではない

>>354氏が指摘してくれたように、Python のスコープ仕様は世の中の常識とは
かけ離れていて、あまりに酷すぎるんです(>>375,377)
0398デフォルトの名無しさん
垢版 |
2017/09/25(月) 01:36:00.79ID:SyR0/asg
さて同胞がRubyのスレでPythonの悪口言ってますよ
皆さん擁護してあげてください
0400デフォルトの名無しさん
垢版 |
2017/09/25(月) 05:28:37.17ID:AJ+0XaK7
リアルで話相手見つけろ
ここにおまえを構ってくれるほど暇な人はいない

受け付けているレスは初心者の質問中心だ
0401デフォルトの名無しさん
垢版 |
2017/09/25(月) 13:37:27.59ID:7SZSTs1B
瑕疵担保責任(かしたんぽせきにん)

瑕疵担保責任のポイント

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

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年目以降は不具合の修正に対応しない」と主張するベンダーはまれだ。多くの場合は、納品から何年たっても、
バグが見つかればユーザーのところに飛んで行き、無償で改修するだろう。
0402デフォルトの名無しさん
垢版 |
2017/09/25(月) 13:46:59.49ID:1g9PJt6J
スレ違い
0403デフォルトの名無しさん
垢版 |
2017/09/26(火) 03:49:41.39ID:m0UrTKNQ
arrayのpackメソッドってみんな全部覚てる?
俺は量が多くて覚えきれないから、いまいち何ができて何ができないか把握できない
0405デフォルトの名無しさん
垢版 |
2017/09/26(火) 04:26:57.32ID:q4PyBsS5
バイナリいじったり、作ったりするときに使う
その都度リファレンスを読み返すけど
0406デフォルトの名無しさん
垢版 |
2017/09/26(火) 09:37:33.97ID:fZxiOEU0
>>403
だいたい何ができるかだけは覚えておく
詳細は覚えるだけ無駄なので毎回マニュアル見る
個人的にはこれまで使った回数合わせても10回くらいだと思う
0407デフォルトの名無しさん
垢版 |
2017/09/26(火) 21:26:43.24ID:U5HCny0u
使う回数多ければ自然と覚えるだろう
文字列扱うやつなら正規表現とかみたいに
0408デフォルトの名無しさん
垢版 |
2017/09/26(火) 23:01:09.68ID:qHxce6jn
packフォーマットってある意味暗号だよな
かと言ってFiddle::CStructとかFFI::Structとかは文字列オブジェクトをそのまま扱えないし
それにバイナリデータをいじる時たまにunionを扱いたくなるけど一手間なんだよね
0409デフォルトの名無しさん
垢版 |
2017/09/26(火) 23:20:44.46ID:Ij7a6zSN
プロトコルの多くがテキスト化してきてるから、packは出番が少なくなってるんだよねー
0410デフォルトの名無しさん
垢版 |
2017/09/28(木) 08:04:49.74ID:o7bSKTAB
Rubyでファイル群を再帰的にパースして抽出したデータを表計算ソフトで編集後に書き戻す
という処理をする場合に表計算ソフトとのインターフェイスを簡単かつスマートに実装できませんかね?
OSはWindows、Linux、FreeBSD。表計算ソフトはExcel、Libre/OpenOffice、Gnumericを想定します

現状はWindows上でSYLKを経由してLibreOfficeで編集しているのですが、Unicode文字をそのまま
扱えなかったり、SYLKのサポートが不完全だったり、編集の終了の検出が難しかったりして面倒です
CSV/TSVでは書式や数式を扱えないですし、ODFでも編集の終了の検出が難しい問題が残ります
0411デフォルトの名無しさん
垢版 |
2017/09/28(木) 08:41:02.01ID:Lc06qyoR
>>410
Rubyでの内部表現は処理しやすいようにして
表計算ソフトとのデータ受け渡しの際には
CSVに変換するのが普通だと思う
0412デフォルトの名無しさん
垢版 |
2017/09/28(木) 08:48:24.32ID:7AnfF7EJ
表計算ソフトのファイルを何とかしようというのは筋が悪いよね
データとビューを分離するべき
0413デフォルトの名無しさん
垢版 |
2017/09/28(木) 12:07:21.55ID:jWw+HTna
>>410
WindowsとExcelに限定してしまって、win 32oleモジュールで処理すれば。
Excelのフル機能にアクセスできるのでは。
0414デフォルトの名無しさん
垢版 |
2017/09/28(木) 23:24:47.20ID:Rgro2LTl
判りにくくてすみません
現状のRubyスクリプト
 ファイル群をパースして情報を抽出
 SYLKファイルを生成してこれを引数にLibreOffice Calcを起動。スクリプトは待機する
 Calcで情報を編集する。このときにセル参照や簡単な数式等を使用する場合がある
 編集した情報をSYLKファイルに上書き保存してCalcを終了する
 スクリプトが再開しSYLKファイルをパースして情報を取り出す
 ファイル群の情報を更新する
な感じです

>>411
最初はTSVを使っていたのですが>>410に書いた制約等を緩和するために今はSYLKを使用しています

>>412
情報を表形式のUIで編集したいです。これを一から作る大変なので既成の表計算ソフトを使えないかなと考え
今のような形になっています

>>413
Excelはライセンスを1つしか持っていないこともあって滅多に使いません(絶対に使わないわけではない)
0415デフォルトの名無しさん
垢版 |
2017/09/29(金) 00:38:00.00ID:KC1uJX1K
表にRubyコードをテキストとしてぶち込んで、
後でRubyからeval
0416デフォルトの名無しさん
垢版 |
2017/09/29(金) 01:01:10.45ID:c3tXL9dl
MVC の、データ部分だけを処理すべき。
View は、そのアプリ(表計算ソフト)独自の規格だから、無理

結局、View の規格を学ぶことは、
自分で表計算ソフトを作ることになり、車輪の再発明となり、
ビジネスロジックとは無関係のことに、開発費を掛けることになる
0417デフォルトの名無しさん
垢版 |
2017/09/29(金) 01:16:50.93ID:Zb0/fBQl
CSVで用が済まないならエクセルVBAでやるのが一番妥当だと言う結論に至った
システムにくっついたスクリプト言語がなんだかんだでマシである
0418デフォルトの名無しさん
垢版 |
2017/09/29(金) 01:30:05.66ID:RLeXl8wr
表計算アプリからの戻りはプロセスを監視するかファイルを監視するかしかない
Windowsの場合はファイルクローズをイベントとして基本的に拾えないので
定期的にポーリングするかファイル変更イベントを監視してチェックする
Linux系で動かしてinotify使うと楽

でも表計算アプリでの編集は手動だろうから
それが終わったらRubyを起動したんでも良くない? 個人用でしょ?
もしそれも面倒なら最低限のマクロを書いてRubyからwatchしやすくするとかかな
0419デフォルトの名無しさん
垢版 |
2017/09/29(金) 03:05:56.84ID:UluMyDjB
>>414
>Calcで情報を編集する
確認するけどこれは手動だよね?

>Calcを終了する
>スクリプトが再開し
「編集の終了の検出」で再開を自動化したいの?

普通に編集後スクリプトを
手動起動するんじゃダメなの?

商業アプリでも他ソフトで編集してから
再起動させるのは普通だと思うけど

もし表計算と何度も往復して面倒とかだったら
1. VBAを使ってエクセルメインで処理する
2. RubyにGUIをつけて編集可能にする

上記のいずれかを考えるが
表計算のGUIを実装するのは非常に大変なので
1の方が圧倒的に楽だと思う
0420デフォルトの名無しさん
垢版 |
2017/09/29(金) 05:59:14.07ID:jL38KlQs
表形式のUIで編集したいだけなんだから、GUIはWebブラウザに任せればいいだけじゃん
0421デフォルトの名無しさん
垢版 |
2017/09/29(金) 06:25:50.08ID:UluMyDjB
Webアプリにすれば連携しやすいが
GUIを実装するのに
JavaScriptが必要になる

JSが使える前提ならアリかもしれないが
やはりエクセルの挙動を再現するのは
ライブラリがあっても大変
0422デフォルトの名無しさん
垢版 |
2017/09/29(金) 07:29:16.17ID:Vf0Ansyt
require 'win32ole'

ServiceManager = WIN32OLE.new("com.sun.star.ServiceManager")
StarDesktop = ServiceManager.createInstance("com.sun.star.frame.Desktop")
doc = StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, [])
#doc = StarDesktop.loadComponentfromUrl( 'file:///D:/Office/OOO/wrk.ods', '_hidden', 0, [])
sheet = doc.sheets.getByIndex(0)
cell = sheet.getCellByPosition(0, 1)
cell = sheet.getCellRangeByName("A2")
sheet.getCellRangeByName("A1").string = "文字"
sheet.getCellRangeByName("B1").value = 123
sheet.getCellRangeByName("B2").value = 654
sheet.getCellRangeByName("B3").formula = "=B1+B2"
p sheet.getCellRangeByName("A1").type
p sheet.getCellRangeByName("B1").type
0423デフォルトの名無しさん
垢版 |
2017/09/29(金) 09:07:46.91ID:xJMWYcO3
やった事ないけどリブレオフィスならpythonでマクロ操作できるんじゃないの?
0424デフォルトの名無しさん
垢版 |
2017/09/29(金) 13:30:50.48ID:K1n6MHEs
ここまでの書き込みを読めばわかるけど
これだけ話がそれるのを見てもわかる通り
物凄く端的に言えば
出来ない
が回答のようだよ
0425デフォルトの名無しさん
垢版 |
2017/09/29(金) 13:52:36.88ID:KC1uJX1K
荒らしはうせろ
0428デフォルトの名無しさん
垢版 |
2017/09/30(土) 10:01:17.83ID:TLzEdb0d
来年のExcelを待とう。ttp://jp.techcrunch.com/2017/09/27/20170926microsoft-excel-is-about-to-get-a-lot-smarter/
0429デフォルトの名無しさん
垢版 |
2017/09/30(土) 11:40:05.80ID:XdOHXaSN
本日14時から
ニコニコ動画などで
Excel方眼紙は悪なのか? その是非を問う公開討論会を生中継
2017/09/30 14:00開始 - ニコニコ生放送
0430デフォルトの名無しさん
垢版 |
2017/09/30(土) 20:03:10.07ID:auZlLsd0
質問です

ブロックつきで呼び出されたメソッドから、
super をブロックなしで呼び出したいんですが、
どうやればいいんでしょうか?
親クラスに外部イテレータ取得用のメソッドを追加するしかない?

コード例はこんな感じです
ttps://ideone.com/HMVdVD
0432430
垢版 |
2017/09/30(土) 23:06:46.66ID:iQQJc6F+
>>431
method(&nil) って記法があるんですか
知らなかった……

まあ確かに今回の場合はこれではうまくいきませんが、
>>431さんのおかげで解決法は見つかりました
よーするに A#each を呼ぶときにブロックがあればいいわけなので
ttps://ideone.com/706h5s
こんな感じ?
17-18行目と、41行目以降です
0433430
垢版 |
2017/09/30(土) 23:09:29.84ID:iQQJc6F+
あっ 違う
ttps://ideone.com/oNjS8J
これでいいんですね
シンプルだしこれで行きたいと思います
どうもありがとうございました
そして sage 忘れ……
0434デフォルトの名無しさん
垢版 |
2017/10/01(日) 09:06:54.01ID:haDSEbeL
ジャアアアw
0436デフォルトの名無しさん
垢版 |
2017/10/04(水) 16:19:15.38ID:x/lJJY2U
rubyの人工知能の本、もっと増えないかな
0437デフォルトの名無しさん
垢版 |
2017/10/05(木) 00:30:39.28ID:rJN31A7T
教えてください。
hash = [{"fruits"=>"apple","price"=>"100"},{"fruits"=>"orange","price"=>"50"}]
という風に続いている配列から
オレンジの値段を取り出す場合、
どうしたらいいですか?
0438デフォルトの名無しさん
垢版 |
2017/10/05(木) 01:02:40.96ID:MJCn4tJ3
ハッシュが入ってる配列にふさわしい名前は少なくともhashではないと思う

irb> fruits_data = [{"fruits"=>"apple","price"=>"100"},{"fruits"=>"orange","price"=>"50"}]
irb> fruits_data.each{|h| p h["price"]}
"100"
"50"
irb> p fruits_data.map{|h| h["price"]}
=> ["100", "50"]
irb> p fruits_data.inject(0){|sum, h| sum += h["price"].to_i}
150

だいたいこんな流れかと
0439デフォルトの名無しさん
垢版 |
2017/10/05(木) 01:07:26.58ID:MJCn4tJ3
すまん寝ながら書いてて要件満たしてなかった

irb> p fruits_data.find{|h| h["fruits"] == "orange"}
{"fruits"=>"orange", "price"=>"50"}
irb> p fruits_data.find{|h| h["fruits"] == "orange"}["price"]
"50"

文字列が嫌ならto_iでもしとけ
0441デフォルトの名無しさん
垢版 |
2017/10/05(木) 01:22:25.13ID:PaSIQ/4V
>>437
果物と値段を直接ペアにした方がシンプルになる

answer = ""
fruits_price = {"apple"=>"100","orange"=>"50"}
fruits_price.each do |k,v|
answer = v if k == "orange"
end
p answer #=> 50

書いてたら先を越されてしまった
0442デフォルトの名無しさん
垢版 |
2017/10/05(木) 01:37:00.79ID:URIOD7FQ
array.find{|i| i[:fruits] == "banana"}&.fetch(:price)


&.[:price]って書ければいいのに。
&.[](:price)は読みにくいからfetchで
0444デフォルトの名無しさん
垢版 |
2017/10/05(木) 22:52:18.95ID:RWFlOlgJ
Effective Ruby の項目10に書いてあるけど、

構造化データを扱う際、Hashの配列よりも、
クラスまたは、Struct(簡易クラス、クラスジェネレータ)のような専用の型を、使った方がいい

data[:name]
キー名のような実装の詳細が、隠蔽されず表に出てくる。
また、存在しないキーは、nilとなる

Person = Struct.new(:name, :address) #定数に代入
data = Person.new("foo", "fugafuga")
data.name

Structでは属性になるから、getter, setter も付いているし、
存在しない属性名でアクセスすると、NoMethodErrorになる
0445デフォルトの名無しさん
垢版 |
2017/10/07(土) 15:27:41.53ID:AWMSypLQ
ちまたのRubyハッカソンってどうやって見つけるの?
0446デフォルトの名無しさん
垢版 |
2017/10/08(日) 11:34:25.59ID:FYLwhXQv
Rubyの話題っていうか、rspecなんだけどさ、
すごいもやもや感がある。

rspec便利なんだけど、なんで通常のプログラミングとは
ことなった技術を使わないといけないだのだろう?
アサーションとかモックとか

アサーションって要は比較命令だろ?
モックは要はクラスの継承だろ?

もちろんテストのための機能(エラーが起きた時の情報表示)が
ついてるのはわかるよ。でもそれは本質的なことじゃなく
比較命令や継承ができればいいはず。
つまり通常のプログラミング技術と同じ書き方でテストコードも書けるはず。

テストコードが読みやすいようなDSLになっているというのなら
それを通常のプログラミングでも使えばいいやん?読みやすくなる。
なんでテスト用に特殊な書き方を覚えなきゃならないんだ?
0447デフォルトの名無しさん
垢版 |
2017/10/08(日) 12:00:51.07ID:qef5wK+C
TDD, BDD とか、流行っている

Ruby は、DSL に強いから、常に流行の最先端。
2, 3年遅れて、他の言語に取り入れられる
0448デフォルトの名無しさん
垢版 |
2017/10/08(日) 12:08:41.89ID:21EEh8/s
BDDを実現するためにあんな「変」な書き方になってる
どうしても性に合わなきゃフツーのユニットテストもあるよ
ただそういう「メソッドの戻り値が妥当かテストするテストの一覧」だけではテストたり得ないという考え方が主流
個人的には好きよ、はみ出ないことを保証する自分向け補正レールとしての大量のユニットテスト群を高速でぐるぐるするやつ
あの時代に戻れたらいいなと思うことはある
0449デフォルトの名無しさん
垢版 |
2017/10/08(日) 13:05:22.73ID:FYLwhXQv
>>477
Ruby TUEEEEはどうでもいいんだけど、そのレス見てRubyがなまじDSLに
強いからRubyという言語仕様の範囲内(内部DSL)にした結果
通常のプログラミングと異なる技術を使ってしまうんじゃないかって思った
いやちょっと違うかもな。通常のプログラミングで使う内部DSLとテスト用の
内部DSLが異なるという問題かもしれない。DSLといっても内部であればRubyという
言語でしかないので言い回しの違いでしかないかもしれないけど

TDDとかBDDとかshould系とかexpect系とか通常のアサーションとか正直どれもテストとしては
読みづらいと思う。英語としては読みやすいかもしれないけど、テストとしてはということ

どういうことかというと、テスト仕様書ってよくマトリクス(二次元の表)で書くでしょ?
日本語とか英語じゃなくて、マトリクスの形でテスト仕様書書いちゃうんだから
じゃあテストコードもマトリクスであるべきだよ。エクセルの表がまんまテストコードになる感じ
たぶんこの時点でRubyによる内部DSLとして書くのは無理なんじゃないかな
Rubyの表現能力を超えてしまう。無理にやっても読みづらくなる

そしてこのマトリクス。テストコード(定義書?データ?)はエンドユーザーでも
読みやすい(専用のテスト内容ビューワーを作っても良い)と同時にそれが
そのままアプリケーションのコードとして使えればよくね?

テストを書くだけでアプリができるとはいわない。それは不可能。でも減らすことはできる。
エンドユーザーがテストを目視で確認してOKだして、それがそのままアプリで使われれば楽じゃん?
このパラメータには英数字しか使えません。英数字しか入れられないようにチェックコード書きました
英数字しかうけつけないことを証明するテストコード書きました。頑張って英語風にしました。
そこまでやってもエンドユーザーはそれ見て判断できません。これじゃやっぱり無駄に感じる

俺が今話ししてるのはだいたい「定義」の部分なんだよね。「処理」ではない
処理に関してのテストはいままで通りやるしか無いと思うけど
定義に関するテストは(エンドユーザーにもわかりやすい形で)テストコードを書いて
それがそのまま通常のプログラミングのコードとして使えると思うんだよ
モックもクラス「定義」だしね
0450デフォルトの名無しさん
垢版 |
2017/10/08(日) 14:43:14.66ID:dWIEdLJn
じゃあとりあえず、そのやりかたを例示したら。
現行BDDへの不満はもうわかったので。
0451デフォルトの名無しさん
垢版 |
2017/10/08(日) 15:14:06.57ID:93IJP3PA
RSpecはテストを構造化しやすいのが良かったが
3からmatcherの文法がクソになったので基本使わない
0452デフォルトの名無しさん
垢版 |
2017/10/08(日) 17:04:31.77ID:X3i4AnjM
>>446
>なんでテスト用に特殊な書き方を覚えなきゃならないんだ?
それがDSLだから
たとえばHTMLやSQLもRubyやJSとはぜんぜん違うだろ

ただオレは実はMiniTest使ってる
RSpecが大きいフレームワークなので使いこなすの大変

RSpecはRakeやRailsみたいに独自の世界観築いてる
RubyでDSL使った大きめのフレームワークはみんなそう

使いやすいのはメリットだけど
学習コスト大きくなるデメリットもある
まあ個々に選べばいんじゃね?
0453デフォルトの名無しさん
垢版 |
2017/10/08(日) 17:43:35.10ID:FOJ8Xq1X
>>450
例示は5ちゃんねるとは別の場所でやってる or これからやる
ここではしない。雑多なアイデア?みたいなのを書いて
まあ誰か突っ込んでくれw

モック大嫌いなんだけど、今考えていて気づいたことが有る。
モックって形を変えた引き数なんだな。

テストする時のマトリクスとして考えれば、引数列とは別に
例えばAPI列があってその戻り値が○の場合なんて形で書くと思う
つまりArrange、Act、Assert(AAA)におけるArrange部分だな。

【アンチパターン】Arrange、Act、Assert(AAA)を意識できていないRSpecのコード例とその対処法
https://qiita.com/jnchito/items/91779b55cae0f4915da5

モックを使う使わないに限らず、マトリクス(二次元の表形式)で
テスト仕様書(パターン)は作れると思う

あぁ、そうかrspec等は、このパターンを記述しづらいんだ。
describe、contextなどでパターンを書くことができるけど一覧性がない。
(マトリクスで書きづらいもののために)describe、contextみたいなものはあってもいいけど、
テストパターン(結果含む)とテスト内容はファイルごと分けるべきなんだろうな。

あとモックを使った場合、通常はテストパターンがあればいいと思うんだけど
呼び出し回数や引数テスト(つまりreceive(:hoge).with(引数)).at_least(回数).timesみたいなやつ)
なことをしたいことも有る。単体テストとして考えれば他のモジュール呼び出しだから理解はできるけど
どうみても内部実装に依存したテストだから嫌いだしわかりづらい

こういのはAAAと独立させて、内部実装のテストだって割り切って別に書くべきなんだろう。
マトリクスの表を用意して、引数列、テスト結果列とは別に、内部処理列を作って、
どういった関数が呼び出されるかを書いていく
0454デフォルトの名無しさん
垢版 |
2017/10/08(日) 17:52:31.79ID:FOJ8Xq1X
たとえば内部処理列に書くテストコードは
マトリックスの1行目を実行した場合、内部処理として

hoge.foo()
hage.bar(1,2,3)
tsuru.baz("aaa")

みたいに縦書きで書いていければいいんじゃないかな?
こういう処理が実行されることって。

あー、そうかrspecだと
Arrangeに相当する部分と
内部実装のテストがごっちゃになってるんだな。
0455デフォルトの名無しさん
垢版 |
2017/10/08(日) 17:57:45.59ID:FOJ8Xq1X
テスト仕様書ってエクセルがよく使われるけど、
それと同時にエクセルで書くなともいわれる。

ようは表計算としてとして使ってないからなわけだけど、
じゃあ表計算機能をなくしたものを作れば良いんじゃないかな
0456デフォルトの名無しさん
垢版 |
2017/10/08(日) 18:11:17.54ID:FOJ8Xq1X
ここまではテストパターンをどうやって書くかの話で
rspecでは一覧性がないから適していないという結論で良いんだろう。
これは別ファイルにするということで、describeとcontextとitあたりの
存在は消えたことだろう。

残ってるのはテストパターンではなくテスト内容。
expectとかそこらへん。これがまたRubyの通常のコードと
テストコードで書き方がぜんぜん違うってのが残ってるんだよな。

とここまで書いたが、あれ?テスト結果もマトリクスの
テスト結果列に書き込むよな?

テストコードのためにDSL(expectとか)を覚えなきゃいけないんって
本質的な問題は何なんだ?

テスト結果には、○○が××であること を
○○ == ×× みたいに書けるではないか?
あー、そうか。to be eq みたいに書かないと読みづらい(誰が?)という問題か。

to be eq みたいな構文いらんな。代わりにテストで使える命令のサブセット定義すればいい
そして専用のビューワーを使って見た時は、そのサブセット命令を日本語なりに置き換える。
WISYWIGみたいにどちらで書いても相互反映するのもいいだろう。
0457デフォルトの名無しさん
垢版 |
2017/10/08(日) 18:37:43.20ID:FOJ8Xq1X
バリデーション部分は実は前からアイデアがあって、

Railsとかこんな感じで書くわけだけど、
https://railsguides.jp/active_record_validations.html

こんなのは一切廃止して、言語非依存の
YAMLとかでバリデーション定義ファイルを作ればいいと思ってる。

そしてモデルでその定義ファイルを参照することもできるし、
APIからも参照することができる。関数からも参照することができる。
言語非依存ということは同じファイルをJavaScriptからも参照できるので
クライアントサイドのバリデーションも同時に定義できる。

ここで俺がいいたいことの1つとして、正規表現をバリデーション定義に
直接書くのはやめようということ。なぜなら技術的な内容過ぎて
エンドユーザーにはわからないから。

正規表現の代わりに独自の関数を使えば事足りる。

複数の条件や現在のデータも考慮しなければいけないものなどは
バリデーション定義ファイルでは実現できないかもしれないけど
重要なのは完璧にすることではなく無駄を減らすこと

またバリデーション定義に似たものとして
権限管理ファイルってのも考えられる。

なるべくエンドユーザーでも直接みれるようにして、
それをそのままプログラムに組み込めるようにしたい
0458デフォルトの名無しさん
垢版 |
2017/10/08(日) 22:48:32.17ID:ptFQWO2G
>>457
> なぜなら技術的な内容過ぎてエンドユーザーにはわからないから。

え?Railsは技術者が使うものでしょ?
Railsは決して「誰でもWebアプリ書けます」みたいなWAFを目指してるわけじゃないんだし
正規表現すら使えないような技術者に媚びる必要性は一切ないと思うんだけど
0459デフォルトの名無しさん
垢版 |
2017/10/09(月) 03:55:05.15ID:YU1H7ndt
厨房って連投しないと死ぬ病気なのか?
0461デフォルトの名無しさん
垢版 |
2017/10/10(火) 01:17:14.00ID:nyY9mfF7
"\xA5もじれつぅ〜〜".bみたいに.bメソッドじゃあ物足りない?
0463デフォルトの名無しさん
垢版 |
2017/10/10(火) 02:10:16.84ID:nyY9mfF7
マジかよレイルズ最悪だな

>>462
rubyでfreezeされた・されないを気にし過ぎると頭がハゲるぞ
変更されると本当に困るところだけfreezeしとけばいいんだよ
0467デフォルトの名無しさん
垢版 |
2017/10/10(火) 12:56:37.76ID:b+0lfNgt
何点か質問させていただいてよろしいでしょうか?

現在「Markdown → HTML 変換をする掲示板」のような CGI を練習がてら作成しています。
変換部を全部自作するのは難しいのではないかと思ったので、既存のライブラリを使用しようと思ったのですが、
種類が多すぎる上、Rails 関係のトピックばかりで検索してもいまいち判断に困ります。
以下の条件を満たす適当なものをご存じでしたらご教示願えませんでしょうか?
 1. GFM 記法対応(シンタックスハイライトは不要)
 2. 使用法は簡単な方が好ましい
 3. 高速であったり多機能であったりする必要はない

同時に、Redcarpet を試しに使ってみようと思ったのですが、
以下のような結果となってしまい正確にインストールできません。原因など分かりますでしょうか?

(本文長すぎと怒られたので次の書き込みに続きます)
0469デフォルトの名無しさん
垢版 |
2017/10/10(火) 13:38:26.67ID:laLamLaH
記法が増えるのが好ましくないと言ってしまうと
極端な話、ifとwhileでだいたい済んじゃうんじゃないか

よく使われるから専用の記法を設ける
使いたくないなら使わなければいい
0470デフォルトの名無しさん
垢版 |
2017/10/10(火) 14:02:36.65ID:8V61cfLq
>>468
理由もエラーも書いてある通りだと思うのだが
詳細なエラーはgem_make.outに書いてある
コンパイラがないか必要な開発用ライブラリがないかどっちかだろうな
稀に手元のgemバージョンがインストールパッケージの想定より新しすぎるというパターンもある
0472デフォルトの名無しさん
垢版 |
2017/10/10(火) 19:17:55.04ID:QUMIjiIQ
>>467
・library rdoc/markdown (Ruby 2.4.0)
 https://docs.ruby-lang.org/ja/latest/library/rdoc=2fmarkdown.html

Ruby標準ドキュメンテーションツールの RDoc くらいは使ったことがあるよね?
RDoc でも当然だけど markdown は使えるのだから、真っ先にそれを読むべきじゃねえのかと
0473デフォルトの名無しさん
垢版 |
2017/10/10(火) 21:46:18.83ID:b+0lfNgt
>>469
インライン要素は簡単ですけど、ブロック要素が全体的にややこしくないですか?
Marked.js のソースを読んでみたのですが、何をしてるのか分からなくなって……

>>470
あ、そちらを乗せ忘れてました
現在スマホなので確認できませんが、何かが足りないとかいう感じじゃなくて見たことのないエラーでした
検索してみたのですが英語のフォーラムばかりでちょっと分からなかったです

>>471
これって Ruby に組み込めるんですか?
独立したツールのように思えるのですが

>>472
すみません、RDoc は使う機会がなくてほとんど分かりません
RDoc::Markdown の存在は知っていたのですが使い方がよく分からず、
調べてみたら使い物にならないみたいな記事があったので鵜呑みにしていました
上記の目的だとこちらでも問題ないのでしょうか?
0475デフォルトの名無しさん
垢版 |
2017/10/10(火) 22:40:27.88ID:nyY9mfF7
>>473
markdownをrdocで変換するサンプル
テーブルは使えないし、他に足りない機能があるのかも未確認だけど
機能的に充分かどうかは君の方でいろいろ試すといいよ

require "rdoc"
require "rdoc/markdown"

filename = "README.md"
md = File.read(filename)
doc = RDoc::Markdown.parse(md)
opts = RDoc::Options.new
converter = RDoc::Markup::ToHtml.new(opts)
html = converter.convert(doc)
puts html
0476デフォルトの名無しさん
垢版 |
2017/10/10(火) 22:43:27.37ID:nyY9mfF7
>>466
rubyで関数型プログラミングを勉強しろって、何の冗談だ?
しかもfreezeするのは文字列だけにするとか中途半端だな
『あらゆるオブジェクトをfreezeしない理由なんて無い』くらい言えよ
0477デフォルトの名無しさん
垢版 |
2017/10/10(火) 22:58:25.38ID:b+0lfNgt
>>475
ありがとうございます!
変換したのをテキストにする方法を根本的に勘違いしてたみたいです……お恥ずかしい
PCに戻ったらいろいろ試してみます
0478デフォルトの名無しさん
垢版 |
2017/10/10(火) 23:30:33.64ID:YB5j1JpR
>Markdown → HTML 変換をする
これを行うアプリは、無数にあるから、自作する意味はない

Python のSphinx とか
0481デフォルトの名無しさん
垢版 |
2017/10/11(水) 06:27:37.55ID:2F1JnP4A
>>478
分かりにくい書き方ですみません。
変換処理を組み込んだ CGI を作成したいのであって、独立したツールだと目的からちょっと外れてしまいます。
レンタルサーバーだと無理矢理組み込むのも大変なので……。

>>479
一応 CGI の練習がメインです。何点か自作する必要がありますので。
可能なら変換部も自作できればよいとは思いますが、上記の通り、現状だと少し難しいかなと判断しました。
興味はあるので、将来的には挑戦してみたいとは思っています。
0482デフォルトの名無しさん
垢版 |
2017/10/11(水) 22:45:20.73ID:1IDk9wqH
>>480
> 関数型プログラミングを勉強しろよ

って言っておきながら出して来たのが

> 可変性の回避 ― Rubyへの関数型プログラミングスタイルの適用

かよ。ほんと、なんの冗談だ?
そういう事は組織内のコーディング規約で決めればいい事で、
緩いプログラミングをしたくてrubyをいじってる俺に押し付けるな

それに全てのオブジェクトを不変なものとして扱えって書いてあるのに
ことさらに文字列だけをあげつらって

> 文字列をfreezeしない理由なんて無い

とかマジでお前が何を理解してるのか心配になりますね
0483デフォルトの名無しさん
垢版 |
2017/10/12(木) 02:12:49.23ID:bkFDlrr0
>>480
なんかのインスタンスを書き換えるの御法度、全部newでやれ、なんて記事出されても
新しい嫌がらせだなぁって思った
この記事の人の言ってることを正しいとするなら、Stringだとこうするしかないかも

temp_string = String.new(OldString, "append_a")
new_string = String.new(temp_string, "append_b")

前衛的なご発想をお持ちのようで
0484デフォルトの名無しさん
垢版 |
2017/10/12(木) 02:13:49.80ID:bkFDlrr0
なんかキャメルとスネーク混ざったのなんでだろう、俺
JavaのStringBuilder思い出してたかも
0486デフォルトの名無しさん
垢版 |
2017/10/12(木) 02:29:42.04ID:bkFDlrr0
>>485
ん、記事だと「 "a" + "b"」できるよとか書いてるのみてないのかしら
たぶん「そんなめんどくさい記法はいらね」ってレスかと思ったんだけど

となるとメモリ周りの扱いでイミュータブルかそうでないかの利点を挙げてもらわないといかんわね
0487デフォルトの名無しさん
垢版 |
2017/10/12(木) 02:34:26.64ID:bkFDlrr0
たぶんシャローとかディープとかで足かまれるか
パフォーマンス問題のチューンでもなければ

すっげーどうでもいいのでさっさと動け

って話になりそうな気もするけど(90%の問題はコレ)
0488デフォルトの名無しさん
垢版 |
2017/10/12(木) 02:36:38.72ID:bkFDlrr0
パフォーマンスの問題はchefかansibleでもありゃなんとでもなるでそ、サーバ乱設
chefが必要になるほど大規模な話にかかわったことないのがアレだけど orz
0489デフォルトの名無しさん
垢版 |
2017/10/12(木) 02:39:37.05ID:D7OLf+6g
Rubyでゴリゴリの関数型で書く気しない

Rubyは動的型付けだから
コンパイラの型チェックなどのメリットが少なく
柔軟性を失って書きにくくなるデメリットが残る
0490デフォルトの名無しさん
垢版 |
2017/10/12(木) 02:42:27.30ID:njn1yLjW
>>486
> ん、記事だと「 "a" + "b"」できるよとか書いてるのみてないのかしら

それがなんなん?
それは "a" という文字列を newして "b" という文字列をnewして
オブジェクト同士を加算する(イコール +メソッドを出している)という
意味のシンタックスシュガーなんだけど?
0491デフォルトの名無しさん
垢版 |
2017/10/12(木) 02:52:30.38ID:bkFDlrr0
>>490
言い方が悪かったのかもしれんが
「イミュータブルであると、なぜ、誰にとって、どううれしいのか」
を説明してくれって言ってるわけだが

シンタックスシュガーとかぶっちゃけどうでもいいし
イミュータブルがどうとかもかなりどうでもいい(パフォーマンス問題が出ない限りは)

今の場合
「(aaa)という理由により、文字列をイミュータブルにすると
(bbb)という利点がプログラマーにあり
(ccc)という利点がユーザーにあります」

aaa と bbb と ccc 埋めてねってくらい

俺的にはxxxであるべきとかどうでもいいんですよ、そんなん主観的な感情論
0493デフォルトの名無しさん
垢版 |
2017/10/12(木) 03:10:54.78ID:bkFDlrr0
んー、興味の対象が違うのかなぁ

ちょっぱやで書かしてくれる言語って意味でRuby使ってるようなところはあるので
0494デフォルトの名無しさん
垢版 |
2017/10/12(木) 03:19:31.70ID:D7OLf+6g
>ちょっぱやで書かしてくれる言語
>って意味でRuby使ってる
そうそう
Rubyは典型的なLLだからね

全部関数型で書きたければ
最初から関数型言語使うでしょ
0495デフォルトの名無しさん
垢版 |
2017/10/12(木) 03:49:53.06ID:BE/Y4M/4
「Effective Ruby」の項目47 に書いてある。
ループ内のオブジェクト・リテラルを避けよう

ループの度に、オブジェクトが作られて、すぐにガベージになるから無駄。
オブジェクトをループの外に出すか、freeze するか

ARY = %w(a b c).map(&:freeze).freeze
p ARY #=> ["a", "b", "c"]

各要素をfreeze して、配列もfreeze する

Ruby 2.1 以降は、
"a".freeze

これで定数になる
0498デフォルトの名無しさん
垢版 |
2017/10/12(木) 14:22:49.20ID:UWf9SeC0
>>483
最近のRubyなら-"a"で可。
文字列はデフォルトでfrozenになる予定なので、すでに簡便な記法が用意されてる。
0501デフォルトの名無しさん
垢版 |
2017/10/12(木) 19:50:30.80ID:TdwSq1rR
>>435 のスライドによるとruby4では
不変リテラル配列を @[1, 2, 3] で作れたり、
不変リテラルハッシュを @{ 'a' => 1, 'b' => 2 } で作れたり
出来るかもしれない

リテラル文字列も一律freezeなんてしないで @"string" っていう構文にすりゃよかったのに
0504デフォルトの名無しさん
垢版 |
2017/10/12(木) 22:28:59.06ID:apyXR2js
タプルはタプル
行き当たりばったりなRubyとは違ってPythonにはシーケンスというプロトコルがあって、
タプルも配列もrangeも文字列もシーケンスなので統一的に扱える
0506デフォルトの名無しさん
垢版 |
2017/10/13(金) 01:14:19.23ID:4cro6hGU
おおっ! シーケンス! シーケンス!
言語機能として組み込まれ、特定の型のみに作用するなんて流石はパイソンだ

一方RubyにはEnumeratorが用意され、あらゆるクラス/オブジェクトに組み込めるのであった
0508デフォルトの名無しさん
垢版 |
2017/10/16(月) 17:23:10.90ID:DLEfDRSi
a、bが配列の時、
a,sort + b とするとおかしくなる時があります。
文法上間違いなのでしょうか

(a.sort) + b で回避できますが
0510デフォルトの名無しさん
垢版 |
2017/10/16(月) 19:31:26.51ID:VYP6d+8H
>>508
実行可能な具体的なコードを出すと答える方も答えやすいよ
その上で何が起きるのか、本当はどうなって欲しいのかをあらかじめ言っておくとさらにいい
エラーが出るならばそのメッセージをつけて

一応聞いておくけど a,sort + b ってなってる部分はドットじゃなくてコンマなの?
0511デフォルトの名無しさん
垢版 |
2017/10/17(火) 01:16:43.61ID:2ZuBshEM
>>509
ruby 1.8.7です、古くてすみません、
ひょっとしてこれが原因なのかな

>>510
a..sort + b です
これまで何年も()なしで問題なかったのに、
かなり前の方の行を変更したらエラーになりました
エラーメッセージは保存していなかったので、
元に戻せば再現するか試してみましたが再現しませんでした
0514デフォルトの名無しさん
垢版 |
2017/10/17(火) 01:38:22.03ID:G9wCIPXR
確かにいろいろえーーって感じだが
とりあえずエラーの原因箇所はそこと違ったんじゃね
0515デフォルトの名無しさん
垢版 |
2017/10/17(火) 02:08:23.51ID:mcshzNIy
>>511
>前の方の行を変更したらエラー
じゃあ普通に考えて
その変更が悪かったんじゃないの?
なんでsortが原因だと思うのか分からない
0517デフォルトの名無しさん
垢版 |
2017/10/17(火) 19:01:44.02ID:mUW+58qQ
環境が分らないし、エラーの詳細もわからない
そもそもタイプミスでエラー起こしてる可能性もでてきた

これでどういう答えを出せと言うのか
0518デフォルトの名無しさん
垢版 |
2017/10/18(水) 17:37:04.21ID:Tt9aE97q
>>517
(a.sort) + b
と括弧をつけるべきなのか、()は無くてもよいのか、どっちなのだろうという疑問でした

エラーの方はなるようにしかならないので
0519デフォルトの名無しさん
垢版 |
2017/10/18(水) 20:39:12.47ID:9LPwoyEe
>>518
カッコは不要
'+' よりも '.' の方が結合強度が強い

演算子の優先順位については https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html に書いてある
…………と思いきや、'.' が書いてねーじゃん
'::' と同じ優先度と思っていい

つまりだ、カッコをつけるつけないで挙動が変わるって言うなら
それ以前の所がおかしいのは確定的に明らか
0520デフォルトの名無しさん
垢版 |
2017/10/18(水) 20:46:38.65ID:cbmCwNcY
そもそも問題の切り分けが出来てないっぽい
コード履歴取って一行ずつ変えて行けば
どこが原因か特定できるのに
0521デフォルトの名無しさん
垢版 |
2017/10/19(木) 20:29:50.54ID:L874x3oy
>>519
>>520
ありがとうございます、()無しで問題なしということですね

どっかがおかしいのは確定ですが、気力がなくて
そのうち時間ができたら調べます
0522デフォルトの名無しさん
垢版 |
2017/10/20(金) 05:01:37.78ID:VjaZCXyR
クラス毎にファイルわけたり、
多機能なクラスをシンプルなクラスに分けたりしてれば
おのずとエラー表示で何処が問題なのか分る

とは言っても、横着しちゃうのはあるあるだから、他人には言いづらい
0523デフォルトの名無しさん
垢版 |
2017/10/20(金) 12:18:01.77ID:ICaMM6Vk
Ruby自体が大クラス主義だけどね
バイナリデータもStringクラスで扱ってしまおうって考えは最たるもの
だからと言ってクラス/モジュールにちまちまと細分化しても
使う時にあれを使いたいこれを使いたいで結局ひとまとめにしちまうんだろうけど
さじ加減って大事だよな
0524デフォルトの名無しさん
垢版 |
2017/10/20(金) 21:15:16.18ID:fTxZK5d3
昔rubyの本を読んだ時はさっぱり判らなかったけど、
perlとpythonが判った後で読んだら全部最初から知ってる感じになるな
0526デフォルトの名無しさん
垢版 |
2017/10/21(土) 02:31:25.02ID:KRuC/jyb
枝分かれと繰り返しで素数判定プログラム書く課題出て適当にやってたらそれっぽいものができちゃったんだけど、なんで出来たの分からないから助けて

ソースは以下

def prime(n)
if n==0 || n==1 || n<0 then return 'Not Defined' end
i=2
while n%i>0 do
if i==n-1 then return 'true' end
i=i+1
end
return 'false'
end
0527デフォルトの名無しさん
垢版 |
2017/10/21(土) 02:44:37.46ID:KRuC/jyb
>>526
ソース3行目にこれ付け加えて考えてください
if n==2 then return 'true' end
0528デフォルトの名無しさん
垢版 |
2017/10/21(土) 02:52:38.24ID:DH1cG8CY
>>526
素数とはもともとそういうものだからとしか言えん
いや確かめてないけど
やり方通りに作ったのならそりゃ書いたとおりに動くよ
0529デフォルトの名無しさん
垢版 |
2017/10/21(土) 03:42:48.43ID:W+SO0xqJ
>>526

def prime(n)
return 'Not Defined' if n < 2
!(Range.new(2, n - 1).map{ |e| n % e }.include?(0))
end

Rubyっぽくないコードだったんで短く書き直してみた
0530デフォルトの名無しさん
垢版 |
2017/10/21(土) 06:35:15.86ID:/5Z1bcnO
メモ化しろ。
つまり、答え(素数)をキャッシュする

11 を、[ 2, 3, 5, 7 ]の順番で割って、割り切れなければ、11は素数だろ。
まあ、正確には、11を、[ 2, 3 ]で割って、割り切れなければ素数だが

つまり、√11 までの素数で割って、割り切れなければ素数
0531デフォルトの名無しさん
垢版 |
2017/10/21(土) 07:34:26.85ID:6mSBZ2Ul
>>523
主義なんかないだろ。
文字列かバイナリかは扱いの違いでしかないし、クラスによってはかなり細かいしな。
0533デフォルトの名無しさん
垢版 |
2017/10/21(土) 09:06:12.98ID:8VGNYjri
存在しない配列やハッシュに値を入れようとしたら、
初期化して入れてくれればいいのに
0534デフォルトの名無しさん
垢版 |
2017/10/21(土) 11:05:59.68ID:zW3TQJM1
>>530
なるほど…もう一回考えてみるわ

>>529
書き直してくれたのは感謝するし今後に役立つからありがたいけど、今回は基本的な演算の他には『枝分かれと繰り返し』しか使えないんだ
そういう課題ってことだ
0535デフォルトの名無しさん
垢版 |
2017/10/21(土) 13:58:53.09ID:AGKxZ0DW
>>531
大クラス主義についてはmatzやko1が話してる

http://www.atmarkit.co.jp/news/200712/25/ruby.html

> まつもと 1.8にもEnumeratorとGeneratorという2つの似たようなライブラリが
> あったんですけど、それが1.9ではEnumeratorに統一され、組み込みになりました。
> ここら辺、ああ、Rubyはやっぱり“大クラス主義”だなって思いますね。
>
> ――大クラス主義とは?
>
> 笹田 似たような機能のものを大きなクラスにまとめるという方針です。
> たくさんあると覚えるのも大変だし、使い分けられないから、まとめちゃう。
0536デフォルトの名無しさん
垢版 |
2017/10/21(土) 16:41:36.24ID:fsyriQnf
言語の設計と言語の使い方は別だ

クラス毎にファイルをわけたり、多機能クラスをシンプルなクラスにわけたりするのを勧めたのは、
エラー表示が効果的になる言語の使い方の話だ
分ってると思うけどそれ外にも、ワンライナーや関数型等の書き方で使いこなせるようになっている
0538デフォルトの名無しさん
垢版 |
2017/10/21(土) 18:33:01.23ID:AGKxZ0DW
Ruby自体が大クラス主義だから利用者も大クラス主義であるべきだとは俺も思ってないよ
だからといって過剰な程にクラスを派生しまくるのは、型を束縛しないダックタイピングということもあって、
利便性が下がるんじゃないかなーとも思ってる

そりゃStringとHashとThreadが1つのクラスになっていたら発狂するけどね
0539デフォルトの名無しさん
垢版 |
2017/10/21(土) 21:09:41.23ID:6mSBZ2Ul
>>535
流れでたまたまそう思っただけなんじゃないかなあ。
ポリシーがあってないような連中だろ。w
0541デフォルトの名無しさん
垢版 |
2017/10/22(日) 00:40:32.24ID:kM4Rb+14
まだID変えて自演しとんのか
0542デフォルトの名無しさん
垢版 |
2017/10/22(日) 01:31:42.03ID:dJ6mfyJW
大クラス主義の話になったところで
じゃあみんな具体的に
どれくらいの大きさのクラスにしてる?

目安は一クラスあたり何行?
0544デフォルトの名無しさん
垢版 |
2017/10/22(日) 03:14:27.15ID:yCjESUvF
俺の場合はクラスの大きさに目安はないな
100行に満たないものもあれば1000行を超えるものもあるし
それよりもメソッド(Cなら関数)があまり長くならないように気をつけてる

具体的には80文字×25行のスクリーンからはみ出ないくらい
なんちって
0547名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 11:21:48.06ID:ammmliXf
>>546
rubynに限らず、エディターのプラグインで、対応するブラケットに飛ぶのが有る。
0548デフォルトの名無しさん
垢版 |
2017/10/25(水) 22:01:25.02ID:EQUdIXJ1
何も見ずに書けるくらいに慣れた言語はRubyが初めてで便利に使ってたんだけど、最近JavaというかKotlinやってた
んで戻ってきた

インスタンス変数が名前だけでアクセスし放題なのってすげえ便利だけどすげえ邪悪だな!
行く前はなんとも思わなかったけど@hogeとか生であちこち書いてあるとなんか不安になるようになったぞ!
0549デフォルトの名無しさん
垢版 |
2017/10/25(水) 22:17:30.49ID:aatZ8FSF
要はattrでゲッターセッター使いまくりってことだよね
Rubyは便利だけどそれが時にかえって落とし穴になる
0551デフォルトの名無しさん
垢版 |
2017/10/25(水) 22:22:21.34ID:Okq57FT4
このスレにはWinでRuby使ってる絶滅危惧種がちらほら生息しているみたいだから割といるんじゃないかな
0553デフォルトの名無しさん
垢版 |
2017/10/25(水) 23:12:44.96ID:0GYD+24d
>>548
インスタンス変数はコンストラクタで必ず初期化するようにすれば
他の言語とそう変わらないと思う
0554デフォルトの名無しさん
垢版 |
2017/10/25(水) 23:26:24.82ID:6l1ALuPm
>>550
perlから浮気して半年しないうちにrailsが騒がれた
railsの情報はたまに見るけど未だに使ったことがない
0555デフォルトの名無しさん
垢版 |
2017/10/25(水) 23:37:36.75ID:SowBE9iE
>>553
インスタンス変数を直で使う可能性がわりと残ってるということ自体がキモいというのはあるにはある
それだと「いんすたんすへんすうはつかわないでください」と利用マニュアルやらコーディング規約やらに赤字で書くのと変わらんしな
0556デフォルトの名無しさん
垢版 |
2017/10/25(水) 23:40:57.81ID:bjMRduYA
winでrubyだけどUnicode引数が扱えないのと
パスにUnicodeが混じると動かないのは治った?
0558デフォルトの名無しさん
垢版 |
2017/10/26(木) 00:04:52.44ID:1jsCLZfy
>>548
>>553
インスタンス変数の宣言が不要って部分のこと?
それはコンストラクタで初期化すればいんじゃないの
0559デフォルトの名無しさん
垢版 |
2017/10/26(木) 00:27:50.55ID:Bn4jQy1s
kotlinはインスタンス変数を直接作れないし触れない
同名のセッターとゲッター経由でのみアクセスする
Rubyでいうとこのattr_accessorだけしか存在しない状態

まあ他の言語の話はどこまでも広がるから程々に
0560デフォルトの名無しさん
垢版 |
2017/10/26(木) 00:44:34.86ID:+U1JRDPb
インスタンス変数を直接使うよりattr_readerとかattr_accessorを経由するようにしてるなあ
主にタイポ対策として
0561デフォルトの名無しさん
垢版 |
2017/10/26(木) 00:52:35.48ID:1jsCLZfy
@で直接インスタンス変数を使うか
アクセサを経由するかってことか

クラス内なら直接使ってもいいと思う
クラス外からアクセサを使う方が問題
0562デフォルトの名無しさん
垢版 |
2017/10/26(木) 01:37:32.31ID:bdhLTBwb
>>556
すべてのOS・言語で、
ユーザー名・PC名・パスなどのシステム要件には、半角英数字しか使うな。

誰も日本語ではテストしていないし、すべてのアプリでテストしていないから

半角空白も使うな。
「a b」などは、2つの引数に扱われてしまうから、バグる

Unicode の4バイト文字などには、多くのアプリが対応していない。
例えば、中国の地名の「深せん」の「せん」は、TeraPad では対応していない

こういうアプリが一杯ある。
特に、圧縮・解凍アプリでは、日本語のパスは使えない
0564デフォルトの名無しさん
垢版 |
2017/10/26(木) 01:57:55.82ID:1RkkpTof
>>562
今どきUnicodeのパス名くらいはテストしてるだろ
半角スペースもちゃんとクウォート対応して作ってればいい話
コマンドラインで書く時に少し面倒になるくらい
0565デフォルトの名無しさん
垢版 |
2017/10/26(木) 07:56:59.67ID:BUcDTzfg
ディレクトリツリーを再帰処理したときにディレクトリ名に“[]{}”があって
Dir.glob(File.join(subdir,"*")) # subdir = "photo[2017]"
てな感じでハマった
0566デフォルトの名無しさん
垢版 |
2017/10/26(木) 08:30:22.65ID:Bn4jQy1s
globは昔からへなちょこだよ
入ってるファイル名がglob安全だと事前にわかってるディレクトリにしか使ったらだめだよ
0567デフォルトの名無しさん
垢版 |
2017/10/26(木) 11:34:08.16ID:v4GCj7LM
同意せざるを得ない
0568デフォルトの名無しさん
垢版 |
2017/10/28(土) 05:14:14.61ID:3gpZJih/
winのRubyで日本語できないとか言ってる奴いるけど、
UTF16Nの文字コードも知らないで適当にやってるからじゃないの?
0569デフォルトの名無しさん
垢版 |
2017/10/28(土) 11:08:15.45ID:YrbVG7kU
原因は一つだけじゃない
エンコ間違いを文字化けと言ってしまうくらい
知識が貧弱すぎる
0571デフォルトの名無しさん
垢版 |
2017/10/28(土) 11:19:57.77ID:YrbVG7kU
それも違うよ
本来文字化けは通信回線のエラーで発生するものを指してた
0572デフォルトの名無しさん
垢版 |
2017/10/28(土) 11:56:59.11ID:outOme0N
まず、環境変数やコマンドラインオプションの -E で utf-8 を指定しないと、ARGVがutf-8にならないので
正確なコマンドライン引数を取得できない*バグ*がある。
さらに、ディレクトリのファイル一覧を取得する時に、encodingオプションを指定してutf-8にしないと、
ユニコードのファイル名を取得できないという*バグ*がある。
作ってる人たちは仕様だと思ってるが、こんなの誰も嬉しくないし、単なるバグ。
だからrubyinstaller2の人も-Eutf-8をデフォルトにしようとした
ソースコードがデフォルトでutf-8の時代に、何でこんなことになってるのか理解しがたい
でもそれ以外のことは相当windowsのために頑張ってくれている
pythonよりマシでnode.jsより劣ってる
0574デフォルトの名無しさん
垢版 |
2017/10/28(土) 17:41:59.12ID:yTnVd91+
根本的にスクリプトのパスをUnicodeで扱ってないから、スクリプトにlocaleで表せないUnicodeの文字が含まれるだけで実行できない糞仕様
0575デフォルトの名無しさん
垢版 |
2017/10/29(日) 15:18:20.54ID:jMcUbzmZ
やり方知らないだけじゃないの?
0576デフォルトの名無しさん
垢版 |
2017/10/29(日) 18:20:39.60ID:cEiLc8+m
やろうと思えばできる、とデファクトがデフォルトではない、との間には深くて深い溝が
0581デフォルトの名無しさん
垢版 |
2017/10/31(火) 11:27:56.74ID:3dsXrBDq
下手にRuby本体をいじるより、TypeScriptみたいなものを目指して欲しい
Matzの発表を見ると、中途半端な実装で終わりそうだから
0582デフォルトの名無しさん
垢版 |
2017/10/31(火) 11:41:18.35ID:f3HKFkZK
Rubyはクラス定義自体が動的で、それを悪用したメタプログラミング(笑)とかいうハックが横行しているから静的解析でなんとかするのは無理がある
Rails界隈も含めて現実的にまともに役立つものにするにはTypeScriptみたいな後付け方式しかないだろうけど、
「型書きたくないでござる」(笑)に真っ向から反するのであり得ないだろうね
0583デフォルトの名無しさん
垢版 |
2017/10/31(火) 11:46:12.10ID:23Zr0FFS
>>580
俺が言ってるわけじゃなくて、Ruby界隈の人が言ってるんだよ
君の文章も借りて平たく言うと
Rubyは実行速度が遅くて、静的型が無くて、並列実行が無くて
(何十年かは知らないが) 遅れてるから
Ruby3.0で上記3つをなんとかしたい
って事でしょ
いや実際問題ないんだったら、Ruby3.0の目玉になんかするかね
0584デフォルトの名無しさん
垢版 |
2017/10/31(火) 12:02:14.47ID:qfHwvl41
Javascriptみたいに
strictって文頭につければ厳しくチェックできるように
typeって文頭につければ型をつけれるようにとか出来ればいいな
0585デフォルトの名無しさん
垢版 |
2017/10/31(火) 12:37:58.97ID:f3HKFkZK
>>584
付けるならソースファイルじゃなくてクラスに対してだと思う
Rubyの場合、型付けをどうするかよりも、そもそも型というものをどう定義するかが問題
Rubyのクラス定義ってクラスの静的な構造を表してるんじゃなくて、メモリ上にクラスを定義する手続きなんだよ
実行してみないとどんなクラスになるかが分かんないの
0586デフォルトの名無しさん
垢版 |
2017/10/31(火) 15:23:54.17ID:CDGz4c1c
ここは初心者スレなので初心者に役立つ会話をしようね
リアルで話し相手がいないレス乞食が常駐してるとうざいよ
0587デフォルトの名無しさん
垢版 |
2017/10/31(火) 18:39:39.63ID:HaPb6HyZ
Rubyのバージョンを上げるんじゃなくて、別の言語をまた作るべきだな

何か言語を使っていると、こうだったらもっと楽なのにというネタがいろいろ溜まってきて、
それを解決した言語が現れる
それを使っているとまたネタが溜まってくる、というサイクルで進化していくもので、
それはバージョンアップで対応できるような内容ではないのが普通
0588デフォルトの名無しさん
垢版 |
2017/10/31(火) 21:16:56.30ID:23Zr0FFS
まぁはっきり言ってそれは無理だね
言語のシェアみりゃ分かるが、昔からある言語が未だに強い
その言語を使うしかない(他にない)、ってぐらい追い込まないと
新規の言語が広まるのは無理(Swiftとか)

特にRubyの場合は今の一般的な常識でまともな言語に作り直したら
C#やJavaとそう変わりない物が出来上がるだけで、だったらC#やJava使えば?ってなる
これはちょうど、新たに希望の党を作って民進党のリベラルを排除して
自民党と何が違うのかよくわからなくなって、だったら実績のある自民党で良いじゃん、な
希望の党みたいなもの

逆に今のRubyをどんどん改良していけばよいかと言われると、これも民進党と同じでジリ貧
C#みたいに互換性を維持しつつ新しい機能を取り入れまくって進化している言語もあるが
Rubyがそうなれなかったのは、最初の一歩が既におかしかったから
今頃、静的型がどうのこうの言ってるのは最初に犯した過ちを今まで引きづってて
2020年のオリンピックまでにはRuby3.0で云々言ってるわけだが
逆に間違えたからこそ、一部の狂信者に支持されてここまで来たわけで
マトモにしたらJava、C#、C++などのメジャー言語とガチンコになるし、狂信者も付かない
押すも引くも、結局どうにもならんということ
0589デフォルトの名無しさん
垢版 |
2017/10/31(火) 21:36:49.59ID:7Ixc7xPG
もちろん新規言語がそう簡単に広まるわけないが
Rubyが登場したときにも昔の言語はあったわけで

自由に選択できても広まったし
今でも囲い込みされてるSwiftより
言語ランキングで上位だったりする

政治の比喩を持ち出して印象操作してるけど
ScalaとかGoとか新言語どんどん出てきて
JavaやC#ほどじゃないけどそれなりに使われてるから
むしろ昔より新言語が使われてる位だと思う
0590デフォルトの名無しさん
垢版 |
2017/10/31(火) 21:41:41.86ID:kBfCDZdZ
LLスレから追い出された連中が相手してもらえると思って来てるからな
彼らは別にRubyを使えるわけじゃないから厄介だ
0591デフォルトの名無しさん
垢版 |
2017/10/31(火) 21:49:47.48ID:23Zr0FFS
>自由に選択できても広まったし
>今でも囲い込みされてるSwiftより
>言語ランキングで上位だったりする

どうでもよいことだが、それは昔からある言語の方が
新規の言語より強いという裏付けにしかなってないのでは?
新たに言語を作れば今のRubyのポジションは捨てて0からなわけで
今の時代に何の後ろ盾もない状態で新たに言語作ったって
0593デフォルトの名無しさん
垢版 |
2017/10/31(火) 22:04:27.90ID:7Ixc7xPG
>>591
>昔からある言語の方が
>新規の言語より強いという
>裏付けにしかなってないのでは?

「昔からある言語」も昔は
「新規の言語」だったんだよ

もし常に昔の言語の方が強かったら
永久に世代交代しないで
FortranとかLispがずっと主流になってるはずだろ?
0595デフォルトの名無しさん
垢版 |
2017/10/31(火) 22:39:42.30ID:HaPb6HyZ
だから、かつては受け入れられた新しい言語が今は受け入れられない時代背景を説明しろ
0596デフォルトの名無しさん
垢版 |
2017/10/31(火) 22:55:05.06ID:kGPpeMmk
>>594
時代背景を考えると、今の言語なんて
まだまだ未発達なので、今の言語は新しい言語に
追い抜かれる運命だよ

そりゃそうだね。建築なんて何千年前からあるんだって話だから
0597デフォルトの名無しさん
垢版 |
2017/11/01(水) 01:37:44.29ID:nt6bNFBd
やっほー
discordrbについて聞きたいんだけどこのスレでいいんかな
0599デフォルトの名無しさん
垢版 |
2017/11/01(水) 02:19:40.62ID:Z130aY0S
>>596
それは今の主流言語がさらに進化するだけ
いくつが理由がありそうだけど、みんなそんなに言語に飢えてないし
(おおむね満足している、というか供給過多)
光るアイデアを持った新たな言語が生まれても
メジャー言語がパクれば終わりだし、皆がそれを望んでる
何か光るものを見出しても
それだけでその言語を使おうということにはならない

仮に新しい言語を作るにも、今時は求められるものが高すぎるので
個人では手に負えないし、そもそも個人で作った言語など
昔から存在していて実績があるとかでもない限り、誰も使わん

他、既存の言語の資産が、C言語が登場した当時と比べて
というか比べられないほど凄いことになってる
世界中のプログラマがひたすら書きまくったから

一例としてLinuxのカーネルのソースコードの行数の推移

1991年 0.01 約 10,000 ユーザー数1人(開発者)
1992年 0.96 約 40,000
1994年3月14日 1.0.0 176,250
1995年3月 1.2.0 310,950
1996年6月9日 2.0.0 N/A
1997年 2.1.0 約 800,000
1999年1月25日 2.2.0 1,800,847
2001年1月4日 2.4.0 3,377,902
2003年12月17日 2.6.0 5,929,913
2008年 2.6.x 約 10,000,000
2011年7月21日 3.0 14,646,952
2012年1月 3.x 約 15,000,000
2015年8月 4.2 約 20,000,000
0600デフォルトの名無しさん
垢版 |
2017/11/01(水) 02:42:46.97ID:Z130aY0S
建築がどうのこうの言ったって建築に互換性は関係ないしな
セキスイだろうがダイワだろうが、基本的にどうでもよい
車もそうだし、というか、ほとんどの物は自由競争の名のもとに
メーカー間の互換性を気にしなくてもよいようになってるんだが
(ハードウェア業界はわりと規格をきっちりやる)
ソフトウェアだけは互換性の壁が異常
この辺、なにか
フォトショップのデータを山のように持ってればフォトショップを使い続けるしかないし
MSOfficeのデータを山のように持ってればMSOfficeを使い続けるしかない
値段は大手企業の良心にかかってるというか、不当に値段を吊り上げられても、割と買うしかない
パチもんもあるけど、互換性が完璧ではないしな
まさかRubyでPythonのコードが走るわけないし
0602デフォルトの名無しさん
垢版 |
2017/11/01(水) 17:44:59.02ID:gYykKPjL
3DCG目的で、答えが同じになる浮動小数点を含んだ別々の計算で、
結果にズレのない同じ数値になるようにするにはどうしたらいいの?
0603デフォルトの名無しさん
垢版 |
2017/11/01(水) 17:46:43.92ID:K6DgRYf4
>別々の計算

式が違うって意味なら結果が変わっても仕方ない
何桁まで使うかを自分で決める
0604デフォルトの名無しさん
垢版 |
2017/11/01(水) 17:48:34.39ID:K6DgRYf4
あと

>浮動小数点を含んだ

ここもちょっとあいまいだな
BCDとかを除外するのか使ってもいいのか
いまいちどっちともとれなくもないこともない
0605デフォルトの名無しさん
垢版 |
2017/11/01(水) 19:13:42.89ID:kQ1wt9JW
>>602
浮動小数点数の計算誤差なんて、値と式によっていくらでも蓄積されるから、割り切りが必要だぞ
極端な例をCで言うけど、floatの精度で一致させるつもりでdoubleを使っても一致しないことも出てくる

rubyだと標準ライブラリに含まれるbigdecimalライブラリがあるけど、
これも無理数だと計算誤差が出てくるわけだし
https://docs.ruby-lang.org/ja/latest/library/bigdecimal.html
0607デフォルトの名無しさん
垢版 |
2017/11/01(水) 20:47:39.78ID:kQ1wt9JW
>>606
えっ、まじで?
3DCGって言ってるから座標計算とかじゃないの?
sin cos sqrt使うとRationalってFloatになるんじゃ
0610デフォルトの名無しさん
垢版 |
2017/11/01(水) 21:16:19.51ID:uQFQAfJE
真の値である必要は無い
二通りの計算が同じになって欲しいんでしょ

どんなコンピュータ持ってきても円の面積すら誤差なしで計算できないぞ
0611デフォルトの名無しさん
垢版 |
2017/11/01(水) 23:37:46.94ID:Oby+I+5u
宇宙船でも、円周率の誤差のせいで、目的地にたどりつけないから、double 型を使ってる

float だと精度が足りないから
0612デフォルトの名無しさん
垢版 |
2017/11/02(木) 00:32:00.52ID:iVcltcyL
>>610
次の命題Pが真であるといっているんだよね?

命題P
任意のマクローリン展開可能な関数f:R -> Rに対して
適当な次元で切り上げたものをgとすると、
任意のr, r' ∈ Q に対して
g(r) = g(r') => f(r) = f(r')

しかしr'の任意の近傍Dに対して
g(r) = g(r') => f(r) = f(r') (r ∈ D)
は、自明なfを除き明らかに成り立たない。
よってその論理はおかしいよ。
0613デフォルトの名無しさん
垢版 |
2017/11/02(木) 00:50:02.65ID:c5hpxlFZ
>>594
具体的な提案持たずにこき下ろしたいだけの奴はつまらん。
単なる背乗りダネ。
0614デフォルトの名無しさん
垢版 |
2017/11/02(木) 04:58:30.09ID:S5CQdMtg
誤差のあるPC1
誤差のあるPC2
PC1とPC2で同じ結果になったら合格です!!!
0615デフォルトの名無しさん
垢版 |
2017/11/02(木) 06:00:37.83ID:RnqR+Yur
10.0 , 10.0 , 0.0 の座標にある頂点に、
Z軸を軸とした45度の回転を正負どちらの方向に加えても、きっちりX軸やY軸にのってくれなくて、
頂点が同じ座標に重なるはずの別々のポリゴンの計算でも、ずれる可能性がある

これってライブラリ使うだけで解決できそう?
それともライブラリ+αで自分で何か実装しないといけないの?
0617デフォルトの名無しさん
垢版 |
2017/11/02(木) 07:34:22.72ID:0ATVgqBG
>>615
浮動小数点計算の同値判定は差の絶対値が微小値未満かどうかでやれ、というのが
よく言われることかな
もちろん計算誤差の蓄積の問題もあるけどこれ以上は計算機科学でも勉強しないと
いけないかもしれない

というか浮動小数点の話はスレ違いかと
0618デフォルトの名無しさん
垢版 |
2017/11/02(木) 07:50:56.95ID:vQ98pS2c
Ruby遅い

速いと言われるPythonやLuaに手を出す

言われるほど速くならない

Ruby(+ネイティブコードの拡張ライブラリ)に戻ってくる ←イマココ
0620デフォルトの名無しさん
垢版 |
2017/11/02(木) 10:19:56.68ID:iVcltcyL
>>616
だからそれじゃ意味ないでしょ
結局それはsinの引数xが等しいかを比較してるのと殆ど同じなんだよ
x' = x + ε (|ε| << |x|) の時、その方法では正しく比較できないことは自明だし
更にsin(π/3) と sin(2π/3) などの比較も同様
0623デフォルトの名無しさん
垢版 |
2017/11/03(金) 01:16:26.72ID:zxns9zZh
>>602
rational使え。
0624デフォルトの名無しさん
垢版 |
2017/11/03(金) 01:22:01.48ID:GsNSAeOV
>>速いと言われるPythonやLuaに手を出す

なんでPython?
いまならGoだろ

>>唐突にコンパイラ言語が出てくるのはなぜなのか

速さを求めているのに、
逆にコンパイラ言語と突っ込むほうが なぜなのか? だわ

Pythonに手を出すほうもほうだけどな
0625デフォルトの名無しさん
垢版 |
2017/11/03(金) 01:47:41.25ID:Xm/a3Zyv
浮動小数の話は、他のスレで聞くか、検索して

誤差があるから、同値比較はできないので、
自分で誤差を決めて、範囲内かどうかをチェックする

値 - 誤差 < 値 < 値 + 誤差
0626デフォルトの名無しさん
垢版 |
2017/11/03(金) 06:47:30.50ID:q7n+YR5K
それはもう工夫とかじゃなくて、
プログラムを作る時の当たり前の話だな
どんな言語でもそう

いるんだよ
ループ変数に平気で実数使うのが
0627デフォルトの名無しさん
垢版 |
2017/11/03(金) 06:57:52.19ID:Xm/a3Zyv
浮動小数点は、情報処理試験の基本。
プログラミング以前の問題

float に、ずっと、1を足していくと、どうなるでしょう? とか
0628デフォルトの名無しさん
垢版 |
2017/11/03(金) 08:32:22.48ID:+RrAZtoT
Rubyにおいての浮動小数点のライブラリの話とかはこのスレの範疇だからどんどん質問していいぞ

スレ違いとか言ってるのは、ただのスレ進行の妨害したい奴だから無視していい
以前もこのスレには自演で荒らそうとする奴が出没してるんだ
0629デフォルトの名無しさん
垢版 |
2017/11/03(金) 10:51:06.92ID:11xKh3l5
Rubyに関する話なんてほとんど出てないだろこのスレ
どこに目をつけてるんだ
0630デフォルトの名無しさん
垢版 |
2017/11/03(金) 11:09:16.39ID:BJmK7MtV
落ち目だから目移りするのは仕方ない
いくらRubyが好きでも、今の状況でRubyしか見てないとしたらむしろエンジニアとしての資質に欠ける
0632デフォルトの名無しさん
垢版 |
2017/11/03(金) 19:33:46.87ID:GjY9johE
https://japan.zdnet.com/article/35109803/
なかなか嫌われてるねーw
PerlとかObjectiveCとかCoffeeとタメ張るくらい立派なオワコン言語だわ。
0634デフォルトの名無しさん
垢版 |
2017/11/03(金) 20:06:52.11ID:r8BoLq9w
>>633
それはおまえがJavaScriptに詳しくて
他の言語に疎いからだな。
他の言語にも罠はたくさんある
0638デフォルトの名無しさん
垢版 |
2017/11/03(金) 20:26:11.63ID:CfVklZAP
>>636
むしろ0が偽の方が嫌だわ
ある変数がnullかどうかだけ知りたいのに0が偽だと==nullとか書かないといけないし
0639デフォルトの名無しさん
垢版 |
2017/11/03(金) 20:35:25.56ID:9CXEo34m
求める答えが0の場合ってけっこうあるし
1,0を真偽に使う言語仕様だと
数値化されてグダグダになることがよくあるから
0とfalse,nilを分けるRubyの方がスッキリしてて良い
0643デフォルトの名無しさん
垢版 |
2017/11/03(金) 21:20:51.03ID:q7n+YR5K
数字の0とか文字列の""は、大抵はfalseになってくれた方がシンプルに書ける
でも、たまーに落とし穴にはまる

perl だと "0" という名前のファイルだけ処理できなかったりしてた
そういう痛い経験があるから、敢えてなんだろうな
0644デフォルトの名無しさん
垢版 |
2017/11/04(土) 00:39:28.17ID:FdHKGPou
JavaScript では、偽が何種類もあるから、

!!変数
みたいに変数を否定して、ブール値に直してから、
さらに否定するなど、大変
0645デフォルトの名無しさん
垢版 |
2017/11/04(土) 00:42:39.26ID:hKqH3C3y
0という1文字だけが書かれたファイルはPerlが誤作動するというのは大昔からの定番ネタだからな
0649デフォルトの名無しさん
垢版 |
2017/11/04(土) 06:31:30.70ID:juOwH5Ai
Rails使いは宗教上の理由で絶対にTypeScriptに手を出せないのが悲しいよね
バックエンドよりフロントエンドのほうが厳格な言語で書かれてるとかさすがにキチガイ
0650デフォルトの名無しさん
垢版 |
2017/11/04(土) 09:11:23.50ID:D9DL6WlM
>>638,649
分かれてはいるけど、肝心のifではnilは偽と同じ扱いになる。
はじめから、boolしか受け付けない、であれば0が真とか悩む必要なかった。
一見よく考えられているようで、実は大失敗だったと。
0651デフォルトの名無しさん
垢版 |
2017/11/04(土) 09:22:28.68ID:v7stxdd6
>>649
プログラミングで宗教とか言い出すのがキモい。
何でも強制連行!みたいな。
0652デフォルトの名無しさん
垢版 |
2017/11/04(土) 09:48:16.91ID:xcEGHyeH
>>646
コード補完やリファクタリング
騙されたと思ってVSCodeでTypeScript書いてみたらいい
なぜ手間をかけてでも型を書くのか理解できる
型書きたくないでござるを否定するわけじゃないが、
ちゃんと両方の短所長所を理解した上でどちらが優れているか自分の頭で判断することが大切
それを放棄して一方の信者の言うことを鵜呑みにするのはそれこそ宗教だ
0653デフォルトの名無しさん
垢版 |
2017/11/04(土) 11:32:17.49ID:llWWFdXR
「とにかく楽をして速く書きたい」
というのと、
「売り物なんだから万に一つの間違いも無いようにガチガチに作りたい」
という、二つの相反するパラダイムがあって、
それを同じ言語に負わせるのは無理がある

awkとかperlとかrubyとかは前者を志向してるので、
それに逆らった使い方をして使いにくいとごねられても困る
0654デフォルトの名無しさん
垢版 |
2017/11/04(土) 11:57:41.85ID:/qI+U4k3
>>653
前者は「好きなエディタで」または「書捨ての単純なものを」が抜けてる
メンバ補完がバリバリ効く環境ならAPIリファレンスを見る時間が節約できて、ある程度まとまった規模なら型を書く手間は余裕でペイする
Matzクラスになると慣れたEmacs以外のエディタを使うコストが大きいからまた違うんだろうけど
0655デフォルトの名無しさん
垢版 |
2017/11/04(土) 12:05:39.20ID:NciV8/1n
型推論でvarで済むようになると、型を書く煩わしさがほとんど無くなって
さらに一般的に使われるエディタがIDE化した現在では
型があるメリットのほうが遥かに大きい

しかし動的言語に直接型を導入するのは無理があるので
TypeScriptみたいなのが最良の方式になるわけだが、
あんな完成度の高いものを作るのはもっと無理な話だろうな
0656デフォルトの名無しさん
垢版 |
2017/11/04(土) 12:06:26.13ID:mUpZK5PE
>>653
そんなに速く書きたいのかな?
それよりも速く読めるほうが重要じゃね?

型を書くのは面倒だけど、読む方は型が書いてあるから
コードの理解が速くなる。

書くのはタイピング速度を上げればいいだけの話だし
0657デフォルトの名無しさん
垢版 |
2017/11/04(土) 12:23:37.40ID:gvMVqdNY
バックエンドで安全性最優先ならコンパイラ言語だがRustじゃね。まだ発展途上だが
0658デフォルトの名無しさん
垢版 |
2017/11/04(土) 13:33:25.21ID:afxny8Pa
このスレ見てたらruby嫌いになるわ
割とマジで
0659デフォルトの名無しさん
垢版 |
2017/11/04(土) 13:58:55.15ID:xcEGHyeH
斜陽なのは事実だから仕方ないね
全盛期に粗製乱造されたRailsアプリが負債化して、品質も大事だという方へ揺り戻しが来てるのが今
0660デフォルトの名無しさん
垢版 |
2017/11/04(土) 14:32:18.79ID:afxny8Pa
リプレイス案件で次は別の言語使いましょうですね判ります
0661デフォルトの名無しさん
垢版 |
2017/11/04(土) 14:46:58.00ID:57ycABKa
早くシンプルに作る時代から
安定して長期的な傾向になったんだから
時代に合わなくなってきているのは分かる。
でもスタートアップとかにならまだまだ現役
0662デフォルトの名無しさん
垢版 |
2017/11/04(土) 14:49:21.40ID:gvMVqdNY
日本って本来の意味のシステムエンジニアリングは壊滅的にダメだからなぁ
品質を管理できる体制作りとか絶望的に期待できない。ガバガバ管理でゴミが
乱造されても現場に押しつけて終わりだし
0663デフォルトの名無しさん
垢版 |
2017/11/04(土) 15:08:41.19ID:mUpZK5PE
RubyやRailsや最先端だと誤解されていた時期もあったけど
実は全てJavaが十数年前に通った道・・・のすぐとなりの
けもの道を歩いているに過ぎない
0665デフォルトの名無しさん
垢版 |
2017/11/04(土) 15:41:04.71ID:mUpZK5PE
>>664
その差は大企業の力と一個人の力だろうね

一方は整備しつつも巨大な力であっという間に
先に進んでしまう。

けもの道はできるのも遅い
0667デフォルトの名無しさん
垢版 |
2017/11/04(土) 16:21:05.85ID:e6S1BAQ6
小型船の製造を得意としていたルビー造船所だったが、
大型船の製造を頼まれてこなし、持て囃されてしまったのがケチの付き始め。
挙句の果に「ルビー造船所は豪華客船を作るのに向いてない!」
と言いだすお馬鹿さんまで出てきてしまった。
0669デフォルトの名無しさん
垢版 |
2017/11/04(土) 18:13:54.51ID:xZyYrbxC
Rubyのような動的型言語は手軽に気楽に素早く、
だが長期的にみればむしろコストがかさむかもしれない
↑っていうイメージがそもそも嘘っつーか
これは言語開発者が言語を作る場合においては確かに成り立つ
マトモな実用的な言語を作るのは大変なわけだが、それでも
動的型言語をを作るのは静的型言語を作るのに比べればかなり楽、最初は楽
ただし、発展していって、実行速度とかコード補完とか、本当の意味での使いやすさとか
そういう次元の話になってくると、むしろ難しいというか行き詰まる

だから、手軽に素早く作れるが、後で困るかも、というのは
Rubyの言語生命の話であって、そこからくるイメージは有るが
実際には俺らには関係が無い
利用者には単に手抜き言語であることのディメリットしかない

もしくは言語開発者自身がそういう思想に基づいて言語を作ったことから派生する
負の連鎖のようなものが起こっているかもしれないが
0670デフォルトの名無しさん
垢版 |
2017/11/04(土) 18:33:51.52ID:v7stxdd6
>>669
むしろ、作った後困ってない言語って何よ?
0671デフォルトの名無しさん
垢版 |
2017/11/04(土) 18:39:23.17ID:uQ9Lq+uS
未踏に参加して金が絡んできてからおかしくなった気がする
0673デフォルトの名無しさん
垢版 |
2017/11/04(土) 19:59:05.55ID:xZyYrbxC
冷静になって考えてみると>>659の言い方もおかしいよな
揺り戻しっつっても、全盛期ですら静的型言語に勝ってたことは一度もないし、ニッチもニッチ
一部の人がはしゃいでただけだからなぁ、揺り戻しもなにもなー
殆どの人は支持も何もしてなかったし(むしろ冷ややかか?)
既定路線っつーかなんつーか、大人と子供みたいな感じかね
民主党みたいに一時期でも与党だったってわけでもないし
揺り戻しっていうのかね、これ
0674デフォルトの名無しさん
垢版 |
2017/11/04(土) 20:17:22.74ID:die+TITB
Rubyがニッチっていうのは違和感がある
D言語とかもっとニッチなのがあるからね

言語ランキングの十位台位に常にいるんだから
そこそこメジャーって言ってもいいと思う
0676デフォルトの名無しさん
垢版 |
2017/11/04(土) 20:49:10.69ID:KrLu9mes
>>674
D言語は競プロには便利だぞ
C++よりは書きやすいし、競プロならライブラリが揃ってるかどうかは関係ないしな

それはともかく、Rubyは10位前後をずっと保ってるわけだからニッチではないわな
完全にメジャー言語だと思う

メジャー言語なんだからそりゃアンチもいるわ
たまたま粘着度の高いアンチがいるとこういう状態になるのも2chならよくある話
粘着度が高いのはキモいけどね、個人的には
0677デフォルトの名無しさん
垢版 |
2017/11/04(土) 21:13:30.27ID:e6S1BAQ6
rubyにアンチが多いっていうのはrails伝説に夢見て飛び込んで
勝手に挫折や絶望を味わった連中が暴れているからだろ。
rails絡みの要望をそのまま受け入れ続ければrubyは死ぬな。
0678デフォルトの名無しさん
垢版 |
2017/11/04(土) 21:51:45.01ID:3Qk/5QRn
何を今更
今のRubyのコミットはほとんどRails絡みでしょ
とっくにRails専用スクリプトになってるんだよ
0679デフォルトの名無しさん
垢版 |
2017/11/04(土) 22:00:15.04ID:llWWFdXR
もともとperlの進化系として便利に使ってただけの人にとっては、
いろいろ環境が充実して有り難い限りだ
0680デフォルトの名無しさん
垢版 |
2017/11/04(土) 22:38:20.83ID:t9DikZno
世界の中でプログラマーは1%も居ない。
更にその中で複数の計算モデルの違う言語を使いこなして、本当の意味の比較が出来る者など極一部。
つまり、殆どの者は自分の好き嫌い・得手不得手を言語の良し悪しに摩り替えて喋ってる。
そういう俺も、Javaは許せん!w
0681デフォルトの名無しさん
垢版 |
2017/11/04(土) 23:08:22.96ID:kIiPx95D
珍しくスレ数が伸びているからと覗いてみたけど、
エンジニア視点によるRuby固有の問題点は何一つ話題になっていないのね
0682デフォルトの名無しさん
垢版 |
2017/11/04(土) 23:44:23.98ID:xZyYrbxC
何か問題があったとして
それがRubyだけの固有の問題かどうかは、割とどうでもよい
ざっくりというと、動的型言語はどれも同じような問題にぶち当たってる

元々は多少マシンのリソースを食ってもプログラマが楽できた方が良い
とかいうユルフワな考えもあったんだろうけど
実際にはプログラマは楽できないし、マシンに負荷がかかるだけだった
動的型で楽できたのは言語を開発する側だけ
(それも自分たちは静的型言語で静的型の恩恵を受けながら言語を開発してるという)
しかも、パフォーマンスとかコード補完とかマトモなことをやり始めると
むしろ静的型より難易度が上がるという
結局、言語開発者にも利用者にも機械にも、おおよそ誰にも優しくないのが動的型で
非常に筋の悪い、行き詰まった方式と言える

また、文法の面からみても、変数宣言が無いから変数スコープがぐちゃぐちゃになるし
( もし変数スコープを明確にするために変数宣言を導入するんなら
(オプションかどうかは置いておいて)型がかけても良いんじゃね?という発想に至る←通常は )
元々変数宣言が無い言語に後からオプションで型宣言を入れるなら
これは本当にダサくて、それをやっても、後付け故に変数スコープはグチャグチャのままで
だったら初めから変数宣言導入しとけって感じ
0683デフォルトの名無しさん
垢版 |
2017/11/04(土) 23:45:08.70ID:KrLu9mes
多分だけど、ここに書いてる粘着君はただ叩きたいだけだね
静的型と動的型を理由にしてるのも、そこが叩いてる人にとって分かりやすいからというだけだもんね
その証拠としてはPythonの話が一切出てこないところだね
0684デフォルトの名無しさん
垢版 |
2017/11/04(土) 23:50:03.51ID:KrLu9mes
動的型のくくりとしてPythonはもはや避けられないレベルで普及してる言語なんだけど
なぜかRubyを叩く人はPythonの話を一切しない

これはPythonはRubyよりは勢いがある言語なので下手に叩くとしっぺ返しを食らうからだろうね
その点、Rubyは勢いはそこまででもないので叩いてもそういうことがないと思ってるんだろうね

つまり、叩きやすいから叩いてるだけで、そのメンタルは煽り荒らしと何ら変わらないんだろうね
0685デフォルトの名無しさん
垢版 |
2017/11/04(土) 23:55:42.56ID:e6S1BAQ6
>>682
ハサミは髪や布を切るものだからな
ガラスが上手く切れないからと言って店に因縁つけるクレーマーがコイツ
0686デフォルトの名無しさん
垢版 |
2017/11/04(土) 23:58:12.35ID:xZyYrbxC
ダックタイピングは便利な面もあるだろうが
静的型でも静的なダックタイピングなら出来るし
コンパイル時にチェックが入るから安心
大体は静的なダックタイピングでなんとかなるし
動的なことがしたければインターフェースを介したほうが
分かりやすいし、安全
0687デフォルトの名無しさん
垢版 |
2017/11/04(土) 23:59:59.88ID:KrLu9mes
それをPythonスレに書き込んでるなら説得力もあるんだが、それをやってない時点でお察しだよな
動的型を敵視するなら今ならまずPythonスレに書くべき内容な訳なんだから
0688デフォルトの名無しさん
垢版 |
2017/11/05(日) 00:01:30.20ID:fgQ02ied
>>682
完全にいつもの粘着おじさんだね

理解できないなら使わなければいいだけなのに
粘着するのはコンプレックスの裏返し
0689デフォルトの名無しさん
垢版 |
2017/11/05(日) 00:19:02.91ID:4Bj/mfgI
動的型といってもPythonは型アノテーションを入れたし
過去の過ちを反省して修正していく方針だからね
そーゆーのまで叩いたりはしないよ、まぁ頑張れって感じ

一方Rubyは未だにこんなこと言ってるからね

> https://togetter.com/li/1021897
> 型は絶対書きたくない" "Ruby3は東京オリンピックまでに
> Rubyの父Matzによる、「楽しいプログラミング体験を届けるために」

まぁこんな感じなんで、かなり差があるよね

他の動的型言語も基本的に静的型は入れたいんだけど
後から入れるのは難しく、技術的に苦労しているという感じ
「型は絶対書きたくない」とかワケワカラン事 言ってるのはRubyぐらいだろうな
0690デフォルトの名無しさん
垢版 |
2017/11/05(日) 00:24:00.03ID:gkdND+eq
>>689
「過ち」とか言うならそれをPythonスレに書きこんでみたらいいよ
話はそれからだよね

Rubyスレにだけ書いてる時点でただのRubyアンチであって、動的型アンチであるなら
他の動的型スレに書いてないと説得力皆無だよ
0691デフォルトの名無しさん
垢版 |
2017/11/05(日) 00:54:51.15ID:4Bj/mfgI
ある程度話の流れで付き合ったけど、基本的にPythonは関係ないからな
さっきから事あるごとにPython、Python言ってるのはお前であって俺ではない
むしろ俺がPythonについて何も言わないから
Pythonについての言及が無いのはおかしいと言い出したのはお前
それで、ほんの少しだけPythonの事も言ったら
(それもPythonについては何も思ってないという内容)
「それをPythonのスレで言え」はおかしい
だからPythonについては何も思ってないといっただろ、話聞いてないな
0692デフォルトの名無しさん
垢版 |
2017/11/05(日) 00:58:49.82ID:gkdND+eq
>>691
動的型の話をしてるのにPyhonについて完全無視
これは明らかにおかしいよね

アンチ動的型ならPythonについて語らないのは現在においては嘘だし
他にも古くはLispなど動的型言語は数多くあるのだから、そこらの言語スレに書いて
ないならアンチ動的型じゃないよね、と
0693デフォルトの名無しさん
垢版 |
2017/11/05(日) 01:03:01.83ID:Gz3QD+PD
>>691
ruby-devでもruby-coreでもいいからキチガイの主張を投げてこいよ
便所で叫んでも滑稽なだけだぞ
あと日本語解る?
0694デフォルトの名無しさん
垢版 |
2017/11/05(日) 01:03:57.81ID:g65KNgLI
今のところmatzのアイデアは希望が持てないし、この件に関して議論が無さすぎて
rubyコミュニティーが停滞してるように感じる
0696デフォルトの名無しさん
垢版 |
2017/11/05(日) 01:07:58.86ID:gkdND+eq
>>695
型を指定できないのが「過ち」だと言い切ってるならそれをちゃんとPythonスレで主張しないとね
型「も」書けるレベルなら意味は無いわけで
0697デフォルトの名無しさん
垢版 |
2017/11/05(日) 01:27:54.84ID:P7Kt20uM
型を無くすことが目的になっちゃダメだよね。

コンピュータにとっては型が無くても良いかもしれないが
人間にとっては型があったほうが理解しやすい。
型は人間にとって必要なもの
書くのが面倒っていうのなら、必要な所と必要ない所にわければいいじゃん

そもそも型は何かというと外部とのインターフェースだよ。
外部というのはクラスであれば、クラスの外から呼び出す時
つまりはprivateメソッドやローカル変数には型はいらない
逆にpublicメソッドには型は必要

あとメソッド名だけで区別するのはいい加減やめよう
Aというインターフェースのnameと、
Bというインターフェースのnameは意味が違う

インターフェースを複数実装するなら、
def A_name や def B_name という名前で定義できるようにするべき
外部から呼び出すときは、B_name()ってやらないといけないのか?と
思うかもしれないがそれは違う。例えばこんな感じだ

obj = Klass.new
obj.name ← これはKlassのnameメソッドが呼び出される
a = cast<A>obj
a.name ← これはKlassのAインターフェースのnameメソッドが呼び出される
b = cast<B>obj
b.name ← これはKlassのBインターフェースのnameメソッドが呼び出される

このように複数のインターフェースを持たせても適切なメソッドを呼び出せるようにできる
0699デフォルトの名無しさん
垢版 |
2017/11/05(日) 01:29:55.90ID:gkdND+eq
>>697
他の動的型スレで同じ主張をしているなら説得力があるけど、ここだけで書いても何も説得力ないよ
0700デフォルトの名無しさん
垢版 |
2017/11/05(日) 01:41:47.44ID:Gz3QD+PD
>>697
rubyに求める事じゃないな
やる気のある人間はruby (+他の言語) を元にして新しい言語を作ってる
お前も作ってみろ
0701デフォルトの名無しさん
垢版 |
2017/11/05(日) 01:59:30.31ID:P7Kt20uM
>>700
はい。だから作ってますよ?
将来、言語の標準機能としてlint相当のものが内蔵され
現在ドキュメントとして書いている設計書を
プログラム言語として記述できる言語ができたとしたら
その開発者は俺だと思っていいよ。
0703デフォルトの名無しさん
垢版 |
2017/11/05(日) 02:21:35.80ID:P7Kt20uM
>>702
今の言語は、言語と言う割に処理を記述することに
特化していて、設計を記述する能力が低いんだよ。
そして言語というのは自己検証可能でなければいけない
0705デフォルトの名無しさん
垢版 |
2017/11/05(日) 02:28:39.27ID:P7Kt20uM
言語作ってみろと言われたから
作ってると言っただけなのに
この反応w コンプレックスかな?
0707デフォルトの名無しさん
垢版 |
2017/11/05(日) 02:59:23.84ID:P7Kt20uM
>>706
5ちゃんねるで好き勝手やれなくなるから断る
どうせあんただってgithubのアカウント言わないだろ?
0708デフォルトの名無しさん
垢版 |
2017/11/05(日) 03:06:23.11ID:gkdND+eq
>>706
作ってるけど公開してるサイトは言えない、なんて宿題はやったけど持ってくるの忘れましたより
信頼性のない発言だよ
0709デフォルトの名無しさん
垢版 |
2017/11/05(日) 03:07:41.09ID:P7Kt20uM
>>708
じゃあちょっとおまえの信頼性を知りたいから
githubやtwitterなどのアカウントを教えてくれ
0711デフォルトの名無しさん
垢版 |
2017/11/05(日) 03:16:26.19ID:mZtOvkfq
勘違いしてそうだけど
言語作ってるから偉いとかじゃないぞ
どうせ確実にRubyより使われないだろうし
0712デフォルトの名無しさん
垢版 |
2017/11/05(日) 03:19:38.51ID:P7Kt20uM
>>710
5ちゃんねると紐付けられるのがいやなんだよw
おまえだって公開するつもりなんだろ?
さっさとgithubやtwitterのアカウント教えれ
0714デフォルトの名無しさん
垢版 |
2017/11/05(日) 03:41:15.40ID:mZtOvkfq
言語を作って公開したら次に言うのは
「このオレの素晴らしい言語が流行らないのは
 どう考えてもRubyにしがみついてるお前らが悪い!」
0715デフォルトの名無しさん
垢版 |
2017/11/05(日) 03:43:14.48ID:P7Kt20uM
>>713
せっかく煽ったのに教えてもらえなくて
踏んだり蹴ったりだねw
おまえの願いは叶わなかった
0720デフォルトの名無しさん
垢版 |
2017/11/05(日) 05:45:23.75ID:eKLBOKdE
昔は別スレ立ててゴミクズ連中を隔離するだけの分別があったのにな
今のRubyコミュニティはすっかり腐り果ててしまった
0721デフォルトの名無しさん
垢版 |
2017/11/05(日) 05:46:52.55ID:sql+xI5H
>>720
5chで世界を知った気になり始めたら、色んな意味でヤバイぞw
0722デフォルトの名無しさん
垢版 |
2017/11/05(日) 09:49:28.54ID:sB6tkFho
matrixライブラリのベクトルクラスってなんで昔は外積ついてなかったの?
俺が知らないだけで右手座標系か左手座標系かってそれほど問題になるの?
0724デフォルトの名無しさん
垢版 |
2017/11/05(日) 12:51:14.45ID:4Bj/mfgI
>>692
だからなんなんだよ
Pythonは関係ないだろ
そんなにPythonが好きなんだったらお前がPythonのスレへ行けよ
0725デフォルトの名無しさん
垢版 |
2017/11/05(日) 13:11:52.14ID:gkdND+eq
>>724
動的型の話してるのにPythonの話がないのは明らかにおかしいからね
Rubyを叩く材料としての動的型、という理由付けしか見えない
0727デフォルトの名無しさん
垢版 |
2017/11/05(日) 13:22:20.98ID:4Bj/mfgI
だからpythonは過去の過ちを認めて静的型の機能を取り入れていく方向で
今まさに努力している最中なんだから、もういいだろ?生暖かく見守れよ
なんで更生しようとしているやつまで叩く必要があるんだよ、それはいじめだろ、鬼畜
最初からやっとけよ、とは思うが、済んだことだからもういいんだよ
0728デフォルトの名無しさん
垢版 |
2017/11/05(日) 13:25:33.32ID:P7Kt20uM
でさ、Pythonの話なんだけど、あの言語標準で
なんでもかんでも用意するっていうのは素晴らしいと思うわけ
0729デフォルトの名無しさん
垢版 |
2017/11/05(日) 13:31:15.46ID:gkdND+eq
>>727
「過ち」だと言い切るならそれを披露してこいよ
RubyスレでだけやっててもそれはただRubyを叩きたいだけにしか見えないよ
0730デフォルトの名無しさん
垢版 |
2017/11/05(日) 14:19:09.06ID:WRVCeBNz
>>720
維持しようとするよりも見捨てるコストのほうが安くなった
おそらくあなたも私と同じようにこのスレは1日に1回見るか見ないかになってるはず
そのうち週1にでもなるのだろう
0732デフォルトの名無しさん
垢版 |
2017/11/05(日) 18:38:16.07ID:S5vmMqw3
おいこら
自演してスレ立てんなどあほ

Pythonスレいけやボケ
0734デフォルトの名無しさん
垢版 |
2017/11/05(日) 20:43:53.38ID:vWNY+clC
>>733
初心者スレでしか議論ゴッコが出来ない奴も荒らしだろうな。
0735デフォルトの名無しさん
垢版 |
2017/11/05(日) 22:24:18.88ID:S5vmMqw3
>>733
触っちゃダメ
荒らしを構ってるのは荒らし本人だから
0736デフォルトの名無しさん
垢版 |
2017/11/05(日) 22:44:38.97ID:sB6tkFho
>>735
これだけ長々やってるならどんなにIDを変えようがリホモだって固まってくる筈だから、
サーバ管理者に言えば各リホモ教えて貰えたり、
永久ban等の対策してもらえるんじゃない?
サーバ管理者自身が荒らしてるのでなければだけど
0738デフォルトの名無しさん
垢版 |
2017/11/05(日) 23:33:25.37ID:S5vmMqw3
>>736
請求していろいろ引っ張る前に、次から注意文を書かないといけないな
荒らしを構うと荒らし本人と判断されてリモホ請求されます、とか
0740デフォルトの名無しさん
垢版 |
2017/11/06(月) 01:18:05.29ID:+FH43uxL
>>736
推測じゃなくて実際にやってみ

基本は削除依頼だ
http://qb5.5ch.net/saku/index2.html
http://qb5.5ch.net/test/read.cgi/saku/1352422796/l50
削除が追いつかないとみなされたときにのみ規制が考慮される
削除議論スレ
http://agree.5ch.net/test/read.cgi/sakud/1116892398/l50
サーバに負担をかけるとされるときは規制議論にスレが立てられる
http://agree.5ch.net/sec2chd/subback.html

もう一度だけ持論を述べさせてもらうなら、>>730で書いたとおり、
いまや見捨てるコストのほうが維持しようとするコストより圧倒的に安い
0741デフォルトの名無しさん
垢版 |
2017/11/06(月) 09:25:16.33ID:xdkFQOua
荒らしが何か言ってるが無視無視
0742デフォルトの名無しさん
垢版 |
2017/11/06(月) 12:22:13.30ID:2TAusKQx
荒らしを構ってる奴は荒らし本人の自演だから、構ったりせず見つけ次第、自演を指摘して排除すること
荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること

注意するとしたらこんな感じか?
これでも続けるのが荒らしだから、見分けやすくなるだろう
0743デフォルトの名無しさん
垢版 |
2017/11/06(月) 13:07:39.87ID:wL8uE6G5
>>729
誰しも神ではないから本当の意味での過ちかは誰にもわからないし
そこの部分の定義ははっきり言ってどうでもよいが
ともかく過ちを訂正する振る舞いが行われた、という事実だけで十分
現象としての事実だけが重要だし、それ以上は求めてない

それに、「過ちだったか?」などという議論の段階では無くて
もう既に訂正されているし、意思が行動で示されてるし、終わったこと

>「過ち」だと言い切るならそれを披露してこいよ
何度も言ってるが、もう済んだ過去のことを無理に掘り起こして
つべこべ言う趣味はない
0744デフォルトの名無しさん
垢版 |
2017/11/06(月) 14:08:37.90ID:xdkFQOua
さっそく出やがったな
すれ違いじゃぼけ
0745デフォルトの名無しさん
垢版 |
2017/11/06(月) 14:24:36.94ID:2TAusKQx
>荒らしを構ってる奴は荒らし本人の自演だから、構ったりせず見つけ次第、自演を指摘して排除すること
>荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
>他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること

毎回コレをはっても、続けるようなら悪質だよ
後は粛々と関連する法令の元で弁護士に請求してもらって、法的に措置とるしかない
0747デフォルトの名無しさん
垢版 |
2017/11/06(月) 15:11:00.00ID:xdkFQOua
荒らしが火病っとる
0748デフォルトの名無しさん
垢版 |
2017/11/06(月) 15:18:46.17ID:JFyWwn9i
もう相当長く粘着されてるからこの辺りで荒らしとはケリをつけて良いと思う
いい加減にうざい
0749デフォルトの名無しさん
垢版 |
2017/11/06(月) 15:37:48.41ID:xdkFQOua
>荒らしを構ってる奴は荒らし本人の自演だから、構ったりせず見つけ次第、自演を指摘して排除すること
>荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
>他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること

荒らしはこれ張られるのが物凄く嫌いみたいだな
荒らしってばれちゃうから
0750デフォルトの名無しさん
垢版 |
2017/11/06(月) 15:49:08.45ID:6JLIEeFJ
>プログラマは楽できないし、マシンに負荷がかかるだけだった

嗤っちゃ遺憾がほんそれの通りだ
みんな裸の王様が好きなのかそれともそのことにすら気付いていないあほばっか
0751デフォルトの名無しさん
垢版 |
2017/11/06(月) 15:59:10.22ID:xdkFQOua
また出やがった
0752デフォルトの名無しさん
垢版 |
2017/11/06(月) 16:01:06.01ID:JjVH4ZAK
上に出てたテンプレ張ってとことん荒らしを炙り出してやればいい
誰も困らないし
つーか、荒らしの一人芝居がキモイ
0753デフォルトの名無しさん
垢版 |
2017/11/06(月) 16:10:20.13ID:xdkFQOua
荒らしを構ってる奴は荒らし本人の自演だから、構ったりせず見つけ次第、自演を指摘して排除すること
荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること

とりあえず荒らしはこれを破りたがるから踏み絵にして、IPやリモホ請求するか
0754デフォルトの名無しさん
垢版 |
2017/11/06(月) 16:12:38.62ID:Vd7vqFxu
そもそも誰のことを荒らしと言ってるのかがわからないし、過剰反応してて気味が悪い
0755デフォルトの名無しさん
垢版 |
2017/11/06(月) 16:15:07.42ID:5ghIEcyF
散々、荒らされたけどこれで決着か
どれくらい荒らされてたんだっけ?
半年?
0756デフォルトの名無しさん
垢版 |
2017/11/06(月) 16:26:03.44ID:xdkFQOua
それぐらいじゃない?
流石にこんなに長期間荒らされたら誰だって対策もとるし、
過剰反応とかなんとか苦情を言い出すのは自演してる荒らし意外いないわ
0757デフォルトの名無しさん
垢版 |
2017/11/06(月) 16:33:56.86ID:5ghIEcyF
一般人を装った荒らしが文句を言うかもしれないけど、
ここは初心者用の質問スレだから、荒らしの排除は誰からも文句でないよ
0758デフォルトの名無しさん
垢版 |
2017/11/06(月) 16:40:49.63ID:xdkFQOua
これだけ注意しても荒らしは意固地になって自演してくれるわけだから
ある意味、わかりやすい
0759デフォルトの名無しさん
垢版 |
2017/11/06(月) 18:00:13.17ID:RNAOm4Mq
>>753
するかではなく君がやりなさい
君が何を考えているかは君しかわからない
5chでのやり方は教えたはずだ
0760デフォルトの名無しさん
垢版 |
2017/11/06(月) 18:44:46.08ID:5ghIEcyF
>>758
ログ潜ったらもっと前から荒らしてたわこの荒らし
ID換えて一般人装っては荒らしを繰り返してる
本物の確信犯
やり口が759と同じ
0762デフォルトの名無しさん
垢版 |
2017/11/07(火) 07:31:48.57ID:aiMeo2fF
class Hoge
require 'matrix'

class Vector
def huga
return "huga"
end
end

def self.get_vector(array)
return Vector[ *array ]
end

end
p Hoge.get_vector([1,2,3])
#=> 11:in `get_vector': undefined method `[]' for Hoge::Vector:Class (NoMethodError)

これやるとVectorの元のメソッドが未定義っていわれるんだけど、
オープンクラスなライブラリとそうじゃないライブラリがあるの?
class Vector < Vectorって派生させてやればメソッドの追加はできるけど、ものすごく気になる
0764デフォルトの名無しさん
垢版 |
2017/11/07(火) 08:46:40.88ID:pIiosI/w
現実を正確にとらえる力や想像力が無いのが分かりやすく露呈してて
面白い流れだったから期待してたけど、あまり伸びなかったね
まともな頭のやつは流石にドン引きしたか
0765デフォルトの名無しさん
垢版 |
2017/11/07(火) 09:20:39.93ID:aiMeo2fF
>>763
どういうこと?
Hogeクラス内でVectorクラスにメソッドを追加するんじゃなくて、
外でVectorクラスにメソッドを追加するって事?
0766デフォルトの名無しさん
垢版 |
2017/11/07(火) 10:14:55.61ID:sYu75wDW
Hogeクラス内でVectorクラスを定義すると、Hoge::Vectorクラスを定義する事になる
当然、require 'matrix'でロードされるのはHoge::Vectorクラスではなく、トップレベルで定義されたVectorクラスだから、違うクラスを定義している事になる
self.get_vector(array)メソッドはmatrixのVectorクラスではなくHoge::Vectorクラスのメソッドを呼び出そうとしてそんなメソッドはありませんよって言ってるわけ

matrixのVectorクラスはトップレベルで定義されているからどこからでも呼べるけど、
追加の定義を行うにはトップレベルで記述するか、下記のように記述する必要がある
class Hoge
require 'matrix'
class ::Vector
def huga
return "huga"
end
end
end
p Vector[1,2,3].huga


それはそうと、初心者用の質問スレで質問をブッチして意味不明な事を言い出す奴は何考えてるんだ?
ここは初心者用の質問スレだぞ?
そんなに自己主張したいなら他スレ行けよ
0767デフォルトの名無しさん
垢版 |
2017/11/07(火) 10:33:50.08ID:uepCx6fG
>Vector[ *array ]
Vector クラスに、[ ] のメソッドが無いのだろ

Vector クラス内で、Vector を使っているのが、おかしいのかも?
self を使えば?

メタプログラミングは、この本を読む。
メタプログラミング Ruby 第2版、2015

「ruby オープンクラス」で検索して
0769デフォルトの名無しさん
垢版 |
2017/11/07(火) 11:41:45.24ID:aiMeo2fF
Rubyの内部クラスの定義ってそういう事なんだ
すごく勉強になった
ついでにもう一つ質問
特定の内部クラスとしてtopレベルにあるクラスを継承した時、
クラスの一部が機能しなくなるクラスってあるの?
継承すれば元のクラスの全部を引き継ぐんだよね?
0772デフォルトの名無しさん
垢版 |
2017/11/07(火) 20:00:55.15ID:twCDXPE4
同じRubyファイル内で定義したメソッドを別のメソッド内で呼び出すことってできる?
AAA.rbってファイルがあって、その中に『def A』ってメソッドと『def B』ってメソッドがあって、メソッドBの中でメソッドAを呼び出す的な
0774デフォルトの名無しさん
垢版 |
2017/11/07(火) 20:22:59.97ID:twCDXPE4
ごめん、普通にできた
0775デフォルトの名無しさん
垢版 |
2017/11/07(火) 21:07:47.29ID:PZcCqrnZ
クラスメソッド、インスタンスメソッドなど継承される。
変数に関する記憶が怪しかったからちょっと確認したら、
クラス自身のインスタンス変数のみが警鐘されない買った。

class A
&nbsp; X = self&nbsp; &nbsp; # 定数は継承される!
&nbsp; @y = self &nbsp; # クラス自身のインスタンス変数は継承されない!
&nbsp; @@z = self&nbsp; # クラス変数は継承されう!
end

class B < A
&nbsp; p X: X, y: @y, z: @@z
&nbsp; # => {:X=>A, :y=>nil, :z=>A}
end
0777デフォルトの名無しさん
垢版 |
2017/11/07(火) 21:09:59.57ID:hhPr1fc6
>>770
だから何かを問題だと思ってるならまずは削除依頼きちんとしなさいって言われてるだろ
私たちはあなたが何を考えているかわからないから手伝えないけど、あなたが何かすることを妨げることはしない
0778デフォルトの名無しさん
垢版 |
2017/11/07(火) 22:04:06.56ID:sYu75wDW
>>777
いい加減うせろよ荒らし
これ以上スレの進行を妨害するな
それと下記のテンプレ読めや

>荒らしを構ってる奴は荒らし本人の自演だから、構ったりせず見つけ次第、自演を指摘して排除すること
>荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
>他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること
0779デフォルトの名無しさん
垢版 |
2017/11/08(水) 08:00:52.41ID:jFXmR+bn
>>778
だからそれを他人に強制して何か変えた気になる前にあなたの考えできちんと行動しろと言われているのでは
0781デフォルトの名無しさん
垢版 |
2017/11/08(水) 10:02:46.51ID:D96h8IHt
テンプレのおかげで誰が荒らしかすぐ分るようになったな
さすがに半年以上も荒らされて、みんなぶち切れてたし
0783デフォルトの名無しさん
垢版 |
2017/11/08(水) 10:28:19.29ID:BuB9+Tz4
コードで間接参照の概念が必要になったとき、
Arrayクラスでオブジェクトを包装してやり取りしてるんだけど
Ruby的には正しいのコレ?
0785デフォルトの名無しさん
垢版 |
2017/11/08(水) 13:25:58.44ID:KVemNC3B
>>783
Rubyに限らないが、一般論でいうなら、低い抽象度で物事を考えすぎてる
例えば文字列中のカーソルの位置を進めるなら、
それは pos[0] += 1 ではなく cursor.next_char() だろ
0786デフォルトの名無しさん
垢版 |
2017/11/08(水) 20:27:09.27ID:yXBCWp2w
Rubyでポインタが必要だと思ったことがまずない
Cを難解にしてるのがポインタだし
0787デフォルトの名無しさん
垢版 |
2017/11/08(水) 23:27:04.92ID:CJyDItek
関数やprocやlambdaでSystemStackErrorを起こすとRuby自体が落ちちゃうんだけどこれって仕様?


https://ideone.com/GmkU9W
IDEONEでは何も問題ないんだけど
うちの環境(UbuntuとWindows8.1)ではnested_method1の2回目の途中でRubyが落ちる
1.8.7ではなぜか問題なく動くがそれ以外のバージョンは全て全滅
0789デフォルトの名無しさん
垢版 |
2017/11/09(木) 08:01:53.37ID:LcbWCl7/
メモリーがハード故障起こしてると落ちたりするし、マルウェアからの保護機能で落とされてる可能性も有る
落ちる現象がハードウェア要因なのかソフトウェア要因なのかいまいち判断付かないから、
CPUからM/B、OSのバージョンとかRubyのインスコ環境や実行環境をもっと書いて

なんだったらVMWareでシンプルな環境を構築してそこでコードを試して、落ちるかどうか確認する方法もある
0790デフォルトの名無しさん
垢版 |
2017/11/09(木) 08:11:17.58ID:O2u0zvzZ
>>787
ruby のBug だと思う。
手元の環境だと、2.4.2 2.3.5 2.5.0-preview1 rbx-3.84 でsegfault 、jruby-9.1.13.0 はsegfault は回避してるのを確認した。
1.9 以降で出てきたのは、ruby の実行エンジンが YARV 化されたタイミングでの問題だと思う。
ただ、スタック食いつぶす動作を安全に回避するのは面倒な上に、過度な再帰はプログラムの問題なので優先度は低い扱いになる気がする。
0791デフォルトの名無しさん
垢版 |
2017/11/09(木) 09:11:32.41ID:Zo52Bx6X
既知のバグなの?
0793デフォルトの名無しさん
垢版 |
2017/11/09(木) 10:47:34.59ID:LcbWCl7/
ttps://bugs.ruby-lang.org/projects/ruby/wiki/HowtoReportJa
バグレポートのやりかたのページ貼っておく
0794デフォルトの名無しさん
垢版 |
2017/11/09(木) 11:09:27.98ID:Zo52Bx6X
>>792
ruby落ちて
0795デフォルトの名無しさん
垢版 |
2017/11/09(木) 11:10:33.69ID:Zo52Bx6X
るんだが
0798デフォルトの名無しさん
垢版 |
2017/11/09(木) 15:30:22.12ID:LcbWCl7/
#terget = Proc.new do |x|
#p "nest_in"
#x.call(x)
#p "nest_out"
#end
#terget.call(terget)
proc使ってstack level too deep (SystemStackError)が出るコードって言ったらこんな感じか?
0802デフォルトの名無しさん
垢版 |
2017/11/09(木) 19:47:42.78ID:LcbWCl7/
平易といわれようが読みやすいんだから仕方がない
def func_recall()
func_recall()
end
proc{func_recall()}.call
0804デフォルトの名無しさん
垢版 |
2017/11/09(木) 20:10:42.01ID:Zo52Bx6X
荒らし本人は自演がばれてないと本気で思っていそう
今のうちに例のテンプレ貼っとく
>荒らしを構ってる奴は荒らし本人の自演だから、構ったりせず見つけ次第、自演を指摘して排除すること
>荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
>他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること
0805デフォルトの名無しさん
垢版 |
2017/11/10(金) 21:19:41.48ID:zSzvlQjG
new以外のインスタンス生成方法を持ってるクラスって、
派生させても元のクラスのインスタンスを生成するんだね

全てのメソッド書き換えるのがすごく面倒なんだけど何か良い方法ない?
0806デフォルトの名無しさん
垢版 |
2017/11/10(金) 22:05:04.82ID:tus45AjF
self.class.new
0807デフォルトの名無しさん
垢版 |
2017/11/10(金) 22:51:06.22ID:zSzvlQjG
class MyArray < Array
end
p (MyArray[1,2,3] + MyArray[1,2,3]).class
#=>Array

上のコードを見てもらえば分るけど、
Arrayを継承したMyArrayのインスタンス同士の演算を行うと、MyArrayでなくArrayのインスタンスが出力される
全てのメソッドの出力をMyArrayのインスタンスになるようにしたいんだけど、
メソッドを全部書き換える以外に良い方法って何かない?
0808デフォルトの名無しさん
垢版 |
2017/11/10(金) 23:47:08.43ID:fJV6zsPP
>>807
ソースコードを見てみるとArrayの派生クラスであってもArrayとして作成されるようになってる
https://github.com/ruby/ruby/blob/trunk/array.c#L3643

度々似たようなやり取りが起こるけど、この件についてはRubyの仕様として、
改善される兆しが見えない (開発者の変更する必要性が薄そう)
正攻法となるとメーリングリストのruby-devに必要性を訴えて改善するくらいになるんじゃないかなあ
0810デフォルトの名無しさん
垢版 |
2017/11/11(土) 01:33:08.56ID:XLuIumW0
確かに、出力するオブジェクトのクラスをメソッドの書き換えしないで派生先や派生元に切り替えられたら便利だよな
0811デフォルトの名無しさん
垢版 |
2017/11/11(土) 04:45:48.84ID:TdyG/ulQ
しかしそもそもArrayとか継承したいクラスだよな
オープンクラスで直接Array自体の挙動を変えてしまうと
何か問題が起こったときに怖い
0812デフォルトの名無しさん
垢版 |
2017/11/11(土) 09:50:02.65ID:5mgMmggv
方法を聞いているんだから感想を言っててどうするよ
一つの方法としてMarshal.dumpとMarshal.load使うってのはどうか?
メソッドで派生元クラスのインスタンスがでてきたら、
そのインスタンスをMarshal.dumpしてクラス部分だけ書き換えてMarshal.loadしてクラスを変えるわけ
0813デフォルトの名無しさん
垢版 |
2017/11/11(土) 11:50:45.38ID:AwGKm55U
どの言語でも、Array, String などの基本クラスは継承できないし、継承してはならない

prototype.js というライブラリは、基本クラスの動作を上書きして、変更したため、
モンキーパッチと言って、非常に嫌われた

ただし、Rails のような権威が、基本クラスにメソッドを追加するのは、認められている。
これらは、開発保守が継続して行われるため

つまり、個人レベルではダメ
0815デフォルトの名無しさん
垢版 |
2017/11/11(土) 12:07:00.75ID:TdyG/ulQ
配列が使いたいときは代替eachが使いたいから
EnumerableかEnumeratorを継承するとか?
0816デフォルトの名無しさん
垢版 |
2017/11/11(土) 12:08:40.11ID:v8o/qZh1
+ が返すクラスをどうすべきかってだけで、他のメソッドはできるだけ継承したクラスを返すようになってるよ
0818デフォルトの名無しさん
垢版 |
2017/11/11(土) 14:10:03.21ID:BdEcqbw0
処理系に依ってEnumerable#mapとArray#mapが別実装だったり同じだったりして気持ち悪いから
Array継承するくらいならEnumerableを継承するわ
0819デフォルトの名無しさん
垢版 |
2017/11/11(土) 14:21:19.83ID:JLG7hn9J
>>818
> 別実装だったり同じだったりして気持ち悪い
オブジェクト指向の考え方を真っ向否定するんですか…w
0820デフォルトの名無しさん
垢版 |
2017/11/11(土) 15:07:21.47ID:5mgMmggv
また荒らしが進行妨害してるのか
方法聞いてるレスだっつってんだろ

毎度毎度、スレの質問無視して自演で持論を語って荒らすのやめろ
ここは初心者用の質問スレだ
0821デフォルトの名無しさん
垢版 |
2017/11/11(土) 16:38:25.00ID:XLuIumW0
確かに、聞いてたのは方法だったな
明らかに見当違いなレス返してた荒らしもいたし
ごめん

質問への回答だけどメソッド書き換えせずにという事だから、
const_get、const_setを使ってその場だけクラスを入れ替えるというのは?
今、適当に思いついたので検証してないけど
0822デフォルトの名無しさん
垢版 |
2017/11/11(土) 21:37:18.75ID:05iXsNcy
このスレって雑談OKなのに何言ってるんだか
0823デフォルトの名無しさん
垢版 |
2017/11/11(土) 22:58:55.05ID:+LVMEIXu
では雑談をしましょう
型Aを渡したときは型AAで、型Bを渡したときは型BBで
こういったことが簡単にしたければ、静的型の機能を使うのが一番手軽で自然
なぜなら構文レベルでサポートされてるから
(C++で言うところのテンプレートとか)
なのでRubyに静的型を導入するのが手っ取り早い

結果的にはうまくいかなかったんですが、TypeAnnotationをつけて
頑張ろうっていうのを余暇でやっているらしく
Ruby 3で導入しようとしている型システムは型推論だけでどうにかしようという
アプローチとは別のアプローチ
2010年代のプログラミング言語は型ありなのが当たり前になってきているので
Rubyはだいぶ置いてけぼり感(笑)があります
ですので、コミュニティ内での危機感も高いと思います
0825デフォルトの名無しさん
垢版 |
2017/11/12(日) 00:27:53.41ID:WkrbFi3G
雑談にみせかけた荒らしをずっとやってる奴が何か文句言ってるけど、
初心者の質問スレで質問無視してスレ妨害し続けてたらみんなぶち切れるわな
もう半年以上になるんやで?
0827デフォルトの名無しさん
垢版 |
2017/11/12(日) 01:01:09.44ID:WkrbFi3G
そうやって質問のレスを無視して荒らすから、
みんなぶち切れてるんやで?

いい加減にしとけよ
0829デフォルトの名無しさん
垢版 |
2017/11/12(日) 01:08:30.49ID:K4QprXz0
ID:Ob05ibl6
ほぼ毎日、スレに質問ついてるのに何処見てるの?
もしかしておまえが例の荒らし?
テンプレ貼っておくね

>荒らしを構ってる奴は荒らし本人の自演だから、構ったりせず見つけ次第、自演を指摘して排除すること
>荒らし叩きに見せて持論を言い出す奴も荒らし本人だから、これも自演を指摘して排除すること
>他の言語について話そうとする奴は、その言語スレから排除されてRubyスレに流れ着いた荒らしだから、これも構ったりせず元の言語スレへ誘導すること
0831デフォルトの名無しさん
垢版 |
2017/11/12(日) 01:16:43.11ID:WkrbFi3G
>質問なんてめったにないでしょ
ってどのスレの話?
0832デフォルトの名無しさん
垢版 |
2017/11/12(日) 01:19:01.73ID:Ob05ibl6
>>831
もちろんこのスレのことだよ
普段大して話題なんてないんだから、そんなに目くじら立て無くてもいいのになーって思うけどねえ
0833デフォルトの名無しさん
垢版 |
2017/11/12(日) 01:28:26.85ID:pqrFAwxv
>>832
このスレの初心者?
ここの荒らしはアンチ粘着型だからめくじら立てなくてもってのは通じないよ
ただの雑談だったらいいんだけどねー
0834デフォルトの名無しさん
垢版 |
2017/11/12(日) 12:29:55.19ID:qqn9BEpx
質問者がいるんだから雑談やめろとかアホだろ
質問に対する回答以外全部荒らしってどういう事だよ
それに回答者がアンカつければいいだけじゃん
謝辞どころか〆宣言すらない質問者がどれだけいることやら
0835デフォルトの名無しさん
垢版 |
2017/11/12(日) 12:35:34.52ID:WkrbFi3G
ずっとこのスレを荒らしてる奴がいるんだが

頭大丈夫?
0836デフォルトの名無しさん
垢版 |
2017/11/12(日) 13:50:01.60ID:9KdAqRKN
静的型のほうがさ宇ぐれてる云々言う粘着してる奴は確かにいるけど
それ以外のささいな会話も荒らし認定ってどういうことよ
0837デフォルトの名無しさん
垢版 |
2017/11/12(日) 15:17:44.54ID:SkwCxk0Z
雑談に似せた荒らしを行うから荒らし認定されるんじゃない?
荒らし行為やスレの妨害じゃないなら誰も文句なんて言わないよ

そもそも、この期に及んで質問なんてめったに無いとかレスつけたり、
何ヶ月も荒らされてる事を無かった事にする奴って荒らし本人じゃないのか?
0838デフォルトの名無しさん
垢版 |
2017/11/12(日) 15:34:09.85ID:GrP4UM5B
>>837
今日の書き込みだけでもおかしなコメがいくつもあるから
やはり荒らしが自演してるんだろうね
こうやって工作して荒らせる環境を作るのが目的だと思う
0839デフォルトの名無しさん
垢版 |
2017/11/13(月) 11:16:26.32ID:9i4StzNN
rubyのメソッドチェーンがよくわからない
あとフックかけられるポイントも

メソッド呼び終わった直後にフック掛ける方法ってある?
0842デフォルトの名無しさん
垢版 |
2017/11/13(月) 23:58:39.44ID:NOdl0XYl
追記

全てのあらゆるメソッドに介入するため、
if tp.path == __FILE__ したり、
if tp.method_id == :method_name したりして範囲を絞ると見やすくなる

他には自家製クラス・モジュールであればprepend使って面白おかしくすることも可能
0843デフォルトの名無しさん
垢版 |
2017/11/14(火) 19:27:47.47ID:hugtgo3r
コードゴルフで1000までの素数を標準出力に出力ってのをやってるけど
60文字が限界だ。誰か画期的なの教えてくれ。
0844デフォルトの名無しさん
垢版 |
2017/11/14(火) 20:35:46.66ID:43++cTdw
過去スレには結構そういうのが載ってると思うけど参考にしてみたら?
今現在はあんまり流行っていない、
というかコードをスレに書かないと誰も乗ってこないと思う

あと、変わったお題ならプチ盛り上ると思う
0848デフォルトの名無しさん
垢版 |
2017/11/14(火) 20:54:58.38ID:hugtgo3r
おお流石さらっと回答が。ありがとうございます。俺のぼろ臭いエラトステネスもどきとは一味違いますね。
0850デフォルトの名無しさん
垢版 |
2017/11/15(水) 21:17:20.80ID:V8OOXL+L
「Rubyのpublic/private/protectedはaccess controlとしては壊れている」と言われたが、その答えは「確かに。access controlとして作ってないからな」というものであった。
0852デフォルトの名無しさん
垢版 |
2017/11/15(水) 21:18:44.62ID:V8OOXL+L
「privateはsendとかでアクセスできるし、サブクラスからも見える」だそうです。確かにそうだ。publicは壊れていないと思いますけど、他2つが(access control として)壊れていたら、そもそも指定できる必要はないとは言えそう。
0858デフォルトの名無しさん
垢版 |
2017/11/16(木) 14:52:27.31ID:L3BAWltd
自演失敗とな?
よし、晒し上げるか
0859デフォルトの名無しさん
垢版 |
2017/11/17(金) 21:40:30.22ID:+zjghEIw
sliceで負数を指定したときの挙動の解釈が合ってるか教えてくれ
例えばnに12345って文字列があったとして
p n.slice(0,1)
p n.slice(-1,0)
ってやると1と5が出力される
つまり、絶対値が正数の負数が文字列の後ろから順々に対応してるって解釈で合ってる?
0860デフォルトの名無しさん
垢版 |
2017/11/17(金) 21:56:30.56ID:IylgmQJ2
>>859
あってる
StringだけじゃなくてArrayでも同じ
ちなみに二つの整数値を与えるのではなく範囲で終わりを示す方法もよく使われる
p "12345".slice(1..-1) # => "2345" # 二つのピリオド
p "12345".slice(1...-1) # => "234" # 三つのピリオド
p "12345".slice(1..-2) # => "234"
p "12345".slice(1, -1) # => nil # 二つの引数

sliceだけじゃなくて[]でも同様に使う事ができる
0863デフォルトの名無しさん
垢版 |
2017/11/17(金) 22:22:53.66ID:+zjghEIw
>>860
サンクス
ついでに聞くけど
二つピリオドの方は範囲xが『1番目≦x≦-1番目』で
三つピリオドの方は範囲xが『1番目≦x<-1番目』って事でいいの?
0865デフォルトの名無しさん
垢版 |
2017/11/17(金) 22:51:39.58ID:IylgmQJ2
>>863
その認識でいい

それと>>862の指摘は正しい
俺様うっかりしてた
0866デフォルトの名無しさん
垢版 |
2017/11/17(金) 23:17:48.28ID:g+LRYPuD
イミュータブルの話していい?
記憶違いかもしれないけど、なんか将来のRubyでStringがイミュータブルになるって話だかを小耳にしたんだけど、どういうこと?
今のStringって書き換える操作に見えても実は別の生成したStringへ参照を換えているだけだで、
イミュータブルだと思ってたんだけど違うの?
0867デフォルトの名無しさん
垢版 |
2017/11/17(金) 23:27:32.19ID:2lBbqhr3
>>866
<<したらインスタンスの中身が書き換わるよ
まあRailsがフォークしてMRIは事実上終了だろうから心配いらない
0869デフォルトの名無しさん
垢版 |
2017/11/17(金) 23:44:19.35ID:fWRDFZO8
現実的に考えて、今のRuby界にPython3ショック並の非互換を乗り越える体力はない
そもそも3がリリースされる日が本当に来るのかは怪しいけど、もし出てもRails系には完全スルーじゃないかな
静的型もメタプログラミング全開のRailsに役立つようなものにはならないだろうし
0870デフォルトの名無しさん
垢版 |
2017/11/17(金) 23:56:41.31ID:IylgmQJ2
>>866
今はリテラル文字列のオブジェクトが別だけど
ruby3になったらおなじオブジェクトになるって事
今のrubyでもコマンドラインオプションやソースコードのマジックコメントで挙動を確認できる

$ ruby24 -e '5.times{ p "abcdefg".object_id }' 17208605440
17208605280
17208605200
17208605120
17208605020

$ ruby24 --enable frozen-string-literal -e '5.times{ p "abcdefg".object_id }'
17208605640
17208605640
17208605640
17208605640
17208605640

rubyの実装レベルの話だと内部で共有文字列オブジェクトがcopy on writeされるようになってるだけ
ruby3になると共有文字列オブジェクトが直接表に出てくるってことになるんだろうね
0871デフォルトの名無しさん
垢版 |
2017/11/18(土) 00:42:51.61ID:llwTwelI
一番の違いは文字がイミュータブルになるってことだろ
だからcopy on writeする必要もない
writeできないんだからcopyも不要
0872デフォルトの名無しさん
垢版 |
2017/11/18(土) 00:49:48.52ID:sDELvJVN
>>869
また静的型かよ
それにRailsのコミッタがどんだけRubyコミッタとしても掛け持ちしているのを知らんのか
0874デフォルトの名無しさん
垢版 |
2017/11/18(土) 00:55:46.00ID:pAjRC1cg
ruby3にショックを起こしそうな変更が大してなさそうな所がショックなのではないだろうか
文字列といえば、SHARABLE_MIDDLE_SUBSTRINGはruby3で標準になるのか誰か知らんか
0875デフォルトの名無しさん
垢版 |
2017/11/18(土) 01:01:26.66ID:sDELvJVN
>>874
今はArrayだけだもんね
ぜひとも標準にしてもらいたいけど
俺を含めて第三者のC extensionに不安があるからなあ
0877デフォルトの名無しさん
垢版 |
2017/11/18(土) 03:03:45.56ID:pAjRC1cg
文字列のデータがヌル終端文字列とは限らないので、char*取る時はStringValueCStr()使うとか
0878デフォルトの名無しさん
垢版 |
2017/11/18(土) 04:44:28.98ID:LQXdQwI7
たのしいruby読みとおしたけどあんまたのしくない
0879デフォルトの名無しさん
垢版 |
2017/11/18(土) 06:34:47.32ID:O/cG1rmo
プログラミングが楽しいんであって
本で勉強するのが楽しいわけじゃないからな
0881デフォルトの名無しさん
垢版 |
2017/11/18(土) 21:45:21.11ID:W95R0KgI
>>866
Rubyで文字列をfreezeしまくるのが流行ってて
なんでかって、最適化のため
> http://d.hatena.ne.jp/ku-ma-me/20151004/p1
> 2 行目は 1 行目の 2 倍くらい速いです。
だもんで、freeze付けまくるっていう手動の最適化が蔓延していて
(二倍も速くなるならせざるを得ない)
なにかCとかアセンブラでシコシコ最適化していた90年代の香りがする
これもRubyが意味もなく遅すぎるのが原因で
主要言語と比べて30〜50倍ぐらい遅いので、3.0GHzの最新CPUで走らせても
実質60〜100MHzの激遅化石CPUで走らせていることになるので
まぁ90年代といわれれば、ちょうどそのあたりかもしれない
> https://qiita.com/sue738/items/6c312672cecd9e0400a2
あの頃はちょっとの速度差がクリティカルで、何か懐かしいね

Rubyはコンピュータに出来ることはコンピュータにやらせる主義なので
プログラマに手動の最適化を強いるし、型チェックもプログラマにやらせる
何か矛盾したことを言っているように思えるが
言語開発者の視点に立って、全力で手抜きして言語処理系を作ることを考えると
別に間違ったことは言ってない
幽遊白書風に言うと、仙水の言う「俺達七人」に君らは入ってないってことだな
0884デフォルトの名無しさん
垢版 |
2017/11/18(土) 23:34:36.39ID:kadopebp
腕振り回すのが早いからって、野球選手にはなれないんだけどね。
0885デフォルトの名無しさん
垢版 |
2017/11/18(土) 23:41:43.75ID:W95R0KgI
速度が必要なら他の言語を使え、と言いつつも
巷ではfreeze祭り開催中
(事実それが理由で3.0で検討されてるわけで)
やはりちょっとでも早くしたいというね
遅いといっても限度があるんだろうな
1.2倍とか1.5倍とかなら我慢できるが
30〜50倍は別次元というか、もはや別物
折角3.0GHzの最新CPUを使ってるのに
100MHz以下になるとはねトホホ

プログラムは遅くて困ることは有っても速くて困ることはないわけだが
遅くなった原因が、今となっては何のメリットもない動的型を採用したことと
コンパイラの最適化の手抜き、だからな
ちっとも利用者視点じゃなく、単に言語を作る側の手間の都合なわけだが
教祖様よろしく巧みに隠して言いくるめてきたが、もうウソがばれて限界ってところかな
0886デフォルトの名無しさん
垢版 |
2017/11/18(土) 23:56:34.49ID:W95R0KgI
>腕振り回すのが早いからって、野球選手にはなれないんだけどね。

さすがに意味不明すぎて吹いた
他の主要言語は、腕振り回しているだけだとも?
随分だな
0889デフォルトの名無しさん
垢版 |
2017/11/19(日) 00:30:02.83ID:udvNJGPu
今やC/C++、Java、C#などの主要言語はコンパイラの最適化が鬼だから
常識的には人間がアセンブラで書くより速いわけ
だから書くなら
じゃぁC/C++、Java、C#使っておけば?
だし、言われるまでもなく世の中そうなってて
んーだから何?って感じなんだが

なんというか・・・
速度が速い代わりに使い勝手が悪い、だの
使い勝手が良い代わりに速度が遅い、だの
そういう厨が好みそうなマンガの設定みたいなトレードオフは発生してない
非常だわなぁ

では全てにおいてメリットが無い方式なら
いったい誰が作って、誰が支持するのかというと
これがなかなか北朝鮮のような国があったりもするので
存在していることだけを理由に正しいとは言えない
0890デフォルトの名無しさん
垢版 |
2017/11/19(日) 00:45:07.64ID:ico5wL+/
>>889
アホか?

C++がマジで使いやすくて速いとか思ってるなら、一回脳みそ洗濯機にかけた方がいいぞ?
C++は速さのために色々と犠牲にした言語だということを理解できないならエンジニアとして
致命的欠陥があると言わざるをえない
0891デフォルトの名無しさん
垢版 |
2017/11/19(日) 00:50:56.77ID:ANnOsUYp
Javaや.NETは起動時にコンパイルしてるから
実行速度ではなく起動速度が遅い

そしてRailsも起動が遅い。こっちは理由が少し
異なっていて動的型だからコンパイルが不要なんだが
読み込むファイルが多くなりすぎて起動速度が遅い
0892デフォルトの名無しさん
垢版 |
2017/11/19(日) 02:43:18.14ID:tAVjO9Xo
いくら早くたってC++は複雑で読み書きしにくい
Rubyは実行速度より開発速度に振ってるから
0894デフォルトの名無しさん
垢版 |
2017/11/19(日) 08:33:08.93ID:RgqRbH7C
>>890
C++11以降はRubyよりはるかに使いやすい。
0895デフォルトの名無しさん
垢版 |
2017/11/19(日) 08:55:34.34ID:kYPwLJsc
スタートアップにはRailsが好まれるというのも眉唾だよな
ソースの量なんて最初のうちはすぐに増えるもんだし、事業が軌道に乗るまでは大きな変更も多いはず
とりあえず今手っ取り早く動くものを作りたいからという理由でRailsを選ぶような奴がテストなんか書いてるわけないし、
テストがないと変更が困難になるという動的型の性質がネックになるのは意外とすぐなんじゃないかという気がする
0896デフォルトの名無しさん
垢版 |
2017/11/19(日) 09:42:25.92ID:IcfiaN/i
C#は「とても」書きやすいかといわれるとふんぬうううううって感じだ
書きやすいようにするモダンな構造はたくさん含まれてて文法未来も明るいが、全体としてはRubyのほうがまだいいと思う
今のところRubyよりいいなと思ってるのはKotlin+IntelliJ
Javaで書かなければいけない部分がもっと減れば書きやす四天王に入ると思うのでどんどんKotlin部分増やして欲しい
0898デフォルトの名無しさん
垢版 |
2017/11/19(日) 11:10:12.09ID:tAVjO9Xo
>書きやす四天王
面白そうだからみんなで書いてみれば?

オレの場合書きやすいのはRuby一強で
二位以下はPythonとかLLが団子状態で並ぶけど
0899デフォルトの名無しさん
垢版 |
2017/11/19(日) 11:42:50.02ID:udvNJGPu
いや、洗脳されてる(というより確信犯←本来の意味でも誤用の意味でも)人の意見は
誰も興味ないというか常に無視されるというか
社民党が何か言っててもみんな聞き流してるわけで
大人な人達の言うところの民主主義というか
そもそも数に入ってないから無視してよいという暗黙の鬼畜現象
0901デフォルトの名無しさん
垢版 |
2017/11/19(日) 12:24:31.26ID:lEYmgXHF
同じ事させるなら、「実行速度」がRubyより早い言語が有るのは当たり前。
Rubyは例えばCで書いた巨大ライブラリ・ツールとも言える訳だから。
0903デフォルトの名無しさん
垢版 |
2017/11/19(日) 14:12:32.54ID:ojBPgPKj
話を変えるけど、
mswin32版のRuby2.4インスコして、今は懐かしきRDEで何か出来ないかハックしてんだけど普通に動くなコレ
動かない部分は、debug2から経由してrde.dllかrde.soを呼ぶデバッグ機能の辺りで、
バイナリについてきたこれらのファイルをロードできないのが原因だけど、
RDE1.1.1バイナリや1.0.1ソース拾えたんで何とかなりそう
0904デフォルトの名無しさん
垢版 |
2017/11/19(日) 14:26:48.86ID:GIoVTHnu
RDEはすごく使いやすかったな
1.9や2.x以降も対応してくれるなら今でも使いたい
文字列コード関係とか問題ないの?
0905デフォルトの名無しさん
垢版 |
2017/11/19(日) 15:34:37.97ID:ojBPgPKj
>>904
特に問題ない
というかRubyの多言語化はCSI方式と呼ばれるもので、
ruby内部では種々の文字コードを認識せずバイナリとして扱い、指定した文字コード用のメソッドでバイナリに処理してるだけだから
マジックコメントでUTF-8指定して(2.x以降はデフォルトがUTF-8だから指定しなくても良い)、RDEもUTF8N指定しとけばOK

後、RDEについてるrde_export.rbみてたらちょっとした書き換えで2.4用の入力補完データを自動で出せるようになってる
RDEハック中だから、他にも聞きたいことあったら言ってくれ
0906デフォルトの名無しさん
垢版 |
2017/11/19(日) 19:59:54.94ID:ojBPgPKj
問題は2.4用のrde.dllが無いことだからmswin32ruby1.8用のrde.dllをバイナリ改造して
msvcrt-ruby18.dllのロードをmsvcr100-ruby240.dllに書き換えて、
メソッドあわせれば楽に出来るんじゃないかと思いついたんだけど躓いた

msvcr100-ruby240.dllをPEviewで確認したらrb_str_new2が無いじゃないか
こういった内部に詳しい人、誰かいない?
0907デフォルトの名無しさん
垢版 |
2017/11/19(日) 21:43:50.59ID:oda4btU4
日経Linux 11月号
Windows Subsystem for Linux (WSL) 特集。
ついに、ベータ版から正式版へ変わりました!

Docker の記事もある

Ubuntu 側では、Dockerデーモンが動かないため、
Windows 側の、VirtualBox に、Vagrant で、CoreOS を入れて、
その中に、Dockerデーモンをインストール

Ubuntu側から、Dockerコマンドで使う

付録は、サーバーがゼロから分かる本、100ページ。
サーバーでできること、77

付録DVD は、
Ubuntu 17.04 日本語 Remix (64 ビット版)
Ubuntu Server 17.04 (64 & 32 ビット版)
CentOS 7.3 LiveGNOME (64 ビット版)
0909デフォルトの名無しさん
垢版 |
2017/11/19(日) 23:16:02.85ID:wHgZOTEo
>>906
外部シンボルの有無だけじゃなくstruct RStringとかRArray、RStructなんかは
要素数が少ない時にRObject内へと埋め込むようになってるし、
文字列オブジェクトとかは文字のエンコーディング情報を
抱えるようになってるしでまず無理

ソースコードを対応するrubyに合わせたパッチで当てて再ビルドした方がまだ近道だろうな
0910デフォルトの名無しさん
垢版 |
2017/11/20(月) 08:23:21.29ID:rLtj6AOb
マジで?
ruby2.4(maswin32)いれたRDEのデバッグオプションを"-r debug2"から"-r debug"に書き換えると変数ウィンドウもデバッグも普通に問題なくうごくけど、
変数ウィンドウのオブジェクト表示タブで、一部オブジェクトの型が表示されず"(1)"表記されるのはそれが理由か

それと、rde.dlやrde.soをいれなくても、出来るってことは変数ウィンドウ辺りはRDE本体の機能かな?
これら機能が"debug"や"debug2"にどこまで依存してるのかいまいち分らない

ぱっとみrde.dlやrde.soだけruby2.4(mswin32)に対応したのをコンパイルすれば解決かと思ってたけど、
とりあえず、
SourceForgeやOSDNから拾ってこれるrde 0.9.9.0のソース(1.0.1はソースじゃなくバイナリだった、ごめん。一番新しいソースは0.9.9.0になる)をもう少し見てみるよ
現時点でもデバッグオプションを"-r debug2"から"-r debug"に書き換えればまともに動くんだからそれほど不都合は無いんだけど
0912デフォルトの名無しさん
垢版 |
2017/11/20(月) 12:04:09.60ID:ohy70QIE
RDE自体書き換えて再ビルドすりゃいいじゃん
ソース何で作ってあんのよ

……Delphiか…
すばらしい言語とすばらしい仕様とすばらしくない会社に翻弄された不遇の子か…
ほかのIDEのアドオンとかに注力したほうがいい…?
0914デフォルトの名無しさん
垢版 |
2017/11/22(水) 22:47:26.40ID:Iq8RJWyk
RDEもどきはGUI周りはGTKとかQtを使うにしても
基本的にRubyだけで再実装できないものなのかな?
0915デフォルトの名無しさん
垢版 |
2017/11/22(水) 23:21:49.21ID:ITKojXQF
観念してVSCodeを使おう
TypeScript製なのでRubyistにとっては敵のケツを舐めることになる屈辱的なエディタだけど、他のを使う理由が見つからないレベルの出来
0917デフォルトの名無しさん
垢版 |
2017/11/22(水) 23:33:30.62ID:S4KAr5dn
irbでコードを直接打ち込むとちゃんと動作するんだけどそれと全く同じコードをメソッドとして定義してそれを実行するとできないのなんでよ
0919デフォルトの名無しさん
垢版 |
2017/11/23(木) 00:00:05.02ID:Nvdrrync
>>918
def binsort(a)
bin = []
(a.max+1).times do |i|
bin.push(a.count(i))
end
a = []
bin.length.times do |k|
bin[k].times do
a.push(k)
end
end
end
aは整数値の配列
この中身をirbで直接実行するとちゃんとソートしてくれるんだけどbinsort(a)で実行すると何もしてくれないのよ
0920デフォルトの名無しさん
垢版 |
2017/11/23(木) 00:06:20.01ID:Q47DTjos
irbでもソートされないんだけど?
ちゃんと戻り値使いましょうね

def binsort(a)
bin = []
(a.max+1).times do |i|
bin.push(a.count(i))
end
ary = []
bin.length.times do |k|
bin[k].times do
ary.push(k)
end
end
ary # ←これ
end
0921デフォルトの名無しさん
垢版 |
2017/11/23(木) 00:08:55.64ID:Nvdrrync
うちのirbだとさっきのでちゃんとソートされたんだが
0922デフォルトの名無しさん
垢版 |
2017/11/23(木) 00:14:07.25ID:Q47DTjos
殆どのバージョンで試したけどそのようにはなりませんでした
君の実行環境を書いてください
0923デフォルトの名無しさん
垢版 |
2017/11/23(木) 00:21:12.86ID:Nvdrrync
a=Array.new(100) do rand(5) end
とかでaを決めてさっきのコードをirbで実行
それでもう一度aを表示するとソートされた配列が表示されるけど、binsort(a)でやってaを表示するとaそのものは変わってないって状況

だったんだけど
a=[]
のとこを
a.slice!(0..-1)
にしてやったらa自体を変えられた
0925デフォルトの名無しさん
垢版 |
2017/11/23(木) 00:39:33.47ID:BeZbsl9b
日本語として何が言いたいのかさっぱりわからん
同じアルゴリズムなら俺ならこう書く
def binsort(a)
(0..a.max).inject([]){|s, i| s + [i]*a.count(i)}
end
0926デフォルトの名無しさん
垢版 |
2017/11/23(木) 03:06:34.20ID:AxcPEcxT
これは多分あれだな
実引数aを表示してると思ってるけど実は仮引数aを表示しているパターン
0927デフォルトの名無しさん
垢版 |
2017/11/23(木) 08:53:22.23ID:XBDj7YCq
>>915
朝鮮脳かー。
0928デフォルトの名無しさん
垢版 |
2017/11/23(木) 11:03:40.27ID:AMXsylzt
Ruby書くのにVSCode使ってるわ
Ruby陣営にとっては多少アウェイなのかもしれんが
使いやすければどうでもいい
0930デフォルトの名無しさん
垢版 |
2017/11/23(木) 12:30:20.24ID:UCxNEg1Y
現在のプログラマーにとって
統合開発環境使わないのであれば
VSCodeは王道だろう。

秀丸とか使っているならアウェイだろうけど
0931デフォルトの名無しさん
垢版 |
2017/11/23(木) 13:33:37.41ID:DqyU4UwD
VSCodeは使用する言語のためにゴリゴリに整えられたemacs的な環境がクソ簡単に作れるのが強いよね
エディタの設定にアホみたいに手間かけてドヤ顔してた奴等がただの老害になってしまった
さすがに30年近く開発環境作ってるだけのことはあるわ
0932デフォルトの名無しさん
垢版 |
2017/11/23(木) 13:55:25.39ID:YnWOoALk
現在のつづりの途中からファイル内全検索で補完候補を表示したり、クラスやモジュールのメソッドや定数まで定義したもの全て(もちろん、自分で定義したものも含む)から関連した補完候補を表示してくれたり、
ファイルジャンプやエラー時の該当コードへのジャンプジャンプ機能、
変数ウィンドウでリアルタイムにグローバル、ローカル等表示機能、
デバッグ時のブレークポイント・ステップイン・ステップアウトといった基本から、シームレスにコンソール入力できCLIでデバッグしたりと、
RDEを使えるならずっと使い続けたい

逆にRDEで欠けているところって何かある?
0933デフォルトの名無しさん
垢版 |
2017/11/23(木) 14:09:00.28ID:AMXsylzt
>>931
Emacsは自由度は高いんだろうけど
設定にムチャクチャ時間かかるからな
VSCodeはデフォルトで使えるから楽
0934デフォルトの名無しさん
垢版 |
2017/11/23(木) 14:18:55.83ID:DqyU4UwD
>>932
どれだけ高度な機能があろうが所詮Rubyでしか使えないだろ
Rubyがメインの開発でも開発作業というのはRubyだけで完結するものではない
VSCodeはシェルスクリプトもHTMLもCSSもJSもXMLもJSONもYAMLも他の言語も何でもそこそこ便利に扱える
0937デフォルトの名無しさん
垢版 |
2017/11/23(木) 14:45:04.91ID:YnWOoALk
>>636
HTMLでデバッグってどういう事?
強調表示と文章構造化機能があり、
Rubyから扱うならRDEの変数ウィンドウだってあるんだから、見ながらできるでしょ
RDEにはコンソールウィンドウだってあるんだから、どんなやり方だって可能だよ
0938デフォルトの名無しさん
垢版 |
2017/11/23(木) 14:47:34.43ID:tA8CL5L/
>>933
今は設定もLispはほとんど書かなくてもいいし、パッケージマネージャもあるし、設定は簡単だよ
英語というハードルはあるけど
0939デフォルトの名無しさん
垢版 |
2017/11/23(木) 19:55:08.71ID:AMXsylzt
>>938
絶対的にEmacsは昔より易しくなってるんだろうけど
相対的にVSCodeの方が易しいからそっち使ってる
0941デフォルトの名無しさん
垢版 |
2017/11/23(木) 21:26:51.78ID:3UvXGadQ
VSCode使ってるようなチームが今時開発のコミュニケーションにメールはないでしょ
githubのプルリクを扱ったりSlackの送受信したりするプラグインはもちろんあるよ
0943デフォルトの名無しさん
垢版 |
2017/11/23(木) 22:07:17.46ID:tA8CL5L/
>>939
機能の豊富さやモダンな設計部分は確かに惹かれる点がないわけではない

ただ、VSCodeには絶対移れない理由は、カーソル移動すらホームポジションから指を
離さないといけない部分だ(Mac版はいいんだが)

もちろん「そんなのカスタマイズでどうにでもなるよ」という意見は承知しているが、すべての機能を
再配置するには無理があるし、拡張機能まで考えるとキーバインドはなるべくデフォルトでいきたい

そうなるとカーソル移動にカーソルキー以外のキーが割当たってないのは大いなる不満だな

ちなみにこれは実際にVSCodeを使ってみた感想だ
Emacs風キーバインドとかも試してはみたが、不完全だし、拡張機能を入れると簡単に破綻した
0944デフォルトの名無しさん
垢版 |
2017/11/23(木) 22:09:43.98ID:UCxNEg1Y
慣れているものがあるのにわざわざ移る必要はないよ、
便利な機能は追加されているけど
それの習熟までの時間考えるとマイナスじゃん
0945デフォルトの名無しさん
垢版 |
2017/11/23(木) 22:17:47.02ID:SZ3Ksiuh
>>943
Emacsキーバインドは根本的に間違ったキーバインドなんだよ
vimキーバインドも同様。
つまり間違ったキーバインドを使うから破綻する
0947デフォルトの名無しさん
垢版 |
2017/11/23(木) 23:11:44.50ID:tA8CL5L/
>>945
それならばVSCodeが正しいキーバインドを提供すればいいだけなのに、それはされなかった
Mac版VSCodeに至ってはカーソル移動はEmacsと同じだ
(というかMacのカーソル移動は基本Emacsと同じなんだが)
0949デフォルトの名無しさん
垢版 |
2017/11/23(木) 23:52:47.43ID:3UvXGadQ
Macは通常のショートカットキーはCtrlではなくコマンドキーという別のキーを使うんだよ
0955デフォルトの名無しさん
垢版 |
2017/11/24(金) 07:53:06.70ID:fclmHXnw
多分だけど、客とのメールまでプログラミングエディタでやりたがる基地外は世の中にあまりいないだけじゃないかな
Emacs老害の全盛期と違って、今の開発者はさすがにエディタの他にブラウザだけは常に開いてるもんだし
0956デフォルトの名無しさん
垢版 |
2017/11/24(金) 08:06:52.50ID:h77OWA0a
今時だと連絡手段が社内SNSだったりチャットだったりビデオ通話だったりと多様化してどうせブラウザや他のアプリも触らざるを得ないんだから
メールだけをテキストエディタ内でやることにあまり意味を感じない人が増えたんだろうな
個人的には開発エディタに客のメールが届くのは精神衛生上も嫌だが
0957デフォルトの名無しさん
垢版 |
2017/11/24(金) 13:57:41.39ID:jGNvQKc+
メールというモデルが現代には合わなくなってきただけなんだけどね。
0959デフォルトの名無しさん
垢版 |
2017/11/24(金) 17:39:01.93ID:WYDS9FKw
>>947 githubのプルリクを扱ったりSlackの送受信したりするプラグインはもちろんあるよ
>>955 多分だけど、客とのメールまでプログラミングエディタでやりたがる基地外は世の中にあまりいないだけじゃないかな

自分の都合で世の中とは変わるんだなマに向いてない
0960デフォルトの名無しさん
垢版 |
2017/11/24(金) 18:04:37.20ID:3vzBmmRs
注意、
荒らしが自演でスレを荒らそうとしているので以下スルーしてください

今後この話題を続ける人は荒らしである事がほぼ間違いないので、
規制等に巻き込まれないようご注意下さい
0962デフォルトの名無しさん
垢版 |
2017/11/24(金) 18:10:00.93ID:tVS6N6Kc
まずパッと読んで、
「基地外」というあおりを受けて本当に基地外が反応した!
と感じたであろう
普通に読めば支離滅裂で、意味が分からない

他人が書いた難解なコードとかに出会うことがあって
解読しようと思うんだがなかなか理解できなくて
そもそもこのコードはバグっているんじゃないか?
と思うことがある

まずアンカーミスをしているんじゃないかと疑う
>>947ではなくて>>941の可能性が高い
その上、引用する文章を間違えているんじゃないかと疑う
二行目を引用しているが、一行目を引用したかった可能性が高い

単にミスったのか、それとも支離滅裂なアレな人なのか
どちらでも同じことだが >>960よりはマシである
0963デフォルトの名無しさん
垢版 |
2017/11/24(金) 18:30:21.92ID:3vzBmmRs
自演を繰り返す荒らしのマッチポンプですので、みなさんスルーをお願いします
今後この話題を続ける人は荒らしであることがほぼ間違いありません

巻き込まれないように、ご注意下さい
0964デフォルトの名無しさん
垢版 |
2017/11/24(金) 18:58:32.56ID:ZonWriwn
やべ
gem書いてんだけどプルリク第一号が来てたのわからずにひと月放置しちまった
催促とかは来てないけど幻滅されてそう
0965デフォルトの名無しさん
垢版 |
2017/11/24(金) 19:10:05.09ID:rLZHdQ3Q
荒れそうな話題だから今は止めとけ
それよりスレ立てのテンプレ、アレでいいのか?
書籍と開発環境と、後何必要?
0970デフォルトの名無しさん
垢版 |
2017/11/25(土) 09:43:05.58ID:IhD+SBpG
チェリー本の発想が29日だってよ・・・
品薄なのか人気なのかよくわからんが
なぜ後も遅れる・・・(本日発売日)
0971デフォルトの名無しさん
垢版 |
2017/11/25(土) 11:05:50.65ID:RefiArAO
    _, -―- 、 _
    ,r’        ` ,
   _.l /⌒ヽ   /⌒ヽ !
  ( l ‘,.− 、!   !,.−、’ l’`)
   >.}⊂・⊃  ⊂・⊃ {く
  .(_{ ≡ _ `^´_ ≡,}_)
    ヽ_’´  `”´  `’ _ノ さだめじゃ
    ,<`8~「 ̄「~8´>、
   /  |. 8 ヽ./ 8 |  ヽ
  〈   |=Po.o.9=|   〉
   `ーL…____..」ー'”
     ├‐rー?ーr‐┤
     し’      ゝJ
0972デフォルトの名無しさん
垢版 |
2017/11/25(土) 12:13:45.45ID:afKOSqxS
話を変えるけど、
過去スレをさかのぼってみたら、テンプレがかなり充実してた
初心者スレと統合する前の本スレへのリンクとか色々張ってあったけど、
今のテンプレのほうが面倒くさくなくて俺は好きだな
0978デフォルトの名無しさん
垢版 |
2017/11/25(土) 21:52:47.44ID:9rIP/paY
へたくそな自演だな
いつもの荒らしか


975デフォルトの名無しさん2017/11/25(土) 20:46:19.88ID:IhD+SBpG>>976>>977
せっかく久しぶりの入門書発売でも全く盛り上がらんな

976デフォルトの名無しさん2017/11/25(土) 20:49:19.60ID:oOkyLeSs
>>975
Rails時代が異常だったんだよ
島国の一部のヲタが愛好する言語に戻っただけ

977デフォルトの名無しさん2017/11/25(土) 20:51:46.96ID:X7an3KDk
>>975
Railsブームの頃にRuby始めた奴が
もう入門書レベルを卒業しちゃったからじゃね
0979デフォルトの名無しさん
垢版 |
2017/11/25(土) 22:15:02.16ID:iUpRsQIG
どの本も値段が高すぎる。せめて電子書籍は半額以下でいいだろと思う
packtなんか年100ドルで読み放題やってたりするのに
0981デフォルトの名無しさん
垢版 |
2017/11/26(日) 00:28:09.81ID:zBIai8/a
初心者向けrub本も良いけど、
rubyからOpenglでシェーダーを扱う書籍とか、
rubyで分散コンピューティングの書籍とか、
こう、興味を惹かれる内容の、中級者上級者向け書籍も必要だよ
0982975
垢版 |
2017/11/26(日) 01:02:22.07ID:fYnoK36B
>>978
お前がアラシだ
0983デフォルトの名無しさん
垢版 |
2017/11/26(日) 01:16:57.25ID:QP3khMj1
相葉 (‘◇‘)

松本 ノノ`∀´ル

二宮 ヽ.゚ー゚ノ

櫻井 (`・3・´)

大野 (´・∀・`)
0985デフォルトの名無しさん
垢版 |
2017/11/26(日) 01:49:12.00ID:fYnoK36B
>>へたくそな自演だな
とかコピペ張るやつの方も注意したら?

貴ノ花ばかり責めるマスゴミみたいなやつだな
0986デフォルトの名無しさん
垢版 |
2017/11/26(日) 01:59:36.67ID:po9rLop3
荒らしは放置で!

荒らしと会話するな。
荒らしが喜ぶだけ。ずっと荒らしが居続けるだけ
0987デフォルトの名無しさん
垢版 |
2017/11/26(日) 02:48:32.31ID:azT4+Y0L
IDを変えられても中身がバカのままみたいなので、
自演できてない事に気がついていなさそう
0989デフォルトの名無しさん
垢版 |
2017/11/26(日) 03:56:41.23ID:zBIai8/a
>975デフォルトの名無しさん2017/11/25(土) 20:46
>976デフォルトの名無しさん2017/11/25(土) 20:49
>977デフォルトの名無しさん2017/11/25(土) 20:51

ヒントは書き込み時間
0990デフォルトの名無しさん
垢版 |
2017/11/26(日) 04:18:29.57ID:azT4+Y0L
>>989
IDを変えて自演して荒らそうとする奴がこのスレにいる、
なんて事前情報があるのにこれでバレないと思う方がおかしいよな?

ここまでのレスでもエディタの話を蒸し返そうとしたり、
ばればれの擁護したり、
なんで荒らしは自分から自演してます宣言を出してんだろ
0995デフォルトの名無しさん
垢版 |
2017/11/26(日) 15:36:32.36ID:azT4+Y0L
まだ理解してないのか
ここまでくると本人の頭の責任じゃなくて親の教育の責任だな
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 93日 2時間 31分 16秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

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

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