Ruby 初心者スレッド Part 63
■ このスレッドは過去ログ倉庫に格納されています
プログラミング言語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/ >>180 C++ が劇的に変わったのはテンプレート導入から、C++ のテンプレートは Java や C# の総称型とも違う >>169 にも表出されているように、C++ は GC は自分で入れたいと思った人がインプリメントするものであって、言語の前提ではありえない いいたかったことは、C# と Java の差なんて、C++ からみるとゴミのようなものだ >>181 あのな。 オレは、C#がJava系列というアホな表現にクレームしているのだ。 > C# と Java の差なんて、C++ からみるとゴミのようなものだ あたりまえ。 Ruby界においては、 主にSIに使われる言語=楽しくない言語=敵性言語 で人括りだから、JavaもC#も違いはないんだよ 実際にはWeb系でもバリバリ使われてるんだけどね >>182 >C#がJava系列というアホな表現にクレームしている なるほど じゃあ、私は「C# は C++ から発展した」にクレームをつけましょうか、C# と C++ とは根っこの考え方からすっかり違いますね >>174 確かにその通りだと思う C# といふ手続き型言語で対比するなら、 純粋手続き型スクリプト言語であるPython を学ぶべき Ruby(あるいは JavaScrupt) なんて、関数型言語の Lisp をベースとして 手続き型の Perl 風の構文糖で包んだオタク言語でしかない: https://peace.5ch.net/test/read.cgi/tech/1409526637/857 ・Lisp から Ruby への設計ステップ https://peace.5ch.net/test/read.cgi/tech/1409526637/857 ・JavaScript: 世界で最も誤解されたプログラミング言語 http://web.archive.org/web/20130120204931/http ://d.hatena.ne.jp/brazil/20050829/1125321936 >>185 Rubyのルーツは様々あるし、Matzも時々語ってるけど、どれがベースというのはないんじゃないかな Eiffelという話もあるし、Perlを意識したというのもあるし、なんとも言えない Lispからもいくらか拝借してるだろうけど、Lispとはちょっと似ても似つかない >>158 Cが美しい VBAがPythonよりマシ って笑えるw Lispとか関数型 知らないのがバレバレw >>179 > GCを使う一点で、そんな主張をされても。 これによってぜんぜん違うものになるぞ なぜならオブジェクトっていうのはすべからくメモリを使う。 だからメモリの確保と解放はプログラム全体に散りばめられる Javaはメモリ(≒オブジェクト)を解放するコードが必要ないわけだが、 C++だと必要ないかもしれなし、必要あるかもしれない。 必要ある場合は、それに応じて解放の書き方が複数あるし、 必要ない場合は、また別のポインタの保持方法が多数存在する。 これによりプログラム全体が大きく違ってくる おまえらはデバッグする時ってdebug.rbをつかってる? それともprintデバッグで済ましてるの? 他言語の話で荒らしてる奴はdebug.rbとか知ってるの? JS のlodash の、メソッドチェーンを実現するには、 tap・chain などで、コンテナ内を走査できる Ruby でも同じ。 enum.tap { |item| p item } Windows では、irb を使うデバッガー・コンソールは、 日本語でバグるから、tap などで確かめるか、 WSL Ubuntu の方で、irb などを使う >>184 考え方うんぬんは、言語の発展とは必ずしも関係があるわけではないので、その指摘は的はずれ。 何度も書いたが、オブジェクト参照ベースは、当時からとくに珍しいものではなく、C#がそれを取り入れたからといって、C++から発展したものでないという主張は成立しない。 たとえば、C++で、言語やライブラリの機能を使って、オブジェクト参照ベースの実装や関数的プログラミングを行ったとしても、やはりC++には違いない。 また、C#は、using節やジェネリクスなど、C++の影響ともいえる要素が見受けられる。 蛇足だけど、C#がリリースされてからは、Javaはその後追いをよくしてる印象。 最近にいたってはOracleのやる気もあやしげ。。。 >>188 それは、Javaのみがそうであった場合にできる主張。 >>196 Java意外にC#が似てる言語ってあるの? C# は J++ の影響を受けたのであって Java の影響を受けたのではない! という展開を期待。 やっぱpデバッグが一番手っ取り早くて楽だよな debug.rbでステップ毎にコマンド入れて値を見るのも便利だけど >>195 >考え方うんぬんは、言語の発展とは必ずしも関係があるわけではないので、その指摘は的はずれ まあ「言語の発展」について、なにかしら定義があるわけでもないですし でも、「Java と C# は同系」といわれて反発したり 「C# と C++ は同系」といわれて疑問を呈したり することからみると、なんらかの感覚は存在するわけで、それをなんとか定義づけることにまで持っていければおもしろいかも、とは考えています 役に立つかどうかは疑問ですが 故意にdebug.rbの話を避けて自演を継続中か debug.rbって中身見たらメソッドをフックしたり、お手本になりそうなコードが多いよ 一度読んでみな >>200 もう一度書くが、「C#がJava系列」は違うと言ったのであって、「C#とJavaは同類」くらいなら否定しない。 これで通じないのなら、言語の認識か日本語の感覚が異なるのだろう。 もう疲れたので、そろそろおわり。 >>187 LISP(笑) あれはコンピュータにとって美しい言語だろ。人間にとっては奇怪な呪文の 羅列でしかなく、アセンブラの方がまだ親しみやすい。PostScriptみたいで、人間が 直接書くためのものじゃないね。計算機科学者が作った実験的言語で、実用性は低い。 同じ1950年代生まれの言語では、数式通りの記法が売りのFortranが実用として 支持された。後続の主流言語BASIC、Pascal、CもFortran系列。 1960年代生まれのBASICは、当時のFotranでは.gt.だった比較演算子を数式通りの >にしたし、文字列処理を簡潔で分かりやすく記述可能にしたから、高級言語の 発達史の中で評価されて良い。構造化されないうちに普及してしまったので、色々 叩かれることになってしまった。VBAは構造化されているし、オブジェクト指向も 取り入れ、Microsoft Officeの大きく複雑なデータ構造を分かりやすく扱える。 昔のBASICから引きずったおかしな部分も残っているが、総合的に評価すればそんなに 駄目な言語ではない。 大前提として、変数の宣言と型づけができない言語は駄目だね。だから、Rubyも Pythonも評価は低い。VBAは昔のBASICとは違ってDim i As Integerにように 宣言できるし、Option Explicitと書けば宣言を強制できる。プログラミングに限らず、 自然科学でも変数は定義してから使うものだし、人文・社会科学でも例えば法律では 用語を定義してから使う。定義を与えてから論を進めるのは科学的思考の基本で、 それができないRubyやPythonは俺様脳内的プログラミングでしかなく、教育上有害。 プログラミング教育ではC系かPascalを学ばせ、「aって何? お前の脳内なんか 知らないよ」とか「型が違う変数にそのままでは代入できないぞ。ボヤボヤするな」 とかコンパイラに叱られながら、正しいプログラミング作法を身に着けさせるのが 良い。プログラミングが嫌いになる子が出てくるかも知れないが、そういう子には 適性がないので、ちょうど良い篩い落としになる。 RubyやPythonはちょっと高機能な関数電卓や、ちょっと高機能なバッチファイルとして 利用するものであって、C系やPascalのようなちゃんとしたプログラミング言語と同列に 扱ってはいけない。 >>207 >定義を与えてから論を進めるのは科学的思考の基本 無定義語というのもありますが 「線」「点」はユークリッドも定義していません >RubyもPythonも評価は低い。 「あなたの」評価が低いだけなのでは? >>207 長文の割りに中身が少ないな >コンピュータにとって美しい言語 >アセンブラの方がまだ親しみやすい LISPは高水準言語だから逆だよ 大多数にとって読み書きしにくいのはそうだろうが 関数型言語の元祖なんだから コンピュータのための記法ではない 人間のための記法だよ 逆にC/C++のポインタなんかは アセンブラの低水準の仕組みが残ってる >大前提として、変数の宣言と型づけができない言語は駄目 それはたんなる趣味 型推論の時代だから動的/静的型付けに そんなにこだわる意味も薄れてきてる >>211 Lispが人間のための記法というのは違和感があるな。 >>211 処理が高水準か低水準かと、記法が人間にとって親しみやすいかとは別物。 アセンブラの名残りと言えば、CだけでなくRubyもPythonも配列の添字が 0から始まる点でそうだろ。日常生活や数学の感覚では1から始まるのが自然。 Pascalは任意の整数、BASICは0か1かを選択できる。 C#では型推論が導入されたが、プログラマの判断で場面に応じて使うことも できるだけで、従来の型がなくなったわけではないし、従来の型の方が頻繁に使われる。 何でも丸呑みしかできないうわばみとは違う。 Pythonは構造化に関しても不完全というか履き違えたオフサイド・ルールが駄目だね。 HTMLやLaTeXなどの文書マークアップ言語の基本は、構造と書式を混同しないこと。 文書の構成要素に対して書式を直接指定するのではなく、構造を指定し構造に書式を 割り当てるのが作法。プログラミング言語の構造化も同様で、タブやスペースによる インデントは表層的な書式に過ぎず、本質的な構造は{と}やbeginとendで囲むことにより 明示すべきもの。 Pythonによる構造と書式の混同は、不作法なだけでなく実地上の問題も生む。 例えば、5ちゃんねるにソースコードをコピペで書き込むと、タブと半角スペースが 除去されてしまい、ifなどの制御ブロックがどこまでなのか全く分からなくなってしまう。 C系やPascalならば書式が失われても構造は残るので、プログラムの動作は変わらないし、 標準的な書式を復元することもできる。 この点では、endを使うRubyはPythonと違ってまともだな。 >>214 >数学の感覚では1から始まるのが自然 日常の感覚はともかく、数学では自然数が必ず 1 から始まるとは限らない、これは一々確認しないといけないもの 西暦100年の200年前は 紀元前101年だって言うのだから困るわ 自然に感じない >>214 うっかり混同したんじゃなくて故意にそう設計してるんだから混同じゃなく同一視と言うべき。 LISPが複雑怪奇で読みにくいってコイツマジで言ってんのかよ あれだけ直観的な表記なのに ルールは少ないが決して直感的ではない ネストが深くなれば単純に読みづらいし 特殊形式やマクロがあるから意味も取りづらい 例えばバイナリ 0か1 超シンプル でも 直感的か? https://www.ruby-lang.org/ja/documentation/ ドキュメント →Rubyistに人気のあるソフトウェアには次のようなものがあります。 →windows →E-TextEditor リンク先は http://www.e-texteditor.com/ が保険屋さんへのリンクになっていました。 Openglのgemいれて遊んでるけどやっぱり見本になるようなコード付きruby本が欲しい バッファ操作やシェーダー言語といった基本じゃなくてHDRレンダとかBSP木の実装とか特に サーバ側はrubyでクライアント側はブラウザー+JSが鉄板になっちゃったね 後半は同意 Vue.jsとか使うんだったらサーバーをRailsで書く旨味はほとんど無いから、 サーバーサイドはNodeのようなよりライトウェイトなものか、信頼性重視でJava/C#/Goあたりが鉄板だよ 中途半端なRubyは役割を失ってしまった JSフレームワークと相性の悪いRailsは廃れていくんだろうな TypeScriptの流行もRubyにとっては逆風になったよな あのせいでCoffee推しだったRailsに急に負け組のイメージが付いてしまったし、 TypeScriptに興味があってもサーバーサイドは「型書きたくないでござる」なのに クライアントでは「The power of typing」という頭のおかしい状況になってしまうからRubyを使ってる限り絶対に手を出せないわけだし chunkメソッドなのですが、 hash = {} (1..99).to_a.chunk{|a|a % 10}.each {|k,v| hash[k]=v} これで期待した値は {1=>[1,11,21,31,..91],2=>[2,12,22,32..93],3=>..} だったのですが、 結果は {1=>[91],2=>[92],3=>[93]...} これは90台の値でhashの値が上書きされるということでいいんですよね。 hash = {} (1..99).to_a.chunk{|a|a / 10}.each {|k,v|hash[k]=v} p hash こっちだけど綺麗に {0=>[1,2,3,4,5,6,7,8,9],1=>[10,11,12,13,14,15,16,17,18,19],2=>...} と纏めてくれるんだけど。 hash = {} (0..9).each { |a| hash[a] = [] } (1..99).to_a.chunk { |a| a % 10 }.each { |k, v| hash[k] = hash[k] + v } p hash これでいいのか。 でも、これだとchunkを使う意味がないんだろうな。 rubiniusってどうなん? 2018.5.28に3.105がリリースされて、まだ活動しているけれど、使っている人っているのかな? rubiniusはSqueak/Pharo(Smalltalk)やpypy(Python)ではできてるVMのセルフホスティングを断念して その存在価値をほぼ失って久しいという印象 今のウリは何なの? >>229-230 a / 10 では、0〜9 が連続した同じグループだろ a % 10 では、0〜9 は、すべて異なるグループじゃん。 0, 1, 2... と、グループが切り替わっていく chunk は、グループが切り替わる所までが、一連の同じグループ プログラミング教育が話題になりはじめたけど、 Ruby噛ませて補助金や助成金をもっと出させたほうが良い 本当に日本の将来を思うのなら、Rubyは教育分野からは今後きっぱり身を引くべきだと思うけどね 日本のITはクソと言ってる人達が日本のITのガラパゴス化を増長させているという まだ?人気だったことあったっけ? arduinoやmicro:bitは何でプログラミングしますか? mrubyは純粋に補助金稼ぎのためにやっているプロジェクトで、実際には誰も使ってないぞ IoTとか地域の中小企業の活性化とか言って公共団体から金を引っ張ってきやすいんだよ 金の集めやすさでいえば今だとAI関連の方がいいだろうけど、役所のスネ齧ってるような連中の中にそんな高度な人材はいない 日本ってどれだけ税金にたかれるかで 組織が成功できるか決まるからな 仕様がないね なんかひろゆきの元に戻るらしいね 荒らしも処刑宣告されてたしこれでひとまず一件落着なのかな ということは過去のひろゆきの犯罪も罰せられるのかな? 調子に乗ってたこの板の荒らしもこれで席を下ろされるわけか Rubyで型を扱うライブラリ・・・いくつがあるようだが 本来このような言語の肝となる機能は言語側が用意すべきなのにな だって統一しとかなきゃ厳しいでしょ なのに教祖様が、絶対に型は書きたくないでござる!だから安心して見てられるわ まぁ今のRubyの状態で型を導入したらそれこそ寿命を縮めるだけかもしらんし その意味では正しい判断だが、周りからの要求もあるし、こういうライブラリ作る連中もいるし 止められない流れなんだろうな、グズグズになって腐る感じ 改めて初めから静的型にしておけばよかったのにな 型を書くのがそんなに面倒か?型推論もあるし 型関係のライブラリが乱立するよりよっぽどマシだろうよ 別に後出しジャンケンじゃないぞ 昔から宣言や型を書かない言語は糞って言ってる人たちはいっぱいいたからな >Ruby に型が欲しい理由 >https://qiita.com/euxn23/items/8a90480135f017271308 >RubyKaigi2018 の発表で型の導入の検討についての話がいくつかあったものの、 >Matz 自身は型アノテーションに否定的であるという発言をしているとのことを受けて、 >自分の意見の表明として書いている。 RubyやPythonはPerlの代替のお手軽スクリプト言語だから、変数宣言と型はない方が 都合が良いだろ。最もお手軽なコマンドラインに与えるワンライナーでもそんなものを いちいち書かされるのは不便。スクリプト言語の守備範囲を超えた使い方をしようと する人がいるから叩かれるだけ。本格的なプログラミングにはC系かPascal系を素直に 使えば良い。 OpenCVもTensorFlowも公式がガン無視の空気言語Rubyが! OpenCVもTensorFlowも公式が第一級のサポートを提供しているPythonに申し上げる!! RubyやPythonはPerlの代替のお手軽スクリプト言語だから、変数宣言と型はない方が 都合が良いだろ。最もお手軽なコマンドラインに与えるワンライナーでもそんなものを いちいち書かされるのは不便。スクリプト言語の守備範囲を超えた使い方をしようと する人がいるから叩かれるだけ。本格的なプログラミングにはC系かPascal系を素直に 使えば良い。 型が欲しかったらC#でもJavaでもScalaでも 静的型言語がたくさんあるんだから それ使えばいいだろうに Ruby3での文字列の不変化くらいであれだけ揉めてたのに 静的型にしたらRubyの良さがかなり死ぬと思う ニコニコ見たいなサイト作りたいならRubyも学ぶべき? >>253 動画配信サイトってこと? インフラ技術の方が重要だからAWSを学ぶべき RubyやPHPでフロントと簡単なCRUDサーバー作れるだけの技術者なんか掃いて捨てるほどいるから、あえて君がレッドオーシャンに乗り込む必要はない 掲示板+動画みたいなサイト作って一儲けしたい 構想はある Ruby は基本。そこから、Elixir。 Rust もやってる C++ の標準化委員会の江添亮もいるし、HDL など、 ニコニコはすべての言語をやってる 「たのしいRuby 第5版、2016」を読めば、 ファイル操作・テキスト処理など、一通りできるようになる 無料のRails チュートリアルもやれば、MVC の基本がわかる >>253 >>255 動画サイトは通信料がものすごい負担だから 大企業じゃないとまず勝負にならないと思うよ 個人運営の動画配信サイトなんてあんま見たことないでしょ? ユーチューブのまとめとかじゃなくて自前配信では 初期ニコ動みたいに、YouTubeをインフラにしてやれば?w >>261 残念ながら急速に減ってる 新規なら選択肢にすら挙がらなくなってる >>264 それRailsはまだ死んでないと言ってるだけで、Rubyの採用が減っている説に対する反証にはなってないよね 以前に比べて減っていないor増えている証拠を提示しないと >>265 ごめんな、それはただの詭弁なんだわ 減ってない根拠が出されてたんだから、次は減ってると主張する方が根拠出さなきゃ嘘がどんどん 明らかになっていくよ >>266 以前と比べて多いか少ないか変わってないかはその記事では特に触れられてないよ >>267 ごめんな、減ってると主張する側の論拠がないんだわ そこがない以上、話がかみあわんと思うわけさ >>269 The more a language tutorial is searched, the more popular the language is assumed to be. ちゃんと訳した上で言ってるのかな? 英語読めない人のために補足しとくと、 >>269 の下ではRubyは驚くべき速度で人気を失っており避けるべき言語の筆頭とされている >>271 へぇ、ぜひその部分の英文を原文で引用してくださいよ まぁ、引用できるわけないんだけどね。一切そんなこと書かれてないから ついに捏造までやるようになったんだねー 書かれてない英文を翻訳したかのように書き込むと smalltalkやlispやprolog、algol、cobolが死んでないようにrubyも死んでへんで!!! クックパッドは、Rails で最大のサイト。 RubyVM の作者・笹田耕一も入社した 大規模サイト以外では、やっぱり、Rails Python Django 超入門、掌田津耶乃、2018 Rails の本は何十冊もあるけど、Django の本は、初めて出た。 Django は、ようやくスタート地点に立った所 Railsは下火かもしれんが このフレームワークは最大のコミュニティを持っているので 困ったときに質問すれば他の誰かがだいたい答えを持っているのが大きい。 英語読み書きできるとこのアドバンテージはデカイ。 Rubyが下火という話であって誰もRails下火とは言ってない。 Rails以外のRubyの応用用途が減ってって既にRails専用のDSLに落ちぶれている。 Rails使いたいから仕方なくRails以外に使いようがないクソ言語を覚えなければならない状況。 そんな感じなので最近はむしろRubyのせいでRailsが忌避されてる。 Railsは被害者。 Web系のスタートアップ企業はRuby使ってるとこ多いからRubyは今後増えるよ あれだけ炎上騒ぎをおこしたrailsをまだ使うとかにわかには信じがたいな Rubyびいき筋以外のフラットな立ち位置からの情報はないの? ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる