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

■ このスレッドは過去ログ倉庫に格納されています
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/
2017/09/17(日) 22:58:55.88ID:iyMogwhx
|x; foo|
↑の foo のような、変素宣言と変わらない素晴らしい存在と出会うことが出来ます
ちなみに python にも nonlocal という素晴らしいお友達が居ます
変数宣言を無くして代入で代用するアイデアは本当にうまく行きます
「@」に出会うことが出来るし
レキシカルスコープについて考えると夜も眠れないほどです
2017/09/17(日) 23:06:07.39ID:G7neoTxj
Ruby のブロック(クロージャ内の)変数だろ

python のnonlocal は、いらんわ。
親のスコープへ、遡って探しに行く、変数だよね
303デフォルトの名無しさん
垢版 |
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 は過ちのレベルがあまりに初歩的すぎるのよ
304デフォルトの名無しさん
垢版 |
2017/09/17(日) 23:28:50.19ID:vAwE04IK
>>299
>Ruby 以外の動的言語は、関数の外で宣言した変数が、
>関数の内側で、使えるよな

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


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

いや、メソッドの入れ子定義を禁止したことで、スコープの定義が簡潔なだけ
というか、Python や JavaScript のような関数の入れ子定義ができる
動的型付け言語でも、関数宣言は必要無いから、何を言いたいのだろうか?
305デフォルトの名無しさん
垢版 |
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 は「仮引数(パラメタ)」という概念を知らないのかなあ?
306デフォルトの名無しさん
垢版 |
2017/09/17(日) 23:54:56.42ID:vAwE04IK
>>304
>動的型付け言語でも、関数宣言は必要無いから、何を言いたいのだろうか?

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

補足しておくと:
・JavaScript は予約語 var で始まる変数宣言の構文があるけど、
 省略すれば暗黙的に宣言される
・Python の型アノーテーションは、その名アノーテーションとあるように
 コメント扱いだから変数宣言の意味とは全く異なる存在であるし、
 当たり前だけど省略できる
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
308デフォルトの名無しさん
垢版 |
2017/09/18(月) 01:38:17.76ID:+b1AQYPX
>>307
>Ruby: それはstdlibが搭載されているモジュールをrequireすると、
>整数割り算の動き方に影響を与えてしまう言語。 @tomdale

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

