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/ >>151 カスタム関数にjsも使えるようになるぞー >>150 言語仕様がいい加減なRubyやPythonはプログラミング教育にとって有害。 CやPascalなどの美しい言語をきっちり教えるべきだな。 >>151 VBAも昔のBASICから引きずった言語仕様におかしな所が残っているが、 大部分は改訂で割とまともな現代的言語となり、Pythonよりははるかに ましなのに、何でそんな改悪をするのか。 >>158 Cが美しいってブス専アピールしてどうすんのよ >>159 Cのどこがブスなんだよ。まあ、Cは文字列操作に関しては「高級アセンブラ」でショボいから、 文字列操作を多用するならC系列のC#を使えば良い。 >>160 C#はどっから見てもJava系列なんだが… >>162 Javaって言語系列的に独立した存在? >>162 C#をJavaなんかといっしょにするな。 ぜんぜん違うだろ。 C#は、C++から発展し、Javaを反面教師とした印象。 オブジェクト参照ベースなのは、別にJavaが最初じゃないしね。 >>158 >CやPascalなどの美しい言語 Pascal はともかく、C のどこが美しいと思ったの? >>164 > C#は、C++から発展し、Javaを反面教師とした印象。 C++から発展なんかしてないよ。 C++といえば、STL(テンプレート)の使用が必須で メモリ管理はSTLで行う この一番重要な所がC#はJavaと同じGCを使うために プログラミングの仕方がぜんぜん違う JavaとJavaScriptぐらい違う >>164 >C#は、C++から発展し そんなセールストークを信じちゃだめだよ… >>172 どっちもかなり複雑な部類だから初学者にはオススメしないな 今ならPythonが初心者向けの情報多くて入りやすいと思う C系へステップアップするつもりならRubyよりPythonの方がC系に近いしな >>153-155 Devkit 無しは、MSYS2/MINGW、GNU コンパイラが無いので、 ソースコードからコンパイルできないけど、サイズは2〜3GB 小さい WebSocket, Rails, VSCode のデバッグ機能などは使えないけど、 Sinatra は使えるので、ツール作りには十分 (WebSocket のバイナリをネットで探したけど、見つからなかった) ポータブル版なら、C:\Ruby24-x64 に置いて、ユーザー環境変数PATH に、C:\Ruby24-x64\bin を追加すればよい Windows のirb は、日本語がバグるので、 WSL Ubuntu にも、Ruby を入れて、そちらを使う >>42 の、mirrorcommunications の動画も参照 たのしいRuby 第5版、2016 みんなのPython 第4版、2017 先に、たのしいを読めば、みんなのも理解できる C# は、先にこの本で、オブジェクト指向を学ぶ。 スッキリわかる Java入門 第2版、2014 無料のRails チュートリアルをやると、MVC, Ruby, JavaScript などが学べる。 その後、Python, Java, C# と進むのが、レベルに合ってる Java, C#, Kotlin は静的言語だから、 動的言語よりもはるかに難しいから、後にすべき >>172 >>176 の人はこの板の名物AIだから相手にしないように >>172 その二つは何から何まで異なる。 質問が単純すぎて、回答不能。 それでも答えるとするなら、どっちでも。 クジでもひけばいい。w >>169 GCを使う一点で、そんな主張をされても。 そうではないことを事前に明確にするために、オブジェクト参照ベースうんぬんと書いたのに。 >>170 セールストークかもしれんが、真実でもあると思っている。 実情は、ObjectPascalからの発展だが、そうは言いにくいだろ。w いずれにしても、Javaは反面教師どまり。 >>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サーバー作れるだけの技術者なんか掃いて捨てるほどいるから、あえて君がレッドオーシャンに乗り込む必要はない 掲示板+動画みたいなサイト作って一儲けしたい 構想はある ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる