プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 62
https://mevius.5ch.net/test/read.cgi/tech/1511451329/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
探検
Ruby 初心者スレッド Part 63
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/04/17(火) 17:46:57.87ID:GYuBFjQi604デフォルトの名無しさん
2018/08/09(木) 01:09:23.83ID:0kLiomIS そうそう
近代的なプログラミング言語は内部エンコーディングがUnicode固定だから本当にIOのときだけエンコーディングを考慮すればいい
一方Rubyは文字列の内部表現がStringオブジェクトごとのエンコーディングに依存していて、
自分の管理外のコードからStringを受け取る場面では必ずエンコーディングを考慮せねばならない
近代的なプログラミング言語は内部エンコーディングがUnicode固定だから本当にIOのときだけエンコーディングを考慮すればいい
一方Rubyは文字列の内部表現がStringオブジェクトごとのエンコーディングに依存していて、
自分の管理外のコードからStringを受け取る場面では必ずエンコーディングを考慮せねばならない
605デフォルトの名無しさん
2018/08/09(木) 01:14:23.18ID:bbq6MBnq >>603
> chcpなんて使い物にならないし
使い物になってるけど?
実際WSLはchcpでUTF-8したのと同等の環境で動いている。
文字化けする?フォントがおかしい?
だからWSLでまともに使えるようにするために
全部修正したんだってばw
> chcpなんて使い物にならないし
使い物になってるけど?
実際WSLはchcpでUTF-8したのと同等の環境で動いている。
文字化けする?フォントがおかしい?
だからWSLでまともに使えるようにするために
全部修正したんだってばw
606デフォルトの名無しさん
2018/08/09(木) 01:18:39.80ID:ro52D2nE >>602
全然判かっていないじゃないか
多くのWindows用アプリケーションはUnicodeもしくはCP932を前提に作られている。たとえコンソールのキャラクタコードを
UTF-8にできてRubyがそれに従ってくれたとしてもほかのアプリケーションとの連携で不具合が発生するのは明らかで
問題は解決しない
それにnkf使えとか1.8時代に逆戻りだろw
全然判かっていないじゃないか
多くのWindows用アプリケーションはUnicodeもしくはCP932を前提に作られている。たとえコンソールのキャラクタコードを
UTF-8にできてRubyがそれに従ってくれたとしてもほかのアプリケーションとの連携で不具合が発生するのは明らかで
問題は解決しない
それにnkf使えとか1.8時代に逆戻りだろw
607デフォルトの名無しさん
2018/08/09(木) 01:21:35.03ID:bbq6MBnq 多くのWindows用アプリケーションはUnicodeもしくはCP932を前提に作られている
それをRubの外部でnkfなどを使って変換すればいいだけの話だって言ってる
それをRubの外部でnkfなどを使って変換すればいいだけの話だって言ってる
608デフォルトの名無しさん
2018/08/09(木) 01:21:43.34ID:fUyWPXJG >>605
いやだから、windowsはAPIでコンソールに出力してるから、そういう話じゃないんだって
いやだから、windowsはAPIでコンソールに出力してるから、そういう話じゃないんだって
609デフォルトの名無しさん
2018/08/09(木) 01:26:42.15ID:fUyWPXJG 問題なのは、外部がユニコードの世界なのに、windows版のrubyは内部的にそうなってない所がまだあるのよ
内部で情報が欠落しちゃってるから、そこを変えないとまともにはならんわけ
windowsでは内部をUTF-8に決めちゃえばいいんだけどねえ
内部で情報が欠落しちゃってるから、そこを変えないとまともにはならんわけ
windowsでは内部をUTF-8に決めちゃえばいいんだけどねえ
610デフォルトの名無しさん
2018/08/09(木) 01:29:04.56ID:bbq6MBnq611610の続き
2018/08/09(木) 01:29:50.60ID:bbq6MBnq ruby なんたら.rb
612デフォルトの名無しさん
2018/08/09(木) 01:30:27.46ID:fUyWPXJG >>610
だから、コンソールへは普通にユニコードを書き出せてるからそこに問題があるわけじゃないんだよ
だから、コンソールへは普通にユニコードを書き出せてるからそこに問題があるわけじゃないんだよ
614デフォルトの名無しさん
2018/08/09(木) 01:31:25.52ID:bbq6MBnq nkf CP932に変換するオプション
ってやれば、APIでコソンールに出力した結果が
UTF-8からCP932に変わるぞ。
ってやれば、APIでコソンールに出力した結果が
UTF-8からCP932に変わるぞ。
2018/08/09(木) 01:32:23.81ID:bbq6MBnq
>>608
APIでコンソールに出力してるから
なにがどうなの?
ruby なんたら.rb | nkf CP932に変換するオプション
ってやれば、APIでコソンールに出力した結果が
UTF-8からCP932に変わるぞ。
APIでコンソールに出力してるから
なにがどうなの?
ruby なんたら.rb | nkf CP932に変換するオプション
ってやれば、APIでコソンールに出力した結果が
UTF-8からCP932に変わるぞ。
616デフォルトの名無しさん
2018/08/09(木) 01:35:28.21ID:bbq6MBnq >>612
だから、RubyがAPIでコンソールに出力しようとしたものを
パイプで標準出力に変更して、nkfで標準入力からAPIで読み取って
nkfでSJISに変換してからAPIでコンソールに出力すればいいだけでしょ?
だから、RubyがAPIでコンソールに出力しようとしたものを
パイプで標準出力に変更して、nkfで標準入力からAPIで読み取って
nkfでSJISに変換してからAPIでコンソールに出力すればいいだけでしょ?
617デフォルトの名無しさん
2018/08/09(木) 01:36:28.36ID:bbq6MBnq 「windowsはAPIでコンソールに出力してるから」が
意味不明なんで意地悪してみたw
意味不明なんで意地悪してみたw
618デフォルトの名無しさん
2018/08/09(木) 01:38:12.71ID:bbq6MBnq ruby なんたら.rb | [nkf CP932に変換するオプション]
って書くと書き込みできないんだなー
ってあれ?できた?おかしいなw
って書くと書き込みできないんだなー
ってあれ?できた?おかしいなw
619デフォルトの名無しさん
2018/08/09(木) 01:39:04.01ID:fUyWPXJG めんどくせえなあ。SJISに変換とかアホみたいなことしなくても、WriteConsoleWってAPI使ってユニコードで書き出すようになってるんだよ
620デフォルトの名無しさん
2018/08/09(木) 01:39:15.49ID:bbq6MBnq クソ5chの意味不明な制限で書き込めないときは
わざと5chに負荷をかけて細かく分けて書き込むことにしてる
すべては5chが悪い
>>608
APIでコンソールに出力してるから
なにがどうなの?
ruby なんたら.rb | [nkf CP932に変換するオプション]
ってやれば、APIでコソンールに出力した結果が
UTF-8からCP932に変わるぞ。
わざと5chに負荷をかけて細かく分けて書き込むことにしてる
すべては5chが悪い
>>608
APIでコンソールに出力してるから
なにがどうなの?
ruby なんたら.rb | [nkf CP932に変換するオプション]
ってやれば、APIでコソンールに出力した結果が
UTF-8からCP932に変わるぞ。
621デフォルトの名無しさん
2018/08/09(木) 01:41:07.24ID:bbq6MBnq >>619
だからchcp 65001してれば、
WriteConsoleWってAPI使ってユニコードで書き出したものを
ちゃんと表示できるし、
chch 65001しなくても
WriteConsoleWってAPI使ってユニコードで書き出したものを
ruby なんたら.rb | nkf [CP932に変換するオプション]ってやれば
ちゃんと表示できるっていってるだろ
WriteConsoleWってAPI使ってユニコードで書き出した
からなんだって言うんだ?
だからchcp 65001してれば、
WriteConsoleWってAPI使ってユニコードで書き出したものを
ちゃんと表示できるし、
chch 65001しなくても
WriteConsoleWってAPI使ってユニコードで書き出したものを
ruby なんたら.rb | nkf [CP932に変換するオプション]ってやれば
ちゃんと表示できるっていってるだろ
WriteConsoleWってAPI使ってユニコードで書き出した
からなんだって言うんだ?
622デフォルトの名無しさん
2018/08/09(木) 01:42:44.19ID:fUyWPXJG chcpする必要なんてないってことだよ
もういいかげんわかって
もういいかげんわかって
623デフォルトの名無しさん
2018/08/09(木) 01:42:47.80ID:bbq6MBnq rubyの中でCP932のデータを扱おうとするから
バカを見るんやで? rubyの外側で変換すればいい
文字コードの問題なんてなんもありゃせん
バカを見るんやで? rubyの外側で変換すればいい
文字コードの問題なんてなんもありゃせん
624デフォルトの名無しさん
2018/08/09(木) 01:44:29.76ID:bbq6MBnq >>622
あのな、
chcp 65001しないと、
日本語のWindowsではコマンドプロンプトが
互換性のためにCP932モードになってるから
WriteConsoleWってAPI使ってユニコードで書き出したものを
そのまま表示すると、UTF-8をCP932だと解釈して文字化けするんやで?
だからchcp65001しろって言ってるんだが
あのな、
chcp 65001しないと、
日本語のWindowsではコマンドプロンプトが
互換性のためにCP932モードになってるから
WriteConsoleWってAPI使ってユニコードで書き出したものを
そのまま表示すると、UTF-8をCP932だと解釈して文字化けするんやで?
だからchcp65001しろって言ってるんだが
625デフォルトの名無しさん
2018/08/09(木) 01:46:19.73ID:bbq6MBnq ちなみにWindowsは内部はUnicode(UTF-16)で扱われている
これはずっと前からだ
これはずっと前からだ
626デフォルトの名無しさん
2018/08/09(木) 01:47:15.18ID:fUyWPXJG 表示できてて、そこは問題じゃないって言ってるのに、そんなに問題があることにしたいのか
627デフォルトの名無しさん
2018/08/09(木) 01:49:18.61ID:bbq6MBnq >>626
それはRubyのソースコードがCP932になってるから、
俺は最初からRubyをUTF-8で書けと言ってる。
いい加減CP932から離れろよ。
そんなもんRubyの外部で変換すりゃいいだけの話なんだよ
https://www.rubylife.jp/ini/japan/index5.html
> そしてプログラムを保存する時は文字コードをUTF-8に指定して保存します。
>
> 通常はこれでいいのですが、Windowsで標準出力としてコマンドプロンプトを
> 使用している場合、コマンドプロンプトの文字コードがShift_JISのため
> そのまま「print」メソッドなどで出力すると文字化けします。
それはRubyのソースコードがCP932になってるから、
俺は最初からRubyをUTF-8で書けと言ってる。
いい加減CP932から離れろよ。
そんなもんRubyの外部で変換すりゃいいだけの話なんだよ
https://www.rubylife.jp/ini/japan/index5.html
> そしてプログラムを保存する時は文字コードをUTF-8に指定して保存します。
>
> 通常はこれでいいのですが、Windowsで標準出力としてコマンドプロンプトを
> 使用している場合、コマンドプロンプトの文字コードがShift_JISのため
> そのまま「print」メソッドなどで出力すると文字化けします。
628デフォルトの名無しさん
2018/08/09(木) 01:50:52.45ID:bbq6MBnq RubyのせいにしたいのかWindowsのせいにしたいのか知らんが
結局文字コードについてちゃんと理解してないだけじゃねーかw
結局文字コードについてちゃんと理解してないだけじゃねーかw
629デフォルトの名無しさん
2018/08/09(木) 01:56:15.25ID:p715oxsr これも全部文字コードが乱発されてるのが悪い
なんでこんなに増えちゃったん?
なんでこんなに増えちゃったん?
630デフォルトの名無しさん
2018/08/09(木) 01:59:58.57ID:bbq6MBnq アホメリケンが1ビットも惜しいとか抜かして
1文字で7ビットのASCIIコードを作ったのがそもそもの問題
最初から全世界の文字が入り切る24bitぐらいに
していればこんな問題は起きなかった
1文字で7ビットのASCIIコードを作ったのがそもそもの問題
最初から全世界の文字が入り切る24bitぐらいに
していればこんな問題は起きなかった
631デフォルトの名無しさん
2018/08/09(木) 02:03:35.96ID:bbq6MBnq 今のUnicodeの全文字数を表すには、17ビットじゃたりないんだな
18ビットあればしばらくは対応できるだろうが十分かと言われると心もとないな
最低でも20ビットぐらいほしいかな
18ビットあればしばらくは対応できるだろうが十分かと言われると心もとないな
最低でも20ビットぐらいほしいかな
632デフォルトの名無しさん
2018/08/09(木) 02:38:39.80ID:ro52D2nE >>607
外部ツールを使うこと前提は普通対応しているとか使えるとはいわなくね?
WINEを使えばLinuxでも動くからLinux対応などとうたうWindowsアプリケーションはほとんどないし逆も同様
コードページをUTF-8にしろだのnkfをつかえだのナンセンスすぎる
Windows標準のキャラクタコードはUnicodeか日本ならCP932だし、変換もRubyで完結できるべきだ
外部ツールを使うこと前提は普通対応しているとか使えるとはいわなくね?
WINEを使えばLinuxでも動くからLinux対応などとうたうWindowsアプリケーションはほとんどないし逆も同様
コードページをUTF-8にしろだのnkfをつかえだのナンセンスすぎる
Windows標準のキャラクタコードはUnicodeか日本ならCP932だし、変換もRubyで完結できるべきだ
633デフォルトの名無しさん
2018/08/09(木) 04:43:02.02ID:V297VUOg なんや?
アンチはRubyの文字環境の設定もしらんのか?
しったかばっかりしとるツケやな
アンチはRubyの文字環境の設定もしらんのか?
しったかばっかりしとるツケやな
634デフォルトの名無しさん
2018/08/09(木) 06:35:40.44ID:DDec2yNS WindowsでRails開発してるけどcloud9使ってるからWindows環境に依存しない
そもそも環境構築すらいらん
クッソ楽だよ
そもそも環境構築すらいらん
クッソ楽だよ
635デフォルトの名無しさん
2018/08/09(木) 07:06:07.44ID:xHgFHFx+ VSCode から、PowerShell を使えば、UTF-8 だから問題ない
ただし、Windows で、irb は日本語でバグるから使えない。
irb を使う時は、WSL から使う
ただし、Windows で、irb は日本語でバグるから使えない。
irb を使う時は、WSL から使う
636デフォルトの名無しさん
2018/08/09(木) 07:30:43.69ID:0kLiomIS おいおいRubyistはVSCode使っちゃダメだぞ
VSCodeはJSをわざわざ静的型言語に魔改造したTypeScriptによって作られている
そんなものをRubyistが使うということは、静的型の勝利を認めるようなものだ
VSCodeはJSをわざわざ静的型言語に魔改造したTypeScriptによって作られている
そんなものをRubyistが使うということは、静的型の勝利を認めるようなものだ
637デフォルトの名無しさん
2018/08/09(木) 07:35:03.56ID:FPQoEIfF 糖質乙
638デフォルトの名無しさん
2018/08/09(木) 10:40:37.59ID:9RYWVA0H そんなこと言ったらそもそもさんざんバカにしてきたjavascriptで動いてるVSCodeなんて恥ずかしくて使えないだろw
639デフォルトの名無しさん
2018/08/09(木) 11:09:39.07ID:NXkdt6vr640デフォルトの名無しさん
2018/08/09(木) 11:25:09.25ID:hJgBQsKI 故Coffeeが押されてた頃以来しばらくRails触ってないから最新の事情に疎いんだけど、今のRailsでは生JSかbabelが普通?
さすがにまさかTypeScriptは意味不明なダブスタ状態になるからありえないとは思うけど
さすがにまさかTypeScriptは意味不明なダブスタ状態になるからありえないとは思うけど
641デフォルトの名無しさん
2018/08/09(木) 11:38:01.60ID:FPeke3PG 静的言語にものすごいコンプレックスあるんだな
642デフォルトの名無しさん
2018/08/09(木) 12:45:27.94ID:VXkLrSCu そうなんです
物凄いコンプレックスがあるんです
夜も眠れません
物凄いコンプレックスがあるんです
夜も眠れません
643デフォルトの名無しさん
2018/08/09(木) 14:22:48.49ID:ohdBTUS2 そもそもWindowsで開発ってエンジニアとして恥ずかしいからやめな
ド素人専用OSだから
ド素人専用OSだから
644デフォルトの名無しさん
2018/08/09(木) 15:01:11.67ID:SXE6an9g そんなこと言ったら、rubyで開発とか恥ずかしいよ
645デフォルトの名無しさん
2018/08/09(木) 15:54:50.43ID:cj+buD3F646デフォルトの名無しさん
2018/08/09(木) 19:54:10.11ID:FPQoEIfF >>640
Webpackerが基本だから好きなの使えばよろし
Webpackerが基本だから好きなの使えばよろし
647デフォルトの名無しさん
2018/08/09(木) 22:07:11.04ID:VXkLrSCu Pythonが2018年も人気ナンバーワン言語に - Rubyは13位へ
https://www.softantenna.com/wp/software/ieee-spectrum-top-programming-languages-2018/
>日本生まれのプログラミング言語Rubyの順位は昨年の12位から13位へと一つ順位を落としています。
https://www.softantenna.com/wp/software/ieee-spectrum-top-programming-languages-2018/
>日本生まれのプログラミング言語Rubyの順位は昨年の12位から13位へと一つ順位を落としています。
648デフォルトの名無しさん
2018/08/09(木) 22:10:32.15ID:VXkLrSCu https://findy-code.io/engineer-lab/github-programming-language-ranking
↑「衰退するかもしれない言語」のRubyのグラフ凄すぎ
↑「衰退するかもしれない言語」のRubyのグラフ凄すぎ
649デフォルトの名無しさん
2018/08/10(金) 00:57:10.05ID:brZGYtP0 RubyInstallersのRuby + Devkit 2.5.1-2(x64) でインストールしたら
トロイの木馬検知したんだけど、これ大丈夫なんか……
トロイの木馬検知したんだけど、これ大丈夫なんか……
650デフォルトの名無しさん
2018/08/10(金) 09:30:05.88ID:YB7aDEkK 基本、主流のレンタルサーバではどこもRuby標準装備だろ
個人でやるならRubyしか手は無いぞ?
個人でやるならRubyしか手は無いぞ?
651デフォルトの名無しさん
2018/08/10(金) 09:36:16.62ID:umhN1xPo ここにもWindowsアンチがいますね
652デフォルトの名無しさん
2018/08/10(金) 09:43:53.11ID:6tv0/oL9 pythonも標準装備です。
ただしどちらもかなり古いのしか入っていないです。
https://help.sakura.ad.jp/hc/ja/articles/206053142--さくらのレンタルサーバ-基本仕様
今だに1.8.7って・・・
ただしどちらもかなり古いのしか入っていないです。
https://help.sakura.ad.jp/hc/ja/articles/206053142--さくらのレンタルサーバ-基本仕様
今だに1.8.7って・・・
653デフォルトの名無しさん
2018/08/10(金) 09:57:36.47ID:xFUN9Bm6 >>650
管理者権限のないレンサバでやるとか拷問好きの変態だけだろ
管理者権限のないレンサバでやるとか拷問好きの変態だけだろ
654デフォルトの名無しさん
2018/08/10(金) 10:15:24.49ID:6tv0/oL9 xxenvが使えりゃ取り敢えずなんとかなるけどな。
pathに嵌ったりするけど。
pathに嵌ったりするけど。
655デフォルトの名無しさん
2018/08/10(金) 19:54:03.17ID:zkC5iPOW 今はVPSとかHerokuとかそういうの使う方が主流だよね
656デフォルトの名無しさん
2018/08/10(金) 20:43:42.88ID:USnz8/j9657デフォルトの名無しさん
2018/08/11(土) 11:11:35.63ID:7RaYhU06 ヘロクくっそ高いからどうなんだろ
658デフォルトの名無しさん
2018/08/11(土) 11:26:47.51ID:XbF2QFnV 宗教以外で今時Herokuを選ぶ理由はないでしょ
PaaSならGCPとかAWS Lightsailとかにしとけ
HerokuとAWS/GCPじゃスキルとしての価値にも差がありすぎる
PaaSならGCPとかAWS Lightsailとかにしとけ
HerokuとAWS/GCPじゃスキルとしての価値にも差がありすぎる
659デフォルトの名無しさん
2018/08/11(土) 11:35:49.25ID:/QURPuCG へ、ろくなことないな
660デフォルトの名無しさん
2018/08/11(土) 14:03:49.96ID:4P7sy+nG へろくあさく
661デフォルトの名無しさん
2018/08/11(土) 18:57:17.82ID:Llo9t+It いやしかし機械学習という神風でPythonがRubyを吹き飛ばしたよね
特にこれから始めようとする人で、Ruby選ぶ人って激減なんじゃないかと
特にこれから始めようとする人で、Ruby選ぶ人って激減なんじゃないかと
>>661
このお盆休みに Rails をやっているのだけれども…
このお盆休みに Rails をやっているのだけれども…
663デフォルトの名無しさん
2018/08/11(土) 20:43:53.14ID:XIJj5NjC664デフォルトの名無しさん
2018/08/11(土) 20:58:17.22ID:ZIqkCNIu Rails使う奴らが他言語使いを見下しているから嫌われるんだよ
665デフォルトの名無しさん
2018/08/11(土) 22:08:57.73ID:nLKVRTP/ 今更Railsはなあ
第2のPHPとして当分は健在だろうけど、もう美味しい時期をとっくに過ぎてRails専のエンジニアは買い叩かれてるのが現状
第2のPHPとして当分は健在だろうけど、もう美味しい時期をとっくに過ぎてRails専のエンジニアは買い叩かれてるのが現状
666デフォルトの名無しさん
2018/08/11(土) 22:20:15.20ID:3iVckqAr python用のwebフレームワークもいくつかあるけど、railsの出来には全然かなわんの?
rubyもnumpyとかあればなあ
rubyもnumpyとかあればなあ
>>665
みなPHPに移ったんですか?
みなPHPに移ったんですか?
668デフォルトの名無しさん
2018/08/11(土) 22:33:39.18ID:edehoOie669デフォルトの名無しさん
2018/08/11(土) 22:43:26.29ID:XIJj5NjC >>666
Django が一番有名なんだろうけど、開発スピードは Rails の足元にも及ばないね
Django が一番有名なんだろうけど、開発スピードは Rails の足元にも及ばないね
670デフォルトの名無しさん
2018/08/12(日) 01:48:34.69ID:evL76NL4 >>576,577
関数型プログラミングという視点であれば、JS は良い言語だね
どちらも出発点として関数型言語をベースに設計された言語だから、当然の帰結と言える:
http://peace.5ch.net/test/read.cgi/tech/1409526637/857/
ただし、あえて「Rubyによる関数型プログラミング」に慣れると
JS にイラッと感じる(=楽しくない)のは:
・条件分岐の if/switch が(式ではなく)文であること
Ruby であれば if/switch (を含めて「あらゆるすべて」)は式だから、ML や Haskell と同様、
いちいち一時変数を持ち出さずに書ける
・匿名関数の function() は煩わしい
匿名関数が多用されるのは map/filter といった関数を引数渡しするケースだけど、
Ruby であればブロック引数という独特な構文があるから簡潔に書ける
ってことかな(あくまで個人の感想ですが)
ちなみに、これらの感想は以下の文書からの受け売りだったりします:
・Rubyによる関数型プログラミング
(*1) URL はNGワード規制によってカキコできないので、
もしも興味のある人は「Rubyによる関数型プログラミング Arnau Sanchez」でググッてください
なお、この文書で筆者は:
Rubyは基本的には命令型言語であるけれど、 関数型プログラミングへの際立った潜在能力がある
と断じています
(*1):規制されるほど、この文書はム板管理者にとってヤバイ内容が含まれているんですかねぇ?
2012年と5年も昔に公開された、今のRuby使いにとっては常識的な中身だと思うんですけど
関数型プログラミングという視点であれば、JS は良い言語だね
どちらも出発点として関数型言語をベースに設計された言語だから、当然の帰結と言える:
http://peace.5ch.net/test/read.cgi/tech/1409526637/857/
ただし、あえて「Rubyによる関数型プログラミング」に慣れると
JS にイラッと感じる(=楽しくない)のは:
・条件分岐の if/switch が(式ではなく)文であること
Ruby であれば if/switch (を含めて「あらゆるすべて」)は式だから、ML や Haskell と同様、
いちいち一時変数を持ち出さずに書ける
・匿名関数の function() は煩わしい
匿名関数が多用されるのは map/filter といった関数を引数渡しするケースだけど、
Ruby であればブロック引数という独特な構文があるから簡潔に書ける
ってことかな(あくまで個人の感想ですが)
ちなみに、これらの感想は以下の文書からの受け売りだったりします:
・Rubyによる関数型プログラミング
(*1) URL はNGワード規制によってカキコできないので、
もしも興味のある人は「Rubyによる関数型プログラミング Arnau Sanchez」でググッてください
なお、この文書で筆者は:
Rubyは基本的には命令型言語であるけれど、 関数型プログラミングへの際立った潜在能力がある
と断じています
(*1):規制されるほど、この文書はム板管理者にとってヤバイ内容が含まれているんですかねぇ?
2012年と5年も昔に公開された、今のRuby使いにとっては常識的な中身だと思うんですけど
671デフォルトの名無しさん
2018/08/12(日) 01:58:20.16ID:km10YFtC def式じゃないじゃんjsのfunctionは式だぞ
672デフォルトの名無しさん
2018/08/12(日) 02:01:02.80ID:evL76NL4 >>577
>Rubyは第一級関数ではないという致命的な欠陥がある
JSとは異なり、Rubyだと関数は一級市民ではない」という指摘を
具体的なコードで示したのは、おそらく自分が最初だと思うけど:
https://mevius.5ch.net/test/read.cgi/tech/1503644351/210/
そこでもカキコしたように「制限」であって「致命的な欠陥」ではないんだよね
>>670でも書いたように、一級市民としての関数が重要になるのは
メソッド(or 関数)の引数値として匿名関数を渡すケースだけど、
Ruby ではまさにその目的のためブロック引数という特殊な構文が用意されている
もし反論があるなら、具体的なコードで示したほうが理性的ではないかと思われます
>Rubyは第一級関数ではないという致命的な欠陥がある
JSとは異なり、Rubyだと関数は一級市民ではない」という指摘を
具体的なコードで示したのは、おそらく自分が最初だと思うけど:
https://mevius.5ch.net/test/read.cgi/tech/1503644351/210/
そこでもカキコしたように「制限」であって「致命的な欠陥」ではないんだよね
>>670でも書いたように、一級市民としての関数が重要になるのは
メソッド(or 関数)の引数値として匿名関数を渡すケースだけど、
Ruby ではまさにその目的のためブロック引数という特殊な構文が用意されている
もし反論があるなら、具体的なコードで示したほうが理性的ではないかと思われます
673デフォルトの名無しさん
2018/08/12(日) 02:10:52.79ID:evL76NL4 >>671
関数型プログラミングを実践すると自然に匿名関数を多用することになるわけですけど、
JS はいちいち function とタイプしないといけないから煩わしい、という意味です
たとえば ML族の Standard ML だと fn、同 OCaml だと fun、Haskell に至っては
¥ が匿名関数を表すキーワードです
ここまで「JavaScript による関数型プログラミング」が普及し常識になった現時点で
振り返れば、function ではなく fn とか fun という予約語にできなかったのか?と
なお、関数宣言のキーワード function は、それが宣言を目立たせる意味で長いキーワードを
採用したと考えれば、納得できるのですけどね
関数型プログラミングを実践すると自然に匿名関数を多用することになるわけですけど、
JS はいちいち function とタイプしないといけないから煩わしい、という意味です
たとえば ML族の Standard ML だと fn、同 OCaml だと fun、Haskell に至っては
¥ が匿名関数を表すキーワードです
ここまで「JavaScript による関数型プログラミング」が普及し常識になった現時点で
振り返れば、function ではなく fn とか fun という予約語にできなかったのか?と
なお、関数宣言のキーワード function は、それが宣言を目立たせる意味で長いキーワードを
採用したと考えれば、納得できるのですけどね
674デフォルトの名無しさん
2018/08/12(日) 02:47:33.34ID:2UQfVx23 Ruby にはブロックスコープがあるし、
関数スコープでは、関数外部からの変数を通さない
Rubyの偽は、false, nil の2つだけ
Rubyは厳格だけど、JS, Python, PHP などは、ややこしい
関数スコープでは、関数外部からの変数を通さない
Rubyの偽は、false, nil の2つだけ
Rubyは厳格だけど、JS, Python, PHP などは、ややこしい
675デフォルトの名無しさん
2018/08/12(日) 08:39:08.05ID:PenCp7yX >>673
> JS はいちいち function とタイプしないといけないから煩わしい、という意味です
なるほど。ではこのコードのどこにfunctionがあるのでしょう?
var materials = [
'Hydrogen',
'Helium',
'Lithium',
'Beryllium'
];
console.log(materials.map(material => material.length));
// expected output: Array [8, 6, 7, 9]
> JS はいちいち function とタイプしないといけないから煩わしい、という意味です
なるほど。ではこのコードのどこにfunctionがあるのでしょう?
var materials = [
'Hydrogen',
'Helium',
'Lithium',
'Beryllium'
];
console.log(materials.map(material => material.length));
// expected output: Array [8, 6, 7, 9]
676デフォルトの名無しさん
2018/08/12(日) 10:53:04.11ID:avkK3Y0e ruby狂信者に「他言語では…」って話しすると黙りこくって見下すのは経典に書いてるのか?
どんなruby狂信者に聞いてもどいつも同じ精神なのがものすごく気持ち悪い
アレなんなんだろうな
どんなruby狂信者に聞いてもどいつも同じ精神なのがものすごく気持ち悪い
アレなんなんだろうな
677デフォルトの名無しさん
2018/08/12(日) 13:10:26.06ID:Z9n0yF1g Rubyは左翼言語だからね
678デフォルトの名無しさん
2018/08/12(日) 13:15:59.90ID:rtSL/abo >>664
見下される側なのにな
見下される側なのにな
679デフォルトの名無しさん
2018/08/12(日) 13:22:05.89ID:rtSL/abo680デフォルトの名無しさん
2018/08/12(日) 15:02:35.22ID:YGBUsYMx681デフォルトの名無しさん
2018/08/12(日) 15:37:44.45ID:f+bxV/sn rubyって昔複数引数取る関数
foo bar baz
って書けたよね。
でも今は
foo bar, baz
だよね。
foo bar baz
って書けたよね。
でも今は
foo bar, baz
だよね。
682デフォルトの名無しさん
2018/08/12(日) 15:50:08.86ID:ZHEExUj+ >>681
1.8.7でも foo bar baz は foo(bar(baz)) なんだね
1.8.7でも foo bar baz は foo(bar(baz)) なんだね
683デフォルトの名無しさん
2018/08/12(日) 16:22:12.92ID:evL76NL4684デフォルトの名無しさん
2018/08/12(日) 16:28:13.10ID:fdgGBvne bar が関数じゃなければいい
685デフォルトの名無しさん
2018/08/12(日) 16:28:29.68ID:evL76NL4 >>679
情報提供、ありがとうございます
MANGO板にて特定のページが規制されているのではなく、
サイト全体が規制されていることを確認できました
・NGワード絞り込みスレッド★118
http://agree.5ch.net/test/read.cgi/mango/1533547792/324-326/
情報提供、ありがとうございます
MANGO板にて特定のページが規制されているのではなく、
サイト全体が規制されていることを確認できました
・NGワード絞り込みスレッド★118
http://agree.5ch.net/test/read.cgi/mango/1533547792/324-326/
686デフォルトの名無しさん
2018/08/12(日) 16:34:41.05ID:evL76NL4 >>681
昔って、いったいいつの時代なんだろう
自分は 1.6 の時代だからかれこれ20年は使ってるけど、
foo bar baz と書けたという記憶が無い
もしかすると 1.4 とかそれ以前には書けたのかな?
興味深いね
昔って、いったいいつの時代なんだろう
自分は 1.6 の時代だからかれこれ20年は使ってるけど、
foo bar baz と書けたという記憶が無い
もしかすると 1.4 とかそれ以前には書けたのかな?
興味深いね
687デフォルトの名無しさん
2018/08/12(日) 18:33:45.33ID:YGBUsYMx >>683
JavaScriptはともかく、Ruby は「後方互換性の維持」を遵守しないぞ。
バージョンアップは、過去のコードをだいたい壊す。
次も、文字列の原則immutable化が控えているだろ。
JavaScriptはともかく、Ruby は「後方互換性の維持」を遵守しないぞ。
バージョンアップは、過去のコードをだいたい壊す。
次も、文字列の原則immutable化が控えているだろ。
688デフォルトの名無しさん
2018/08/12(日) 18:46:02.88ID:f+bxV/sn それはjs以外たいていみんなそうなんじゃ?pythonしかり。
689デフォルトの名無しさん
2018/08/12(日) 18:50:42.36ID:U04Z7MLo >>168
今どきにbabelも使わずフロント開発してるところなんて業務系SIerくらいしかないでしょ
今どきにbabelも使わずフロント開発してるところなんて業務系SIerくらいしかないでしょ
690デフォルトの名無しさん
2018/08/12(日) 18:59:19.04ID:U04Z7MLo >>683 のミス
691デフォルトの名無しさん
2018/08/12(日) 22:37:17.71ID:YGBUsYMx >>688
互換性維持の優先が高い言語はあるぞ。
C,C++,C#,Perl5はずっと更新されてきてるが、過去のコードを壊したことがほとんどない。
RubyやPythonと違って、システムの重要なところを担ってる自覚がある模様。
互換性維持の優先が高い言語はあるぞ。
C,C++,C#,Perl5はずっと更新されてきてるが、過去のコードを壊したことがほとんどない。
RubyやPythonと違って、システムの重要なところを担ってる自覚がある模様。
692デフォルトの名無しさん
2018/08/12(日) 22:37:51.94ID:evL76NL4 >>687
>JavaScriptはともかく、Ruby は「後方互換性の維持」を遵守しないぞ。
いや、Ruby は(も?)新機能の導入には保守的ですよ
たとえば Ruby の特徴である既存のクラスの振る舞いを後から上書きできる
オープンクラス、これには利点と欠点が共存してるけど、これに対応しようとする
refinement の提案は「後方互換性の維持」を理由に却下され続けたけど、
その壁を乗り越えてようやく 2.1 で採用された
もしも遵守しない例があるなら、具体的なコードで示してね(>>675 みたいに)
>次も、文字列の原則immutable化が控えているだろ。
え、frozen_string_literal オプションがあるでしょ?
>>688
いやぁ、バージョンアップしたら Hello world すら構文エラーになる Python みたいな
言語などとは一緒くたにされたく無いですね
・Rubyの設計上の欠点とは何か?
https://mevius.5ch.net/test/read.cgi/tech/1413113999/123-126/
Python2 の時点ですら全プログラミング言語でも人気トップ10、スクリプト系言語に限れば
圧倒的に首位を独走というメジャーな言語が、Hello world すら構文エラーになるという
基本原則「後方互換性の維持」を頭から無視したバージョンアップを断行するなんて、
過去のプログラミング言語の歴史を振り返ってもあり得なかった歴史的快挙(暴挙?)ですよ
とうていマイナー言語の Ruby なんかじゃあ到底まねできないですわ
>JavaScriptはともかく、Ruby は「後方互換性の維持」を遵守しないぞ。
いや、Ruby は(も?)新機能の導入には保守的ですよ
たとえば Ruby の特徴である既存のクラスの振る舞いを後から上書きできる
オープンクラス、これには利点と欠点が共存してるけど、これに対応しようとする
refinement の提案は「後方互換性の維持」を理由に却下され続けたけど、
その壁を乗り越えてようやく 2.1 で採用された
もしも遵守しない例があるなら、具体的なコードで示してね(>>675 みたいに)
>次も、文字列の原則immutable化が控えているだろ。
え、frozen_string_literal オプションがあるでしょ?
>>688
いやぁ、バージョンアップしたら Hello world すら構文エラーになる Python みたいな
言語などとは一緒くたにされたく無いですね
・Rubyの設計上の欠点とは何か?
https://mevius.5ch.net/test/read.cgi/tech/1413113999/123-126/
Python2 の時点ですら全プログラミング言語でも人気トップ10、スクリプト系言語に限れば
圧倒的に首位を独走というメジャーな言語が、Hello world すら構文エラーになるという
基本原則「後方互換性の維持」を頭から無視したバージョンアップを断行するなんて、
過去のプログラミング言語の歴史を振り返ってもあり得なかった歴史的快挙(暴挙?)ですよ
とうていマイナー言語の Ruby なんかじゃあ到底まねできないですわ
693デフォルトの名無しさん
2018/08/12(日) 22:53:39.94ID:YGBUsYMx >>692
結局、互換を壊してるじゃん。w
そんなのは保守的と言わないんだよ。
多少の不満は飲み込んででも、過去のコードを重視しないといけない。
オプションで選択できるとか、いいわけにならん。
例が知りたきゃググれ。
スコープとかメソッドとかいろいろあって、思い出すのもバカらしい。
ま、それがRubyの道なんだろうから、それはそれでいいんだよ。
ヘンに言い繕わずに、互換性は低いと冷静に受け入れてれば。
結局、互換を壊してるじゃん。w
そんなのは保守的と言わないんだよ。
多少の不満は飲み込んででも、過去のコードを重視しないといけない。
オプションで選択できるとか、いいわけにならん。
例が知りたきゃググれ。
スコープとかメソッドとかいろいろあって、思い出すのもバカらしい。
ま、それがRubyの道なんだろうから、それはそれでいいんだよ。
ヘンに言い繕わずに、互換性は低いと冷静に受け入れてれば。
694デフォルトの名無しさん
2018/08/12(日) 23:37:02.17ID:f4ISMjBp 現実無視の机上の空論w
昔のC/C++コードを一切の修正なしで再利用できるケースが実際にどれだけあるというのだ
昔のC/C++コードを一切の修正なしで再利用できるケースが実際にどれだけあるというのだ
695デフォルトの名無しさん
2018/08/12(日) 23:42:34.82ID:2UQfVx23696デフォルトの名無しさん
2018/08/13(月) 01:14:37.00ID:0A70z83v >>694
え?w
え?w
697デフォルトの名無しさん
2018/08/13(月) 05:17:38.38ID:LxScEq40 >>693
>オプションで選択できるとか、いいわけにならん。
では、以下のコードを python3 で動かす方法はあるんですか?
https://mevius.5ch.net/test/read.cgi/tech/1413113999/126/
え、オプションすら存在しないのぉ???
オプションすら許さない >>693氏のオレ様基準に従えば、
いいわけ以前の「後方互換性の断絶」であり「致命的な互換性の問題」ですね
>例が知りたきゃググれ。
>スコープとかメソッドとかいろいろあって、思い出すのもバカらしい。
え、これだけ「Rubyはゴカンセイガァー」と騒いでおいて、
ご自身では具体的なコードすら書けないんですか?
情けないですね、自分ならスコープやらいくつかRubyに関する
「些細な互換性の問題」を示してあげることもできるんですけど
>ヘンに言い繕わずに、互換性は低いと冷静に受け入れてれば。
いやぁ JS と比較すれば互換性は低いですよ
あちらはECMAScriptという国際標準の強い縛りがありますからね
でも Hello world すら動かなくなる最底辺 Python と比較すれば遥かに高い
そもそも具体的なコードも示せないくせに、
ナゼか「上から目線で」オレ様理論を押し付けるのは、
Rubyアンチに共通する性癖ですね
>オプションで選択できるとか、いいわけにならん。
では、以下のコードを python3 で動かす方法はあるんですか?
https://mevius.5ch.net/test/read.cgi/tech/1413113999/126/
え、オプションすら存在しないのぉ???
オプションすら許さない >>693氏のオレ様基準に従えば、
いいわけ以前の「後方互換性の断絶」であり「致命的な互換性の問題」ですね
>例が知りたきゃググれ。
>スコープとかメソッドとかいろいろあって、思い出すのもバカらしい。
え、これだけ「Rubyはゴカンセイガァー」と騒いでおいて、
ご自身では具体的なコードすら書けないんですか?
情けないですね、自分ならスコープやらいくつかRubyに関する
「些細な互換性の問題」を示してあげることもできるんですけど
>ヘンに言い繕わずに、互換性は低いと冷静に受け入れてれば。
いやぁ JS と比較すれば互換性は低いですよ
あちらはECMAScriptという国際標準の強い縛りがありますからね
でも Hello world すら動かなくなる最底辺 Python と比較すれば遥かに高い
そもそも具体的なコードも示せないくせに、
ナゼか「上から目線で」オレ様理論を押し付けるのは、
Rubyアンチに共通する性癖ですね
698デフォルトの名無しさん
2018/08/13(月) 08:54:49.38ID:aWjwgJVg Selenium WebDriver を使って、Nokogiri で、DOM を構築して、
JavaScript(JS) を使って、そのDOMで、body 以下を更新しようとしたが、エラーになる
つまり、DOMの構築には、JSではなくNokogiriを使った。
なるべく、JSではDOMを構築したくない。面倒だから
p inner_body = %(<div class="thread">あ</div>) #=> "<div class=\"thread\">あ</div>"
jsCode = <<"EOT"
var element = document.querySelector('body');
element.innerHTML = "#{ inner_body }";
EOT
driver.execute_script jsCode # JavaScript を実行
ただし、下のように書くと、body以下は正常に更新される。
element.innerHTML = '<div class="thread">あ</div>';
違いは「\"thread\"」の、ダブルクォーテーションのエスケープなのかな?
Nokogiriで構築したDOMを、JSにどうやって渡せば良いのか?
JavaScript(JS) を使って、そのDOMで、body 以下を更新しようとしたが、エラーになる
つまり、DOMの構築には、JSではなくNokogiriを使った。
なるべく、JSではDOMを構築したくない。面倒だから
p inner_body = %(<div class="thread">あ</div>) #=> "<div class=\"thread\">あ</div>"
jsCode = <<"EOT"
var element = document.querySelector('body');
element.innerHTML = "#{ inner_body }";
EOT
driver.execute_script jsCode # JavaScript を実行
ただし、下のように書くと、body以下は正常に更新される。
element.innerHTML = '<div class="thread">あ</div>';
違いは「\"thread\"」の、ダブルクォーテーションのエスケープなのかな?
Nokogiriで構築したDOMを、JSにどうやって渡せば良いのか?
699デフォルトの名無しさん
2018/08/13(月) 09:17:49.80ID:TQG/Mzv/ > Nokogiriで構築したDOMを、JSにどうやって渡せば良いのか?
うん、でもいま面倒なことになってるよね?
うん、でもいま面倒なことになってるよね?
700デフォルトの名無しさん
2018/08/13(月) 12:07:18.53ID:BGJ7CoIJ701デフォルトの名無しさん
2018/08/13(月) 13:11:20.37ID:0A70z83v702デフォルトの名無しさん
2018/08/13(月) 20:08:09.68ID:1mtdXF6K それがルビリスト
皆呆れてるだろうが
個人的にすごく良い流れなので
もっと頑張れ
皆呆れてるだろうが
個人的にすごく良い流れなので
もっと頑張れ
703デフォルトの名無しさん
2018/08/13(月) 20:18:46.74ID:1mtdXF6K 一言で言えば左翼と同じメンタル
何故そうなるかは長くなるから書かないけどな
何故そうなるかは長くなるから書かないけどな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」★2 [ぐれ★]
- 【速報】 日経平均の下落率3%超す、財政懸念で長期金利上昇 [お断り★]
- ナイツ塙が指摘のローソンコーヒーカップ、ロゴ「L」で誤解生みデザイン変更へ 在庫使い切る3か月後にリニューアル [muffin★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- 【悲報】中国→日本行きの航空チケット、高市有事の影響で50万人分がキャンセルされる [834922174]
- 高市早苗「……なんて言ってみたw」中国「なんだ、言ってみただけかw」👈これで全部元通りになるという事実 [782460143]
- 【悲報】早速高市首相のせいで全国の民泊でキャンセルラッシュwwwwwwwwwwww 経営者も嘆き「こんな事は初めてだ…」😲 [871926377]
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- んなっしょい🍬禁止🈲のお🏡
- 映画「ゼルダの伝説」、リンクとゼルダ姫が白人になってしまう。日本のものは日本人だろうが!! [592058334]