外部モジュールの import うんぬんとは無関係に、バージョンによって
素の「整数割り算の動き方」が変わってしまうナイスジョーク言語(>>209)と
一緒にしないでね!!(棒
2017/09/18(月) 02:48:06.01ID:nAoTSCTK
>>307
>変数宣言を代入で代用するアイデアは本当に素晴らしいですね

へ??
2017/09/18(月) 04:01:15.69ID:rETRD+xz
lambda { |x; foo| …… }

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

JavaScript でも、undefined が予約語ではないから、
わざと引数に代入せずに、undefined を作る方法がある
2017/09/18(月) 08:11:23.91ID:vEKmFrOo
糞自演でスレを荒らすなよ屑
2017/09/18(月) 09:16:48.21ID:nAoTSCTK
>>310
fooに代入するって何?
2017/09/18(月) 09:47:51.23ID:rETRD+xz
X だけに代入して、foo には何も代入しなければよい

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

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

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

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

requireするしないで、割り算の挙動が変わる方が悪質
2017/09/18(月) 11:19:25.70ID:Rs/BRyvp
ああ分かりにくい日本語になってしまったな

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

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

ただやるかやらないかと出来る出来ないは別の話だと思うし
requireする前に説明文読まない人はいないでしょう。
まあ間接的にrequireされてたら憤死ものですが…。
2017/09/18(月) 12:06:43.11ID:H26Q6EL5
逆に言うとrequireするだけで、自分のタイミングで置きかえれるのは柔軟
2017/09/18(月) 12:59:55.26ID:nAoTSCTK
いつもの荒らしを相手にしてごめんなさい
私が馬鹿でした
323デフォルトの名無しさん
垢版 |
2017/09/18(月) 13:19:24.65ID:KVRZIFdh
なんかこのアンチ、思い込みが激しくない?
2017/09/18(月) 14:08:56.09ID:T75MpWNi
確認したらmathnライブラリは非推奨扱いになってる
リファインメントを使う代替ライブラリがあるのかな
mathn自体使った事はないけどさ
2017/09/18(月) 14:22:24.92ID:NfLL63dw
こういう人の話を聞かないで延々、一人しゃべりしてるやつって気持ち悪い
2017/09/18(月) 14:50:20.87ID:/S27bRBH
おまい2ちゃん初めてか?
2017/09/18(月) 15:01:07.52ID:KVRZIFdh
現実で話し聞いてくれる相手を見つけなよ
328デフォルトの名無しさん
垢版 |
2017/09/19(火) 00:51:54.54ID:qwtMAuXO
荒らしはまずその嘘をつく癖を直さないと
2017/09/19(火) 11:48:35.35ID:oRSrnZEU
オープンクラス、つまりモンキーパッチは嫌われてる

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

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

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

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

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

こんなんも。
344デフォルトの名無しさん
垢版 |
2017/09/21(木) 02:02:31.36ID:zN1Ojhkv
どっかでrubyからC/C++に変換する物を見たけど、
どこだったかな?
2017/09/21(木) 07:56:13.32ID:jI+7buuF
荒らしが出てこない所を見ると、学部生の夏休みは終わっちゃったか
2017/09/21(木) 08:02:41.56ID:i2z8B4+0
LLVMの中間言語に変換するのはまだ完成してなかったんだっけ
347デフォルトの名無しさん
垢版 |
2017/09/21(木) 08:59:07.48ID:az3FYHb4
単位取得ギリギリの学生さんは、夏休み中イライラ爆発してんだろうねぇ。
最近は、単位バラマキなんだけか?
2017/09/21(木) 13:03:17.36ID:kkyna6sC
JRuby は?

JVM 中間コードから、逆コンパイルできるかも?
2017/09/21(木) 18:45:40.87ID:iiWOifkH
>>348
聞いたことないんですね。作ってもらえるんですか?
2017/09/21(木) 18:51:20.23ID:Ei962/hq
>>348
JRubyのランタイムにがっつり依存したクソビッチなコードをゲロゲロするから使い物にならんよ
2017/09/21(木) 20:38:47.71ID:K0No9bcT
釣りにやさしい反応を返すRubyist
2017/09/21(木) 22:44:42.25ID:ttsHKcWH
Ruby自体が釣り言語だからな
2017/09/21(木) 22:50:21.57ID:ttsHKcWH
しかし、釣った後の魚をどうするかで困るんだよな
本当に魚じゃあるまいし、無下にも出来ない
せっかくスコープをグチャグチャにしてまで変数宣言を無くしたわけで
それが結局メリットが無いのが皆にバレても、今更ね
2017/09/21(木) 23:01:34.46ID:ttsHKcWH
変数宣言に型を書かなくてもよいって所までは
動的型にすれば簡単なんだけど
ここで誤って勢いあまって変数宣言自体を無くすところまでやると
スコープがぐちゃぐちゃになる
代入で変数宣言を代用しても
新しい変数への代入なのか、既存の変数への代入なのか、区別がつかない
そこへきて、動的型自体にメリットが無いことが広く知れ渡ってしまったもんだから
スコープをグチャにしてまで変数宣言を無くした意味がもうワケワカ
ここで変数に静的な型を付けるよう改良するなら、変数宣言も復活する話になるし
変数宣言があるなら普通のレキシカルスコープでよい話になるので
今までのキメラ的な苦労が水の泡
素晴らしい
2017/09/21(木) 23:54:47.40ID:qyztOB8O
オメーの話なんざ価値ねーから
1行未満にまとめとけや
2017/09/22(金) 00:00:54.86ID:GRZGpevQ
1行未満って0行じゃんw
消えろっていう表現ってことかーいいね、その使い方w
2017/09/22(金) 00:41:00.54ID:9s7VGfiV
いつもの人だと思うけど
こういうのは即NGできるので助かるわー
358デフォルトの名無しさん
垢版 |
2017/09/22(金) 08:48:34.24ID:CYSXe8iX
単位没収確定
2017/09/23(土) 13:02:09.34ID:WtNBJIHg
今だにruby1.9.3以下がメインですが、今の言語・システムの設計では、変数宣言とスコープが今の論点の一つなんですか?
思いついた解法を書くつもりは特に無いですが。
2017/09/23(土) 14:54:45.80ID:j6VCxv0o
全然
皆もっと先を行ってるけど
Rubyは一番最初の時点で躓いてるってだけだね
「@」
2017/09/23(土) 14:58:52.93ID:Dvp9BlYO
perl嫌いって言いつつperlの真似しちゃってるのがね
2017/09/23(土) 15:23:09.65ID:xCJjTQ1w
>>359
lambdaの引数で、|a,b;x,y|という記法が追加されたんだよね。
事実上、ここにだけ変数宣言が追加されたってことなので、ヘンな弱みみたいになってるかも。
2017/09/23(土) 15:32:32.74ID:WtNBJIHg
つまづく原因は、履いてる靴が悪いのか、障害物があるのか、のどちらかでしょう。頑張り過ぎ、何でもござれ、全方位対応は、昭和時代の思い出です。
stringの、force_encoding (String)あたりはrubyならではの釣りだと思います。java9のstringは内部はbyte[]みたいになるそうですけど。
ところでrubyの、初心者じゃない方の質問スレは、いつ消えたんですか?
2017/09/23(土) 15:41:14.27ID:PFKg/P6i
またいつもの人だね
NG捗らないからID変えならが書くのやめて欲しいわ
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){}みたいな話ですか?
2017/09/23(土) 16:14:06.50ID:89h9xiW6
FXRubyなんていう便利な代物を今更知った
RubyにもちゃんとGUI作れるツールあるじゃないか!
2017/09/23(土) 16:50:37.72ID:xCJjTQ1w
>>365
> pl5に未来はありません。
きっとまだまだ未来はある。
クソ変化をする可能性がほとんどないからな。

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

