Rubyについて(アンチ専用) Part005 (342レス)
Rubyについて(アンチ専用) Part005 http://mevius.5ch.net/test/read.cgi/tech/1555162340/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
182: デフォルトの名無しさん [sage] 2019/12/26(木) 10:26:37.91 ID:uIk/XshQ なるほど、これが「愚者」なんだな http://mevius.5ch.net/test/read.cgi/tech/1555162340/182
183: デフォルトの名無しさん [sage] 2019/12/26(木) 15:02:17.46 ID:3AF5y/RY 「愚者は経験から学び賢者は歴史から学ぶ」←? よく分からなかったので丁寧に解説。 https://blog.goo.ne.jp/booter/e/ff3e7f69d7cfb970ce09147cb5b8b037 http://mevius.5ch.net/test/read.cgi/tech/1555162340/183
184: デフォルトの名無しさん [sage] 2019/12/26(木) 15:05:36.50 ID:V8wfE0dN > 「愚者は経験から学び賢者は歴史から学ぶ」。 > 結論から言うと、これは誤訳である。 ワロタw http://mevius.5ch.net/test/read.cgi/tech/1555162340/184
185: デフォルトの名無しさん [sage] 2019/12/26(木) 15:14:05.20 ID:/uKQZJNY 歴史=他人の起こした出来事って意味がわからんやついるんだな 読解力がなさすぎるか日本人じゃないか http://mevius.5ch.net/test/read.cgi/tech/1555162340/185
186: デフォルトの名無しさん [sage] 2019/12/26(木) 15:18:07.97 ID:V8wfE0dN だからその「歴史」が誤訳なんだがな。もともとは歴史なんて言ってない http://mevius.5ch.net/test/read.cgi/tech/1555162340/186
187: デフォルトの名無しさん [] 2019/12/31(火) 19:32:08.67 ID:z/4e8Z8b すみません、初学者で苦労してまして・・ Rubyxlでエクセルのテンプレートを編集したく そこで、特定のセルをコピーして特定のセルに貼り付ける 操作を行いたいのですが、ネットで検索しても全くヒットせず 有識者のかたいらっしゃれば、ご教授いただけましたら幸いです。。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/187
188: デフォルトの名無しさん [sage] 2019/12/31(火) 20:25:07.74 ID:ozxOKIBe 5ch では、マルチポストは禁止です! 同じ質問を、複数のスレに書き込んではいけません! ここで質問せず「Ruby 初心者スレッド Part 65」の方を使ってください! http://mevius.5ch.net/test/read.cgi/tech/1555162340/188
189: デフォルトの名無しさん [sage] 2019/12/31(火) 20:41:41.22 ID:TaZygSKX しかし、「アンチ専用」のスレで聞くかね。w http://mevius.5ch.net/test/read.cgi/tech/1555162340/189
190: デフォルトの名無しさん [sage] 2020/01/01(水) 16:26:40.85 ID:AV+0j7FA 愚者は経験にも学ばない http://mevius.5ch.net/test/read.cgi/tech/1555162340/190
191: ◆QZaw55cn4c [sage] 2020/01/02(木) 20:28:10.19 ID:VmmTWzwp >>183,184 ビスマルクとは知らなかった、あのビスマルクの言葉だったとは…これは勉強になりましたね、 http://mevius.5ch.net/test/read.cgi/tech/1555162340/191
192: デフォルトの名無しさん [sage] 2020/01/02(木) 20:49:43.56 ID:Ifo0PTAe 翻訳者が「盛った」んだろう http://mevius.5ch.net/test/read.cgi/tech/1555162340/192
193: デフォルトの名無しさん [] 2020/01/03(金) 10:40:11.91 ID:lHIykz7y 試験では部分点すらもらえないタイプ http://mevius.5ch.net/test/read.cgi/tech/1555162340/193
194: デフォルトの名無しさん [sage] 2020/01/26(日) 01:41:18.79 ID:HPdacZve rubyXLでエクセルいじってるが 印刷範囲を設定したいときは、どのようにすればよいのでしょうか? いろいろ探しても見当たらず・・ http://mevius.5ch.net/test/read.cgi/tech/1555162340/194
195: デフォルトの名無しさん [] 2020/01/26(日) 11:02:44.69 ID:+3DuCtIS まるち http://mevius.5ch.net/test/read.cgi/tech/1555162340/195
196: デフォルトの名無しさん [] 2020/04/05(日) 16:08:20.26 ID:PRah2Hwr まつもとはtraitの仕様を入れたけど そもそもなんのために入れたんだか忘れたって後から言ってる まつもとのバグはrubyのバグと言っても良い http://mevius.5ch.net/test/read.cgi/tech/1555162340/196
197: デフォルトの名無しさん [sage] 2020/04/05(日) 17:30:57.49 ID:liJZihU7 最近trait関係で何かバグった? http://mevius.5ch.net/test/read.cgi/tech/1555162340/197
198: デフォルトの名無しさん [sage] 2020/04/05(日) 19:43:30.76 ID:oKEzp2HP matzももうrubyやめたいんじゃねーの? http://mevius.5ch.net/test/read.cgi/tech/1555162340/198
199: デフォルトの名無しさん [sage] 2020/04/06(月) 00:41:04.88 ID:qqlpdYMz 生前退位するしかないじゃない http://mevius.5ch.net/test/read.cgi/tech/1555162340/199
200: デフォルトの名無しさん [sage] 2020/04/06(月) 00:49:24.62 ID:UGXjqJtL 特定の独裁者が仕切る開発はもう時代にあってないよね 言語の与える影響があまりに大きくなりすぎた http://mevius.5ch.net/test/read.cgi/tech/1555162340/200
201: デフォルトの名無しさん [sage] 2020/04/06(月) 02:54:18.30 ID:qqlpdYMz そう言えば、GuidoとかRMSは生前退位したんだっけ http://mevius.5ch.net/test/read.cgi/tech/1555162340/201
202: デフォルトの名無しさん [sage] 2020/04/06(月) 19:57:19.50 ID:lqJgR+VC >>200 独裁は必要。 でないと、決めればいいところが決まらん。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/202
203: デフォルトの名無しさん [sage] 2020/04/06(月) 19:58:17.80 ID:lqJgR+VC >>201 RMSは自主的だっけ?w http://mevius.5ch.net/test/read.cgi/tech/1555162340/203
204: デフォルトの名無しさん [sage] 2020/04/06(月) 20:19:21.32 ID:Cbp9XIJ2 >>203 解任はされてないな http://mevius.5ch.net/test/read.cgi/tech/1555162340/204
205: デフォルトの名無しさん [sage] 2020/04/08(水) 00:43:15.65 ID:X5vOHYGK いつかLinusもしんどくなって生前退位する日が来るのだろうか http://mevius.5ch.net/test/read.cgi/tech/1555162340/205
206: デフォルトの名無しさん [sage] 2020/04/08(水) 00:48:37.00 ID:X5vOHYGK >>203 FSFの前に、Emacsは先に人に任せてなかったけ。あれもなんで降りたのかは忘れたけど http://mevius.5ch.net/test/read.cgi/tech/1555162340/206
207: デフォルトの名無しさん [sage] 2020/04/08(水) 02:31:40.72 ID:xtDs1sbk >>205 何年か前に、暴言きっかけかなんかで、しばらく休んでたやん? 来るべき引退に向けての予行演習でもあったんでは。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/207
208: デフォルトの名無しさん [sage] 2020/04/08(水) 02:41:18.01 ID:8EkDixDm 暴言復活したよ http://mevius.5ch.net/test/read.cgi/tech/1555162340/208
209: デフォルトの名無しさん [] 2020/04/08(水) 12:34:28.55 ID:lWfV0IAd RMSもし糖尿だったらコロチャンから守ってやれよ http://mevius.5ch.net/test/read.cgi/tech/1555162340/209
210: デフォルトの名無しさん [sage] 2020/04/09(木) 00:24:07.68 ID:V4nj16/7 >>207 あー、あったなあ…たしかに意図したかどうか予行演習になったなあ http://mevius.5ch.net/test/read.cgi/tech/1555162340/210
211: デフォルトの名無しさん [sage] 2020/04/11(土) 09:39:55.39 ID:blHAWxBh 右代入が酷い 俺の記憶が正しければ 末尾に追記することで変数への代入ができるのが右代入だったよな 1+2=>x がエラーになるんだがコレ何の意味があるんだ? >>196 taintのこと? http://mevius.5ch.net/test/read.cgi/tech/1555162340/211
212: おい!小池!!! [] 2020/04/11(土) 12:29:25.22 ID:YESHHzyk 花よりコロナ http://matz.rubyist.net/20080129.html http://mevius.5ch.net/test/read.cgi/tech/1555162340/212
213: デフォルトの名無しさん [] 2020/04/11(土) 18:52:11.59 ID:Z+CRFteF >>211 Rubyの構文解析器の気持ちになればわかるよ! 君のコンピュータに近づこう コンピュータはルール通りのことを間違いなくやる そのルールに人間が合わせればいいんだよ! http://mevius.5ch.net/test/read.cgi/tech/1555162340/213
214: デフォルトの名無しさん [sage] 2020/04/19(日) 20:37:57.87 ID:38rg7boC 名前のタイプミスを狙った悪質なパッケージがRubyGemsで多数公開される https://security.srad.jp/story/20/04/18/1920212/ http://mevius.5ch.net/test/read.cgi/tech/1555162340/214
215: デフォルトの名無しさん [sage] 2020/06/21(日) 18:35:09.90 ID:46NGSGFN Ruby の使い過ぎで凋落なのかな? 2020.06.08 06:10 クックパッドの凋落、利用者1千万人減で赤字転落…人気のクラシルと真逆の方向 https://biz-journal.jp/2020/06/post_161220.html?utm_source=rss20&utm_medium=rss http://mevius.5ch.net/test/read.cgi/tech/1555162340/215
216: デフォルトの名無しさん [sage] 2020/10/14(水) 10:25:01.72 ID:5w+mUOps まつもとゆきひろのツイッターを見てRuby使うのをやめようと思った https://anond.hatelabo.jp/20201013213028 http://mevius.5ch.net/test/read.cgi/tech/1555162340/216
217: デフォルトの名無しさん [] 2020/10/14(水) 11:16:18.04 ID:GsUUoEHv 正解 気付くの遅い http://mevius.5ch.net/test/read.cgi/tech/1555162340/217
218: デフォルトの名無しさん [sage] 2020/10/14(水) 11:24:50.05 ID:eKBY9SEr 坊主憎けりゃ袈裟までで中身は無いな これに関係なくRubyはオワコンコースだと思ってるけどな http://mevius.5ch.net/test/read.cgi/tech/1555162340/218
219: デフォルトの名無しさん [sage] 2020/10/14(水) 13:24:36.30 ID:rQGDkRcC 作者のふるまいを気にするなら、Linuxもダメだな。 Linusは暴言家だからな。 Guidoもなんかなかったっけ? Larryはいい人そうだ。 なお、ワイもMatzはキライ。 昔、C++とPerlに言いがかりをつけていたことは忘れん。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/219
220: デフォルトの名無しさん [] 2020/10/14(水) 13:49:54.44 ID:OK1/udlE Windows も dis ってたよ 漏れも Windows 嫌いだから良いけど http://mevius.5ch.net/test/read.cgi/tech/1555162340/220
221: デフォルトの名無しさん [sage] 2020/10/14(水) 14:58:18.18 ID:c3J9iMWN >>219 Linus反省したじゃん。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/221
222: デフォルトの名無しさん [sage] 2020/10/14(水) 15:12:13.71 ID:4AmK2QjE 採用や仕事でRubyは嫌いだ使いたくないという人がいて 技術的理由説明しないで作者の政治思想が 嫌いだからとか言い出したら帰ってもらうのは 間違いない http://mevius.5ch.net/test/read.cgi/tech/1555162340/222
223: デフォルトの名無しさん [sage] 2020/10/14(水) 16:17:57.90 ID:z5Uy/Vd3 キリスト教の事を言い出したら、米国人は皆、キチガイじゃん 誰も進化論を信じていない。 人間は元から、猿じゃなかった。人間の姿のままだった 地動説も信じているかどうか、怪しい 中絶・同性婚を認めてはならない http://mevius.5ch.net/test/read.cgi/tech/1555162340/223
224: デフォルトの名無しさん [sage] 2020/10/14(水) 20:36:09.48 ID:QEXq7zvm 結局PythonとJavaScriptの二強になってしまったな 次点でGoか この3つの流行に食い込むのはもう無理そう http://mevius.5ch.net/test/read.cgi/tech/1555162340/224
225: デフォルトの名無しさん [sage] 2020/10/15(木) 20:07:16.15 ID:ODWTBHyE Ruby3の型ヒント実装あんなのエコシステムとして成立するのか? http://mevius.5ch.net/test/read.cgi/tech/1555162340/225
226: デフォルトの名無しさん [sage] 2020/10/17(土) 13:59:12.80 ID:cX3MrjsP ローカル変数がちゃんと使いたいので、 Rubyからnode.jsに乗り換えようと努力している最中だったが、 node.jsはファイル関連が分かりにくい。 Rubyだとstdoutとファイルが対象になっていて、 print を fp.print に変えてやれば、ほぼそっくりそのまま動作してしまうが、 node.jsだと複雑そうだ。 あと、ファイル操作が基本的に非同期推奨なのも辛いし、非同期と同期の二系統あるので混乱が生じ易い。 複数ファイルのコピーもRubyは簡単に出来るが、node.jsだとncpという モジュールでやるが、これも非同期なので、promiseでthenやawaitを使った待機が必要になる。 しかし、それをしだすと、すべてがasync,await,thenなどを前提に書くことが必要になり、 非常に複雑になる。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/226
227: デフォルトの名無しさん [sage] 2020/10/17(土) 14:00:01.08 ID:cX3MrjsP >>226 誤: Rubyだとstdoutとファイルが対象になっていて、 正: Rubyだとstdoutとファイルが対称になっていて、 http://mevius.5ch.net/test/read.cgi/tech/1555162340/227
228: デフォルトの名無しさん [sage] 2020/10/17(土) 14:32:30.10 ID:8P0N3Qw4 >>226 その辺がサーバーサイドでは使いにくい理由だよね 従来のシステムコールとはかけ離れてる ファイルを非同期で読み取りたいケースなんてほとんどないし http://mevius.5ch.net/test/read.cgi/tech/1555162340/228
229: デフォルトの名無しさん [sage] 2020/10/17(土) 16:11:52.56 ID:cX3MrjsP あともう一つ、Ruby だと list の要素に対する繰り返しは以下の様に簡潔に書ける。 for elem in list do elem に対する処理; end しかし、Node.js だと、 list.forEach( function(elem) { elem に対する処理; }); か list.forEach( elem => { elem に対する処理; }); としか書けないらしく、なんだか見にくい。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/229
230: デフォルトの名無しさん [] 2020/10/17(土) 16:25:59.95 ID:0qFIP5N2 list.each{elem| elemに対する処理} 似たようなもんやで http://mevius.5ch.net/test/read.cgi/tech/1555162340/230
231: デフォルトの名無しさん [sage] 2020/10/17(土) 16:35:37.45 ID:8mYxeAbP >>226 streamが標準出力にもファイルにも使えるでしょ。 consoleオブジェクトに出力してる事自体がイレギュラーかと。 async awaitを使えば、thenは必要ないと思うが、混同してないか? Promise.allでコピー処理を待てば、複数ファイルでもたいしてかわらんかと。 >>229 for(let elem of list)で充足できない理由は? http://mevius.5ch.net/test/read.cgi/tech/1555162340/231
232: デフォルトの名無しさん [sage] 2020/10/17(土) 16:38:07.81 ID:vimxgZ9f for elem in list do elem に対する処理; end が簡潔で、 list.forEach(elem => {elem に対する処理;}); や for (let elem of list) { elem に対する処理; } が見にくいの?w 老眼では?ww http://mevius.5ch.net/test/read.cgi/tech/1555162340/232
233: デフォルトの名無しさん [sage] 2020/10/17(土) 16:55:33.76 ID:4Rsat8LS Rubyでforループ使うか普通? 特殊なポリシー持ってるか全然使ってないのでは http://mevius.5ch.net/test/read.cgi/tech/1555162340/233
234: デフォルトの名無しさん [sage] 2020/10/17(土) 23:07:29.03 ID:3hrMdhxe >>232 ほんの些細な違いだろうという指摘は理解したいけど、楽しく書ける(= 思考を妨げない)ことをポリシーとしている Ruby に慣れ親しんでいると、そんなことも気になってしまうんだよなぁ xs.each { |x| # スコープを作る(関数型スタイル) x に対する処理 } または for x in xs # スコープを作らない(手続き型スタイル) x に対する処理 end それが JavaScript になると: ・なぜ丸カッコと波カッコを入れ子にしなきゃいけないのかなぁ どちらか一つでいいはずだし面倒くさいよね? xs.forEach ({ x => # スコープを作る(関数型スタイル) x に対する処理 }) ・なぜ変な予約語 let が必要なのかなぁ、あってもいいけど蛇足だよね?(>>231) for (x in xs) { # スコープを作らない(手続き型スタイル、従来からある構文) x に対する処理 } または for (let x of xs) { # スコープを作る(一見関数型に見えるが、手続き型スタイル) x に対する処理 } もちろん JavaScript が「後方互換性の維持」を厳守しつつ、機能(構文と意味)を発展させてきた成果は大いに評価している とはいえ、「老眼では?ww」という批判は、ちょいと低俗で低レベルな発言ではないかと思われ もっとも客観的には >>229 の注文が高尚すぎて(w、他言語ユーザーにはあまりにも厳しすぎるだろ、とは感じてる http://mevius.5ch.net/test/read.cgi/tech/1555162340/234
235: デフォルトの名無しさん [sage] 2020/10/17(土) 23:31:58.39 ID:8P0N3Qw4 >>234 あとfor inをプロトタイプ汚染されたオブジェクトに対して回すと恐ろしいことが起きるから基本的に非推奨だよ 書き方多過ぎるしアロー関数のthisの違いなど もはや罠が多過ぎて初心者に勧められる言語ではないと思う http://mevius.5ch.net/test/read.cgi/tech/1555162340/235
236: デフォルトの名無しさん [sage] 2020/10/17(土) 23:35:51.32 ID:cI54o2aO 好き好きとしか。 個人的には、C#とかC++(最近版)とかの論理的整合性のほうがはるかに。 Rubyも、えらそうなわりに、細かいところでいいかげんなところがちょくちょくあるんだよなあ。 えらそうでなければあまり気にならなかったのにな。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/236
237: デフォルトの名無しさん [sage] 2020/10/17(土) 23:57:03.67 ID:vNzukYIq そういう文法の癖をあげつらう方向なら Rubyも出てくると思うぞ http://mevius.5ch.net/test/read.cgi/tech/1555162340/237
238: デフォルトの名無しさん [sage] 2020/10/18(日) 00:04:38.13 ID:xWXtsYNK >>234 > 一見関数型に見えるが、 どこが?また半可通か。forで関数型とかあり得ないだろマヌケ。知らないなら黙ってろよww http://mevius.5ch.net/test/read.cgi/tech/1555162340/238
239: デフォルトの名無しさん [sage] 2020/10/18(日) 00:06:56.33 ID:4X85KByZ >>235 >あとfor inをプロトタイプ汚染されたオブジェクトに対して回すと恐ろしいことが起きるから基本的に非推奨だよ あえて触れなかったのですが、こう書くべきでしたね for (x in xs) { if (xs.hasOwnProperty(x)) { x に対する処理 } } 以下より引用:JavaScript: The Good Parts - 良いパーツによるベストプラクティス, C.10 for in 文, p140 >>236 >細かいところでいいかげんなところがちょくちょくある 同感ですね、自分もちょくちょくあります そういった事柄はこちらで遠慮せずに発言されてはいかがでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1555162340/239
240: デフォルトの名無しさん [sage] 2020/10/18(日) 00:14:51.55 ID:dOGGkbZr Rubyはバグりやすい言語だよ。 ・型安全でない ・前後の文脈を見ないとその部分単体ではローカル変数とメソッド呼び出しの見分けがつかない書き方ができ、しかもその書き方(メソッド呼び出しに()付けない)のほうが主流 ・reduce/inject、map/collectのように同じことするメソッドの単なる別名と、Array#delete_if/Array#reject!のようにほとんど同じなくせして削除失敗時だけ挙動が異なるみたいなべつものメソッドが入り乱れててカオス ・Procオブジェクト(手続きオブジェクト)を作る方法が多すぎ。しかも作り方で挙動が異なる。Rubyの書籍を書いた人でさえ頭を抱える始末 ・簡単に「見せかける」ために省略記法を行き当たりばったりで導入しまくった副作用で、直感的な記述が逆にエラーとなることが多い(例: p {foo: 1, bar: 2}はエラーwブロックとして解釈されるため) まだまだあるよ http://mevius.5ch.net/test/read.cgi/tech/1555162340/240
241: デフォルトの名無しさん [sage] 2020/10/18(日) 00:16:28.10 ID:dOGGkbZr Rubyは最も一般的な方法で定義した関数(関数じゃないw)が値として取り回せない(第一級関数でない)クソ言語wwwww def add(a, b) a + b end def opTwo(a, b, func) func(a, b) end p opTwo(1, 2, add) => Line 9:in `add': wrong number of arguments (0 for 2) (ArgumentError) from t.rb:9 プギャーm9(^Д^ ) ちなみにPython: def add(a, b): return a + b def opTwo(a, b, func): return func(a, b) print(opTwo(1, 2, add)) => 3 ちなみにJavascript: function add(a, b) { return a + b; } function opTwo(a, b, func) { return func(a, b); } console.log(opTwo(1, 2, add)) => 3 http://mevius.5ch.net/test/read.cgi/tech/1555162340/241
242: デフォルトの名無しさん [sage] 2020/10/18(日) 00:20:52.55 ID:dOGGkbZr でもまあRubyのどこが、なぜダメかってのをよく整理しながら考えることはそれはそれで勉強にはなるな。 何年か前の記事だが大変分かりやすい。 日本誤訳 https://postd.cc/sick-of-ruby-dynamic-typing-side-effects-object-oriented-programming/ 英語原文 https://blog.abevoelker.com/sick-of-ruby-dynamic-typing-side-effects-object-oriented-programming/ http://mevius.5ch.net/test/read.cgi/tech/1555162340/242
243: デフォルトの名無しさん [sage] 2020/10/18(日) 00:21:59.27 ID:2DM4LMSp >>241 まあそこは言語の特徴だから そういう用途にはブロックを使えってこと 関数呼び出しに()が必要じゃないのはDSLを書くためには優れた仕様 他の言語で言語内DSLは実質不可能 http://mevius.5ch.net/test/read.cgi/tech/1555162340/243
244: デフォルトの名無しさん [sage] 2020/10/18(日) 00:28:17.88 ID:Xfoy2gzb 明らかに他の言語どころかRubyの理解も 怪しいのがわかる http://mevius.5ch.net/test/read.cgi/tech/1555162340/244
245: デフォルトの名無しさん [] 2020/10/18(日) 00:28:24.01 ID:oU6L/1KQ 大学生起業家が設立1年で20億円調達! 単発バイトアプリに外食企業など出資【タイミー】 https://foodfun.jp/archives/3490 誰でもカンタンにオンラインサロン・情報配信ができる便利アプリ【TOUKU(トーク)】が登場 https://prtimes.jp/main/html/rd/p/000000001.000061569.html 中学時代の車いす生活から、17歳で起業するまで https://www.advertimes.com/20200130/article306925/ ミャンマー発 AIダイニングアプリ「Yathar」をしかける日本人起業家 https://roboteer-tokyo.com/archives/14840 自分の視野は「世の中の0.001%」と自覚せよ。ビジネスチャンスを掴む4つの習慣 https://headlines.yahoo.co.jp/hl?a=20200511-00010001-srnijugo-life アプリの視聴率がわかる 高専卒起業家の独創力 https://www.nikkei.com/article/DGXMZO46695580Y9A620C1000000/ 1万人の若者を支援!インターンが日本を変えるかも!? glowshipの若き創業者・足立卓也氏インタビュー https://sogyotecho.jp/glowship-adachi-interview/ まだ22歳の学生社長が得た、23億円の「使い道」 あの橋本環奈をCMに使うバイトアプリの雄 https://toyokeizai.net/articles/-/319511 http://mevius.5ch.net/test/read.cgi/tech/1555162340/245
246: デフォルトの名無しさん [sage] 2020/10/18(日) 00:32:03.16 ID:4X85KByZ >>233 自分はすっかり関数型プログラミングに慣れてしまったので、近頃だと for/while 文を 使うのは、古い Pascal や Perl のコードを Ruby へ写経(移植?)する時くらいですかね ちなみに Ruby のブロック構文ですが、副作用がなければ波カッコ { … } で、 副作用(破壊的代入やI/O処理)があれば do … end と使い分けています 以下は定石(パターン化した)コードの雛形(スケルトン)です result = xs.select { |x| … }.map { |x| … }.inject( … ) { |acc, x| … } xs.select { |x| … }.map { |x| … }.inject( … ) { |acc, x| … }.each do |x| … # 副作用(破壊的代入やI/O処理)を含む処理 end 具体的なコード例はこちらへ:https://ideone.com/PKMUhx また、関数型プログラミングに興味がある方は以下をお読みください ・Rubyによる関数型プログラミング http://xtmlab.com/misc/FPwithRuby.html http://mevius.5ch.net/test/read.cgi/tech/1555162340/246
247: デフォルトの名無しさん [sage] 2020/10/18(日) 00:35:23.34 ID:xWXtsYNK ブロックとProc.newとprocとlambdaと->があるRubyはやり過ぎ http://mevius.5ch.net/test/read.cgi/tech/1555162340/247
248: デフォルトの名無しさん [sage] 2020/10/18(日) 00:42:04.28 ID:dOGGkbZr rubyの可読性は高くない。 pythonの「書きにくく読みやすい」と比較して「書きやすく読みにくい」と言われる。 そうなってしまう理由はたくさんあるが、ひとつのことをするのにやり方がたくさんあるというperlとかいう糞言語の信条をそのままパクってしまってることがひとつ。 またよくも悪くも設計が完全なオブジェクト指向にこだわっており、 javascriptなら関数ひとつで実現できることがblock、proc、lambdaと酷い有り様になっている。defで簡単に定義できまーすとかまさに初心者騙しもいいとこ。 また、流行り機能の無節操な取り込みが酷い。記号が足りなくなり、例えばオプショナルチェーンは他言語が?.のところrubyでは&.である。phpで文字列結合が"foo"+"bar"ではなく"foo"."bar"であるようなキモさ。 あとpythonと比べ多分野の優れたライブラリがない。あってもメンテされてない。作ってるやつが実用主義ではなく趣味だから。rubyでもできる!って言いたいだけ。よくも悪くもweb分野、しかもrails使うというやつ以外にはおすすめしない。 事実上rails専用言語。railsのDSLとして以外に存在価値はない。 初心者に勧めるなんてとんでもない。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/248
249: デフォルトの名無しさん [sage] 2020/10/18(日) 00:57:58.47 ID:xeOKOt4d >>231 >streamが標準出力にもファイルにも使えるでしょ。 どうやればいいの? 出来ないと思うけど。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/249
250: デフォルトの名無しさん [sage] 2020/10/18(日) 01:05:21.49 ID:xeOKOt4d Rubyは簡単に出来るのに node.jsは単独でディレクトリのコピーすら出来ない。 行うためには、 1. copySync()を使うためにはfs-extraモジュールのインストールが必要だが npm install -g fs-extraででインストールしても環境変数NODE_PATHに パスが通ってないため最初は使えず混乱する。 じぶんのためだけならいいが、作ったjsプログラムを初心者に使ってもらう のはこれだけでも不可能となり、一般人への自作プログラムの配布は絶望的となる。 2. copy、xcopy、robocopyなどの外部コマンドを呼び出せればコピーできるが、 RubyならC言語の伝統的なsysytem()関数をより強力で便利にした関数をサポートしている が、node.jsはしておらず、非常に使いにくいexec()やspawn()関数を非同期で使わなく てはならない。 以上により、node.jsは自分用としては使えるが、一般人に作ったプログラムを 配布して使ってもらうのは絶望的といえる。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/250
251: デフォルトの名無しさん [sage] 2020/10/18(日) 01:10:26.15 ID:cCnPRoH8 >>234 eachがどう関数型なのか知りたいんだが。 mapならわかるけど。 ただのイテレータだろ。 その中括弧要らないよ。なんか勘違いしてない? http://mevius.5ch.net/test/read.cgi/tech/1555162340/251
252: デフォルトの名無しさん [sage] 2020/10/18(日) 01:14:50.79 ID:cCnPRoH8 >>249 https://qiita.com/masakura/items/5683e8e3e655bfda6756 出来るし、普通はconsoleに出したりしない。 >>250 完全に知識不足。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/252
253: デフォルトの名無しさん [sage] 2020/10/18(日) 01:21:29.87 ID:xeOKOt4d >>252 node.jsで、streamを使ってstdoutへの出力をする方法を具体的に書いてみてください。 なお、書き込む関数もファイルと全く同じ関数群が使えなくてはいけません。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/253
254: デフォルトの名無しさん [sage] 2020/10/18(日) 01:24:00.15 ID:xeOKOt4d >>252 どこの知識不足なのか具体的に書いてください。 Rubyは、ディレクトリコピー、sysytemや外部コマンドの実行でネット検索すれば それぞれすぐに答えが出てきます。 node.jsは英語で検索しても埒の明かない答えばかりで、現実にはまともに 対応できてないものと思われます。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/254
255: デフォルトの名無しさん [sage] 2020/10/18(日) 01:35:18.67 ID:mPnoVdEN リンク見たら普通にlsとpipeの例書いてあるやん http://mevius.5ch.net/test/read.cgi/tech/1555162340/255
256: デフォルトの名無しさん [sage] 2020/10/18(日) 01:43:59.33 ID:xeOKOt4d >>255 パイプではなく、自分のプログラム、例えば、Hello Worldのプログラムで node.jsにおいてstreamを標準出力に書き込むための手段として使う方法を聞いています。 もちろん、元祖C言語ではFILE系のstreamはstdoutに当然対応していますが、 node.jsでは不明確です。 ファイルをオープンする際のファイル名に何かを指定すれば出来るかも知れませんが。 C言語のstdoutに相当するものがどこにあるのか不明です。 番号の0や1なのでしょうか。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/256
257: デフォルトの名無しさん [sage] 2020/10/18(日) 01:55:48.16 ID:Xfoy2gzb つーか何言いたいんだ? お前のやりたいことが 直感的に言語XでRubyと同様にできないからと言って だからどうしたという話なんだが http://mevius.5ch.net/test/read.cgi/tech/1555162340/257
258: デフォルトの名無しさん [sage] 2020/10/18(日) 02:01:56.18 ID:2DM4LMSp Rubyアンチスレがモダン言語アンチスレになってきたな http://mevius.5ch.net/test/read.cgi/tech/1555162340/258
259: デフォルトの名無しさん [sage] 2020/10/18(日) 02:03:58.45 ID:xeOKOt4d process.stdout.fd が fd の int 整数の「1」になっていて、 これを fs.writeSync()の第一引数に渡せば標準出力に 出力できることが分かりました。 しかし、ドキュメントが不十分でめちゃくちゃ分かりにくいです。 Rubyのドキュメントは非常に分かり易いです。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/259
260: デフォルトの名無しさん [sage] 2020/10/18(日) 02:09:23.19 ID:xeOKOt4d node.jsは、自慢で立派そうなnpmコマンドがあっても、NODE_PATHという 基本中の基本の環境変数すら設定されません。 これでfs-extraモジュールを追加インストールしなければ同期コピーすら出来ないのに。 同期的な外部コマンド実行も同様だと予想されます。 サーバーサイドの裏方として用いるならともかく、これをデスクトップマシンの BATファイルの代わりやスクリプト言語として、一般人向けに配布することは この段階で不可能となります。 その分野では現段階ではRubyが一番適切です。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/260
261: デフォルトの名無しさん [sage] 2020/10/18(日) 02:27:50.97 ID:4X85KByZ >>240 >・型安全でない 型付けに関しては、話が長くなるからまた後で >・前後の文脈を見ないとその部分単体ではローカル変数とメソッド呼び出しの見分けがつかない … (後略) これは同意ですね、だから自分はメソッド呼び出しであれば self.hoge みたいに self を省略せずに書きます >・reduce/inject、map/collectのように同じことするメソッドの単なる別名と、 Lisp 文化と Smalltalk 文化の融合ですが、そもそも Ruby は最初から手続き型/関数型/オブジェクト志向を融合した マルチパラダイム言語として設計されていますし、コミュニティも多文化共存共栄(多神教?)みたいな空気がありますね 他の言語、たとえば手続き型原理主義(一神教?)で「聖典こそ真実であり、否定するものは異教徒」みたいな信者からすれば 違和感があるのかもしれませんね >Array#delete_if/Array#reject!のようにほとんど同じなくせして削除失敗時だけ挙動が異なるみたいな … (後略) 関数型プログラミンングだと mutable な操作は使わないのでよう分からんですが、一度に全てを理解しようとせず、 必要になった時に必要なメソッドを使うよう思考を単純化したほうがよろしいのではないかと >・Procオブジェクト(手続きオブジェクト)を作る方法が多すぎ。しかも作り方で挙動が異なる。 … (後略) これも同意、自分は基本がブロック構文、もし稀に明示的なProcオブジェクト(いわゆるクロージャ)が必要になった時には 組み込み関数の lambda を使うくらいですね 前段でもお話したように、他の「作る方法」は(今のところ)必要がないので気になりません >・簡単に「見せかける」ために省略記法を行き当たりばったりで導入しまくった副作用で、 >直感的な記述が逆にエラーとなることが多い(例: p {foo: 1, bar: 2}はエラーwブロックとして解釈されるため) 波カッコを使うブロック構文とハッシュ構文を誤読する問題は、少なくとも自分が Ruby を触り始めた 1.6 の時代から 存在しますから、「行き当たりばったりで導入」した例としては不適切です 「直感的な記述が逆にエラーとなることが “多い”」のであれば、別の例を挙げるべきでしょう http://mevius.5ch.net/test/read.cgi/tech/1555162340/261
262: デフォルトの名無しさん [sage] 2020/10/18(日) 02:31:11.77 ID:xeOKOt4d 後、変数someの展開を文字列の中で行いたい場合 Ruby: "some=#{some}" JS: `some=${some}` の書き方もRubyの方が便利。 逆引用符は入れにくいし 他が普通の二重引用符なのに一部だけ逆引用符なのは 分かりにくくなりやすい。 それから、\ からエスケープシーケンスの働きをなくして単なる文字として扱うのが Rubyだと一重引用符を使って 'aaa\bbb\ccc' のように書けるが Node.jsだと String.raw`aaa\bbb\ccc` としか書けなくてとても不便。 http://mevius.5ch.net/test/read.cgi/tech/1555162340/262
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 80 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.016s