Rubyについて Part 29
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/10/29(月) 23:27:18Ruby Home Page
http://www.ruby-lang.org/ja/
= 前スレ
Rubyについて Part 28
http://pc11.2ch.net/test/read.cgi/tech/1187298711/
過去スレ・関連スレは >>2-
0552デフォルトの名無しさん
2007/12/23(日) 21:19:37Rubyの謳い文句に裏切られたってだけで、
プログラミング自体楽しく感じないってことはないよね?
0553535
2007/12/23(日) 21:22:47>現在グーグルにいる人のこういう文章もあって
どの組織にもある言語が好きな人はいると思うので、
その手のソースはあまり意味を持たない気がします。
私のグーグル含めて友人、少ないですが、は少なくともruby好きは少数派です。
(やってる人は少なくありませんが、pythonでもいいじゃん、という人がほとんどで、
rubyは特別”楽しい”という事を明確に説明できる者はいません。)
そういう研究室出身だからかもしれませんが。。。
0554デフォルトの名無しさん
2007/12/23(日) 21:23:22俺はF1押したら詳細なリファレンスが出てきて
ドット押したらメソッドがずらずら出てきて
マウスでGUIを設計できて
奴隷グラマを部屋に押し込めて鞭打って書かせた充実したクラスライブラリがあって
高機能なデバッガとエディタがついてくる環境が楽しいぜ。
C#3.0は言語仕様の進化もなかなか興味深い。
0555デフォルトの名無しさん
2007/12/23(日) 21:24:47考えてることをコードに落とせるんだよなあ。
0556デフォルトの名無しさん
2007/12/23(日) 21:27:54本家、取り巻き含めて「楽しい」を無作為に標語に挙げ過ぎてる感じはあるかなー。
波長合えば楽しい、てのはどの言語でも大差ないしな。
>>550
のURLって個人の趣味出しまくってるなw
こういうの読むの面白いけど、知らない人に妙な先入観与えそうではある
俺はJSは書いてて楽しいな。波長の問題かな。
phpは苦痛。Javaは苦痛というよりはめんどくさい感じ。
そんな波長。
0557デフォルトの名無しさん
2007/12/23(日) 21:29:35俺もそう思うのだが、
結局それは慣れの問題では、ないかと?
俺がクソ嫌いな perlでのOOPとかでも、ネットとかでいるperlerは、すんなり書けるんじゃないの?
0558デフォルトの名無しさん
2007/12/23(日) 21:33:45それは好みの要素語る際の前提でせう
0559535
2007/12/23(日) 21:37:01>プログラミング自体楽しく感じないってことはないよね?
そういう意味ではありません。
実際、Erlang等、個人的に楽しいだけですが、楽しんでいるものもあります。
>>551
>ま、動的スクリプト言語がこれだけ一般的になる前の宣伝文句だから
そういうことであれば、私の過度な期待だったのかもしれません。。
0560デフォルトの名無しさん
2007/12/23(日) 21:38:310561デフォルトの名無しさん
2007/12/23(日) 21:46:32とうとうRubyも一般常識になった!
0562デフォルトの名無しさん
2007/12/23(日) 22:30:42> >>548
> python、javaと比べても?
Java に比べたら明らかに俺には Ruby の方が使い易いな。
Java を使ってるとかなりかったるい。Ruby のような気楽さはない。
Ruby はスクリプト言語だし、比較すべきかわからんが。
Python は使いこなしたことないけど、ちらっと見た感じだと俺には
Ruby の方がとっつきやすい。本質的な差では無いと言えるかも
しれんが表面的なものも使うときに大事だと思うよ。Python とだったら
両方楽しいでいいんじゃないの?
ただ、>>546 であげてる perl, lisp とあと Java に比べたら Ruby
の方が俺は楽しい。
0563デフォルトの名無しさん
2007/12/23(日) 22:39:13「弄るのが楽しい言語」と「目的を達するのが楽しい言語」があると思う
アセンブリとかは前者だと思うけどRubyはどちらかというと後者じゃね?
勿論前者として使う人も居るから一概には言えないけど
0564デフォルトの名無しさん
2007/12/23(日) 23:33:30Lisp、Perl(?)
「目的を達するのが楽しい言語」
Ruby、Python
「面倒な言語」
Java、C++
追加、変更頼む
0565デフォルトの名無しさん
2007/12/23(日) 23:34:44うんこ:その他有象無象
これでいいよ
0566デフォルトの名無しさん
2007/12/23(日) 23:36:02>>535はただのアンチだから相手にするだけ無駄。
本人でさえ自覚が無いからタチが悪い
0567デフォルトの名無しさん
2007/12/23(日) 23:39:15要はみんなまつもとさんのセンスが好きなんだよ。
個人的にはインデントが意味を持つ言語は常用したくない。Make/Python/Haskell(ML系)ね。
Yamlも嫌い。そういうのはプログラマの自由が侵害されてると感じるんだ。
0568デフォルトの名無しさん
2007/12/23(日) 23:46:220569デフォルトの名無しさん
2007/12/23(日) 23:48:160570デフォルトの名無しさん
2007/12/23(日) 23:49:21Haskellは多分ML系とは言わないと思うぞ。
それにSMLもOCamlもインデントに意味はない。
0571デフォルトの名無しさん
2007/12/23(日) 23:50:340572デフォルトの名無しさん
2007/12/23(日) 23:51:29じゃあ他に何を使うべきなんだ、と考えると……
XMLやJSONも一長一短だし
iniは長いテキストを入れるのに困るし
他のフォーマットは潰しが利かないし
0573デフォルトの名無しさん
2007/12/24(月) 00:00:10まぁインデントは好みだね。俺も空白が意味持つのは好きじゃないけど。
昔の Fortran を思い出すなぁ。{} も使いたいし。これも好みだとは思うが、
Java, C++ も使ってるから、結構気になる。
0574デフォルトの名無しさん
2007/12/24(月) 00:00:43>golfしづらい
まじめに聞いた俺がバカだったよ
0575デフォルトの名無しさん
2007/12/24(月) 00:44:410576デフォルトの名無しさん
2007/12/24(月) 00:47:30Rubyの楽しさは、オブジェクト指向のパラダイムのスジを通しつつ、
表現者の自由度が高くできるように言語的な束縛を少なくデザインされ、
行いたいこと(目的)を簡素に表現できるところなんだと思う。
LISPやHaskelは知的なアカデミズムの臭いがプンプンするけど、
アチラのおもしろさはまた別物。
0577デフォルトの名無しさん
2007/12/24(月) 00:48:04って合理的だと思うけどなー。
それで、lisp のキモい )))))))))))))))))))))))))))));
みたいなのが減れば嬉しいやん。目に優しい。
Haskell もそうなのか。ちょっと興味沸いてきた。
0578デフォルトの名無しさん
2007/12/24(月) 01:03:19「コンパイラにもエディタにも優しい」という意味で括弧は減らないと思う。
0579デフォルトの名無しさん
2007/12/24(月) 01:13:08そういえばカッコなんてものがありましたっけ。
Pythonista:
そういえばインデントなんてものがありましたっけ。
Rubyist:
そういえばendなんてものがありましたっけ。
0580デフォルトの名無しさん
2007/12/24(月) 01:16:070581デフォルトの名無しさん
2007/12/24(月) 01:22:030582デフォルトの名無しさん
2007/12/24(月) 01:28:25Ruby, Python, Perl, PHP
結局慣れの問題で、どれも同じようなものに思えてきた。
0583デフォルトの名無しさん
2007/12/24(月) 01:29:37いずれもチューリング等価な世界で何を言っているのだ?
0584デフォルトの名無しさん
2007/12/24(月) 03:30:13Pythonista も結構見るが?
0585デフォルトの名無しさん
2007/12/24(月) 03:31:19>1.9.1までに安定させれば無問題
あと一日あるかないかで安定させられるかよw
0586デフォルトの名無しさん
2007/12/24(月) 09:22:32>Rubyの楽しさは、オブジェクト指向のパラダイムのスジを通しつつ、
>表現者の自由度が高くできるように言語的な束縛を少なくデザインされ、
>行いたいこと(目的)を簡素に表現できるところなんだと思う。
結局何の特徴もない、まで読んだ。
0587デフォルトの名無しさん
2007/12/24(月) 09:37:19いよいよイブだし。
クリスマスリリースってのは明日中ってことかな?
0588デフォルトの名無しさん
2007/12/24(月) 10:03:09もう諦めた方が良いんじゃ...
ゆったりと家族サービスしとけよ
0589デフォルトの名無しさん
2007/12/24(月) 10:19:040590デフォルトの名無しさん
2007/12/24(月) 10:20:55聖なる小人さんが宿ってコード直してくれるから大丈夫だろう。
0591デフォルトの名無しさん
2007/12/24(月) 11:09:34Python.とRuby.は変数の使用形式は変わりますか?
0592デフォルトの名無しさん
2007/12/24(月) 12:58:26質問の意図が分からないけど、RUBY 初心者スレッドへGO
0593デフォルトの名無しさん
2007/12/24(月) 13:00:28お好きな方へ
Ruby 初心者スレッド Part 16
http://pc11.2ch.net/test/read.cgi/tech/1197120980/
Pythonのお勉強 Part22
http://pc11.2ch.net/test/read.cgi/tech/1196426978/
0594デフォルトの名無しさん
2007/12/24(月) 14:13:02== H1
adsafdjsakfljkafl;jakfljdskf;jsa
== H1
fjsdaljas
みたいなやつです
0595デフォルトの名無しさん
2007/12/24(月) 14:40:19RD http://ja.wikipedia.org/wiki/Ruby_Document_format
0596デフォルトの名無しさん
2007/12/24(月) 15:35:28「こう書くとこういう風に解釈される」
とか悩むことがない
でも言語がエディタ選ぶってのはどうか思う
0597デフォルトの名無しさん
2007/12/24(月) 15:58:440598デフォルトの名無しさん
2007/12/24(月) 17:14:12あれ、そうなの?RDocかと思ってた。
0599デフォルトの名無しさん
2007/12/24(月) 17:19:08> 結局何の特徴もない、まで読んだ。
他の言語から、いいところ取りをしてリデザインしたのがRuby何だから、
とがった特徴なんてあるわけないじゃん。
0600デフォルトの名無しさん
2007/12/24(月) 17:33:420601デフォルトの名無しさん
2007/12/24(月) 18:10:19適度に力を抜いて、割と素直なオブジェクト指向のコードを書けるというところかね。
PerlやPythonと何が違うといわれると、Perlほど汚くはないしとか、
インデントがどうたらとかの話になるわけだけど。
そう感じる人は楽しいというのに同意するけど、
そうじゃない人には理解しにくい、とても感覚的な謳い文句だな。
0602デフォルトの名無しさん
2007/12/24(月) 19:05:47delete
って打つと
File#delete
Dir#delete
とかリファレンスが出てくるの?
0603デフォルトの名無しさん
2007/12/24(月) 19:24:560604デフォルトの名無しさん
2007/12/24(月) 19:26:450605デフォルトの名無しさん
2007/12/24(月) 19:30:13Ruby Spotlight Importer
http://www.arcadianvisions.com/downloads/RubyImporter.html
riじゃなくてなまの.rbスクリプトが対象のようだが。
0606デフォルトの名無しさん
2007/12/24(月) 22:51:510607デフォルトの名無しさん
2007/12/24(月) 23:41:50Rubyのクラスについてですが、
例えば、
Tableというクラスを作ったとします。
そこにはArrayクラスのインスタンス変数などが含まれます。
他のクラスにTableクラスを渡す事は出来ますか?
それともその中にある@arrayを参照して渡さないとダメですか?
メッセージパッシングは既存のデフォルトクラス(数値クラスなど)
を用いて行うのがソフト工学的には正しいのでしょうか?
自作した、もしくは標準ライブラリのクラスそのものを渡す事はどうなんでしょうか?
0608デフォルトの名無しさん
2007/12/24(月) 23:46:58何を言いたいのか分からないが、初心者スレ相当ということはわかる。
0609デフォルトの名無しさん
2007/12/24(月) 23:50:37>他のクラスにTableクラスを渡す事は出来ますか?
Oui.
>それともその中にある@arrayを参照して渡さないとダメですか?
状況次第。
0610デフォルトの名無しさん
2007/12/24(月) 23:52:29何か他の言語の毒を抱えているのかも知れないなぁ。
> 他のクラスにTableクラスを渡す事は出来ますか?
できるよ。委譲であれ、メソッドの引数であれ。
0611デフォルトの名無しさん
2007/12/24(月) 23:54:12日本語でおk
というかそもそも板違い。初心者スレに行きなさい
0612デフォルトの名無しさん
2007/12/24(月) 23:55:18インスタンスではなく、そういうのもあるの?
0613デフォルトの名無しさん
2007/12/25(火) 00:04:23def initialize(v, h)
@v = v; @h = h
@array = Array.new
v.times do |i|
@array[i] = Array.new(h, 0)
end
end
def show
print "Table status\n"
@v.times do |i|
@h.times do |j|
print @array[i][j], "\s"
end
print "\n"
end
end
def reset
v.times do |i|
h.times do |j|
@array[i][j] = 0
end
end
print "Table is reset, \n"
end
end
0614デフォルトの名無しさん
2007/12/25(火) 00:08:23板違いって・・・日本語でおk
0615デフォルトの名無しさん
2007/12/25(火) 00:11:292次元配列で数値を保存してくれるクラスですが、
別に、配列を引数として
GUIで数値を表示する(例えばマインスイーパみたいに)クラスを作ります。
その時に、そのクラスの数値を表示するメソッドは、
Tableを引数とすべきなのか、Arrayを引数にすべきなのか。
2次元の配列を引数にするという事は出来ますか?
例えばですが、このメソッドが配列を引数で成り立つと仮定して、
def show_gui(array2d)と書けるとします。
この時、array2dには縦横の長さが分かりません。(メソッド中で調べるしかありません)
なので、Tableクラスに限定した方がいいと思うのですが、
一方、Tableクラスしか使えない事にすると、拡張性が失われます。
デフォルトのArrayクラスを引数にした方がいいでしょう。
しかしおれには、メソッド内で
・なんだ引数は2次元じゃないじゃん、てか文字列じゃんw
・数値じゃなくて文字列が入ってるんですけど・・・
とか判定させるのはソフト工学的にいけないと思うのですが、
この場合、どうするのが正しいのでしょうか?
0616デフォルトの名無しさん
2007/12/25(火) 00:13:35数値以外にも持ってしまえますが、
数値の代入以外を禁止するのはそんなに難しい事ではないかと思います。
0617デフォルトの名無しさん
2007/12/25(火) 00:26:27とりあえずおちついて初心者スレへ行けって。
なんかあっちでも配列いじくってるから。
0618デフォルトの名無しさん
2007/12/25(火) 00:28:13ただ仕様がどうとかいう単純な事ではなくて
「どう作るべきか」
という方法論なのですが。
Rubyは動的型づけなので、引数をなんでもとってしまう。
その為、どういう風に書けばいいのかに迷う事になる。
0619デフォルトの名無しさん
2007/12/25(火) 00:47:39それはOO上でデザイン時に、全体を見通した上でクラスをどう切り分けしていくかの話なので、
一律な解答はなく、動的だとか言語の問題は直接関係ない。
0620デフォルトの名無しさん
2007/12/25(火) 00:56:02OOPの利点は拡張性だと思います。
継承が出来ないような汎用性のないクラスを作ってしまったら
非常に非効率的です。
上記の場合も、
本当なら、Tableクラスを引数にしたいですが、
そうすると汎用性が失われます。
Tableクラスを使わないと、このGUIのクラスは動かない事になります。
あるいは同じようなインスタンス変数を持つクラスがあった場合に、
誤作動を起こす可能性もあります。
なので、2次元配列を渡すのがベターかと思ったのです。
基本クラスのみを使ってかけば汎用性は最大になります。
引数に自作のクラスインスタンスをとるような設計は間違いではないのですか?
0621デフォルトの名無しさん
2007/12/25(火) 01:12:300622デフォルトの名無しさん
2007/12/25(火) 01:14:57ともかく、
> 本当なら、Tableクラスを引数にしたいですが、
> そうすると汎用性が失われます。
> Tableクラスを使わないと、このGUIのクラスは動かない事になります。
この考えはおかしい。もちろん、Tableを基底にしたクラスを利用してもよいが、
ダックタイプがあるのだから、別にTableクラスが必要はワケではない。
拡張性たって、どこまでも拡張性を仕方がない。
閉めるところは閉めて、緩めるところは緩めると決定を下していくのがOOの設計じゃないなか。
つまり、あんたが考えて、都合のよい実装を見つけるしかない。
0623デフォルトの名無しさん
2007/12/25(火) 01:17:59そもそも二次元配列の認識が間違ってるし、
配列のやり取りがしたいだけなら上のTableクラスの意義もよく分からん
構造の保障されないArrayを直接渡すより、Tableに統一した方がマシに見える
って全体を見てないから憶測だけど
0624デフォルトの名無しさん
2007/12/25(火) 01:21:230625デフォルトの名無しさん
2007/12/25(火) 01:29:13Java とか使ったこと無いんだろうなぁ。
Applet とか使い捨てのクラス作らないで何作るんだろう…
俺は Ruby は気楽に使い捨てができる言語として大変重宝してる。
書くのが楽なら使い捨ても負担にならない。
0626デフォルトの名無しさん
2007/12/25(火) 01:33:560627デフォルトの名無しさん
2007/12/25(火) 03:11:31やれやれだな。
0628デフォルトの名無しさん
2007/12/25(火) 03:44:59まず質問がよくわからん
コード見ないことには、どんな設計しているのか見当がつかん
そのメソッドに汎用性が必要なの?Tableクラス以外渡せないと困るの?
別にTableクラスで困らないならTableクラスにすればいいとしかいえん
あとは2次元配列からTableクラスを簡単に作成できるようにしとけば、
つまり foo(array) はできなくても foo(Table.new(array)) とできるようにしとけばいいんじゃない?
0629デフォルトの名無しさん
2007/12/25(火) 04:03:03最初の質問から思いっきりぶれてないか?別人ならすまんが
原則にこだわるのもいいけど、何をこの場ではっきりさせたいのかが
まったく分からない
と、こんな時間に読んでる俺が言ってみる
0630デフォルトの名無しさん
2007/12/25(火) 04:43:350631デフォルトの名無しさん
2007/12/25(火) 08:41:16自作クラスのインスタンスを引数にしか出来なかったら
他のクラスのインスタンスは引数に出来ない事になる。
これは汎用性が失われた事になる。
クラスは独立すべきです。
だから、引数を基本クラスに限定すべきだと思いました。
こういう話を考えます。
会社クラス
@employees * 100
payment_up(x)
従業員クラス
@y
というクラスを考えます。@employeesは従業員クラスのインスタンスで、
コンポジションされています。payment_upは従業員の頑張りに応じて
給料を上げるメソッドです。
さて、xですが、ここにはどう考えても従業員クラス限定で引数を指定したいわけです。
しかしここで問題が起きます。
従業員の給与変数がyとなっている事です。
これによって、他のインスタンスを入れた時に誤作動する可能性があります。
かといって、ここに数値クラスの給与そのものを持ってくるのは
少し池沼っぽいです。(数値を上げるだけのメソッドになって、数値ならなんでも
引数にとれてしまう)
これは動的型の仕様ですか?
0632デフォルトの名無しさん
2007/12/25(火) 09:01:16return @array[index_i][index_j]
end
def []=(index_i, index_j, value)
@array[index_i][index_j] = value
end
こんなメソッドを追加して、代入が出来るようにしました。
しかしこれではおれの要求には達しません。
おれとしては
[][] = value
の形で代入したりしたいのですが、
何か方法はありますか?
0633デフォルトの名無しさん
2007/12/25(火) 09:13:52きっと飲み会から帰ってきたんだよ
ほら、祝日だし
0634デフォルトの名無しさん
2007/12/25(火) 10:00:41あと5時間!最後のバグとりがんがってほしい。
0635デフォルトの名無しさん
2007/12/25(火) 10:01:08がんばれ、もっと考えるんだ!
一番すっきりしたコードになった時、それが答えだ!
0636デフォルトの名無しさん
2007/12/25(火) 10:03:46助けてください。
当方ゆとりです
0637デフォルトの名無しさん
2007/12/25(火) 10:26:29最近何かあった?
0638デフォルトの名無しさん
2007/12/25(火) 10:27:570639デフォルトの名無しさん
2007/12/25(火) 10:50:03純粋に強化学習の課題が出ていて、
それについてクラスをどう作るべきなのか悩んでいるのです。
当方京大生で、たぶん情報工学を専攻します。
オブジェクト指向はとても興味深いので質問しています。
まともに答えてください。
引数をどういう形でとるべきかというのは
ソフト工学上とっても大事な問題なのです。
0640デフォルトの名無しさん
2007/12/25(火) 11:00:29立木秀樹にでも聞いてこい
0641デフォルトの名無しさん
2007/12/25(火) 11:02:33でも騒人か・・・
0642デフォルトの名無しさん
2007/12/25(火) 11:03:53教授か友達に聞くか、MLに池よ。せっかくの学生生活を2ちゃんで過ごすのって
すごーくもったいないぜ。
第一、レポート書くときに参考文献に「2ちゃんねる」って書くのかい?ありえんよ。
もうひとつ、池沼とか書くなバカ死ね
0643デフォルトの名無しさん
2007/12/25(火) 11:24:06書いて欲しいと思った…。
0644デフォルトの名無しさん
2007/12/25(火) 11:34:39>クラスは独立すべきです。
>だから、引数を基本クラスに限定すべきだと思いました。
こういう新しい発想は嫌いじゃないけど、この主張は今まで聞いたことがない。
少なくとも、今までの偉い人はそんなこと主張していないし、引数を基本クラスに限定しなくてもみんな特に困ってはいない。
そのあとの例も何言ってるのかよくわかんないんだけど、
>しかしここで問題が起きます。
>従業員の給与変数がyとなっている事です。
>これによって、他のインスタンスを入れた時に誤作動する可能性があります。
これは、他のまったく関係ないクラスで@yをつかっていた場合、そのクラスのインスタンスを渡せてしまうことを心配しているのかな。
もしそうなら、動的な言語ならそれは仕方ない、そういうものだと思ってあきらめてください。
これは引数を基本クラスに限定したつもりでも同じことだし、そもそも『引数を基本クラスに限定する』ということ自体できない。
つうかさ、ほんとに京大生なら自分の意図をわかりやすく説明しろよな。こんな質問だと何言ってるのかわからんわ。相手はおまいさんほど賢くはないんだから。
0645デフォルトの名無しさん
2007/12/25(火) 12:29:190646デフォルトの名無しさん
2007/12/25(火) 13:34:360647デフォルトの名無しさん
2007/12/25(火) 13:36:170648デフォルトの名無しさん
2007/12/25(火) 14:27:120649デフォルトの名無しさん
2007/12/25(火) 14:41:48まったくの別物
0650デフォルトの名無しさん
2007/12/25(火) 14:58:55それはRuby2.0から。
そういや今はもうruby-shimとかruby-sumoとか作らないよね。個人的には
ruby-1.8コードをyarvで動かせるパッケージが欲しい。
0651デフォルトの名無しさん
2007/12/25(火) 15:07:070652デフォルトの名無しさん
2007/12/25(火) 15:27:37もっと勉強してから来なさいってみっくみっくにされそうだけど、
だけど他学部の人から相談を受けたらそんなに嫌な顔はしないかもな。
ソフトウェア工学は興味があるが、
あくまでもプログラミングのテクニックとしてで、学問的にはどうでもいい。
とか言ったらその場で抹殺されそう。
>>644
新しい発想じゃないだろ。
どんな本にでもクラスは独立すべき、依存したクラスはよくないと書いてある。
強化学習のプログラム書いたら
おれのHPにうpするから
評価しろよな。
そこまで偉そうにするんだったら採点くらい出来るだろ。
プログラミングはバックグラウンドでは0と1で計算しているだけ。
また、ある時に1と入れたら(乱数を使わない限り)、必ず0か1のどちらが出るようになっている。
だから、必ず最善の手法が存在するはずである。
■ このスレッドは過去ログ倉庫に格納されています