> >>362
> js: function(a,b){}みたいな話ですか?
近いかも。
jsも、関数スコープしかないけど、ムリヤリ無名関数にすれば外を汚染しないとかあるからな。
2017/09/23(土) 17:28:51.15ID:WtNBJIHg
私のお聞きしたことに答えないなら、このスレで私がお役に立てることは無いです。
>>366
www.fxruby.orgは接続できませんでした。fox tkですね。guiは、はるか昔に考えたことがあります。が、普通はwxwidgets,tcltk,javaswingじゃないですか。guiを今ならhtmlしかないです。
作ってみても、どうせformもどきでしょ。しかもコードは、処理(命令)と云うより構造(宣言)だらけだし。
>>367
あなたとお話することはなさそうです。私が知ってることばかり、または、容易に推論できることばかりです。その程度の指摘しかできないなら、ググれば十分です。なので、あなたが、私へ、時間を使う、必要は、ありません。
369デフォルトの名無しさん
垢版 |
2017/09/23(土) 18:41:00.21ID:oQZcLwSS
>guiを今ならhtmlしかないです。
xmlならwx,qt,gtkなどよく見るけどhtmlってどんなの?
HTA的なものがあるのかな
2017/09/23(土) 18:46:39.04ID:WtNBJIHg
>>369
stringが不明ですね。あなたは蟲なんですか?
2017/09/23(土) 19:23:40.35ID:xCJjTQ1w
>>368
なにこいつ(|||´Д`)
2017/09/23(土) 20:26:38.45ID:WtNBJIHg
rubyスレでも、達人はいなくなったんですね。寂しい限りです。
2017/09/23(土) 20:30:41.03ID:b6I3iAXW
もともといない
2017/09/23(土) 20:46:17.06ID:WtNBJIHg
>>373
ID導入の数年前までは少しいましたよ。今は、rubyの達人さんたちはどこにいるんでしょうか?
375デフォルトの名無しさん
垢版 |
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]  # あれれ、グローバル変数なのに書き込みできてしまったぞぉ?!(棒
2017/09/23(土) 21:49:13.50ID:WtNBJIHg
ああ。このレベルなんですか。このスレは。よく分かりました。
377357
垢版 |
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 で修正されて
「後方互換性の断絶」が再現されるんでしょうね
2017/09/23(土) 23:21:12.35ID:b6I3iAXW
>>376
このスレに達人がいると言うつもりもないけど
そんな一方的に上から目線になるほど
レベルの高いレスしたの?

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

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

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


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

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

Ruby のそれが「ヘンな弱み」なら Python のそれは「トラウマレベルの致命的欠陥」です
でも、そこまで言うのはあまりに酷すぎるんじゃないかと思います(棒
かわいそうなので、Python に関する話題は止めにしませんか?
2017/09/23(土) 23:43:28.77ID:WtNBJIHg
pyでは、ブロック {} do endのサポートはされたんですか?
2017/09/23(土) 23:45:31.47ID:WtNBJIHg
>>378
そのレベルの高低は、何を基準としてでてきたんですか?
382357 改め 375
垢版 |
2017/09/23(土) 23:55:10.03ID:lJM5VEju
名前欄と>>377内のアンカが間違っていたので訂正:

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

あと >>377 の grobal はglobal の typo
2017/09/24(日) 00:06:19.23ID:ry31kkE4
pyの話やpyの言語specはすれ違いです。まず、pyを使い続けることに疑問を持ったほうがいいでしょう。
人工知能など、十数年の周期で起きているインフルエンザです。あと2年は流行が続くでしょうけど、ノイマン型の限界で研究も限界が来るでしょう。そのときにpyの人気も終息します。
どうせバイトコードにするなら実行速度など比べても仕様がないと思うんですけど。なんでどうしようもないところを気にするんでしょうか。シングルスレッド?マルチスレッド?知能が低い人の考えてることは、なんだかよく分かりません。
2017/09/24(日) 00:54:08.29ID:ZoycLPfe
>>381
>>376
自分で「レベル」って言い出したんじゃん

スレのレベルより突出して
高いレスはないって言いたいだけ
385デフォルトの名無しさん
垢版 |
2017/09/24(日) 06:59:11.54ID:bAyFiwH3
最近、このスレ以外でもマッチポンプ目的で荒らしが出没してるから気をつけて
2017/09/24(日) 09:08:31.15ID:L7/sMAP/
Pythonのスコープはひどいが、Rubyスレで言うことではないし
同じようにRubyのスコープもひどいのだから笑えない
「@」はどう見ても今時ではないし
if文などがスコープを持てないのも酷い
これらは変数宣言を無くしたからそうなった
明らか
387デフォルトの名無しさん
垢版 |
2017/09/24(日) 09:21:53.62ID:bAyFiwH3
みんな釣られないでね
2017/09/24(日) 09:32:00.62ID:L7/sMAP/
Pythonのスコープは本当にバグってて
変数への代入の有る無しでスコープが変わる
どこのスコープに属しているか調べるのに
代入の有る無しを調べなければならない
変数への代入があればインナースコープで
参照のみならアウタースコープ
つまりは 変数宣言を無くしたことで
変数宣言->変数への(最初の)代入 としたので
代入の有る無しでスコープが変わるという糞になった
これに加えてnonlocalまである
このような動作は安全性の面から好ましいという人もいるが
それは絶対嘘で、実装上の都合でそうなったに過ぎない
本当にひどいと思うが
しかしRubyのスコープが優れているという結論には繋がらない
2017/09/24(日) 09:38:59.52ID:L7/sMAP/
Pythonは一例だが
基本的に変数宣言を無くすとスコープの仕様がバグる
だから変数宣言は有ったほうが良いし
どうせ変数宣言するんならオプショナルで型をけても悪くない
という風に考えていくと、すごくありきたりな言語が出来上がる
Rubyの最初のバージョンがそういう形で出来上がっていたら良かったが
一番最初の基本的な部分で誤ってしまって今更修正できない
修正すると、ごく普通の言語の仲間入りをするがRubyではなくなる
だから素晴らしい
390デフォルトの名無しさん
垢版 |
2017/09/24(日) 09:40:47.21ID:EATy0LdH
スレ違い

なんでわざわざRubyスレ来てるんだろうかこの荒らし
寂しいの?
2017/09/24(日) 10:41:11.83ID:tu0D//Rh
>>366-369
Redmine は、Rails
2017/09/24(日) 14:06:06.63ID:ry31kkE4
便所の隅っこで、しかもrbスレでpyの話をしても、もしかしてアスペ?
393デフォルトの名無しさん
垢版 |
2017/09/24(日) 17:06:53.98ID:bAyFiwH3
10スレ程前のスレを試しに見てみ
2017/09/24(日) 19:42:53.06ID:D2B0Yv9Y
何も見えません!!
395デフォルトの名無しさん
垢版 |
2017/09/24(日) 22:11:40.34ID:bAyFiwH3
荒らしはうせろ
396デフォルトの名無しさん
垢版 |
2017/09/25(月) 00:21:12.84ID:CVLN5qtY
ID:WtNBJIHg(>>363,365,368,370,372,374,376,380,381)
 http://hissi.org/read.php/tech/20170923/V3ROQkpJSGc.html

ID:L7/sMAP/(>>368,388,389)
 http://hissi.org/read.php/tech/20170924/TDcvc01BUC8.html
397デフォルトの名無しさん
垢版 |
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)
2017/09/25(月) 01:36:00.79ID:SyR0/asg
さて同胞がRubyのスレでPythonの悪口言ってますよ
皆さん擁護してあげてください
2017/09/25(月) 02:09:17.63ID:Lq2k6P7o
よっしゃ
んじゃ俺はPythonスレでRubyを的外れにディスってくるぜ!!!!!
2017/09/25(月) 05:28:37.17ID:AJ+0XaK7
リアルで話相手見つけろ
ここにおまえを構ってくれるほど暇な人はいない

受け付けているレスは初心者の質問中心だ
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年目以降は不具合の修正に対応しない」と主張するベンダーはまれだ。多くの場合は、納品から何年たっても、
バグが見つかればユーザーのところに飛んで行き、無償で改修するだろう。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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