||∀゚)y━・~~~ 乙
遅くなってスマソ。
4ゲットだーヨ
 ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧ ∧ ダーヨ!! (´ー` )  ̄∨ ̄ ̄
\ < ∧∧ /| (´´
\.\_(´ー` )__/|' / (´⌒(´ ⊂ _⊂ ___`つつ≡(´⌒;;;≡≡≡≡
(´⌒(´⌒(´⌒;;
ズザネ━━━━━━━━━━━━━━━ヨッ
>>4 ズレテルーヨ
こうかな?
5ゲットだーヨ
 ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧ ∧ ダーヨ!!
(´ー` )  ̄∨ ̄ ̄
\ < ∧∧ /| (´´
\.\_(´ー` )__/|' / (´⌒(´
⊂ _⊂ ___`つつ≡(´⌒;;;≡≡≡≡
(´⌒(´⌒(´⌒;;
ズザネ━━━━━━━━━━━━━━━ヨッ
最悪だ。。。
氏ね >> 1
>>6 どう最悪なのか分からんが、そう思うなら削除依頼だして立て直してくれ。
Ruby Way は読んでないんだけど、English.rb って使われてるんだ?
Perl にあるからって以上の存在意義は無いと思ってた。
9 :
名無しさん@お腹いっぱい。:02/12/22 19:48
(初期の)Ruby の指針としては、 Perl にある機能はほぼすべて、よりよい代替選択肢と
ともに提供する、というのがあったからね。
それと、きれいに書く手段は用意しつつ、汚く書く手段を完全には奪わないというのもある。
ユーザはその中から好きな書き方で書けばよいと。
1.7にあるグローバル変数のaliasはEnglish.rbに対する考察から。
$a = 1
alias $b $a
$b = 2
p [$a, $b] #--> [2, 2]
>>11 require 'net/http'
h_option = {'tp01' => '','tp02' => ''}#数字は29まで続くようだが
#桁数を指定した連番数字の生成法を忘れてしまった。。。
h_option.each_key{|key|
Net::HTTP.start( 'www.miyagi-npo.gr.jp', 80 ) {|http|
response , = http.post( '/cgi-local/dir/search.cgi',
"area=nous?{key}=on&select=800&print_ch=0" )
#件数は総計730件くらいなのでとりあえず800件くらいを設定すれば十分。
h_option[key] = response.body
}}
puts h_option#後は性器表現とかで料理すれば。
#MLで金光タンが同じような質問してなたぁ。
#金光タンのDB本、FreeなDBを基調にしてほしかったな。。。
あ、上のスクリプトの"area=nous以降が文字化けスマソ。
その部分を全角で書くと
"area=nous&#{key
~~~~~~~
>>13 > h_option = {'tp01' => '','tp02' => ''}#数字は29まで続くようだが
> #桁数を指定した連番数字の生成法を忘れてしまった。。。
> h_option.each_key{|key|
h_option = {}
('tp01'..'tp29').each {|key|
> #金光タンのDB本、FreeなDBを基調にしてほしかったな。。。
何を基にしてた?
>>15 ありがとう(w
そう書けるのね。知らなかった。。。。
金光タンはオラクルを基にしてたみたい。
ちょっと立ち読みしたけど、結局本は買わなかった。
oracleの導入を考えてるような層と、
256倍本を買うような層って、接点が無いんじゃねぇの?と思うのだが。
何でPostgreSQL、MySQLにしなかったんだろう。
彼の考えてることを聞かれてもなぁ。(w
FireBirdなら需要が有ったかもしれない。
>>19 それ (・∀・)イイ!!
FireBird / InterBase って書籍ほとんどないもんなぁ。
>>13 有難うございます!!!
上のコードで、リンク先(〜cgi?no=00004とか)が計2338得られました。
これがサーバー内のデータのMaxだとして、
いきなり目的が果たせてしまいました。
しかし、
&print_ch=0
というオプションがHTML読んでも判りませんでした。13さんは何を見られたのでしょうか?
>>14 どういたしまして。
>&print_ch=0
>というオプションがHTML読んでも判りませんでした。
たとえば「子供」をチェックして検索して、
その検索結果が表示されるわけだが、
その検索結果のHTMLソースに(幸運にも)ちょっとしたヒントが書いてあった。
このcgiはselectで最大表示件数、
print_chで何番目から表示するか、を指定できるみたい。
>>13 なるほどです。納得できました。
最初、selectのMaxが100だと思っていて、
スクリプト書くの `面倒くさい' とあきらめましたが、なるほど、このように
書いても平気なんですね。色んな意味で勉強になりました。
有難うございました!!!
最 近 、金 光 必 死 だ な
1.8.0preview1リリース
33 :
名無しさん@お腹いっぱい。:02/12/26 22:40
やられた
puts ' ' * 4 + 'hoge'
金光さんの本、ちらっと立ち読みしたけど笑った。
小学生の日記なんか読みたくないよ(w
>>34 漏れも立ち読みしたけど、前スレ 970-971 の、
> 予想ではインストールログが本の半分。
> 残り半分がメールの引用とか?
がホントにそのとおりになってて、正直、笑えなかった。
36 :
名無しさん@お腹いっぱい。:02/12/27 06:03
そりゃひどいね。
出版社もよく出したな。
rubyにはJavaのAPIみたいなのが見れるページはないでしょうか?
こういう感じのが欲しいです↓
http://java.sun.com/j2se/1.4/docs/api/ スーパークラスとか、そのメソッド、変数を
調べるのに上みたいのがあれば便利なんですが。。
たとえば、Numericクラスにはどんなメソッド、変数があって
そのスーパークラスはObjectクラスで、
そのObjectクラスにはどういうメソッドがあるか、、とか
を簡単にしらべられないでしょうか?
と書いたところで勘違いしてるかもしれない自分に気づいた;
言ってることおかしいですか
金光ってさ、他人のスレッドに平気で継げるし、
勝手きままなところとかチョソそのままだよな。
>>41 あなたはわかってない。そこが金光タンの魅力なんだって。
refe でも入れなさいってこった
>>44 日本語だから。riって日本語にできる?
あとrefeでpack/unpackテンプレートの出し方が分からん…。
ワオ、日本語ですか。おしえてくれてありがとう
>>46 できないみたい。あと、printf のフォーマット指定
とかも見られないよね。汚い方法でよければパーサを
いじれば実装はできそうだけど、キャプション決め
打ちで個別対応になっちゃうね。
やっぱりそうか。
メソッド名から引くようになってるからダメだろうなとは思ってたけど。
次の256倍本はWideStudio+Rubyだったらいいのになー
256倍本って本当に256倍かと問いたい。
(シリーズがwin寄りっていう印象を持ってるのだが、それは俺の錯覚かな)
プログラミングruby、RubyWayか純正マニュアルを熟読した方が
256倍にふさわしい効率といえるのでは。
ロボット対戦ゲームなんぞを例題として選ぶセンスもついていけぬ。
紙質、印刷も安っぽいし。
>>51 Rubyでのプログラミングの実力アップには繋がらない
かもしれないが、「Rubyでこんなことできます。」、
「Rubyでこんなことしたら楽しいよ。」などの紹介本
としてはプログラミング初心者にはいいと思う。
ちょっとWinよりな気がするのは俺も一緒です。
>>50 WideStudioなる開発環境の存在をはじめて知ったのだが、
サイトを見る限りはなんか偉いプロジェクトのようですが。。。
ttp://www.widestudio.org/index.html んで、rubyの開発環境として優秀なんすか?
愛用者がいたら特徴を教えれ。
おいらは(超小規模、茶飯作業的スクリプトを)vim3でチクチク書いてる。
この際、お前らの開発環境を教えれください。
54 :
名無しさん@お腹いっぱい。:02/12/30 22:33
emacs
M-x run-ruby
M-x rubydb
M-x shell RET irb
などなど
delphiやvi見たいなオートコンプリートがあったらなぁ、
って思うときがある。
viじゃない、vbだわ。
>>57 そういうマクロを書いて公開して欲しいです。Emacs希望。
>>59 TAGS作っておいて dabbrev-expand するだけじゃだめなのか?
>>60 それって書きやすいですか?(自分で試してみるのが早いんだけど。)
viのキータッチに慣れてるとemacsは窓メモ帳以上につらい。。
>>61 キーバインドは好きなように設定すれば(・∀・)イイ
dabbrev-expand はデフォルトでは M-/ に割り当てられてる。
dabbrevならTAGS作らなくてもいいじゃん。
ASCIIの 4000円のRuby本、帯付き 全然読まれた様子無しのが BookOffで 100円だった.
つんどく 手つかずで 手放したんかなぁ
www.ruby-lang.org リニューアル sage
>>66 ソース見たが、gotoにゲンナリ
がんがって自分で移植しろや
rubyユーザって英語のスペル気にしないのね!
さすが、国産言語!
elsif は ruby オリジナルではないわけだが。
71 :
名無しさん@お腹いっぱい。:03/01/05 20:35
vineのvim.rubyってどう使うの?
あれってvim6とどう違うの?
おっと、すれ違いっすか。
>>71 ルビー使いでパールを知らないなんて、結構珍しいですね
71 はルビ使ではありません。
perl腐れ実装のトバッチリ。
もうそのネタ飽きた。ム板の過去スレでも探してくれ。
真珠は本当につかったことないんです。
CもAWKもBASHも使いますが。。。いきなりルビーです。
知る限りelseをelsと省略するのはルビーのみでした。
まあ、いろいろ使った事無いなら素直に勉強汁。
君の知らない事もいっぱいあるんだよ。
else-if ==> elsif
なんかで驚いていたら大変だ。
# 世の中に数多の言語がある中、それだけで
# 知る限りって言ってもしょうがないと思うよ。
# ググってみるとか方法はありそうなもんだが。。。
話題がループしてるのでsage
煽るんならもっと勉強してから来いよな。
ruby じゃ無いけど、一番驚くのは creat だと思う
ところで、elsif (あるいは類似のもの)を導入する利点って何?
else if でいいような気もするが
dangling else と関係が……?
>>80 しょうがねーだろ。当時のリンカは6文字の制限があった。
>>82 Perl は if の後が一つの文でもに必ず {} を付けなきゃならなくしたので、
else if の書き方が C ライクにできなくなるんで、くっつけたんでしょ、たぶん
んでもって elif や elseif にしなかったのは、らりーくんの趣味としか
言いようがないような。
Perl の後継っぽく、ゆきひろくんもそれを真似したんだね。
ルビの場合は {} じゃないけど、はじめと終わりのマークがなきゃならん場合は
同様にあるので、else if にあたるものはあって欲しかったから、なのかな。
憶測ばっかでごめんもう寝るわ
言語について語るのなら、yaccで遊んだことあるくらいのレベルは前提としたいものだが...
>>84 ifやelseの後が必ずブロックでなければならないと、連続するif...else ifを
書くのが非常に面倒になる。elseの後のifを特別扱いすればできなかないけど、
美しくない。とくにRubyではPerlのような{}を使わない分パーサがややこしく
なる。というか、こういうコードはelseとifの間に改行か;が必須になると思
われ。
if foo
hoge
else
if bar
hage
end
voke
end
>>84 elseif だと間に空白入れる typo が起きそう。
>84そのミスやったことがある。N88BASICで(藁
90 :
名無しさん@お腹いっぱい。:03/01/06 22:23
>>88 英語指もってる香具師ならわかると思うが。。。
creat -> create
elsif -> elseif
は本当に辛い
英語指なら、 else と if の間で自然にスペース押してしまわない?
elsif は発音通りだし、 qwerty 配列では 左 右 左 右 左 と打ちやすい。
そもそも、英語のフレーズとして else if なんて言い方はないから
そういうものだと思ってタイプしてるけどね。
92 :
名無しさん@お腹いっぱい。:03/01/06 23:40
>>91 これは個人さがあるかもしれんが、英語的には間のスペースよりも
「e」が抜けるのが辛いです。
私はスペースが入ってないので e のある無しは
気にならないなあ。そういう単語だと自分の
頭に定着しちゃってるからなあ。
英語指云々は関係ないと思うよ。
>>91 さんの
言っているようにスペースの方が効いて来ると思う。
# あちらの人との間で昔話題になったことあるけど
# そういう記号だと割り切っていてあまり気にしてない
# 様子だったな。
>>85-86 hoge.foo(1) = "bar"
っていうsyntaxが通るように改造してくれ。
>>94 何がやりたいの?
hoge.foo[1] = "bar"
が通るからそれで十分な気がするが。
class Hoge
def foo
if !@foo
class << @foo = {}
def []=(a,b)
...
end
end
end
@foo
end
end
無理矢理やるならこんな感じ?
97 :
名無しさん@お腹いっぱい。:03/01/07 21:13
rubyってタイプ量が多くないですか?
99 :
名無しさん@お腹いっぱい。:03/01/08 00:25
たとえば、
end -> }
これだけで1/3!
100 :
名無しさん@お腹いっぱい。:03/01/08 00:26
>>97 いま思ったんだが、むしろ機能が多すぎかも?
なんか使うか使わんか分からんようなものが多すぎ!
もちろん、これって高機能でうれしいんだけど、
オブジェクトか何だかしらんが、
関数の前につけたり、後ろに付けたりする香具師
あれにはまいった!
> なんか使うか使わんか分からんようなものが多すぎ!
なんのことですか?
> 関数の前につけたり、後ろに付けたりする香具師
なんのことですか?
>>99 開き括弧入れたら1バイトしか節約できないじゃん。省略可能にするの?
括弧の前には普通スペース入れるから都合3バイトで節約にならないな。
しかも、条件式のイテレータブロックと区別がつかなくて見にくい。
つか、 C や Perl では
if (式) {
文;
}
Ruby は
if 式
文
end
だから、そもそも Ruby の方が少ないじゃん。括弧の多いLISP系は言うまでもなく。
何と比べてるんだろう。
Python かな。
Python も self. os. sys. あたりを多用するからどっこいどっこいじゃないかな。
Ruby はメソッド呼び出しの括弧が省略できるとか、IOハンドルもオブジェクトなので
メッセージを投げられるとか、 self. がほとんど必要ないとか、短くできる要素はいろいろ。
代表的なのは
Python: os.close(self.handle)
Ruby: @handle.close
みたいな感じ。
まあ、括弧の省略なんかはトレードオフがあったりして短くできりゃいいってもんでもないけど。
その辺の話がしたいならム板の方が適してると思う。(つかさんざん既出)
>>95 やりたいことは、例えばGtk::Style#set_bg(idx, r, g, b)ってメソッドをこ
んなふうに書けるようにすること。
style = Gtk::Style.new
style.bg(idx) = [0xff, 0xff, 0xff]
>95のやり方だと
>>96のように一時オブジェクトが入る。
余談だけど、こんなのはなんかやだし。
foo = hoge.foo
...
foo[1] = "bar"
本質と関係ないけど、 class << @foo = {} の部分、 class << @foo = Object.new でよかったね。
>106
Lisp の setf みたいなものですか?
>>106 がやりたい事は(Ruby で言うところの)代入じゃないよな。
>>109 「(Ruby で言うところの)代入」ってなんじゃらほい?
>>109 元々attr_writerは代入じゃなくてメソッド呼び出しなわけだが。
>>99 個人的には、なんだが、
}
はシフトキーを併用しなければ入力できないから嫌だ。end と3文字打つほうがマシ。
113 :
名無しさん@お腹いっぱい。:03/01/08 21:08
>>112 でも、英語目な香具師だとわかると思うんだが。。。
end って他のcontext に対して保護色してるんだよねぇ〜
英語目やら英語指には厳しいruby?
逆とまではいわんけどネイティブには優しい方。
115 :
名無しさん@お腹いっぱい。:03/01/09 00:27
ネタがなくなったからって、せこい話題で引っ張りすぎ。
117 :
名無しさん@お腹いっぱい。:03/01/09 05:10
やはりCJK文化スクリプトですた。
118 :
名無しさん@お腹いっぱい。:03/01/09 05:12
rubyでzopeのような実装を日本語でアレする夢を見た。
UNIX板に言語スレを立てても所詮こんなもん。撤収〜
zopeってそんなにいいかね?いや、煽りじゃなく。
xtemplate,xmlscan,amrita,erb,drb,webrickやその他を
好みや適材適所で組み合わせて使う方がよくない?
122 :
名無しさん@お腹いっぱい。:03/01/09 23:55
>>121 激しく同意。
zopeって生産性上がるのか疑問。
でもでもでも、「あればいいな、rubyなzope」
>>120 ここはシェルスクリプトとLisp以外の言語スレは似合わない気がする。
sed,awkモナ
125 :
名無しさん@お腹いっぱい。:03/01/10 20:49
>>119 CKはよく知らんが、最初から漢字とかの2文化圏を
意識した(しすぎた?)言語という意味ですた
126 :
名無しさん@お腹いっぱい。:03/01/10 21:12
モジュール類を簡単にアップデートする方法はない?
perl の CPAN みたいな仕組みがあれば最高。
ruby -MRPAN -e 'install 2ch::goRua' したい。
>>126 それを言うなら -MCRAN なような。
>>120 ム板が使い物にならんので、しばらくこっちでやるしかないなあ。
131 :
名無しさん@お腹いっぱい。:03/01/11 00:11
ムツゴロウ板
133 :
名無しさん@お腹いっぱい。:03/01/11 00:14
RAA って 本家と何が違うの?
バージョン番号の別物みたいだし。。。
RAAの鏡
漢の鏡
136 :
名無しさん@お腹いっぱい。:03/01/11 22:55
rubyのプログラムをperlに移植したら、脹れ上がる脹れ上がる(泣
(泣じゃ無くて(笑だと思われ。
138 :
名無しさん@お腹いっぱい。:03/01/11 23:19
>>134 鏡なのになぜバージョン番号は違うんだ〜?
さっぱり理解できん
>>133 質問の意味が分かりません。本家以外のRAAがあるの?
>>137 泣く泣く移植する羽目になってるって意味じゃない?
dtiのwebサーバがruby使えるようになるっていううわさを聞いた。
141 :
名無しさん@お腹いっぱい。:03/01/12 10:10
>>139 本家ルビーとRAAルビーがあると思ったんですが、ちがうのですか?
あの、0.0.6って香具師です。
>>141 何のことを言っているのかさっぱりわからない
もうちょっと具体的に正確に話せや
>>141 金光か? 金光なのか?
もしかしたらraainstallのことをいってるんじゃなかろうか
もう、ほっとけよ。無駄だよ。
"金光"って何? 人の名前?
スマソ、私が理解してないからチンプンカンプンなこと
書いてるのだと思います。(どうぞ無視してください。)
ところで、ルビーってオブジェクト指向らしいんですが、
オブジェクト思考になれてないので、
AWKのような感覚で、非オブジェクト思考で普通のスクリ
プト見たいに使いたいと思いますが、可能でしょうか?
それとも、非オブジェクト思考でオブジェクト指向言語
を使ってると、どこかで行きづまりますか?
(初心者でスマソ)
>>149 初心者を免罪符にしてる人は何をやってもダメ
ノ ‐─┬ /
,イ 囗. | / _ 丿丿
| __| ―ナ′
/ ‐' ̄
,‐ /
ナ' ̄ / 、___
/ ノ`‐、_
/ _ 丿丿 _メ | _/
―ナ′ 〈__ X / ̄\
/ ‐' ̄ / V /
/ \ l レ ' `‐ ノ
/ 、___ Χ ̄ ̄〉
\ 丿 /
\ / _
―ナ′__
| _/  ̄ ̄〉 / ,
X / ̄\ ノ / _|
/ V / / く_/`ヽ
レ ' `‐ ノ ―――'フ
/ ̄ ┼┐┬┐
| 〈 / V
`− 乂 人
┼‐ | ―┼‐
┼‐ | |
{__) | _|
| く_/`ヽ
>>149の `` 行きづまりますか ? '' が
Rubyのアーキテクチャの文脈だと読解できない
>>150-151 がいる刷れは ( 略 )
>>149 可能。行きづまるかどうかは、どこまで使うかによるだろう。
rubyでオブジェクト指向に触れていく、っていう方が自然だと思うが。
参考書やマニュアルはオブジェクト指向を前提に書かれているし、
他人様のソースだってそうだし。
155 :
名無しさん@お腹いっぱい。:03/01/13 14:55
そういえば、test.rbというスクリプト書いて、コマンドラインで
> ルビー テスト.rb
と打って、動かねえ〜と二日騒いだ精神異常者がいたという話を
思い出した。
156 :
名無しさん@お腹いっぱい。:03/01/13 15:27
それはイタリアンな人だね
157 :
名無しさん@お腹いっぱい。:03/01/13 18:35
はっきりいって、オブジェクト指向っていっても
体して変わらんのとちゃう?
これって図星?
何が何とどう変わらないのだろうか。
>>157 awkやperlなどの、他のスクリプト言語と比べて、大きく
変わらないってこと?
大きく変わらないように書くこともできる、というのが
正確な表現かと。
>大きく変わらないように書くこともできる、というのが
>正確な表現かと。
rubyにおいてはそうかもしれん。
しかしオブジェクト指向な言語に一般化できる例えじゃない。
むしろ開発手法や設計思想としてオブジェクト指向が認知されてるんだと思うのだがねぇ。
っつーかそんなところで引っかかってる素人は、
perlでも使ってなさいってこった。
なにがいいたいのかわかりません
>>161 オブジェクト指向は
設計思想を反映させる一般的な方法論として普及してきたのではっつーことさ。
だからオブジェクト指向な言語を、そういう風に使わないのは、
単にrubyの言語仕様に従う従わないっていう話じゃなくて、
開発の過程や結果がオブジェクト指向とは異なったものになるわけで、
だったらrubyなんか使わんほうがいいんじゃないの?っていう。
rubyをオブジェクト指向言語として使う使わないは個人の自由だとは思うが、
だったらマジでperlの方が手っ取り早いし、
資産もあるし機能も充実してるし。。
>>163 最後の2行に同意できない。そのせいか、レス全体を理解できない。
>>163 レス全体を理解できない。そのせいか、最後の2行に同意できない。
( ゚д゚)ポカーン
rubyからオブジェクト指向を取ったらなんも残らんと思うがな。
LISPから括弧を取ったりしまうまからしまを取ったりしてみよう
>LISPから括弧を取ったり
未踏ソフトウェア創造事業ですか。藁
>>163 熟練度の違いじゃないかな。僕はone liner書くときは
perlの方が短くてすむけど、そうでないときは大抵
rubyの方が短いスクリプトになる。これは、perlに
慣れていないだけで、人によっては逆になることもある
だろうし、どちらかに一方的に偏ることも十分考えられる。
171 :
名無しさん@お腹いっぱい。:03/01/14 19:59
elseif から e を取ったら elsif が残りますた
172 :
名無しさん@お腹いっぱい。:03/01/14 20:00
でも、正直なはなしオブジェクト指向っていっても
'.'でつなげるだけじゃないの???
知識以前に知能に問題がある方が大勢いらっしゃいます
>>172 うん。C++と大差ないね。
そういう意味で、オブジェクト指向言語とは容認しがたい。
(もっとも、C++は、Stroustrup 本によれば オブジェクト指向言語
ではなくて、オブジェクト指向プログラミングをサポートしている
だけとなっているから問題なし。罪の重さは全然ちがう。)
で、どのへんが容認しがたいの?
MixInとか、Moduleとか。
情報隠蔽とか継承とか。いろんな実装がrubyにはあるよなぁ。
.でつなぐだけっていうのは阿保ですか?
百歩譲っても、java、pythonよりはオブジェクト指向的。
perlの似非オブジェクト指向やC++なんぞは話にならんかったりして。
179 :
名無しさん@お腹いっぱい。:03/01/14 22:03
オブジェクト指向ったって、数字やクラスにメソッドがあったり
オブジェクトにメソッドつけたりできるだけじゃないか
>>179 っつーか本当の問題は君の卑屈な根性じゃないのかね?
>>174 オブジェクト指向以前の問題として、
C++はrubyよりも明らかに罪深い言語だと思われ。
まぁ、一番罪深いのはCとPerlなわけだが。
>>178 だから、C++はオブジェクト指向言語じゃないと、
言語設計者がそう言ってるの。バイブル読んでみな。
そこら辺りを全然理解できない馬鹿な取り巻きどもが
C++がオブジェクト指向言語だと宣伝するものだから、
誤解がひろがるの。
C++が(オブジェクト指向言語として)話にならない、
っていうのは、そういう意味で不当差別だよ。
>>182と
>>174は同一の人ですか?
この際聞いてみたいのだが、
C++とrubyがオブジェクト指向において
「大差ない」「'.'でつなげてるだけ」って、正気でおもってんの?
rubyのスクリプトにおいて'.'が持っている意味合いって言うのは
それこそオブジェクト指向な概念だと思うのだが、どうよ?
C++はクラス指向言語だろう。あるいはテンプレート指向言語と言ってもいい。
185 :
名無しさん@お腹いっぱい。:03/01/15 00:29
まぁまぁ、
つまりだなぁ。。。
オブジェクト指向と思ってる香具師には、オブジェクト指向と
感じることができるってことだろ?
C++の話があったが、やり方によっては、Cだって立派なオブジ
ェクト指向にもできる。
単に、構造体で囲んでマクロで'.'を展開するだけじゃない!
これぞ究極!
第n次オブジェクト指向大戦勃発のモヨリ
for(n=1; ; ++n) oop.war(n);
継承は?継承は?継承は???
オブジェクト指向に継承は必須ではない
(CでOOをやるのはかなり苦しいのは確かだが、)
継承というのはオブジェクト指向に必要不可欠な概念ではないよね。
継承は実装を一部共有したり、インターフェースをそろえるための
ひとつの方法、方便に過ぎない。
最近は、継承の弊害や制約を避けるため、包含と委譲の組み合わせ、
あるいはmix-inなどで同等の機能を実現する方が便利なことも多い
という考え方が浸透していると思う。クラス間の継承関係よりも、
重要なのはインターフェース。オブジェクトが然るべきインターフェースに
従って操作できれば(メッセージに応答するなら)それでいい、という
のが本来のオブジェクト指向という感じもするよね。
190 :
名無しさん@お腹いっぱい。:03/01/15 05:52
コード書くより、メソッドやクラスの仕様を調べている時間の方が長い言語
これがわたしのオブジェクト指向言語に関するイメージです。
慣れるまでの様子を皮肉っているんだろうけど、「メソッドやクラス」を
「関数や構造体やライブラリ」などと置き換えれば、それ他の言語にも
当てはまりそうだが。
リファレンスを引くとき、オブジェクト指向言語だと機能がクラスや
パッケージ別に分かれていて探しやすいと思う。補完からヘルプから
至れり尽くせりの統合開発環境の便利さは言うまでもなく。
それに、Cなんかでは、気の効いたデータ構造や加工関数がなかったりして
リファレンスを引く代わりにしょっちゅう似たようなロジックを再実装
してる気がする。
192 :
名無しさん@お腹いっぱい。:03/01/15 12:01
>>189 まったく正しい意見だと思うが、2ちゃんでマジレスをカキコしても
かっこわるい。
(^^)
194 :
名無しさん@お腹いっぱい。:03/01/15 13:47
再実装した方が早いときは再実装するのだ。
195 :
名無しさん@お腹いっぱい。:03/01/15 13:54
>>192はどう転んでもかっこわるいし、だいいち臭い。
197 :
名無しさん@お腹いっぱい。:03/01/15 19:13
198 :
名無しさん@お腹いっぱい。:03/01/15 19:16
まぁまぁ、
オブジェクト指向っていっても、結局は手品やマジックと同じ!
手品師のマジックを見て楽しんでいるのが、オブジェクト思考
手品師の種を見ているのが、非オブジェクト思考
いかが?
全然分からん
200
>コード書くより、メソッドやクラスの仕様を調べている時間の方が長い言語
>これがわたしのオブジェクト指向言語に関するイメージです。
まつもと氏の講演に参加したのだが、、、
Cは人間が機械に服従するっていう形でコーディングやデバッグが進歩することが多くて、
よって、人間が本来考えるべき仕事にパワーを割くのが難しいんだと。
つまり、「余計な労力」がかかりすぎるのが問題点なわけ。
これは熟練すればある程度克服できるけど、そういう問題とは別次元の難解さもあるわな。
んで、人間が機械に服従するんじゃなくて、機械が人間に服従するような形が、
まぁ、「ちょっとした作業」には理想的だと。
今の機械は昔よりも賢いわけで、これからもどんどん賢くなるはずだから、
人間が機械に支配されるのはもう駄目だ、と。
で、生まれたのがruby。
確かにrubyにしろリファレンスを開く機会は少なからずあるだろうが、
「なんでこういう風に動作しないんだー!!」
っていうようなデバッグの苦悩に遭遇しないような設計が試みられている、ってさ。
糖衣の方法論として、
rubyがオブジェクト指向、スクリプト言語を採用しているのは確かだと思う。
糖衣になってねぇよ!っていう奴は
perlでも使ってなさい、Cでもホゲってなさい、ってこった。
Ruby書いたこと無い奴がこのスレにいるなら、
まー、だまされたと思って使って見れ。
俺に関していえば、「この生産性の高さはッ!perlは糞ッ!」って、
驚きのあまり失禁してしまったYO。
>>203 俺の場合、生産性の高さはあんまり実感していない。まだ
慣れてないせいかも知らんが。
ちょうど
>>201の言うような、「ちょっとした作業」のために
使う言語として活躍してるけどね。以前はsh,awk,sed,メインには
perlを使っていたけど、rubyのが読みやすいという理由で、perlの
位置を乗っ取った。今では書きやすくもあるが、生産性が高いと
言い切れるほどは使ってないかな。
どういった用途で、どんな風に使うと、生産性が高いと
実感できる? 他人数で開発する場合?
まぁまぁ、
心霊写真をみて、素直に恐がれるのがオブジェクト思考
写りこんだ光の軌跡をたどるのが非オブジェクト思考
いかが?
206 :
名無しさん@お腹いっぱい。:03/01/16 00:51
なんでもいいが、言語ヲタが必死になって作った言語ですよね?
>>205 198 のもソレも、言語使う人/作る人、プログラム使う人/作る人、
分かってない人/分かってる人…とか、一般的すぎてどうとでもなる。
209 :
名無しさん@お腹いっぱい。:03/01/16 07:50
>>208さんの言ってるのをインストールしたいんですが
>以下のコマンドを実行して,閲覧対象となる Info の索引を作成し, 索引をインストールしてください.
>make index
>make install-index
>以前に作成した索引を再利用したい場合は,この操作は省略できます.
と上のホームページに書いてあるのですが
FreeBSDのportからいれた僕の場合、
どこにruby-texi-1.4.tar.gzを置いて、どこでmake ; make indexすればいいのでしょうか?
生産性なんていう言葉をこのスレで使うのは、
シラフなら恥ずかしいような気もする。
とはいえ、Perlが世界に与えた影響力って、
それこそ生産性の高さだと思う。
ベターPerlっていう位置づけでRubyを使えるのなら、
まぁ、生産性の高い言語ともいえるんじゃないのかな。
Perlみたいに「この記号は何なんだ?げはー」
、、、って悩まないし。
もうこれ以上Perlでゴミを生産するのはやめて頂きたい
213 :
>>210:03/01/16 21:26
ドキュメントといえば、 ruby に付いて来るリファレンスマニュアル
ってHTMLしか無いんだろうか?
テキストだとvi|lessがそのまま使えて便利なんだけど。。。
214 :
名無しさん@お腹いっぱい。:03/01/16 21:29
まぁまぁ、
じゃあこれはどうか?
ディズニーランドで素直にミッキー&ミニーのきぐるみを見て
その世界に素直に解けこめるのがオブジェクト思考
そのようなぬいぐるみを見ても、中に入っている人を思い浮かべるのが
非オブジェクト思考
粘土とレゴブロックの違い
217 :
名無しさん@お腹いっぱい。:03/01/17 09:56
>>214 意味不明だ。もうちょっとまともな例えを作れ。
218 :
名無しさん@お腹いっぱい。:03/01/17 10:01
>>216 そこにあるのはTexinfo形式にできる?
でもさあ、
>そのようなぬいぐるみを見ても、中に入っている人を思い浮かべるのが
>非オブジェクト思考
と言うのが、まさにエンジニアリング魂であり、科学する心なんじゃ
ないのかな?
生物学者が常に物理学まで降りていくか?
>>214 ディズニーランドでいつも着ぐるみを着てるひとも、
オフの日には着ぐるみを見てディズニーの世界を楽しめるのが Ruby 。
着ぐるみの口の部分から顔が透けて見える中のひとが気になって、
素直に楽しめないのが Perl 。
>>221 生物学者は常に化学まで降りていく。
化学者は常に物理学まで降りていく。
物理学者は常に数学まで降りていく。
数学者は常に哲学まで降りていく。
哲学者は…常に彷徨う。
225 :
名無しさん@お腹いっぱい。:03/01/17 21:20
>>216 おお〜!
ありがとう、早速テキスト版をダウンロードしました。
226 :
名無しさん@お腹いっぱい。:03/01/17 22:28
まぁまぁ、
じゃあこれはいかが?
「プログラムを作るときに、人間の都合を中心に考えるのがオブジェクト思考」
「コンピュータの都合や特性を中心に考えるのが非オブジェクト思考」
227 :
名無しさん@お腹いっぱい。:03/01/17 23:00
そもそもオブジェクト「思考」じゃないって事に気づけよ。
228 :
名無しさん@お腹いっぱい。:03/01/17 23:03
考えだから思考でいいんじゃない?
それとも試行?(ww
(´-`).。oO(
>>228 本人は気の効いたことでも言ったつもりになってるのかね・・・)
オブジェクト指向は客を見て主を知るといったところか。
人の振り見て我が振り記す。
いま、ふと思ったんだが、Object-Orientedって「オブジェクト指向の」という形容詞ような…。
英語 -> 仏語 | 日本語
object-oriented programming -> programmation orientée objet | オブジェクト指向プログラミング
object-oriented language -> langage orienté objet | オブジェクト指向言語
と、仏語ではちゃっかり活用している形容詞扱い…。
だからなんだと言われても困るんだけどな。
むしろ嗜好、だろ。ガイシュツだけどね。
233 :
名無しさん@お腹いっぱい。:03/01/18 18:48
>>232 わろた
すくなくとも「至高」でないことは確かだ(w
(´-`).。oO(どこが笑えるポイントなのかさっぱりわからないわけなのだが)
235 :
名無しさん@お腹いっぱい。:03/01/18 22:16
ところで、ルビ〜って同じ事やるのに、どうしてああもいろんな書き方
があるんだろう?かえって混乱して使いにくいと思うのだが。。。
例えば?
JARH とか?
239 :
名無しさん@お腹いっぱい。:03/01/19 00:01
rubyのコンパイラ( ゚д゚)ホスィ…
ひとつの事にたいしていろんな処理方法があるのは、データ処理の
常ではあるが、まったく同じ事をいろいろと書けてしまうのは
ちょっと問題かも???
オブジェクト指向と非オブジェクト指向の橋渡しのつもりなので
しょうか?
>>235 There's More Than One Way To Do It.
この諺(なのか? 金言といった方が近いかも)を僕が初めて見たのは
perl本だった。いいことだと思うけどね。問題がないわけではないけど、
デメリットを上回るメリットではある。
また、Rubyの入門書だったと思うけど、Hello Worldを10通り紹介して
たような。
ガイシュツ JARH 集めたサイトってある?
昔のわたなべさんのメールを片っ端から tail -1 すりゃいいのか?
>>240 それのなにが問題なのかさっぱりわからんのだが
オブジェクト歯垢
オブジェクト施工
しょーもねー
>>248 「ちょっと問題かも」の「問題」の例を挙げて、ってことでしょ。
250 :
名無しさん@お腹いっぱい。:03/01/19 10:37
よっしゃあげたろ!
for x in y..z do
;
end
(y..z).each do |x|
;
end
251 :
名無しさん@お腹いっぱい。:03/01/19 10:42
>>241 ディープスペース(深宇宙)向け衛星のどれだったかに
世界各国の言葉で「こんにちは!」と書かれたレコード
を搭載していたとか。。。
これなんかだと、受けるほうはどの表現にたいしても、
パースをかけんといかん。
問題なく余裕で出来るんだったら全然かまわないんだけ
ど、これだけ遅いインタプリタではちょっと疑問
あと、プログラムの保守するときも大変
252 :
名無しさん@お腹いっぱい。:03/01/19 12:18
> There's More Than One Way To Do It.
> この諺(なのか? 金言といった方が近いかも)を僕が初めて見たのは
> perl本だった。いいことだと思うけどね。問題がないわけではないけど、
> デメリットを上回るメリットではある。
なぜ、それがいいことなのか説明してください。
混乱を招くようにしか思えませんが。
>>251 保守については同意するよ。指摘があるだろうなと思ったし、
代表的なデメリットだしね。
それを上回るメリットとして、柔軟性があると思うのだが
いかがか。
多様な言語に対するパースの件は、正直ピンときません。
rubyの言語体系内で何通りの書き方ができたとしても、パーサは
一通りですむよね。
また、速度が問題になるような場合、がんがんに最適化しなきゃ
ならないのなら、そもそもスクリプト言語は採用しないと思うな。
むしろ実行速度よりもプログラムを書き上げるまでの時間短縮が
重要な時に、rubyやperlを使うことを考えれば、妥当なトレード
オフだと思う。
255 :
253と重複した見方だが:03/01/19 12:57
言語に多様な書式が実装されてて、
んで、ちょこちょこ書くうちに、自分のスタイルが自然と出来上がってくる。
一方で他人のソースを目にしたときに違うスタイルで戸惑ったりする。
「RubyWay」本とか、他の参考書とは違う印象を持ったりしたが。
もし仮に書式が束縛を強いるようなものだったら、こういう違和感も存在しないはず。
パイソンとかはそういう問題意識もってるんだったっけ?
インデントとか??知らないんですけど。
でも俺はこんなのデメリットにはいらないとおもうけどな。
むしろ多様な書式に熟練する過程で、
現場でより都合のいい書き方を採用できるのはやっぱメリットでしょ。
ってことは、elseifも入れた方がいいという意見ですか?
257 :
名無しさん@お腹いっぱい。:03/01/19 13:48
>>253 保守のことが洩れも関心をもってます。
実際のところ一番時間かかる&難しいのは「保守」ですから。
258 :
名無しさん@お腹いっぱい。:03/01/19 14:33
> 現場でより都合のいい書き方を採用できるのはやっぱメリットでしょ。
だから、それをメリットと考えるのはどういう見方に基づいているわけ?
単にその場がしのげればいいという意見?
何の言語使っててもコーディング標準くらい決めるでしょ。
>>259 保守云々逝ってる香具師は、そんなことはしてないんでしょ。
261 :
名無しさん@お腹いっぱい。:03/01/19 15:36
>>259 いくら標準云々といっても、やはりいろんな個性が出るのも事実
1つの巨大ソフトで、ルーチン単位でがらっと変わる例に直面し
たことのある香具師ならわかるとおもうが。。。(w
>>258 ああ書けるし、こうも書ける。
んで書きやすい方があるなら、
そういうふうに書けばいいっていうことでわ。
インタプリタにがんじがらめなルールの上で
人間がコーディングする前近代的奴隷根性はステステっていうことで。
そもそも ruby は大規模プロジェクトの用いることを意図して作られたものではないのだが
大規模プロジェクトの → 大規模プロジェクトに
>>261 >いくら標準云々といっても、やはりいろんな個性が出るのも事実
それってスクリプト書く人間の問題でしょ。
ドメスティックな問題を社会問題にしないでくれよ。
>>266 斜め読みした感じだと、SOAPな共通インタフェースとそれをRubyで
使う為のライブラリが公開されたってだけだろ?
そのAPI自体は大方Cか何かで書かれてるんだろうから、Rubyの
大規模プロジェクトとは言えんだろ。
まぁRubyにとっては大規模かもしれんよ。ふ。
っつーか大規模っていう単語自体が胡散臭だわね。。。
Perl的用途がRubyの守備範囲っていうのは
多くのユーザが感じていることだと思うのだが。
269 :
名無しさん@お腹いっぱい。:03/01/19 16:17
オブジェクト入門者だが、goto文ってつかえるの?
momonga犬糞ってRubyを多分にフィーチャーするっていう話だそうだが、
momonga自体が骨抜きっぽな予見。
MacOSXにRubyインタプリタが標準装備、っていう話もあるが、
かといって、OSX経由でコミュニティが充実してきた、
なんていう話も聞かなくて、ちと悲しい。
>>269 goto
Rubyにないもの。
gotoがないのはそれが「あるべきでないから」ではなく、
「実装するのが面倒だったから」である。
gotoの代りはcatch/throwや例外で実現する。
Ruby用語集より
漏れのオブジェクトも入門されそうです
>>271 後、アンチ goto 厨に悩まされないで済む。
274 :
名無しさん@お腹いっぱい。:03/01/19 19:37
goto 欲しいんだけど。。。
rubyスクリプトを再度特定部から実行させたいんだけど、どうすればいい?
スクリプト自体を再帰的に呼び出したいのです。
275 :
名無しさん@お腹いっぱい。:03/01/19 19:50
似たような機能はいっぱいあっても、こういった機能がないとは
プ プ プ
redo
っつーか
糞言語 = [C, C++, Cobol, Fortran, Perl]
言語 = [Java, Ruby, Python]
""が抜けてるよ。
どの言語は使えないとか糞だとか、そういうのム板で飽きた。
Perlのgotoはただ者ではなかったんでなかったか?
>>274 a. ファイルの該当部分を読んで eval
b. racc が生成したソースを読む
redo/retry
catch-throw
callcc
gotoがないと困るかどうか、上記を使うかどうかは設計次第と思う。
許容範囲なgotoの使い道って結局エラー処理とかじゃない?
だったら、例外投げて、ensureで処理してやりゃあいいだけと……
ということで、設計次第じゃないの?
もし Ruby に goto があったとして、
どうやって使ったらいいか想像すらつかないんだけど、
漏れはヘタレでつか?
>>286 頭の硬い、知的に劣等なヤツであることはたしかだな。
>>287 おまえの言うところの goto の知的な使い方というのをぜひ教えてくれ。
もちろん ruby の他の機能じゃ実現できないやつな。
>>288 漏れは287ではないが、何故「ruby の他の機能じゃ実現できないやつ」
でなければならないんだ?
TIMTOWTDIに従えばそんな前提は無意味だと思うのだが。
で、用途としては、ソースをぐちゃぐちゃのスパゲッティにして
余人に読めなくしたい場合、その一助にはなるだろう。
>>289 gotoな話題から反れるのだろうが、、、
Rubyで「あえて、わけわからんコードを書く」
っていうのもむづかしい、とも、よく述べられているような気が。
Perlならマジで暗号みたいなコードもあるけどな。
なんでこのコードがこうなるんじゃあ!っていう。
rubyスクリプトをスパゲッティにするフィルタとか、用途ある?
変数名とかインデントとかだけでもぐちゃぐちゃにすれば人間の目には厳しくなるが。。。
ま、そんなのソースコードの隠蔽、とやらには程遠いが。。。
>>290 instance_evalなどをフルに活用すれば十分に可能。
>>290 それなら Exerb さえあれば十分。
と、ネタともマジレスともつかない糞レスをしてみた。
洩れはアルゴル系からのふる〜いプログラム組ですが、エラー処理以外
の処理でもそう行った通常フロー以外の流れにしたいときが時々あります
設計云々の話は、言いたいことはよく分かりますが。。。
(20年近くやってますので)
それをすると帰って処理が複雑になってしまうこともあったりして、
ある種の必要悪みたいな感じで使うことがたまに発生しています。
>>284 さんの言われている機能も、結局のところは構造化プログラミング
(死語?)の枠組内の機能でしかないです。
その機能で実現できるものなら最初からgotoつか使ったりしないんですけ
ど。。。やっぱり無いんですねぇ
これからrubyに本腰いれて。。。と思っていましたが、かなり残念です。
どうもありがとうございました。
callcc って構造化プログラミングなの?
>>209 TIMTOWTDI は Ruby の哲学じゃないってのはOK?
Ruby は Have fun, POLS, There's a better way to do it あたりがよく出てくる。
↑は
>>289だった
goto 導入を提唱するなら、その仕様上の難しさやそれに伴う実装上の難しさを
上回るメリットを主張しないといけないわけだが、そのときに「goto がないと
難しいあるいは面倒」という処理を考えるのもひとつだが、ちゃんとした仕様も
考えないといけない。
evalでラベルを動的に定義したらどうなるのか、とか、前方ジャンプの途中で
定義されたローカル変数は宣言されたものとすべきか、とか、イテレータ
ブロック内にジャンプした場合にイテレータメソッドはどう呼び出せば
いいのか、とか、いろいろ考えないと。
疑似コードでいいから、どういう流れの処理で goto がほしいか言ってみれば?
たとえば、拙い例で済まないが、 A, B, C, D という処理が並んでいて、
読み込んだデータに応じて A -> B or C, B -> C, C -> D or A, D -> A or 終わり,
と遷移したいときは、
状態 = A
loop {
case 状態
when 終わり
break
when A
...
if ...
...
状態 = B
else
...
状態 = C
end
when B
...
...
}
みたいに書けばジャンプはいらなさそうだし、よくある多重ループからの脱出なら
catch-throw で済む。もっと複雑な例でも例外捕捉+retryやループ+redoで自然に
書けそうだし、callccという最終手段(重いので)もある。というわけでネタきぼん。
>>294 マジレスすると、そのような設計自体がRubyには合わないだと思う。
どんな言語であれ、設計の仕方ってある程度決まっているもんでしょ。
CでOOができるとかいくらほざいても、それなら初めからC++でやった方がいいのと同じ。
よく、Perl to Rubyって書いてあるものがあるけど、
本当にPerl使っている人でRubyの方がいいな〜と思って移るのは、
PerlのOOに限界を感じている人だと思う。
言語には言語なりの考え方やスタイルがあるわけで、
まあ、確かに誰も強制なんかできないけれど、
それが合わなければ、その言語を無理して使う必要もない。
ただ、どんな言語であれ、そのスタイルというのが扱いやすいとか、
ある面にメリットがあるから採用しているのであって、
俺が知っているやつしか駄目とか言っていたら、時代に乗り遅れていくんでないかな?
OO嫌いだとか、OOしか駄目だとか言っているやつと、
gotoは使っちゃ駄目だとか、言語にgotoが無いと駄目だとか言っているヤツは、
どっちにしてもイタイヤツにしか見えないと思う。
つか、ム板にいけばそんなヤツが山ほどいるけど…。
なお、言語論争で今熱いと俺が思うのはWebProg板でのPerlとPHPの争い。
Perl厨とPHP厨の無意味な論争が日々かわされている。
そして、RubyやPythonを持ち出すとなぜか無視される。
彼らはRubyやPythonを知らないだけなのか、
それとも敵わないことが既にわかっているのか、
それともそんなマイナー言語なんて無視無視と言っているのか、
どっちにしても、レベルは低いので煽るのに最適な所です。
274>>
まずgoto使って何をしたいのか示してよ。
(得意の?)ALGOLでコードの切れ端を書いて提示したらどう。
それに対して、Rubyならこう書けばよい、と誰も示せなければ、
gotoが欲しいという要望に説得力が出てくるよ。
モザイクのかかったアヒャ毛のように黒々とした長レス逝ってヨシ
設計論とかスタイルとかと全く無関係というわけではないが、筋違いでは。
つーかOOPとgotoは対立するものでもないでしょ。
脱出以外のgotoを認めると、どこまで認めていいかが分からないから
コードが複雑になるというのはわりと広く受け入れられてるんじゃないの。
実際、脱出に限りgotoを使うのを許す規約だってあるでしょ。
gotoがコードを複雑にする原因はどこからそのラベルに飛んで来れるかを
制御の流れの中から探すのが簡単ではないということに尽きる。
つまり制御とコードの並びをいくらでも違うものに出来ることが
gotoの柔軟さであり複雑さの源泉でもある。
そこで、gotoを脱出に制限すれば、制御と脱出位置の関係を明示することに
専念する出来て、そうするとわざわざgotoに拘る必要はなくなるから、
代わりにbreakや例外が導入されるわけだ。これはOOPとは関係がない。
継続はまた話が別で、特定の応用において管理する文脈が何かによって、
継続と同等の機能がcall/ccなしでも実現出来るかどうかは変わってくる。
いわゆる構造化(連接、反復、選択)の範囲でも文脈を自分で管理することで
継続を実現できる場合はある。だから構造化と継続の有無は直接は
関係はない。構造化は計算可能性を損なわない範囲でコードの複雑さを
抑制する技法だが、継続は平行性のような実行の構造を操作する技法で
あって、コードの複雑さとは直交する話題だ。
303 :
名無しさん@お腹いっぱい。:03/01/20 18:54
>>302 理由はgotoの実装が面倒なんだよやっぱり。そもそもオブジェクトを評価
するわけだろ、そしてブロック内も実はオブジェクトだ。純粋のOOモデルだからな。
が、その途中で何もかも投げ出して、任意のオブジェクトの中身に飛び込めるか?
これを実装するっていっても無駄な労力だし、そのためのオブジェクト情報の
管理をする処理量が増える->実行速度低下だぞ。そもそもgotoをいったいどんな
オブジェクトとして扱うんだ?
Gotoオブジェクトだったりして。
俺の書いた直後に同じことを繰り返すヤシがいて話がくどいなあ。
まあいいけどさ。
うんうん、別にイイじゃん。
こんなのム板でやり尽くされたから、
話題自体が繰り返しなんだしさ。
goto使いはム板にgoto使いのスレがあるので、
そこに行ってgoto使った素晴らしいコード書くと神になれるかもよ。
で、なんか、別の話題でもないですか?
……そんなに言語が好きなら、コード書けや。
308 :
名無しさん@お腹いっぱい。:03/01/21 00:08
しかし、ある意味これってrubyの限界を表してないか?
ruby は銀の弾ではない
>>308 やっぱりアセンブラ以外は限界があって使えないよね。
と煽ってみるテスト。
言語によって得手不得手があるのは当たり前で、
その不得手の部分が実際上どう問題になり、どうやって回避するかが語るべきところ。
閑話休題。
で、CPAN みたいなインストーラ作る計画ってなかったっけ?
わたなべさんの Cygwin パッケージで更新していたら、
堕落して make 作業が面倒になってしまった。
閑話休題は閑話が休題することなんだが。。。
312 :
名無しさん@お腹いっぱい。:03/01/21 11:11
313 :
名無しさん@お腹いっぱい。:03/01/21 11:14
rubyはキンタマではない
>>311 閑話の前は、独り言ですませちゃったんだよ。
名古屋の人は語尾にカンワって付けるよね
うみゃーでカンワとかいそがしゃーでカンワとか。
閑話休題
本題はなんでつか?
rubyスクリプトの冒頭は
#!/usr/local/bin/ruby
#!/usr/bin/ruby
ではなく、
#!/usr/bin/env ruby
と書いてちょんまげ。
それだとオプションが渡せないんだよな〜
#!のトークンの個数はOS依存
320 :
名無しさん@お腹いっぱい。:03/01/21 23:03
ruby の次の誕生石(ってなんだっけ?)を待つしかないかも。。。
goto房の皆様!
env はセキュリティ的に使いたくないと
思ってるんですが俺だけですか…。
nande?
いろいろとgotoの件での書き込みを拝見しましたが。。。
1)そもそも実装が困難かもしれない
2)そもそもrubyの想定している守備範囲外の可能性もある
とのご意見には、なるほど考えさせられるものがあります。
私自身も若いものに対してはgotoを使うなと言っている立場
であることが多いのですが、それでも完全に無くしてしまう
のは無理でないにしても効率が悪いときがあるということを
実感していましたので、大変に参考になりました。
マジレスしてくださった方、ありがとうございました。
> のは無理でないにしても効率が悪いときがあるということを
> 実感していましたので、大変に参考になりました。
だから、その実感できる例を出してみてくれって言ってるのよ。
ALGOLでもいいからさ。
漏れも goto イラネ派なのですが、
こういうケースなら goto があったほうが全然イイ、
ってケースがあるなら見てみたいです。
漏れも要らんと思うが、
最近目にしたやつだとBSDのqsort()はgoto使ってて興味深かった。
このgotoはループとbreakで消せるが、そうするとループでネストが1つ深くなる。
BSDスタイルは8タブなので可読性を考慮して使われていると思う。
327 :
名無しさん@お腹いっぱい。:03/01/22 09:36
漏れもgotoがあったほうが全然イイというケースを知りたいですね。
むかしのBSDのカーネルでは結構gotoを多用していたけど、ほとんどの場合、
例外処理のときに、プログラムの特定の所のエラー処理に跳ぶ、みたいな
感じだった。これは実はコンパイラーの能力が低く、こうでも
しないと処理速度が稼げないのと、少しでもメモリーを少なくするためだった。
今は、こんな書き方はしない。エラーの関数を呼び出して後処理させてから、
おもむろに戻る。メモリもあるし、CPUの処理能力もあるし、ぜんぜんなんの
不都合もないから。
なんのためにgotoを使っているか考えたことがない人は、「むかしから
使っているからgotoが必要」と思っているのかな。それとも漏れの知らない
技法があるのかな。
>>328 それは例外のない言語だからでしょ。
エラー処理とかクリーンアップをまとめて記述してgotoで飛ばす
ってことなら例外を使ったほうがいいよ。
rubyならrescueとensure。
>>328 Ruby と関係ない goto の話なら他所でもできると思うので、
ここではなるべく Ruby の話をベースにというところできぼんぬ。
# 漏れも C では主にエラー処理の場合に限って goto 多用してます。
結局のところ、274 は 「goto をむかしから使っているから必要」と思い込んでいる
だけってことでよいですか?
332 :
名無しさん@お腹いっぱい。:03/01/22 17:42
>>328 Rubyと関係ないと怒られるかも知れないが、マジレス。
漏れなら、こんな遠くへgotoなんかで跳ばない。すぐさま後処理手続きを呼んで、
その場でreturnだ。こんな可読性の悪い書き方はしない。後処理はたぶんマクロか
インライン関数だろう。可読性のための後処理手続きだから。
むかしならこう書いたかも知れん。理由は簡単でコンパイルした時の
実行コードに重複がないから、メモリの節約ができる。が、しかし、
C++で書いていて「メモリが節約云々」もねぇだろうよ。むしろ
こんな書き方をすると、今時のCPUやコンパイラのオプティマイザでは不利
じゃないのか?むだに遠くにジャンプするだけ、折角の実行コードの
プリフェッチが無駄になっちまう。
おまえらどうですか?
333 :
名無しさん@お腹いっぱい。:03/01/22 18:04
>>327 内側から飛び出すgotoの代わりには、最近は例外処理もあるし、breakなりフラグで抜けるなりで何とでもなる。
しかし、ループの中に飛び込むにはgotoしか無いのだよ。
だがさらに、残念ながらループの中に飛び込むようなコード書くことなんて、全然ないのだよ。
以上、漏れの意見ですた。
>>332 ぜんぜん可読性が悪いとは思わないよ。
ああいう書き方は定石でしょ。
335 :
名無しさん@お腹いっぱい。:03/01/22 18:44
>>334 おまえな古い考え方と定石を混同するなよ。
あんな小さな行数だからマシだが、100行ぐらい先に飛んで
実際のコードを探して、ああ、そうかこうなっているのかとかいってまた
100行戻って元の位置から読み始めるのが楽か?
はっきりいって、おまえはプログラムのセンスがないぞ。
Rubyとかいう問題じゃなくって、おまえはプログラムなんかもう組むな。
回りの迷惑だ。
336 :
名無しさん@お腹いっぱい。:03/01/22 19:01
ループの中でgotoして、もう一度、ループ先頭のさらに前に戻って
(いくつかの初期値を戻して)やり直すというコードも何度かみたことある。
が、ループを1つの関数(あるいはブロック)に割当てて、条件を満たすまで
何度でも呼び出すといったほうが、すっきりできると思うがな。
機能的にも1つのブロックといして存在できているし。
たぶんこれを書いた奴は状態フラグとか無駄だとか思ったんだろう。
だがなデバックするときは、デバッガのマーカーとして状態フラグは
意外と役に立ってプチうれしいぞ。
>>335 あひゃ!
あんた口は悪いが、言ってることは当たってると思うぜ!
プログラミングの定石などない。
と、言ってみるテスト。
while(*++s = *++t);
eruby+mod_ruby、良いよね〜。
でも、ERB2のほうが早いんだよな。PureRubyなのに。
これからはプログラミングはどんどん抽象的に書かないと読んでもらえない
し、最適化の恩恵すら受けなくなる時代が来る気がする。gotoどころか、for ル
ープがイテレータになったり、最近ではアスペクト指向で実行順序すらも抽象化され、
最後には数学の定理みたいにルールのみを記述するようになるんじゃないだろうか。
つまり究極的にはプロローグに……。
思いのほかレスが多く付いてびっくりしています。
(一部の方は良く理解or経験去れているようですが。。。)
しかし、経験の違いでしょうか?
多くの方が、そのgotoが必要な箇所や場合を理解されていないようです。
ここはrubyのスレですので、rubyに関係のある形でいくつか示してみたい
と思いますが、例えばrubyのソースなど読まれたことはあるでしょうか?
Linuxのカーネルソースでも構いません。
いずれも、(必ずしもそうとも言い切れないものもありますが)実にスパ
イスの効いたよい方法でgotoが使用されている場合がいくつかあります。
その具体的な内容を議論することは、ここでは避けたいと思いますが、
言語は違っていてもアルゴリズムor処理アプローチ的には共通するものが
あるのではないでしょうか?
***
とはいえ、すでに前回に書き込んでいますように、
・実装の困難性
・言語の想定外
という理解は出来ていますので、この件については、これで(私としては)
終りにしたいと思います。
C における goto の必要性を例示したところで、
ruby における goto の必要性とは何ら結びつかない
libc、Linuxカーネル、rubyインタプリタ、などが速度やスタックなどの
制約の元で書かれたコードだということを理解されていないのかなあ。
コードのかたまりを展開した形でなくて別関数にしたら、gotoが不要になって
ものすごくすっきりするのが大半だが、スコープの問題と実行効率の問題から
なかなかそうはできない。
274 :「オートマ車にクラッチが欲しいのです」
名無し:「クラッチなくても運転できるよ」
274 :「いや、やっぱりクラッチが欲しいときはありますよ」
名無し:「じゃあどういう時に欲しいか教えてよ」
274 :「オートマ車にクラッチが無いのは分かりました」
って会話にしか見えないんだが
継承のときの class D < B の `<' って、何で `>' じゃなくて `<' なの?
やじるしじゃない?
348 :
名無しさん@お腹いっぱい。:03/01/23 00:29
>>346読んで思った
extendsって書けたらわかりやすいのに。
extendsでいいようにしてください >だれか
最初矢印だと思ったけど、UML で継承を表す矢印って逆向きなんだよね。
350 :
世直し一揆:03/01/23 00:32
<血液型A型の一般的な特徴>(見せかけの優しさ・もっともらしさ(偽善)に騙され
るな!)
●とにかく気が小さい(神経質、臆病、二言目には「世間」、了見が狭い)
●他人に異常に干渉する(しかも好戦的・ファイト満々でキモイ、自己中心)
●自尊心が異常に強く、自分が馬鹿にされると怒るくせに平気で他人を馬鹿にしようとす
る(ただし、相手を表面的・形式的にしか判断できず(早合点・誤解の名人)、実際には
たいてい、内面的・実質的に負けている)
●本音は、ものすごく幼稚で倫理意識が異常に低い(人にばれさえしなければOK)
●「常識、常識」と口うるさいが、実はA型の常識はピントがズレまくっている(日本
の常識は世界の非常識)
●権力、強者(警察、暴走族…etc)に弱く、弱者には威張り散らす(強い者に弱く
、弱い者には強い)
●あら探しだけは名人級(例え10の長所があってもほめることをせず、たった1つの短所を見つけてはけなす)
●基本的に悲観主義でマイナス思考に支配されているため性格がうっとうしい(根暗)
●一人では何もできない(群れでしか行動できないヘタレ)
●少数派の異質、異文化を排斥する(差別主義者、狭量)
●集団によるいじめのパイオニア&天才(陰湿&陰険)
●悪口、陰口が大好き(A型が3人寄れば他人の悪口、裏表が激しい)
●他人からどう見られているか、人の目を異常に気にする(「世間体命」、「〜みたい
」とよく言う)
●自分の感情をうまく表現できず、コミュニケーション能力に乏しい(同じことを何度
も言ってキモイ)
●表面上意気投合しているようでも、腹は各自バラバラで融通が利かず、頑固(本当は
個性・アク強い)
●人を信じられず、疑い深い(自分自身裏表が激しいため、他人に対してもそう思う)
●自ら好んでストイックな生活をし、ストレスを溜めておきながら、他人に猛烈に嫉妬
する(不合理な馬鹿)
●執念深く、粘着でしつこい(「一生恨みます」タイプ)
●自分に甘く他人に厳しい(自分のことは棚に上げてまず他人を責める。しかも冷酷)
●男は、女々しいあるいは女の腐ったみたいな考えのやつが多い(例:「俺のほうが男
前やのに、なんでや!(あいつの足を引っ張ってやる!!)」)
>>345 もう相手するなよ。あほらしくなってきた。絶対自分の考えは正しいって
思い込んでいる奴と話をしようとしても無駄。
こんなやつに「gotoは使うな」って言われている若い奴らってのは
かわいそうだな。
>>349 UMLのほうが、直感と逆向きだと思うんだが。
353 :
>>344:03/01/23 00:38
ひとの降り見て我が降り直せ」じゃないけど、それをそのままルビ〜に
当てはめることは出来ないのですか?
それとも、やっぱり言語の守備範囲が違うということでよろしいですか?
UML の矢印は全部、依存の方向を表していたんだと思う
つーか、あの矢印は「汎化」だからあの向きで正解です。(分析は具象から抽象へ向かうですよ)
>>342 「実装の困難性」とかいう現実的な制限はひとまず置いといた上で、
では Ruby に goto があればこういうときにこう嬉しい、ってのを聞きたかったのに。
そんなに簡単に引っ込めないで欲しかったな。
ところで、Perl のメソッド呼出の矢印の向きが直観と正反対なのは漏れだけ?
メッセージを投げる方向逆だろ、みたいな。
>>353 話の流れが読めないのかなあ。
A: Rubyにはgotoはないの?
B: より洗練された例外処理やcatch-throwなどの仕組みがあるじゃん。
A: それでもgotoがほしい。
B: 言語仕様を決めて実装するのが難しいよ。
A: それでもgotoを使いたい気がする。
B: じゃあ例外処理やcatch-throwではうまくいかない、gotoならではの使い方の例を示してよ。
A: Cを見てみて。gotoを効果的に使ってるよ。
に対して
B: だからRubyでも必要、という話にはならない。しかも、Cでのgotoは言語仕様、
実行効率、環境の制約などから仕方なくそうしているのがほとんどだよ。
と応じてるわけ。
P.S.
上の方で要約を書いたのは俺じゃないよ。(w
>>355 >あんな小さな行数だからマシだが、100行ぐらい先に飛んで
>実際のコードを探して、ああ、そうかこうなっているのかとかいってまた
>100行戻って元の位置から読み始めるのが楽か?
それは、マクロや関数で書いても同じじゃん。
あんた本当にプログラム書いたことあるの?
>>358 煽る前に ctags 使おうな。
君が Word とか ee とか使ってんなら無理だがな。
>>359 つーかctags使っても状況は同じじゃん…
361 :
名無しさん@お腹いっぱい。:03/01/23 10:17
>>342 だからよぉ、おめーが「スパイスの効いた」例を示して有用性を示せば
いいだけだってーの。それを出さずに、口だけだろ。
例を出せなきゃもう出てくんな。
362 :
名無しさん@お腹いっぱい。:03/01/23 10:18
>>358 おまえには抽象化の概念がないのか?おまえ悪いことはいわん。回りの迷惑に
なるから、プログラムは書くな。
Knuth の literate programming をよんだやつぁいないのか?
彼は goto 好きで Dijkstra とやりあってたらしいぞ。
で、 Dijkstra はあぼーんされちゃったのか。
365 :
名無しさん@お腹いっぱい。:03/01/23 15:41
>>363 おまえらもしかしてStructured Programming with goto statemenetsの
論文を読まずしてgoto云々をいままで言っていたのかと小一時間ほど問い詰めたい。
rubyのbreak next redo retryがそれを実現しているんだぞ。
そもそもDijkstraはFORTRAN、ALGOL、アセンブラ程度を想定している。その頃は
そんなものしかないからな。
でだ、いくつかの例題では、外からいきなりループの中にgotoして戻っていく
のがある。エレガントにみえるが、実際に自分でトレースしてみろ、わかり
づらいから。にも関わらず、
よーしパパgoto使っちゃうぞー、とか言ってるの。もう見てらんない。
お前は本当にKnuthを読みたいのかと問いたい。問い詰めたい。小1時間問い詰めたい。
お前、Knuthって言いたいだけちゃうんかと。
366 :
名無しさん@お腹いっぱい。:03/01/23 15:56
そんな事より1よ、ちょいと聞いてくれよ。スレとあんま関係ないけどさ。
このあいだ、最近のgotoネタ行ったんです。gotoネタ。
そしたらなんか人がめちゃくちゃいっぱいで書けないんです。
で、よく見たらなんか垂れ幕下がってて、goto、とか書いてあるんです。
もうね、アホかと。馬鹿かと。
お前らな、goto引き如きで普段来てないRubyスレに来てんじゃねーよ、ボケが。
gotoだよ、goto。
なんか親子連れとかもいるし。一家4人でgotoか。おめでてーな。
よーしパパ例外goto頼んじゃうぞー、とか言ってるの。もう見てらんない。
お前らな、redoやるからその席空けろと。
gotoってのはな、もっと殺伐としてるべきなんだよ。
Uの字テーブルの向かいに座ったプログラマといつ喧嘩が始まってもおかしくない、
刺すか刺されるか、そんな雰囲気がいいんじゃねーか。女子供は、すっこんでろ。
で、やっと座れたかと思ったら、隣の奴が、Knuthで、とか言ってるんです。
そこでまたぶち切れですよ。
あのな、Knuthなんてきょうび流行んねーんだよ。ボケが。
得意げな顔して何が、Knuthで、だ。
お前は本当にKnuthを読みたいのかと問いたい。問い詰めたい。小1時間問い詰めたい。
お前、Knuthって言いたいだけちゃうんかと。
Ruby通の俺から言わせてもらえば今、Ruby通の間での最新流行はやっぱり、
FreeRIDE、これだね。
大盛りねぎだくFreeRIDE。これが通の頼み方。
ねぎだくってのはねぎが多めに入ってる。そん代わりメモリが少なめ。これ。
で、それに大盛りギョク(玉子)FreeRIDE。これ最強。
しかしこれを頼むと次からMarkにマークされるという危険も伴う、諸刃の剣。
素人にはお薦め出来ない。
まあお前ら
>>294は、C++でもやってなさいってこった。
>>365 同意。
というか、UNIX板にはハカーな連中が集まってると思ってたのだが、コンピュータサイエンス方面はdでもなく素人?!
ループや条件分岐等構造の中に飛び込むgoto、すなわち構造化プログラミングの構造を破壊するgotoは明らかに有害だ。
そうじゃない、安全なgotoは例外処理やbreakで実現されている。
>>367 ここに ruby スレが立った時点で、そもそも板違いと言われていたが、
ム板かどっかの ruby スレが荒れまくってるということで様子見
↓
(一応は) 泥沼のクソスレと化すことはなかった
↓
成仏 (1000)
↓
次スレ (このスレ。次スレ要らんべ?という空気だったのに立った)
という流れで来てる。
近頃はここも、要らん煽りで議論が盛り上がると思ってるやつらの
スクツになってるので、基本に立ち返って次スレ無用でヨロ。
あんたがいらないなら見なきゃ良いだけの話だろ。
私も必要無いとは思うがスレがあったってかまわないよ。
強制話題リセット。
371 :
名無しさん@お腹いっぱい。:03/01/23 22:43
>>367 全ての処理アルゴリズムが、順次・分岐・繰り返しで表せることは、
周知の通り
でも、
制御構造をこの3つに絞ることにより、構造が飛躍的に複雑になる場
合も多数あることも、周知の通り
なんつうか話題がないんだな。厨が理解できる程度の話題しか。
Ruby用語集にも(gotoがないのは)「実装するのが面倒だったから」とあるし、
欲しい人は自分で作ればいいじゃん。作ったところでメリット多くなさそうだし、
ほかにやることも沢山あるという話でしょ。
ところで、RUnitにGUIクラスが欲しいなあ。誰かruby-gnome2で作らない?
普通Test::Unit
ごめん、わしゃruby極道者なので。でもtestunitって標準添付になるんだよな……。
>>375 Test::Unit に Ruby::Unit の界面もおまけで付いてくるから大丈夫なんじゃない?
話の流れを読んでなかった。スマソ。
もう止めようと思っていましたが、技術的に詳しい方の書き込みや
>>356 さんのような書き込みもありましたので、
真面目にレスをくれた方もおられましたので、もうすこしだけ。。。
あれから、rubyに関するいろんな情報を漁っていて感じたことは
(1)gotoの実装実装の困難性
よりも
(2)言語の想定外
の方をより強く影響しているのでは?と感じております。
実は今回わたしがgotoが欲しいと思った直接のきっかけは、既に実績
の有るソフトウェアを保守する必要が有ったからです。
詳細は述べませんが、機能要求が後から追加となり、
(ソフト改修の恐さを身を持って感じておられる、プロの方ならお分
かりかと思いますが。。。(^^; )
いまあるソフトに機能を追加する必要が出て来ました。
このため、既存のソフトに(変更を出来るだけ最小限にとどめて)必
要な機能を追加する必要が出て来て、その解決策としてこのような機
能があれば、と思い立った次第です。
(長くなりそうだったので、2つに分けました。)
もちろん、このような機能が最初から分かっていれば、もっと洗練さ
れたアルゴリズムも可能でしょう。
しかし、動いてナンボもこの世界ですから、綺麗汚い・好き嫌いを抜
きにして、実現する必要もあるのもまた事実です。
「言語の想定外」
というのは、ある意味非常に大きな意味の持つ言葉ですね!
大変勉強になりました。
真面目にレスをくれた方、どうもありがとうございました。
もしくは話題を変えてくれ。
> というか、UNIX板にはハカーな連中が集まってると思ってたのだが、コンピュータサイエンス方面はdでもなく素人?!
ハカーとコンピュータサイエンス研究者はちょっと違う。
それにこの板に書きこんでる層はほとんどダメ大学生だろ。
コンピュータサイエンスの常識を知っとる連中なんて5%以下だろ。
Rubyにgotoが欲しいと言い。
2chに合わないくどい長文を書き。
しかし具体例は示すこともできず。
よし、俺も釣られるぜ!
>>294の慇懃無礼ぶりは芸術的だ、見習わなくちゃ。
385 :
名無しさん@お腹いっぱい。:03/01/25 00:28
結局の所、るび〜は趣味のプログラミング言語っていうことで!
糸冬了
趣味じゃない言語は無い罠
COBOL はおれの趣味じゃないな。
388 :
名無しさん@お腹いっぱい。:03/01/25 09:54
>>378 言っていることの辻褄がぜんぜん会っていない。
「言語の想定外」ってのも君の理解能力が足りない。
多くの人が説明しているようにRubyにとってgotoは対費用効果において絶対に
引き合わないってことだろ。
結局、君はプログラムって何なのかを何にも理解していないんだよ。
まあデジタル土方ってこった
389 :
名無しさん@お腹いっぱい。:03/01/25 10:05
Rubyは世の中で最も使いやすいLLだってこったな。
おまえら!神がMITで講演した録画を見ておいてください。
LISPって趣味だよね。
>まあデジタル土方ってこった
直接的に馬鹿とか阿呆とか考え無しとかいう方がマシ。
実情を理解してないことを指して他の職種で暗喩するのは変。
>>388 ruby に goto がないのは、対費用効果が引き合わないわけじゃなく、
代替手段がいくつかあってまったく必要がないからだろ。
ruby は、本当に必要とあらば苦労してでもその機能は実装するよ。
>>392 禿同
面倒だからというのはgoto論議封じのジョークで
実際は正直要らねーと作者が心底思ってるからとみた。
面倒といっておけば実装してくれたら考えてみるとも言えるし。
赤松智也さんって何者?
395 :
名無しさん@お腹いっぱい。:03/01/25 20:00
>>392,393
でも、そんなこと言ってて実装されたらどうすんのよ?
プ プ プ
matzの行動パターンからして、
いまさらgotoなんか突付くわけ無いだろ。
goto が付いたら鼻でスパゲッティ食べてみせる
398 :
名無しさん@お腹いっぱい。:03/01/25 21:14
>>396 簡単にgotoが実装できるなら、とっととgotoを実装するよmatzなら。
399 :
名無しさん@お腹いっぱい。:03/01/25 21:15
>>387 簡単すぎ。もっと難しい罰ゲームをキボンヌ
goto が付いたら目でピーナッツをかむ
> >まあデジタル土方ってこった
> 直接的に馬鹿とか阿呆とか考え無しとかいう方がマシ。
> 実情を理解してないことを指して他の職種で暗喩するのは変。
おー「どかた」か。「でじたるひじかた」って何かと思ったYO。
要らないものは実装しないだろ。
要るとなったら、gotoの名前が決まって導入されるまでにさらに1年。
404 :
名無しさん@お腹いっぱい。:03/01/25 22:07
漢なら継続使え
Rite では継続なくなるみたいよ。
ドラえもんの読みすぎだぞ。
gotoは要らんけど、任意のネストしたブロックを脱出する構文は欲しいよなぁ。
407を煽りと見抜けない人は(厨房と付き合うのは)難しい。
call/cc 最強!
eval、Proc最強!
412 :
名無しさん@お腹いっぱい。:03/01/26 18:46
ど〜でもいいけど実務の話持ち出されると、弱いなぁ。。。
だれか、gotoを実務で話返せる香具師いないの?
>>412 実務の話と言ったって、
誰も素晴らしいgotoの具体例も出せないんだから、
そもそも無理がありまっせ、旦那。
call/ccが難しそうで理解できません。。
つーか、手ごわそうな上に現状で満足してるので、なかなか理解し
ようという気分になりません。がんばってものにすると何かいいこ
とありますか?
evalは邪道。うそ
>>416 schemeだとcall/ccが理解しやすいってこと?
普段elispで自分の環境作ってるので、LISPの一種としてのscheme
に抵抗はありませんが、call/ccをものにするのに、schemeとruby
で何か違いはありますか?
call/cc が goto 以上に重宝されるシチュエーションって何よ?>418
420 :
名無しさん@お腹いっぱい。:03/01/27 10:20
>>412 本当の実務を教えてやろうか?
大人数でバラバラのスタイルでコーディングすると混乱を招くだけなので、
「コーディング規約」というドキュメントに従いコーディングをする。
インデントスタイルまで細かく書かれていて、それに違反するとレビューの時に
「はい、規約どおりに書き直してきて」って門前払いされる。この中には
「gotoはつかわないこと」って一文が入っている。普通はね。gotoを使っても
良いとか書くと、バカがスパゲッティ−プログラムを書き始めるからさ。
これが第一線の実務。
もちろん小さなソフトハウスで少人数でやっている所なんかは、こんなのは
ない。あいかわらず「長年の経験と勘」の職人さんがやっている。しかし
多くの場合、井の中の蛙状態で、口でいばっている割には中身がたいしたこと
がないんだな。そんなのが協力会社として入ってくるともう大変。こっちの
方が年齢が若いってのもあって、二言目には「経験では」「今までは」って
さ。でも役に立たないんだよね、蛸壺的な知識だからさ。
>>240得意気な顔してなにが「本当の実務を教えてやろう」だ。マ板に帰れよ。
422 :
名無しさん@お腹いっぱい。:03/01/27 13:00
うーん
察するべきか指摘すべきか迷うところだ
p 「420を書いた人」.equal? 「378,379を書いた人」
>>420 >>412 本当の牛丼を教えてやろうか?
大人数でバラバラのスタイルで注文すると混乱を招くだけなので、
「注文カスタム規約」というドキュメントに従い個別注文をする。
盛り、ダクスタイルまで細かく書かれていて、それに違反すると外国人従業員の時に
「ソレナイデースギュードーンデイイデスカ?」って門前払いされる。この中には
「シラタキダクはつかわないこと」って一文が入っている。普通はね。シラタキダク
を使っても良いとか書くと、バカがスパゲッティ−並にシラタキを喰い始めるからさ。
これが第一線の注文。
もちろん小さな個人経営で少人数でやっている所なんかは、こんなのは
ない。あいかわらず「長年の通いとオヤジさんの機嫌」の職人さんが好きに盛っている。
しかし多くの場合、丼の中の蛙状態で、厳選素材といばっている割には
中身にカエルが入ってるんだよな
そんなのが協力会社としてキムチ納入してくるともう大変。こっちの
方が年齢が若いってのもあって、二言目には「経験では」「今までは」って
さ。でも役に立たないんだよね、蛸壺的な知識だからさ。
>>424 bbs = Nichannel.new("ひろゆき")
thread = bbs['unix'][1040496222]
p378 = thread[378].writer
unless p378.equal?(thread[379].writer)
raise KatariException, "予期せぬ騙りが発生しますた!"
end
p thread[420].writer.equal?(p378)
つまり、こういう事?
蛸壷的な知識ってどんなの?
本当の25歳を教えてやろうか?
去年までバラバラのスタイルの金無し君だったけど、混乱を招くだけなので、
「オンラインカジノとパチンコ」というドキュメントに従い二年で350万貯める。
1ドル以上のチップが30ドルまで貰えて、それを思い切ったレビューの時
「ルーレットで赤か黒にかける」と50パーセントで二倍になる。この中には
「金なきゃオフラインでゲームすること」って一文が入ってる。暇つぶしだね。
ビデオポーカーとか書くと、馬鹿がスロとか色々始めるからさ。
これがマジのお薦め
本当の蛸壷を教えてやろうか?
…飽きた
>>426 そんなところです。。。
ていうか、このスレをirbのように使えないか実験したみただけです。
trueかfalseが返ってくるかと思ってたら、
ご覧のとおり、本当の牛丼について教えられてしまいますた。
何かまたすごい誤爆だなぁ
432 :
名無しさん@お腹いっぱい。:03/01/27 23:35
牛鈍と25歳はワロタ!
せやけど、そのまえにあったプログラムの実務って
なんかえらい経験の浅そうなチームやなぁ。。。
そっちもワロク!
433 :
名無しさん@お腹いっぱい。:03/01/27 23:41
実務にはメッポウ弱い?
rubyもこの擦れの人間も?
>>408 イテレータを挟んでると途中で止められる可能性があるのがちょっと。他とか
ち合わないようなシンボルを考えるのがめんどくさいときとか。
以前まつもとさんも、Proc化されたブロックを抜ける構文を導入したいみたい
なことを書いてたことあるし。
>>409 いや、煽りじゃなくてマジな話。うまい構文があれば提案して。
> イテレータを挟んでると途中で止められる可能性があるのがちょっと。
例えばどういうの?
>>435 def mona
3.times {|i| catch(:nurupo) {yield i}}
end
def giko(i)
yield(i * 2, rand(3)) if i == 2
end
catch(:nurupo) do
mona do |i|
giko(i) do |i, j|
throw(:nurupo) if i == j
end
end
end
あまりうまい例じゃないけど。
437 :
名無しさん@お腹いっぱい。:03/01/28 17:51
[ruby-list:37004] が非常に気になる
組合の中の人も大変だな
439 :
bloom:03/01/28 18:16
440 :
名無しさん@お腹いっぱい。:03/01/28 21:49
多次元配列ってどうしてる?
441 :
名無しさん@お腹いっぱい。:03/01/28 22:08
他の言語ではあるけど、rubyってないよねぇ?
442 :
名無しさん@お腹いっぱい。:03/01/28 23:28
違ってたらスマソ!
440が↑な罠
>>407 意味が分からん。
catch と throw じゃだめなら call/cc でも使えば?
>436 こういうこと?
module Giko
CatchDetectionKey = :__CatchDetectionKey__
class CatchNestError < StandardError; end
def self::catch(tag)
pool = Thread::current[CatchDetectionKey] ||= {}
if pos = pool[tag]
raise(CatchNestError, "tag `:#{tag}' alreadey used at #{pos}")
end
pool[tag] = caller.first
Kernel::catch(tag){ begin yield ensure pool.delete(tag) end }
end
end
Giko::catch(:omae){ }
Giko::catch(:omae){ }
Giko::catch(:mona){
Giko::catch(:mona){ }
}
447 :
名無しさん@お腹いっぱい。:03/01/29 08:39
なぬ??
rubyの配列は1次元のみだったのか!(シランカッタ。。。)
多次元配列が使えない言語は糞
よってFORTRAN最高
へたっぴな煽りはこのスレの格好のカモ。
451 :
名無しさん@お腹いっぱい。:03/01/29 20:27
多次元配列についても、gotoと同じですか?
汎用スクリプト言語に組み込みで持つほどの用途はないでしょ。
多次元配列ライブラリなら2,3ある。
要素の型や数が固定できる配列はときどき使いたいことはあるから
NArrayは標準でついてていいんじゃないかとは思う
454 :
名無しさん@お腹いっぱい。:03/01/29 22:19
456 :
名無しさん@お腹いっぱい。:03/01/29 23:12
本のタイトルだけ見て、「Ruby-DBウェブデザイン」を
買ってしまった...。
rubyの256本が1.200円なのに、これが1.600円って...。
457 :
名無しさん@お腹いっぱい。:03/01/29 23:17
煽るつもりは無いけど。。。
何かrubyって作者だかサポーターだかの、コダワリが強くて
いろんな所に制限やら制約が多いような気がする。
もちろん、こうすれば出来るよ!っていう手段はあるんだろ
うけど。。。
ある意味節操が無いぐらいの言語の方が使いやすいかもしれ
んとオモタ
>>457 な ら p e r l 使 っ と け
これでいい?
>>457 | いろんな所に制限やら制約が多いような気がする。
| もちろん、こうすれば出来るよ!っていう手段はあるんだろ
| うけど。。。
どこで挫折したの?
>>457 いや、、、真面目な話、そう思わないんだが。。。
PerlやCやらで書くときの方がテクニックを必要とするっす
461 :
名無しさん@お腹いっぱい。:03/01/29 23:34
>>459 洩れは、多次元配列です。
どうしてもこれをつかう必要があって、結局、次元数分のパラメータを
文字として組み合わせて、ハッシュで代用しましたが。。。
アクセスがメンドクサカッタ。。。
例)
a[i][j][k] -> a[ "i"+"j"+"k" ] (イメージ)
462 :
名無しさん@お腹いっぱい。:03/01/29 23:39
>>458 いや、真珠は嫌いです
ルビーのこの使いやすさをそのまま拡張してホスイdesu
ひとりで抱え込むから挫折するんだって。
「みなさん多次元配列を使いたいときはどうしてますか?」と
ruby-listあたりで聞けばぼろぼろ答えが返ってきそうだが。
バウンダリチェックとか次元とか一切ないけど、こんなんでも動く。
class MDArray
def initialize(); @a = {}; end
def [](*args); @a[args.join("\x0")]; end
def []=(*args); v = args.pop; @a[args.join("\x0")] = v; end
end
x = MDArray.new
x[1,2,3] = 4
p x[1,2,3]
配列の配列で、だいたい用って足りないのかな・・・
既存のライブラリとして matrix/narray/numarray あたりは当たってみるべきだろうな。
466 :
名無しさん@お腹いっぱい。:03/01/30 01:13
>>464 この手の書き込みを見るといつも思うが、
それならアセンブラで全部個と足りることになるんじゃない?
467 :
名無しさん@お腹いっぱい。:03/01/30 01:14
2次元なら何とかなっても、普通多次元使いたいときって
3次元以上ですが。。。
行列と配列は違うyo
>>465 多次元配列つっても
>>463みたいな形も型も拘束しないのでいいのか
JavaとかCとかみたいなものでいいのか
Yorickみたいなのでいいのか等々
いろいろ選択肢はあると思うんだが
特に好みがないならYorick風のNArrayでいいんじゃないの
469 :
名無しさん@お腹いっぱい。:03/01/31 00:28
よくわからんのだが、1次元であろうが多次元であろうが実装の
困難さはそれほど変わらんと思うのだが。。。いかが?
(識者HELP!)
それとも、これも言語の想定外ってやつですか?
つーか多次元配列がなくて困ることって何よ?
漏れはCでもRubyでも困ったことなんてないけど。(Cのアレを多次元配列とも言えるみたいだけど)
多次元配列がなくて激しく困る実例キボンヌ
1次元があれば原理的にできることは当然だからクソ面倒ってことだろ。
例えばN点のヒストグラムの初期化は hist = Array.new(N, zero) でいいが、
MxN上だと hist = Array.new(M); hist.map!{Array.new(N, zero)}
LxMxNだと…; しかも読みにくいし。
469が言うように言語の想定外ってのもあるだろうが、
界面を考えるのは簡単でないし、作者はよく知らないものを実装しないのでは。
だから実装というより設計の困難さだろうな。
472 :
名無しさん@お腹いっぱい。:03/01/31 09:29
いま問題にされてるのは標準にないのが不便って意見も少なからずあるって話だろ。
必要性とOOPSの意味とやらは別じゃねえの。
しかも必要性を問題にしないと最大公約数的な部分も分からんぞ。
まあyorickユーザはFortranやIDLに偏ってはいるかもしれんが
yorickの配列の仕様だって必要性から得られた結果と思うんだがなw
474 :
名無しさん@お腹いっぱい。:03/01/31 13:10
>>470 それを言い出したら何でもいらんってことにならない?
例えば、for が無いとしても同じことが言える
何でもくっつくればいいってもんでもないだろうけど
そのさじ加減は最終的には作者のセンスってことになるな
インタプリタはセンスだが添付するかむしろ利用者次第かと
477 :
名無しさん@お腹いっぱい。:03/01/31 14:15
そうだなたしかに。ユーザの多くが必要であればすぐに標準拡張ライブラリに加わるだろうしな。
そういや sumo ってどのくらい使われてるんだろ?
479 :
名無しさん@お腹いっぱい。:03/01/31 15:40
>>477 そうだなたしかに、ユーザの全てが必要と感じればすぐにるび〜はもっと普及してる
だろうし。。。
98と同じでローカル
480 :
名無しさん@お腹いっぱい。:03/01/31 17:08
日本にはあまり伝わっていないけど、今、Rubyの注目度はすごいよまじで。
既にMac OS Xには標準で載っているけど今度は.NETにも標準装備されることは
ほぼ確実らしい。学術系でもRubyを正当なLLの系譜で捕らえている。SIGPLAN
の作るコンピュータ言語の系譜の最新版ではRubyが載っている。
今やアメリカのコンピュータ言語界ではまつもとさんはちょっとした時の人で
去年末はシアトルでのRuby Conference、OOPSLA、MITのLL workshopでの講演で、
西海岸から東海岸まで大移動していた。
今は逆に日本国内の方がRubyの理解度が低いぐらい。日本の優れたものは日本
国内では評価されず、まず最初に海外で評価されて日本に逆輸入する形で初めて
評価されるという日本伝統のパターンを踏襲している最中という所かな。
まあこんなマジレスを2chでカキコしても仕方がないけど。
LLって線形論理?
482 :
名無しさん@お腹いっぱい。:03/01/31 17:37
>>480 注目度ってえらく抽象的な表現だけど、シリコンバレーの大きな本屋
をいろいろと回ったけど、どこもRUBYの本は1冊もなかった。
でも、MACやらwinに乗るのなら、人気は本物かもしれない。
とはいえ、多次元配列ぐらいはいれて欲しいなぁ〜
483 :
名無しさん@お腹いっぱい。:03/01/31 17:43
LightwaitLanguage.
略してライラン。
>>482 480 に同意はしないが、ちょっと前に San Jose の computer literacy bookstore
に行った時には Ruby の本が入り口を入ってすぐのところに平積みで置いてあったよ。
485 :
名無しさん@お腹いっぱい。:03/01/31 18:40
perl殲滅の日は近い。
C++がでてきても、Cが死んだわけではない
Rubyがでてきても、Perlが死ぬわけがない
487 :
bloom:03/01/31 18:43
488 :
名無しさん@お腹いっぱい。:03/01/31 18:46
でも Ruby 書いてると Perl 書けなくなる…
まあ仕事で使う用事ができればまた書くんだろうが
489 :
名無しさん@お腹いっぱい。:03/01/31 18:50
Ruby Conference、OOPSLA、MITのLL workshopの資料キボンヌ
490 :
名無しさん@お腹いっぱい。:03/01/31 19:03
>>484 そっか、やっぱりあるところには有るんだ。。。
洩れはもうちょっと北でLosAltos/MountainView/PaloAlto...
等まわってみたけど、全然みつからんかった。
Fryはもちろん、スタンフォードの本屋も無くてがっくり
ところで、英語では良本があるのでしょうか?
なんか日本語の香具師って、難しい奴ばかりで。。。(^^;
491 :
perlはウンコ言語:03/01/31 19:03
>>490 Programming Ruby と The Ruby Way でしょ。
どっちも日本語訳もあるけど。
>>490 訳本でているのは良書だよ。Programming Ruby と The Ruby Way。
あう。リロードすればよかった。
Nutshell はオンラインのリファレンスの方が充実している。
Ruby Developer's Guide はネット・GUIなどいくつかの分野の
アプリケーションをRubyで作成するにはどのようなライブラリを選択すればいいか、
といった話。
他は読んでないからわからない。
>>490 オススメは Programming Ruby と The Ruby Way かな。
どちらも邦訳アリ。
496 :
h219-110-056-001.catv01.itscom.jp:03/01/31 23:19
v
>>490 まぁ、俺のお勧めはProgramming Ruby と The Ruby Wayだな。
日本語で読んだけど良かったよ。
499 :
名無しさん@お腹いっぱい。:03/02/01 02:39
配列の配列と多次元配列って違うものなんですか?
だから、「配列の配列の配列で多次元配列できるでしょ、終わり。」ではOOじゃないんだって。
多重ループで初期化したり、演算のために自分でループ回したり、そんなんではOOのデータ構造
にはならない。
配列の配列というのは多次元配列を実装するひとつの手でしかない。
というのを以上から読めないですか。
>>500 「OOのデータ構造」ってへんな言葉だと思いますが。
ちうかOOっつう言い方が鼻につくな。データ抽象でいいじゃん。
503 :
名無しさん@お腹いっぱい。:03/02/01 04:26
>>504 だから、日本語ではrubyじゃないんだって。
(501..503).all? { |x| x.itteyoshi? } #=> true
#! ruby -Ke
module Enumerable alias_method(:まとめて?, :all?) end
def 逝ってよし?(香具師) true end # 藁
p (501..503).まとめて?{|香具師| 逝ってよし?(香具師)}
ruby 1.8でちゃんと動くところがワラタ
>>490 たぶん売り切れてる。
私が行った時は山積み状態だったよ。
(PaloAlto, Stanford Universityにもいっぱいあった。)
# Stanford Univ.の中でも結構常用してる奴います。
509 :
名無しさん@お腹いっぱい。:03/02/01 10:22
お勧め本、親切に教えてくださって感謝します。
いまは、RUBYプログラミング入門が手もとに有るのですが、
他の良書にもいろいろと当たってみたいと思います。
>>508 そうでしたか、知りませんでした。
いずれにせよ、このように日本発の言語が世界に受け入れられていく
ってすばらしいことですよね。
rubyの発展を心より願っています。
510 :
名無しさん@お腹いっぱい。:03/02/01 10:25
1.8 と 1.6 で何が違うか知りたいんだけど
どこかに良い情報減ある?
512 :
名無しさん@お腹いっぱい。:03/02/01 12:26
>>507 は、ひょっとして 1.8 だと多次元配列が動くということですか?
だとしたら、早速バージョンアップします
514 :
名無しさん@お腹いっぱい。:03/02/01 15:09
みなさんお勧めの書籍が偶然にも重なっています。
*Programming Ruby
*The Ruby Way
でも、これらって皆外人のかたが執筆されたものを日本語訳化したもの
ですよねぇ???
だとすると、やはりルビーの国際化は我々日本人が認識している以上に
進んでるのかも知れない。。。
どうでしょう?
>>514 日本の本がショボイだけなんじゃないの?
516 :
(。・_・。)ノ:03/02/01 15:52
517 :
名無しさん@お腹いっぱい。:03/02/01 16:16
518 :
名無しさん@お腹いっぱい。:03/02/01 16:17
>>511 changelogって初心者には分かりにくいかも。
いわゆるバグフィックスでなくて、機能拡張やら変更を期待すると
ものと
>>514 メーリングリストちゃんと読んでる?
つい最近話題にあがっていたけど、ruby の本は海外ではほんとうに熟れていないらしい。
(ということは、海外の利用者が少ない、育っていない、と言えるよね?)
だから、wrox から出版予定だった本も結局、出版が取りやめになった。
ただでさえ売れていなかったruby の本が、最近の出版不況とかさなり、
新刊はかなり苦しいみたい。
522 :
名無しさん@お腹いっぱい。:03/02/01 22:07
★あなたのお悩み解決致します!!
●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
●ストーカー対策
社会問題ともなっているストーカーを撃退致します!!
その他人生相談からどんなお悩みでも解決いたします!!
24時間受付 090−8505−3086
URL
http://www.h5.dion.ne.jp/~grobal/ メール
[email protected] グローバル探偵事務局
524 :
名無しさん@お腹いっぱい。:03/02/01 22:09
>>521 しかし、うえの書き込みをみるとそう感じたんだが。。。
とはいえ、自分の実感としてはシリコンバレーでは見付からなかったので
あまり流行ってないのでは?と思ってますが。。。
526 :
名無しさん@お腹いっぱい。:03/02/01 22:59
>>525 他の言語でも条件は同じでしょう、だとするとやはり...
527 :
名無しさん@お腹いっぱい。:03/02/01 23:24
すいませ〜ん。
Rubyのドキュメントシステムってどうなっているのでしょう?
パッケージを持ってくると*.rdやら*.htmlとかついていますが、
これを一元的にあつかうメカニズム/コンヴェンションって存在
してるのですか?
Perlのmanとperldocを使ったアクセス方法みたいなのは?
htmlを置く標準的な位置やインデックスページの自動生成
メカみたいなのは?
528 :
名無しさん@お腹いっぱい。:03/02/01 23:25
本といえば、まつもとさんの本って難しいよねぇ?
洩れがバカなだけかもしれんが
>>526 他の言語って例えば?
現時点の普及度でどう考えても
C/C++ Java C# Perl などのメジャー言語よりも本が売れることはないでしょ。
>>527 ユーザの自由意志に任されています。
530 :
名無しさん@お腹いっぱい。:03/02/02 01:37
rubyオタって例をあげさせて叩くパターンが多いな(w
出した例が適切でないならまだしも、ひとつも例がなければ釣りと区別できん
抽象的なものの仕様を決めるには具象を挙げて固めていくしかない。
その場しのぎの泥臭いインターフェースは最初からお断り。
535 :
名無しさん@お腹いっぱい。:03/02/02 10:04
537 :
名無しさん@お腹いっぱい。:03/02/02 10:43
538 :
名無しさん@お腹いっぱい。:03/02/02 11:41
じゃぁ書き込むけど、forが存在しなければならない例をあげれるかい?
あるいは、falseが存在しなければならない例をあげれるかい?
それとおんなじだと思うけど?
コンピュータが存在しなければならない例をあげれるかい?ってこった。
なぜrubyのスレッドはいつもクソスレ化するのですか
スレッドなんて低レベルのものを使わずにもっと抽象化すべき。
スレッドは確かにそう思う。
ただ低レベルと高レベルの両方はあった方がいい。
問題は高レベルってどんなのか。542は何か知らんかね。
544 :
名無しさん@お腹いっぱい。:03/02/02 14:14
>>538 自分はforは別になくても良いかと思う。使わないし。
eachで充分。
falseは真偽値を表すときに必要でしょ。trueに対して。
nilでも良いけどfalseの方が真偽値だとわかりやすい。
548 :
名無しさん@お腹いっぱい。:03/02/02 15:28
>>546 おれはeachはいらんしfalseもいらん。
ここに糸口があると思うが(w
>>543 > スレッドは確かにそう思う。
> ただ低レベルと高レベルの両方はあった方がいい。
> 問題は高レベルってどんなのか。542は何か知らんかね。
>>540 に触発されて書いただけなんであんまり考えてないけど。
とりあえず Asynchronous mixin でも作って、include するとオブジェクトが
生成された瞬間から非同期に動くようにするとか。
知っているものというと Concurrent Smalltalk とか。10年前に論文を見た
程度なのでもう忘れてしまったけど。
http://www.mt.cs.keio.ac.jp/techpaper.j.html 高並列なら並列計算機用Fortranとかだけどそれだと高レベルすぎるだろうしね。
Ada の並列モデルはなかなかいいと思うよ。
他に実装例ってあるのか知らないけど。
>>548 each はいるだろ?Enumerableが使えなくなる。
for は、昔は each に比べてかなり高速だというメリットがあった。
今はeachも速くなったが、それでもforのほうが少し速いはず。たぶん。
false がいらなかったら何使うの?
まさか !true とか
554 :
名無しさん@お腹いっぱい。:03/02/02 16:26
>>552 他次元配列がイランというく香具師も同じ事いってたな(W
結局 bool 代数を使うなら素直に
True/False にしておけばいいじゃん。
557 :
名無しさん@お腹いっぱい。:03/02/02 17:08
なんで、nilやらFalseとか似たのがいろいろとあるんだ?
設計思想がよくわからん
またム板でさんざんやった話題をここで繰り返すのか。。
いちいちマジレスしなくていいよ。
真(true)、偽(false)、空・未決定(nil)、の三つの状態は区別したい。
>>557 わからんのじゃなくてしらんのだろう。NULLが0でないC処理系とか。
>>560 バスの中で手をたたいたり勝手にアナウンスするのをやめたら、いいです。
nil と false はそもそも異なる概念なので別個にあることはちゃんと意味がある
>わからんのじゃなくてしらんのだろう。NULLが0でないC処理系とか。
それを持ち出すと話がややこしくなるからやめとこう
564 :
名無しさん@お腹いっぱい。:03/02/02 18:20
いや、NILとFALSEを分ける必要性が本当にあるのかって話しだと思われ
一つは心理的なものでしょ。
もう一つは真偽を値にしたいからでは。
Lispみたいにnil以外は真だと意図を表せないからじゃないかな。
unit testing でも偽であることを陽に検査したいことはあるだろうし。
testunitで
if COND then 通らない else 通る end
unless COND then 通る else 通らない end
満たすCOND。「ifの条件をパスしないCONDである」ことをテストす
る場合どうしてますか。
assert( !COND ) ですかね。assert_unless( COND ) みたいな
assert 関数はないのかな?
568 :
名無しさん@お腹いっぱい。:03/02/02 19:53
>>567 ここで聞いても他次元配列を1次元配列組み合わせて使え」みたいな
答えしか買えって来んよ(w
満足に進行が読めない上に「他」次元とは文盲もいいところだな。(ワラ
>>564 必要あるよ。その例:
% ruby -e 'p [false].compact'
[false]
% ruby -e 'p [nil].compact'
[]
Test::Unit::Assertionsに自分でassert_unlessを定義するがよろし
中身はこんなもんだろ。
def assert_unless(boolean, message="")
assert(!boolean, message)
end
572 :
名無しさん@お腹いっぱい。:03/02/02 21:31
むしろnilが偽になるのが納得いかん。
false以外は全部真(さもなくばtrue以外は全部偽)の方が
意味的に筋が通ってる気がする。
nilが偽になるのは自然な解釈だと思うが。
>>573 572をはじめとして、ageで書いているレスはほとんど同一人物による煽りだろ。
相手しないのがよろし。
>>574 すまん、ここはsage進行だったのね。あがってたからきずかんかった。
>>573 単にC言語からの類推ってだけだろ?
Rubyでは「if x」という表現を「xが真であるか(xはtrueかfalse)」の
チェックと、「xにインスタンスが入っているか(xはnilかオブジェクト)」の
チェックとの2種類の場合に使うけど、これがいかにもC言語チック。
Javaの場合は前者だけで、後者の目的には明確に「if(x==null)」と書く訳で
実際のコードも結局はこっちのが読みやすい。
>>575 どっちかっつーとLispからだと思うんだが。
ruby板キボンヌ
スクリプト言語板とかあったら面白いかもね、と弁護してみる。
まぁ、False&Nilだが区別して使うことは出来ても、それだけで
必要とは胃炎だろう?
それなら、Positive&Negativeみたいな論理を導入しても同じ事
582 :
名無しさん@お腹いっぱい。:03/02/02 23:08
ちょっと話しが戻るんですけど、
*Programing Ruby
*The Ruby Way
は共に外国版がオリジナルで日本語版が翻訳版との理解でいいですか?
それと、最初のやつは日本語版でそのまま「プログラミングRuby」だと
分かるんですが(うさぎが書いている奴)、2番目の奴は日本語版では
何にあたるのでしょう?
Wayなので道だから、「256倍シリーズ」によく○○道編とかあります
が、これはちがいますよねぇ?
語学が不得意で恥ずかしいんですが、教えてください。
583 :
名無しさん@お腹いっぱい。:03/02/02 23:09
Male <-> Female とかも導入すれば面白そう!
>>582 公式サイトくらい調べられないのか?
または「The Ruby Way 翻訳」でぐぐる。
http://www.ruby-lang.org/ja/20021129.html 『Ruby Way 〜Ruby道への招待〜』発売
書影Hal Fulltonによる「Ruby Way」の翻訳が出版されました。
* 著: Hal Fullton
* 訳: 有限会社トップスタジオ
* 監修: やまだあきら / 鵜飼文敏
* ISBN: 4798102288
* サイズ: B5変
* ページ: 584
* 価格: 4,800円
* 発売日: 2002-11-28
* 出版社: 株式会社翔泳社
585 :
名無しさん@お腹いっぱい。:03/02/02 23:16
>>584 良書なんだろうけど、なんかこの表紙薄暗くて不気味ですねぇ(w
それにくらべて兎さんの可愛いこと!
でもなんで日本語版と英語版で表示のデザインがこうもちがうのか?
>>585 でも、Ruby Wayの著者は日本語版の表紙が「目つきが悪いウサギ」じゃなくて良かった
ってruby-talkに書いてたぞ。
>>567 確かに assert(!cond) しかないよね。
しかしそういう分岐で使う場合に false と nil を区別するメソッドは
面倒そうだから assert と assert_nil で区別するのではないかなあ。
>>586 Ruby Way日本語版のカバーは、ruby-talkでは絶賛に近かったね。
>>587 次のような場合、assert_nil を使うと、テスト対象のメソッドの定義が簡潔に
書けなくなる。
>>571 みたいにすればいいんだけど、標準だったらいいなという
ことです。もちろん、作者にお願いすればいいわけですが…
class Hoge
def match?(str) /hoge/i =~ str end # 文字列がhogeを含めば真
def unmatch?(str) /hoge/i !~ str end # 文字列がhogeを含まなければ真
end
# 真 = if文式の条件をパスし、かつunless文式の条件をパスしない
require 'test/unit'
class TC_Hoge < Test::Unit::TestCase
def test_match
assert( Hoge.new.match?('Hoge?') )
assert_nil( Hoge.new.match?('No!') )
end
def test_unmatch
assert_nil( Hoge.new.unmatch?('Hoge?') )
assert( Hoge.new.unmatch?('No!') )
end
end
このテストをクリアするためには、Hoge#unmatch? を
def unmatch?(str) true if /hoge/i !~ str end
などと無駄に冗長な定義をしないといけなくなる。RubyはJavaじゃ
ないんだから、簡潔に書けるものは簡潔に書きたい。
あれはウサギなどではない!
>>589 むかしどこかでその手の議論があったがどこだったっけ。
例によって名前も問題だったと思う。
!!cond == true や !cond == true を表す良い述語がない。
とりあえず assert_unless は変でわ。assert_not の方が better かな。
592 :
名無しさん@お腹いっぱい。:03/02/03 21:10
>>590 じゃぁなに?
英語版の鉱物とトンカチの方がよっぽどセンスがいいかも?
>>591 とりあえずassert_unlessで書いとけばいいじゃない。
正式な名前が決まったら一括で置換かければいいだろ。
変な名前なら正式な名前とぶつからないだろうから好都合だよ。
594 :
名無しさん@お腹いっぱい。:03/02/03 22:00
外部コマンドを実行したいのですが、
` `
の中で変数は使えるのでしょうか?
$aaa='text'
`echo $aaa`
としても空白になってしまいます。
でもさあ、assert_unless ってひど過ぎない?
あんまり拘ってもしょうがないという意見もあるだろうけど。
597 :
名無しさん@お腹いっぱい。:03/02/03 22:07
>>595 ひどいからこそ置換しやすいんじゃないか(笑)
assert(!COND)より明確でいいと思うよ。
どうせおまえら、どんな名前付けてもしっくりこないんだろ?
assert_unless|assert_false|assert_notどれかしっくりくるのはあるか?
assert_false か assert_not でしょう。
assert_unless は無し。
assert_false は cond == false を検査するもんに見える。
assert_unless は unless が条件節や句を作るからおかしい。
衝突を気にするなら assert_NOT くらいにしとけばいいんでは。
>>599 とりあえず反論してみよう。
assert_falseなのにfalse以外のnilも受け付けるのが嫌。
assert_notはassert_not(false)で意味がわからん。
assert_unlessはunlessからの類推がしやすい。
unless修飾子っぽく見えるし。(assert unless COND)
RubyGardenで投票させてみる?
圧倒的な差がつけば、すんなり採用できるが、50:30:20くらいだと
半数には不満が残る。
まぁ投票してみないとわからないな。
assert_unless(COND) は英語としてまったく意味が通りません。
英語をしゃべる人からは一票も入らないと思う。まじで。
assert_not(COND) なら、十分意味が通る。(なんで意味がわからんの?)
が、それなら assert(not COND) でいいんじゃない?
失敗した場合に何が返ったかが表示されないのが不満だろうけど、
nil が返るか false が返るかってのは仕様としてふつう決めていると
思うから、明示的に nil や false と比較した方がいいと思う。
assert() を使うから assert(not cond) 相当が欲しいんだろうが、
unit testing としてなら
>>602 の言うように値を具体的に検査すべきだろうね。
そういう意味では assert() も極力使わないほうが良いとも言える。
604 :
名無しさん@お腹いっぱい。:03/02/04 02:42
まぁ、elsif も投票にかけるべきだろうな?
elsif は ruby-talk でも賛否両論あったわけだが
602 に一票。assert()以外は使ったことない。
607 :
名無しさん@お腹いっぱい。:03/02/04 04:50
そういえば、書籍で英語版の
The ruby way
もかなり変な表紙だなぁ?
洩れは、日本語版の「プログラミングRuby」を買おうと思ったんだが、
あの表紙の絵をみて止めてしまった。
もうすこし、しっかりした表紙の方がイメージがいいと思うが、どう?
>>607 pickaxeっていう理由も分からくなるし元の表紙の方がはるかにカコイイ
どうせ変えるならN天堂に金払ってPカチュウにすれば良かったのに
まあどっちにしてもppたちはガ━━(゜Д゜;)━━ン!だった思うが(w
>>602 > それなら assert(not COND) でいいんじゃない?
それが書ければ妥協できるかも。だけど assert(not COND) は
parse error になります、代わりに`!'を使えば通るけど。
最初に assert_until と書いたものですが、もともと言いたかった
のは、`if'や`unless'の条件としてどうなるかのテストであること
が明らかな assert関数があるといいなということです。名前は
assert_not の方がよさそうですね。
> nil が返るか false が返るかってのは仕様としてふつう決めていると
> 思うから、明示的に nil や false と比較した方がいいと思う。
`if'や`unless'の条件として使うつもりのメソッドで、そこまで仕
様を決めるのは ruby の手軽さを損なうと思いませんか。
>>589 で
出した例を見た上での考えでしょうか。
例えば、「 =~ の評価結果の型が nil か Integer で、!~ の評価
結果は false か true だ」ということをいちいち覚えるのも面倒
だしドキュメントみるのも面倒。せいぜい =~ や !~ は条件として
使えるという程度のことだけ覚えておきたい。と思いませんか。
>>609 > 例えば、「 =~ の評価結果の型が nil か Integer で、!~ の評価
> 結果は false か true だ」ということをいちいち覚えるのも面倒
自分のコードの仕様を決めながら言語を利用するのだから
これらの違いに敏感にならないと自分のコードの仕様を根拠づけられないのでは。
個々のメソッドの仕様は言語の定める慣習に合わせないとプログラミング辛そう。
>>610 に異論はありませんが、言質を見て論点をすり替えないでください。
私の認識では、?のついたメソッド(述語と呼ぶことにします)は真
か偽を返す、という慣習がRubyにあります。たまたま例に出してい
る`=~'や`!~'は、述語の一例だとお考えください。
述語の返す真・偽をテストしたいことが現実に多い。述語のテスト
で、nilとfalseの違いまでいちいち考慮するのは Ruby の手軽さを
殺さないかということです。
それは他のメソッドが返す値をそのまま返すときの話だよね。
もしそこを意識しないのなら、仮に assert_not(COND) があったとして
不成立時のエラーメッセージに値が出てもあまり役に立たない。
であれば assert(! COND) でいいと思うけどな。
俺はそういうのは気持ち悪いから、冗長でも ? true : false とか付けて
チェックも exact にやるようにしてる。手軽に使うにはライブラリは
きっちり作らないといけないと思うから。
>>611 すり替えてるつもりはないんだが・・・
その違いの認識は手軽さを失うものとは思わないわけよ。
たまたま出てる例で答えると =~ はマッチの位置を返すメソッドであって、
書き捨て時にはこれをマッチの成功を意味する述語に使うのもありだが、
テストまでする場合はその意味の流用はやめとけと思う。
>>613 いや、失敗時にはnil=偽、成功時には値=真なのだから、
マッチの成功を意味する条件式として使うのは良いと思う。
メソッドのインタフェースに関して無頓着なのがあれなだけで。
match?/unmatch? が true/false を返してほしいなら、そう実装すべきだし、
match? が慣習に反して値/nil を返して欲しいなら、まずはメソッド名を変えることをすすめる。
条件式に使う方は気にしなくていいけど、使われる方は気にすべきかとー。
>>612,613 まともに答えてくれてありがとう!
> チェックも exact にやるようにしてる。手軽に使うにはライブラリは
> きっちり作らないといけないと思うから。
これにギクっとしますた。
私の言ってることは「いいかげんに書きたい」と解釈できなくもな
いですね。厳格にやるべきということ自体には基本的に同意なんだ
けど。。。
自分は =~ みたいなものに述語としての意味しか期待していなかっ
たのに、現実にはそれ以上の意味がある、しかもドキュメントを読
むとレシーバによって微妙に違うっぽい、ってところをどう考える
かなのかな。
ちょっと考えが揺れてきたので、自分にとっての手軽さと612や613
の主張が可能なのかちょっと考えてみます。
>615の最後は
ちょっと考えが揺れてきたので、自分にとっての手軽さと612や613
の主張が_同居_可能なのかちょっと考えてみます。
の間違いでした。
>>614 match? が、true/falseでなく、値/nil を返す。っていうのは慣習
に反するの?真/偽を返せばいいくらいに考えてますた。自分が勝
手に思い込んでただけですが。
ちゃんとした言葉の定義がないので、くどくなってしまいますが、
真/偽ってのはifの条件としてどうかということです。
>>614 > match?/unmatch? が true/false を返してほしいなら、そう実装すべきだし
>> 589 の match?/unmatch? は、コメントにも書いたとおり、
「真/偽」(意味は617で定義)を返してほしい、です。
参考までに、Refe で Object#equal? を調べてみたら
other が self 自身の時、真を返します。
このメソッドを再定義してはいけません。
となってます。rubyのドキュメントで使われている「真」の意味は、
617で定義したものと同じ意味なのかなあ。
nil が返るのは期待する動作ができなかった、それも例外をあげるような失敗ではなくて、
対象がなかったり行う必要がないのでスルーしたというニュアンスかな。
個人的には。
>>618 そっか、リファレンスだと真が返るであって、trueが返るわけじゃないのか。
自分もわからなくなったので識者の登場を待ちます。
620 :
名無しさん@お腹いっぱい。:03/02/04 15:24
nilは実体がない。trueやfalseは実体がある。
その差だよ。わかるかな?
622 :
名無しさん@お腹いっぱい。:03/02/04 15:40
インスタンス?
RHGになんか書いてあったような気がしたな。
識者ってわけじゃないが、
日本語で「真」(「偽」)と書くとこれは「条件として真(偽)」で
"logically true (false) value in boolean expressin" とかいう。
true (false) はその代表。通常は明示的な真(偽)を表すのに使う。
107個ある組み込みの hoge? はほぼすべてが true/false を返す。
たぶん唯一の例外は self/nil を返す Numeric#nonzero? かな。
しかし Array#<=> が導入されたので nonzero? を機会はまずない。
つまり真偽を条件に使うこと自体はまったく合法だが、
hoge? は true/false を返すことが期待されると思っておくのが吉。
単体テストは値を検査するものだと考えられるので真偽ではなく
true/false を検査するのが良いだろう。
この話題はつまらん
625 :
名無しさん@お腹いっぱい。:03/02/04 20:29
じゃぁ、赤目のウサギの話しをしましょう!
not が文なのはなんで?
なんで、ではなく、そもそも!は式を修飾するために、notは文を修飾するために存在するから。
&&/and, ||/orも同様。
628 :
名無しさん@お腹いっぱい。:03/02/04 21:05
そういえば、宝石のルビーを評価するときにビジョンブラッド(はとの血液)
に色が近い程高価であるときいたことがあるけど。。。
表紙にするなら、赤目のハトの方がいいかも?
誰か金光タンに「質問の仕方」を教えてやってくれ。
630 :
名無しさん@お腹いっぱい。:03/02/04 23:29
まつもと氏の本とか記事って、なんであんなに難しく書くんだろう?
みんなどう?難しいよねぇ?
631 :
名無しさん@お腹いっぱい。:03/02/05 01:02
どもっ
633 :
名無しさん@お腹いっぱい。:03/02/05 10:04
ハッシュをvalueでソートして、その順番のkeyの配列を得るうまい方法を教えてください
>>633 hash.keys.sort_by {|k|hash[k]}
脇に逸れるが ,
>>636の{|k|hash[k]} の様な構文 ,
パイプラインが tmpファイルを裏で経由しているみたいで気持ち悪い .
{hash[$|]}とか , k を明示しなくていい仕掛けが Rubyに欲しい ( ありますか ? ) .
>>636 1.6 系に Enumerable#sort_by は無いわけだが
>>633 hash.values.sort.map{|v|hash.index(v)}
または
hash.sort{|a,b|a[1]<=>b[1]}.map{|i|i[0]}
Perl だとどんな風に書けるだろう?
>>639 1.6の仕様はもう二年以上据え置かれているわけで、
今はもう1.8を念頭にコード書いた方が幸せだよ。
shimもあるし。
>>638 そんな小汚い変数はありません。
どうしてもブロック引数を使いたくないなら
hash.keys.sort_by(&hash.method(:[]).to_proc)
>>642 もうそんな季節ですか。今後は shim 使うことにしまつ。
>>638 ちみはSmalltalkやLispを使ったことないのかね?
646 :
名無しさん@お腹いっぱい。:03/02/05 18:10
htmlソースみる限りgrepみたいに行単位はできんけど
<tr>〜</tr>を単位としてfontタグのcolor属性をチェックすればいいんでない?
ソースまでは提供できん
647 :
名無しさん@お腹いっぱい。:03/02/05 21:14
shim ってなに?
ヒヤッヒャッヒヤャャャャャ!!!
>>643 >
>>638 > そんな小汚い変数はありません。
ブロックに仮引数宣言が無かったら $_ に代入してくれればいいのに、と思う
んだが。いちおう split とか chomp! とかできるし……
lines.each{chomp!} とか lines.map{(split ':')[1]} とかいう感じで。まあ
わかりにくくなるからだめなのかな。
>>650 $_ はPerlユーザへの餌
もしくは oneliner の足場
652 :
名無しさん@お腹いっぱい。:03/02/06 06:08
教えて欲しいんだけど、シェルスクリプトとかだったら、
-xを付ければ、結構詳細なデバッグ情報がえられるよねぇ?
rubyでは-dつけても、なにも変わらないんだけど、-xみたいな
トレース情報(スクリプトのデバッグ用)出力オプションって
ありますか?
ruby -rtracer とかかな。詳しすぎるけど。
654 :
(。・_・。)ノ:03/02/06 06:51
会社のメールサーバが壊れたので、ここに書いておきます。
鬼車の/[0-9-a]/の問題は、エラーにならないように対応します。
(Rubyで使用する場合のみ。Cライブラリとして使用するときはエラーのまま)
>>652 ruby -rdebug yourscript.rb
658 :
名無しさん@お腹いっぱい。:03/02/06 20:14
>>653 やってみましたが。。。なるほど詳し過ぎますね
これで、もうすこし簡単なものってありますか?
>>657 これをやると
なぜか途中で止まってしまいます。
require 'tracer'
Tracer.on { print "hello world\n" }
とか
Tracer.add_filter {|e,f,l,id,b,k| e =~ /line/}
print "hello world\n"
とかいうかんじでどうよ。
661 :
名無しさん@お腹いっぱい。:03/02/07 08:22
結局、bash以下ってことよ所詮
結局、csh以下ってことよ所詮
bashもcshもzsh未満
zshやbash依存のスクリプト書くんじゃねーよ厨房
autoconfに翻弄されてみやがれコンチクショウ
666 :
名無しさん@お腹いっぱい。:03/02/07 14:25
html-parser の解説サイトとかexampleスクリプトとかないですか?
668 :
名無しさん@お腹いっぱい。:03/02/07 23:26
真面目な話し、デバッグツールとかデバッグ機能とかはあまり用意されて
いないのだろうか?
趣味ならいざしらず、有る程度の用途に使用しようとするならば、ここら
あたりがネックになる可能性があるのでは無いかとふと考えてしまった。
-rdebug や -rprofile 使ってるけど?
スクリプト自体にデバッグ用出力もチクチク入れる俺は、
効率悪いんだろうな。
Ruby は p が便利なので
p hoge if $DEBUG な print デバグでも結構いけるかもね。
つか、unittest しだしてからは前ほどデバガ使わなくなった。
CGIなんか書いてるときはデバッグ出力をログに書いてtail -fなんて手法を
いまだに使ってるな、おれ。
;がいらないという餌でPerlから乗り換えました
>>672 CGIってログかクライアントに出すくらいしかできないんじゃない?
>>674 漏れは、wrapper スクリプト書いてコマンドラインでデバッグ、ってよくやるよ。
PHP でも、php コマンド使うし。
>>675 cgi.rb のコマンドラインインターフェイスを使うってこと?
677 :
名無しさん@お腹いっぱい。:03/02/08 01:49
rubyの制御構文からして、ifとかwhileとかのブロックはendで終るため
{}で閉じるブロックと違って、閉じ忘れが発見しづらい。
{}とか()だとviではすぐにマッチを示してくれるのだが。。。
rhgには「rubyの文法が複雑すぎてデバッグツールなんか作れん」みたいなことが書いてあったけど。
>>677 エディタのオートインデントで十分と思う。
使っているエディタにrubyモードがなければ作ろう。
>>678 bRuby に期待。
Rite 出るまで何年かかるかわからないしね。
681 :
名無しさん@お腹いっぱい。:03/02/08 14:16
682 :
名無しさん@お腹いっぱい。:03/02/08 14:27
chomp & chop の中間みたいな機能ってないんだろうか?
すなわち、行末に"\r\n" or "\n" or "\r" があるとそれらを削除
行末がそれら以外だったら、何もしない。
>>682 class String; def champ() sub(/\r?\n?\z/,"") end end みたいな?
685 :
名無しさん@お腹いっぱい。:03/02/08 15:23
686 :
名無しさん@お腹いっぱい。:03/02/08 15:25
>>683 まさにそれでしょう。
標準にいれても良いぐらいの基本機能かも?
687 :
名無しさん@お腹いっぱい。:03/02/08 15:26
chomp, chopは使わずに
sub!(/\r?\n/,'')で統一してる。
$ ruby -v -e 'p "abc".chomp;p "abc\r".chomp;p "abc\r\n".chomp;p "abc\n".chomp'
ruby 1.8.0 (2003-02-08) [i686-linux]
"abc"
"abc"
"abc"
"abc"
こういうこっちゃないの? 違ってたらスマソ
689 :
名無しさん@お腹いっぱい。:03/02/08 15:28
690 :
名無しさん@お腹いっぱい。:03/02/08 15:43
691 :
名無しさん@お腹いっぱい。:03/02/08 16:00
>>688 "abc\r".chomp #=> "abc\r"
>>691 >>688 > ruby 1.8.0 (2003-02-08) [i686-linux]
だから1.8か1.6+shim使えっての。
>>688のバージョンが目に入らぬか
694 :
名無しさん@お腹いっぱい。:03/02/08 16:02
>>688 "abc\r\n".chomp #=> "abc\r"
695 :
名無しさん@お腹いっぱい。:03/02/08 16:03
>>693 えっ、こんな基本機能の動作が変わるの〜?
びっくりすると同時に、なんか恐い
chopに合わせただけ。これで影響受けるようなコードはださいってことで。
改行コードが仮定されてるなら自分でsub!()すべし。
697 :
名無しさん@お腹いっぱい。:03/02/08 16:06
>>696 それをいうなら、ダサダサの他の機能もいろいろ挙動をかえてもらわんと(ww
1.8系ってやっぱり凄いんだね!
早速インストールしようと思うんだけど、
preview1-errata って preview1 に当てれば良いの?
>>699 > preview1-errata って preview1 に当てれば良いの?
すまん、preview1-errataってなに?
preview1からCVS HEADへの差分?
preview1はもう古い。snapshot.tar.gzを取ろう。
依然として、ageで書いてあるレスは中身がない率高いね。
>>700 download site に必ず、セットで置いてあるようです。
で、中身みても何も書いてないのです。ただ、日付が新しくなるようなので、
あてて構築しています。
これでいいですか?
>>701 CVS系まではちょっと恐くて手が出せません。
で、今構築出来たんですが、確かにchompの挙動が良いほうに変わっていました。
やはり、日々改善されているんですね。
個人的な意見としては、あまり標準機能の挙動を変えてもらうのはちょっと
抵抗が有りますが、こういったものなら大歓迎です。
>>702 そんな古いもの使わないでください。
すでに直っているバグや仕様変更を発見して報告したりしても不毛です。
>>703 粘り気の強いお方でつね
これかな?
707 :
名無しさん@お腹いっぱい。:03/02/08 16:34
まぁ、これだけ仕様変更するんだから、まだまだってとこだろうなぁ?
所詮趣味言語
あと、本もこれじゃぁ売れん罠〜(w
痛いなぁ?罠〜(w
>>707 普通に疑問に思ったけど、
長く使われていて仕様が変わらない言語って何があるかな?
Fortranだってたまに改定されてるし。
710 :
名無しさん@お腹いっぱい。:03/02/08 19:28
確かにCとかもANSIで書き方変わったりしたけど、基本的には同じだよねぇ?
(バグfixは除く)
拡張機能ならいざ知らず、こんな基本機能の挙動が変わるのはちょっと
恐ろしい。
個人的には、rubyの発展を願ってるのでどんどん進化してほしいけど、
業務で使うとなれば、正直引けてしまう。
あほか
win32api なんてしょっちゅう変わるでしょ
ぜんぜん関係ない例なんか引き合いに出すなよ。そういうのが煽りの付け入る隙になるんだってば。
chomp()の場合は変更というよりむしろ改良だろう。
chop()と違うのはなぜだ、\rも面倒見てくれ、って要望が圧倒的だし。
そもそも安定版系列の途中で変更されたのではなくて1.6->1.8で変わるというだけ。
そういえばcoreで
Stringのサブクラスが部分文字列でStringを返さなくなったのはなんでだー
って話が出てるな。
難しいよね。Ruby的には組み込みクラスの継承ってあまりお勧めじゃなかったりする。
717 :
名無しさん@お腹いっぱい。:03/02/08 21:44
>>713 改良って何よ?
単なる仕様変更でしょ?
こんなんが通るのなら、例えば。。。。
1.8->2.0 で、 chompもchopも\rを残すようになるかもしれん罠〜(w
つーか誰かruby-areってML作れよ。
>>716 階層的なクラス構成による抽象化をしてないから、組み込みクラスはどれも多機能。
継承するといろんなメソッドを潰す必要がある。それなら素直に委譲。
>>717 誰がそんな要望出すよ。そのためにchop/chompには省略可能引数があるだろ。
ぜんぜん調べがたりん罠〜(藁
だいたい仕様を変えられてまずいなら古いのを使いつづければいいだけでしょ
722 :
名無しさん@お腹いっぱい。:03/02/08 23:21
だいたい仕様を変えられたまずいなら、ソースいじりゃあいいだけでしょ
すべてのバグはソースに記述されてる。
725 :
名無しさん@お腹いっぱい。:03/02/09 01:05
よくわからんが、普通は開発環境は固定して開発しないか?
一つのソフトの開発中にバージョンアップなんてする?
保守用のマシン作って旧バージョンの環境も残しているし。
>>722は意味不明
業務だったら調査もせずに1.6から1.8に移行なんてありえないだろ。
>>725も意味不明
業務でオープンソースなものを採用したからにはソースぐらい読んでいじる覚悟は必要だろ。
無職は気楽でいいね〜
728 :
名無しさん@お腹いっぱい。:03/02/09 02:08
ruby入れてみますた
でご相談何すけど、bashで作った資産も生かしたいので
hoge.shとかを実行させるにはどのように書けばいいのでしょうか?
漠然としてて申し訳ないのですがgoogっても外部スクリプト呼び出しってのが見つからないもので…
>>728 えっうそ、もしかしてsystemがいつのまにか消えたの? openも?と
焦って試したコマンドラインだが、動いて一安心。
$ ruby -e 'system("ls")'
`hoge.sh`
Kernel.`('hoge.sh')
Kernel.__send__(:`, "hoge.sh")
733 :
名無しさん@お腹いっぱい。:03/02/09 10:17
>>726,727
バージョンは固定するけど、バグフィックスはしないとねぇ、
普通↑
だけど、ルビは固定して開発できるほど安定しとらんのだよ。
ほび〜はいいねぇ!
734 :
名無しさん@お腹いっぱい。:03/02/09 10:37
そうえいば、「ほび〜」と「るび〜」なんか似てるなぁ(w
735 :
名無しさん@お腹いっぱい。:03/02/09 10:46
736 :
名無しさん@お腹いっぱい。:03/02/09 12:07
>>679 ひょっとして対応しているのはEmacs系だけですか?
こっちはVi系なのでガクリ
>>736 vim ならできるんでないの?漏れは nvi なので知らんけど。
漏れはいつも、
if hoge
end
って書いてから、ブロックの中身を書いてるので、
ブロックの閉じ忘れで困ったことはあまりない。
>>736 とりあえず、 vim には用意されています。
$ vi --version
とやって、 vim かどうか判断してください。
見てみたらvimでした。でも%でマッチさせてみましたが何の反応もなかったです。
できるだけ{}で書くようにします。
バージョンは?
VIM 6.1だけど、 ~/.vimrc に
syntax on
filetype on
filetype indent on
filetype plugin on
と書いたらオートインデントできたけど。%は知らない。
742 :
名無しさん@お腹いっぱい。:03/02/09 17:13
>>740 vim61 です。オートインデントは便利で良いのですが、
ブロックの閉じ忘れに対しては予防策でしかありません。
検出策を模索しています。
743 :
名無しさん@お腹いっぱい。:03/02/09 20:22
趣味はいいのぉ〜!
>>742 僕はvimじゃないけどShift-Enterに
>>737のように入力するマクロを割り当てて使っています
ちょっと前のvim-jp あたりに誰かがruby 用のモード投稿してなかったっけ?
746 :
名無しさん@お腹いっぱい。:03/02/09 22:11
rubyはEmacsユーザ様御用達言語です。
747 :
名無しさん@お腹いっぱい。:03/02/09 22:33
ちょっと前の話題にも関係するかもしれないが、(w
goto文とグローバル変数ってどちらも削るベキでは?
749 :
名無しさん@お腹いっぱい。:03/02/09 22:44
2chにいて煽り方も知らないのか。
痛い事実を突かなきゃ煽りにならないだろう?
でたらめ言って囃してるだけ。
また前スレみたいに図星突かれて暴れだすのかねえ。(・∀・)ニヤニヤ
>>750 かわいそうな香具師なんだから放置してやれよ(w
すんません、raa の rdf が以前あったんですが、今どこにあるでしょうか?
もしかして、なくなっちゃいましたか?
>710
C++やCLOSよりマシって話もあるけど、っていうと笑いが取れると思うが、
C++やCLOSの変遷を知らない奴にこのネタを振っても不毛だな。
>743
Mac OS Xも.NETも趣味のプラットフォームというのは納得。
本物のプログラマーはPASCALを使わない。そしてRubyも使わない。
漢はFORTRANだよやっぱり。
>>754 mod_fortranとかfortranで動くservlet作ったら流行りますか?
FORTRANインタープリタとかVMを作ろうってのか?
>>754 > 漢はFORTRANだよやっぱり。
いまどき77以前の処理系なんてねえよ。
.lengthと.size だが , .sizeの方を今の仕様より -1した値を返す様にしてほすい .
( 0 .. array_or_str.size - 1 ) な場面が多すぎる .
>>756 FORTRANが趣味のプログラマーにはウケるだろう。たぶん世界で150人
ぐらいの利用人口は確実にある。
>>757 まともなFORTRAN95のVMを作れば確実に大うけだぞ。なんせプラットフォーム
インディペンデントなFORTRAN実行環境が使えるわけだ。それはすごいこったぞ。
>>758 70年代に作ったFORTRANのコードはFORTRAN95のコンパイラで動くという罠
わざわざ趣味に走ってFORTRANを使わんでも、漏れは軟弱なのでRubyで十分
だがな。ま、突っ込み所を勘違いしている、おまら素人にはわからんと思うが。
>>759 "".size => -1 になるわけ?そりゃキタナすぎ。
ていうか、 (0..size) なんて使ってる時点で糞スクリプトなヨカーン。
自分用のmysizeを定義して使え
class String
def mysize; size - 1; end
end
class Array
def mysize; size - 1; end
end
>>759 あふぉ。
(0...arrayOrStr.size) でいいだろ。
そもそもお前のプログラムの組み方がよくないんじゃないですか。
俺はそんな場面多すぎません。
>>761,763
糞とかアフォとか氏ねとか
>>759の主治医です(以下略)とか
言わないで、そっとしておいてあげよう。
かわいそうなやつなんだよ
>>759は
処理系の並列化抜きで物理屋は使わんし
添字チェックがあったら本物は使わん
環境独立なコードなんて現場外の妄想
766 :
名無しさん@お腹いっぱい。:03/02/10 18:26
配列を1〜にしてほしい人いますか?
awkみたいに。
>>766 あー、そういえば昔OffsetArrayって作ったことあるな。
>>765 本物は trade-off と quick-hack という言葉を知っています。
769 :
名無しさん@お腹いっぱい。:03/02/10 19:39
>>765 まぁ、このすれをちょっと見ただけでも分かるとおもうけど、結局は現場
主義 じゃないんだよなぁ〜この言語。
洩れは好きだけど、ruby
なんちゅうか、綺麗・汚い,とか,好き・嫌い,とか,合う・合わない,とかも
いいんだけど、動いてナンボのハラワタえぐり出されるような、エゲツナイ
現場からみると、綺麗事にしかみえん
>>769 話の流れを勘違いしてないか?
>>765 は FORTRAN VM の話をしてるのだと思うのだが?
>>769 わたしゃ現場でばりばり使ってますが、何か?
ちゃんと客先に納品してますが。
772 :
名無しさん@お腹いっぱい。:03/02/10 20:35
>>771 納品すれば何でも現場と思ってもらっちゃぁ困る。
どうせ大した規模もないスクリプトじゃないの?
773 :
名無しさん@お腹いっぱい。:03/02/10 20:35
ズボシか?(w
さっきから茶々ばっかり入れてる奴はいったい何を使っているのだろうか
>>774 茶々だけにJavaとか。
# Uva?
ま、たいした技術もないヤシに限ってプロだの現場だの言いたがるわけだが。
むしろ「動いて何ぼ」っていう即戦力として、
rubyは優れているはずだが。
>>772 いいんじゃないの?
大した規模もないスクリプトで済ませられるところは済ませて
他の部分に時間をかけられるとすれば。
適所適材。
要はRubyだからだめとかRubyじゃないからだめとか
そういうこというのが痛いだけ。
規模だとか性能だとか納期だとか要求される仕様に
マッチするものを使えばよろし。適材適所だろう。
ターゲットがwindowsでデータベースの入力が主な
処理だったらVBだって検討するさ。VB嫌いだけどな(w
性能が要求されればCだって検討するし、
一部アセンブラ使うことだって検討する。
Rubyは好きな言語だが万能とまでは思っていない。
ただつかえる場所だと積極的に使いたいな、ってだけの話。
現場ってこういうもんじゃないの? 別にご大層なもんじゃないよ。
rubyって、
「何でこういうふうに動かんのだ!」っていう苦悩が少ないのだ。
趣味の言語と言えばruby-devで金光先生がVMにGUI命令を入れろと提案された時
そうしなければrubyはホビー用で終わるとか何とか言ってらしたと思う。
っつーか現場なんていう恥ずかしい言葉、よく使えるな。
783 :
名無しさん@お腹いっぱい。:03/02/10 21:33
>>782 それは現場に親しんでないからだろ(w
毎日便所掃除していたら、便所を汚く思わなくなるのと同じだ
784 :
名無しさん@お腹いっぱい。:03/02/10 21:35
>>779 ハゲ同、ただし、ちょっとの改良でだいぶ良くなりそうなので
残念がっているだけ。
洩れ的には、るびーまんせーなんだけど。
>>781 非常識な意見が時として役に立つこともある。
時として。
rubyの実際は、「超perl」としての用途がほとんどでしょう。
perlめんどくせぇ→rubyマンセー、、、っていうユーザの流れで。
ちゃっちゃと書いて、スカッと動け!仕事仕事!っていう。
そもそも昨今のスクリプト言語の隆盛は、
そういう開発のスピード感に魅力があったからでしょう。
それって、現場主義な思想の反映とも言えるのではないかい?
むしろ機械にこびへつらうような言語のほうが、
「趣味的」要素が濃いと思うが。
手段のためなら目的をえらばんような作業に終始したり。
分析から設計のフェーズでプロトタイプ書きに使うって人も多いんじゃない?
(趣味の場合や、仕事でも性能や人員確保に問題がない場合はそのままRubyで仕上げるけど)
Perlは文法が素直じゃないし、見た目も悪くて読みづらいからそういう用途には向かない。
>>787 おれはPerlを使ったことなくて、スクリプト言語はRubyから入ったクチなんだけど。
つうか、それ以前にawk使ってたんだった(w
で、このまえPerlを使わざるをえなくなって、しぶしぶ使ってみたら、
これはこれで趣があっていいなと思ったよ(w
ただ、Perlのあのオブジェクト指向だけは絶対使いたくないと思った。
いや、ライブラリを使うだけならいいんだけどね、
自分でクラスを定義するのはいやだ(w
あとライブラリがこれでもかというほど揃ってるのはいいね。
誰もが言うけどRubyはライブラリがいまいちだと思った。
最近は改善されてきてるようだけど。でもCPANの物量には
全然かなわない。あのレベルまでいけたらいいんだけど。
ま、その分Rubyは標準のライブラリ群が強力なのと、
記述力も強力なおかげでその他のライブラリがなくても
何とかなってしまうんだけど。
www.cpam.org
| 4207 modules
raa.ruby-lang.org
| 816 projects
なるほど 1/5 か。
今のペースなら10年くらいで追いつくんじゃない?
CPANは同じもののバージョン違いがいくつもあったりするな。
792 :
名無しさん@お腹いっぱい。:03/02/11 09:20
793 :
名無しさん@お腹いっぱい。:03/02/11 09:23
raaって英語しかないの???
794 :
名無しさん@お腹いっぱい。:03/02/11 09:58
pythonよりえーの?
795 :
名無しさん@お腹いっぱい。:03/02/11 10:57
raaって説明読んでもよく分からなかったんですけど、
正式なrubyの一部ではないんですよね?(違ってたらスマン)
URLからも明白な通り、公式なアーカイブですが?
>>793 raa登録には英語のドキュメント添付が必須だけど、
日本語のドキュメントは必須ではない。
>>797 俺が登録してんのは日本語ドキュメントのみが多いな。
英語ドキュメント必須なら削除しとかないと怒られる?
>792
数万行に渡るような単品のrubyスクリプトは確かに俺は書いたことがないし、
世間に公開されているrubyスクリプトも文章量がちっこいものが多いと思う。。
思ってる実装をrubyで書くと、文章量が短くてすんでしまうのは確かだろ?
大規模な仕事をさせればさせるほど、その度合いは色濃く出るもんだと思うし。
まぁね、あるいは自前、自社クラスライブラリの「総量」が
何気に数万行な勢いだったりする人も多いと思うが。
>>800 すいませんでした。
これからは絶対に名乗りません。
802 :
名無しさん@お腹いっぱい。:03/02/11 14:05
>>796 URLから判断するのはちょっとねぇ(w
あと、公式って何に対する公式なの?(w
803 :
名無しさん@お腹いっぱい。:03/02/11 14:18
あと、開発者には悪いけどraaってろくな門ないなぁ
あっても古いし
804 :
名無しさん@お腹いっぱい。:03/02/11 14:23
rubyとperlどっちが難しい?
>>801 気を悪くされたならすいません。
実名で煽りに参加されてるのを見るのは忍びなかったもので。
しかし、RAA の XML-RPC インターフェイスを
私以外にも日本で使ってるひとがいたとは。
意外と利用されてるのかな?
>>799 QuickML や Rava も数千行のオーダーだしねえ。
>>805 どもっ、名乗らない人です(w
XML-RPCのXMLRPC::DateTimeでハマりませんでしたか?
ネットワーク経由で時間を返したりする時って普通
タイムゾーン付きだったりUTC(GMT)固定だったりする
もんなんですけど、localtimeそのまま返すとは思わなかった(^^;
日本でXML-RPC使ってるというとttateさんぐらいだろうか?
RNNもXML-RPCで使ってみますね。
>>765 おまえの浅はかさにはホトホト参るよ。
なぜVMWareをありがたがる連中が多いのかじっくりと
考えてみるこったな。
>>806 Rubyで書くと、Cで書かれた同等の機能を持つプログラムと比較して
1/4 ~ 1/3程度のコード量になるっていう報告がある、っていっても
だから何なんだという話もあるが。
>>769 おまえは馬鹿か?客が「Rubyでやってください」といえばRubyを使う
だけの話だろ。弘法筆を選ばず。プロは仕事を選べず。
漏れは仕事ならCOBOLでもFORTRANでも何でもかいちゃーる、と思うし
実際に、使った言語は数えたことはないが両手じゃ足りない。
もちろん客が「Rubyでやってください」といえばもちろんやる。
それでオマンマを食っているんだからな。
「これじゃかけません」なんていうのは、糞。即刻仕事から外すだけ。
それだけの話だ。
>>812 大いに正論だと思うが、そういう話じゃないとも思うが。
rubyの優秀さを褒め称えるスレの趣旨を理解すれ。
>>813 そんなスレだっけ?
ま、どんな言語でも使いこなせるというか、
状況に応じて最適なものを使い分けられるのは
良いことですね。
両手じゃ足りないのか。ぜひ全部列挙してください!ワクワク
816 :
名無しさん@お腹いっぱい。:03/02/11 19:17
洩れは21言語だから、ちょうど数えられる。
お前は同だ?
両手を使って1024まで数えられます
手首も加えて4096まで数えられる。
各指で4値(伸ばす、曲げる、折る、反る)にすれば、もっといけるな。
折る?!
>>816 股間のは数えるな!
ただしLSBに割り当てるなら許す。
皮をむく/かぶせるも1bitぶんになります
>821
ワロタ(w
823 :
名無しさん@お腹いっぱい。:03/02/11 20:22
洩れも思わずワロタ!
じゃぁあと1言語いける
おれもXML-RPCをお仕事で使ってみたよ
ただ、CGIだと遅いのがネックで。。。
WWWsrvと組み合わせてつかいますた
>>809 int に time(2) なら、Perl や PHP でも楽チンそうですね。
>>824 XMLRPC::Server ではあかんかったですか?
826 :
名無しさん@お腹いっぱい。:03/02/11 23:44
21 言語目が ruby ですが何か?
>>821 ビットが立ってると垂れてるも数えてほすい。
みんないろんな言語使えるのですね…うらやますぃ
BASIC(N88とFとMSX)以来なんもやってないから
もうつらいの何の…歳だし(鬱
しかし大人気だね、rubyスレ。
>>821 a nauty bit is sticky?
s/nauty/naughty/
833 :
名無しさん@お腹いっぱい。:03/02/12 20:36
rubyって++ないの?
ない
835 :
名無しさん@お腹いっぱい。:03/02/12 22:05
だからpythonとどう違うの?
インデント。とか。
はい、次の話題。
837 :
名無しさん@お腹いっぱい。:03/02/12 22:13
なんでないの?
なんであるの?
839 :
名無しさん@お腹いっぱい。:03/02/12 22:27
他の高級言語使ってた人間からしたらあって当然だと思うだろ
++あると何か問題なのか?
なんで入れないんだ?
MSが微妙に仕様変えて差別化するみたいな嫌がらせ?
840 :
名無しさん@お腹いっぱい。:03/02/12 22:28
>MSが微妙に仕様変えて差別化するみたいな嫌がらせ?
藁
841 :
名無しさん@お腹いっぱい。:03/02/12 22:35
PerlからRubyやってみようと思うヤシは初めはRubyがあまりにも予想外で萎えるだろうな
もっとPerlのOOをスマートにした感じの言語なら
OOが分かるPerlerはこぞってRubyに流れたかもな
> 他の高級言語使ってた人間からしたらあって当然だと思うだろ
そんなの聞いたことないぞ。
AdaにもLispにもSmallTalkにもないが、どこにあるんだ?
…え? もしかしてCが高級? (プ
perlの問題をrubyに持ち込むなよ。
++についての説明は散々しあきた。
Rubyレベルで変数を変更する方法は唯一代入のみ。
はい次。
てっきり、ruby++っていう、
よりオブジェクト指向な新実装の話かと思った。
849 :
名無しさん@お腹いっぱい。:03/02/12 23:13
>>839 ハゲ同
実装も容易だとおもわれるし、これは単なる思想の問題だろう
基本はrubyでいいから開発者達のコリ固まった思想から離れた
実装があればよいと思う
それこそFREE!
>>849 容易かあ?
immutableなIntegerをmutableにするってことだぞ。
基本中の基本の型の挙動を変えることになるんだぞ。
851 :
名無しさん@お腹いっぱい。:03/02/12 23:17
>>845 全然なっとく出来んなぁ〜
単にパーサーが腐ってる岳ジャン
なんでここのRuby信者はこうもキモイのですか?
853 :
名無しさん@お腹いっぱい。:03/02/12 23:19
↑お前もなぁ〜
それはさておき、出来ることをやらんのだよ!
じゃforkすれ
>>851 いや、++なんていう仕様外をぶつくさいってるほうが腐ってると思うが。
んな事で利便性を感じるなら世話ないって。
>>848 Numericに破壊的メソッドは無いんだな
Ruby には Ruby の約束事があります。
Ruby に Perl と同じものを求めないでください。Ruby は Perl ではないからです。
また、LISP や Smalltalk と同じものも求めないでください。
ただし、Ruby にはこれら3つの言語と共通の要素があります。
まず自分の予想どおりになっているかどうか試してください。
けれども、予想が外れた場合は (Matz が変更に同意しない限り)
それが Ruby の決まりなのです。
858 :
名無しさん@お腹いっぱい。:03/02/13 00:33
をを〜!
カリスマ言語!
Integer が immutable だからとか言ってるやつは素人。
+= とかと同じようにシンタックスシュガーにすればいいじゃん。
例外やシュガーを増やすほどのメリットないじゃろ。
++iだのi++だの整数以外はどうだの、余計なことが増えるばかり。
++がある言語なんてそんなに多くないよ。
CやPerl方面のヤシばっかりなのはUNIX板だからか。
ム板ではけっこう取るに足る議論があって実際に反映されたりしたけど、
この板では何も新しいことが出てこなくてつまらんね。見飽きた話題ばっか。
LISPスレも流行らんし、しょうがないのかな。
あとは、そうだな、++が必要になる場面というか、
i += 1って書く場面ってRubyの場合そんなにないんだよな。
たまにあるけど、「ったくよ」って思いつつ += 1って書いてる(w
配列をなめるのはEnumerableのメソッド群でほとんどの場合済んじゃうし、
Cで for (i = 0; i < 10; i++) なんて書く場面では 10.times do |i| とか書くし。
定 利 反
義 用 論
○ × × []=
× ○ × +=
× × ○ ++
>>848-856 immutableとかいってる香具師、変数とオブジェクトの違いを勉強汁。
暗号みたいなコードは回避しようという親心の設計だよね。
866 :
名無しさん:03/02/13 02:14
var = var.succ
と書けってこったな。
var = var.succ と var.succ! は違うよ
rubyな話題ではないかもしれんが、rubyの書き方?について、かな???
boo = ("A".."Z").to_a
なんぞで作った配列で、
配列の具の並び方を、すべて挙げさせるにはどうすればよろしいの?
[["A","B","C"...(中略)],
["A","C","B"...(中略)],
["Z","A","B"...(中略)]]
とか、まるっと出力する式がなかなか書けんのよ。。。
>>868 は何がしたいの?いまいちよく分からん。
% ruby -ve 'p(("A".."Z").to_a)'
ruby 1.8.0 (2003-02-10) [powerpc-darwin5.5]
["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
これではダメ?
っていうか 26! 通りも出力できん
ruby 関係ないな。
新しい配列を array.length の階乗個作って、縦につめていくってのはどう?
a = { 1, 2, 3 } だとしたら、
{a[0], a[1], a[3]} ↓に見る
{a[1], a[2], a[0]}
{a[2], a[3], a[1]}
みたいな感じ。実際のコードは、だれか考えて。
>>868 そもそも何をしたいのか正直に言うてみ。
こういうかんじでどうよ。
def permute(ary)
return [ary] if ary.length <= 1
result = []
ary.each_with_index { |a, i|
permute(ary[0...i].concat(ary[i+1..-1])).each { |j|
result.push([a].concat(j))
}
}
result
end
1% irb
irb(main):001:0> load '/tmp/p.rb'
=> true
irb(main):002:0> permute [1,2,3]
=> [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
irb(main):003:0> (permute [1,2,3,4,5]).length
=> 120
$ ruby sample/fact.rb 26
403291461126605635584000000
もうちょっと ruby らしくブロックを使うようにしてみた。
def perm2(ary, result = [], &out)
if ary == []
out.call result
else
ary.each_with_index { |a, i|
perm2(ary[0...i].concat(ary[i+1..-1]), [a].concat(result), &out)
}
end
end
2% irb
irb(main):001:0> load '/tmp/p.rb'
=> true
irb(main):002:0> perm2([1,2,3]) { |x| p x }
[3, 2, 1]
[2, 3, 1]
[3, 1, 2]
[1, 3, 2]
[2, 1, 3]
[1, 2, 3]
=> [1, 2, 3]
irb(main):003:0> cnt = 0; perm2([1,2,3,4,5]) { cnt = cnt.succ }; puts cnt
120
=> nil
irb(main):005:0> require 'thread'
=> true
irb(main):022:0> q = SizedQueue.new(1)
=> #<SizedQueue:0x16b270 @max=1, @waiting=[], @que=[], @queue_wait=[]>
irb(main):023:0> Thread.new { perm2(('a'..'z').to_a) { |x| q.push(x) }}
=> #<Thread:0x15cf90 sleep>
irb(main):024:0> p q.pop
["z", "y", "x", "w", "v", "u", "t", "s", "r", "q", "p", "o", "n", "m", "l", "k", "j", "i", "h", "g", "f", "e", "d", "c", "b", "a"]
=> nil
irb(main):025:0> p q.pop
["y", "z", "x", "w", "v", "u", "t", "s", "r", "q", "p", "o", "n", "m", "l", "k", "j", "i", "h", "g", "f", "e", "d", "c", "b", "a"]
=> nil
irb(main):026:0> p q.pop
["z", "x", "y", "w", "v", "u", "t", "s", "r", "q", "p", "o", "n", "m", "l", "k", "j", "i", "h", "g", "f", "e", "d", "c", "b", "a"]
=> nil
irb(main):027:0>
rubyでCGI書くのにベストなテキストないものですか?
from __future__ import generators
def perm(n):
if n == []:
yield []
else:
for i in range(len(n)):
for j in perm(n[:i] + n[i+1:]):
yield [n[i]]+j
for i in perm(range(5)):
print i
っつーか、ナイス命題。
返り値って、メソッドの返すオブジェクトの型ってことがいいたかった。
だいたい説明文の中に書いてあると思うけど?
あとオブジェクトの型は気にしないのがruby wayらしいぞ(w
>>881 このままコピペしてもIndentationErrorで動きませんですた。(・∀・)
rubyじゃないよな(w
>>887 名前欄見たらわかんねが?
ところで、Python 以外でインデントがブロックを表す(?)のってあるの?
>868
あ、、、難しい。。。
893 :
名無しさん@お腹いっぱい。:03/02/13 23:28
多重代入って利用価値ある?
なんか実装ばっか難しいきがするけど
>>893 シンタックスシュガーだと思えばいいんでないかい?
漏れは使わないけど。間違えそうで。
>>893 複数の値を返すメソッドなんかに使ってる。
>>881 んー、なるほど。こうだな。
def permute(a)
if a == []
yield []
else
(0...a.length).each do |i|
permute(a[0...i]+a[i+1..-1]) { |p|
yield [a[i]]+p
}
end
end
end
Rubyはよく知らないんだが、
なぜ
permute(a[0...i]+a[i+1..-1]) { |p|
yield [a[i]]+p
}
この部分をこう書けないの?
permute(a[0...i]+a[i+1..-1]).each do |p|
yield [a[i]]+p
end
>>897 えっと、
上の場合(
>>896の場合)は permuteメソッドにブロックをパラメータとして
渡す(返値は使わない)
下の場合は permuteメソッドの返値の.each メソッドへブロックをパラメータ
として渡す
こういうかんじのがライブラリにほしいな
=begin
Example:
["foo","bar","baz"].each_in_parallel do |s| puts s end
=end
module Enumerable
def parallel(async=false, &p)
if async
self.each do |i|
Thread.new(i, &p)
end
else
thlist = []
self.each do |i|
thlist.push(Thread.new(i, &p))
end
thlist.each { |th| th.join }
end
self
end
alias each_in_parallel parallel
end
=begin
Example:
99.threads do |i| sleep rand; print i end
=end
class Integer
def threads(async=false, &p)
(0...self).each_in_parallel(async, &p)
self
end
end
>>899 async = true のときはジョブのシャッフル?
シャッフルってどういう意味かわかんないけど、 async の場合は終了を待ち
ません。シェルでいえばバックグラウンドジョブ
% irb
irb(main):001:0> load '/tmp/t.rb'
=> true
irb(main):002:0> 10.threads do |i| sleep rand; print i end
6530921487=> 10
irb(main):003:0> 10.threads(:async) do |i| sleep rand; print i end; puts "End"
End
=> nil
irb(main):004:0> 6732190548
引数で変えるってのがちょっとという気がする
def parallel(&p)
thlist = ThreadGroup.new
self.map do |i|
thlist.add(Thread.new(i, &p))
end
thlist
end
終了待ちは呼出側でやればいいことではないかと思う。
parallel だけでも分からんし each_in_parallel は長いから peach にしなさい
905 :
名無しさん@お腹いっぱい。:03/02/15 00:11
rubyのメソッド呼出で、関数タイプにできるものと出来ないものとがあり
ますが、違いは何ですか?
今日は非同期に thread を走らすときは rescue するのが鉄則だと学んだ。
Thread.new { do_job() rescue print $! }
(変数名が間違っていただけでスレッドがなんのメッセージもださずに消えて
しまうよ。joinする場合はいいんだけど。)
>>903 実験してみたが、なんか、 ThreadGroup ってそういう使いかたには向かない
みたいよ。Array かなんかでないと。
>>905 関数タイプに見えるのはself.が省略されているだけ。
hoge()
self.hoge()
は全く同じ。
ただし、privateメソッドでは必ず省略しなければならない。
つまり、メソッドを送るオブジェクトがselfであれば、
関数タイプにできるわけよ。
>905
トップレベルで def されたものは関数(Objectのprivateメソッド)になる。
予約語もメソッド名にできるがレシーバを省略できない。
つまり予約語は関数として定義はできるが呼び出すことはできない。
class Foo; def in() p :ok end end
Foo.new.in() # これは呼べる
def in() p :ok end
in() # これは parse error
>>906 Thread.abort_on_exception = "yes"
じゃダメ?
ruby -d という手もある
まあデバッグ中ならそれでもいいけど。デーモン走らせていて Exception を
捕捉しそこねたらデーモン全体が死ぬのは嬉しくない。
(そんなのはデバッグ不足だからという意見もありそうだが。)
rubyの Continuation って妙に重いし、なんか将来はなくなるかもしれないら
しいけど、スレッドをスケジューラーから切離すことができれば
Continuation とほぼ同じになるんじゃないかな。
do end と { } って違うの?
914 :
名無しさん@お腹いっぱい。:03/02/15 09:02
_,___
/ __`ヾ),_
/〃 (⌒゛`ヾv"ヽミ、
i / /´ _ニ=-=ニ .i l|
| 彳 〃_. _ヾ!/
| _ !" ´゚`冫く´゚`l
(^ゝ " ,r_、_.)、 |
ヽ_j 、 /,.ー=-、i リ
__/\_ "ヽ ^ )ソ__
|ヽ. | |` ー--ィ´i |
| > |、/□、/| < |
| i \| / | |o/i |
天皇陛下はこのスレに興味をお持ちになられたようです。
誤爆ごめん
>>913 x y { }
# x y(){} と同じ
# x(y(){}) と同じ
x y do end
# x(y()) do end と同じ
x y { } do end
# x(y(){}) do end と同じ
917 :
名無しさん@お腹いっぱい。:03/02/15 17:34
全部、関数型でも定義しる!
>>906 > 実験してみたが、なんか、 ThreadGroup ってそういう使いかたには向かない
> みたいよ。Array かなんかでないと。
ThreadGroup#listってのがあるからArrayに変換するのは簡単なんだが。
全スレッドから抜き出すから大量のスレッドがあると遅いかも知れんけど。
ただ、ThreadGroupっていまいち使い途がないんだよな。
thwait.rbみたいなことができるわけじゃなし。
919 :
名無しさん@お腹いっぱい。:03/02/15 23:18
マジナ話し、オブジェクト指向言語って流行らんよねぇ?
というか流行だった時期は10年前に過ぎた。
そして今や常識となった。
旅は〜まだ〜終わらない〜♪
ちっとも常識じゃないと思う。
オブジェクト指向の定義をめぐってさえいまだに紛糾してるのに。
こんなにまとまらない常識があるのだろうか。
まあ各人が自分の意見を常識だと思うのは勝手だが。
流行が10年くらい前に終わったのは同意?>923
>>923 まとまってないものは常識じゃないのか?
オブジェクト指向がrubyを安楽な言語に糖衣してるのは確かだと思われ。
>>924 流行は終わったと思う。
しかしこの概念がそのあとどれほど定着したかといえば疑問。
いまだに言葉が一人歩きしてる。
俺は「オブジェクト指向かどうかにこだわるのは不毛」という立場なので、
適当に組んでる。名づけて自己流オブジェクト指向。
どんな薀蓄が飛び出すかと思えば自己流かよ。どっかいけ。
発言者のレベルが徐々に低くなってきたね。この板で続くのかしらんが、次スレに期待。(でもsage)
ム板のスレが正常化してるからこの板でやる必要ないだろ。
前スレがこの板に立ったのはあっちにキチガイが常駐してたからだし。
>>930 ならお前がレベルの高い話題を出してみろよ。
といってさらにレベルを低くしてみるテスト。
いまどき、程度の差はあれ、オブジェクト指向じゃない言語ってないんじゃない?
と、誰か言うと思ったんだが。
個人的には悪い概念じゃないと思うけどな。
言語の仕様によるオブジェクト指向っていうのもあるが、
ユーザレベルの設計ノウハウとしてのそれは、もっと存在感があるな。
ThreadGroup は派生したスレッドも自動的に追加されるところがうれしいのよ。
> 個人的には悪い概念じゃないと思うけどな。
誰も悪いとはいっとらん。
ただ曖昧で人によって理解にかなりばらつきがあるから、
常識と呼べないんじゃないか、という話。
継承、カプセル化、ポリモルフィズム
以上、常識。
それ以外はアレげ領域、って言うことで。
オブジェクトの中の人もたいへんだな
>継承、カプセル化、ポリモルフィズム
どれもオブジェクト指向に必須ではないな
オブジェクト指向言語≠オブジェクト指向設計≠オブジェクト指向分析≠オブジェクト指向開発
世の中には継承しないOOPLっていうのも存在する。
HyperTalkとか(藁
それってOOP風っていうだけだろ。
中の人など隠蔽されている!
>>941 matz さんは、それらは必須じゃないって書いていたような
カプセル化の無いオブジェクト指向って、なにか利点があるの?
ソレッテリテン?
オブジェクト指向
オブジェクトを基本にしたパラダイム。英語の"Object-Oriented"という
形容詞が、日本に来て名詞化した。
オブジェクトを考え方の中心に置けば、なんでも良いようにも思えるが、一般的には
継承
カプセル化
ポリモルフィズム
(あるいは動的結合)
が必要らしい。
なんでも解決できる「魔法」のように考える人もいるが、世の中そんなに甘くない。
誕生から20数年を経てようやっと実用的に使われるようになった…んだろうな、多分。
>>951 そういう断定は罠だらけ地雷だらけでよろしくないと思われ。
キレイなお姉さんの中の人も大変そうだな
>>953 キレイなお姉さんの罠か……(;´Д`)ハァハァ
956 :
名無しさん@お腹いっぱい。:03/02/16 19:23
空文字列を nil にするメソッドってある?
class String
def non_empty?
self unless empty?
end
end
どうも
僕、知ってるよ。
ブラックボックスの中には金光タンがいるんだよ。
中の金光タンなどいない!
…いないったらいないっ!!
962 :
名無しさん@お腹いっぱい。:03/02/16 22:04
オブジェクト指向って最初は凄いかもと思ったが、いろいろと触って
いくうちにかな〜り無理があるとおもいつつある。
例えば、
"string".size
とか
"string"
自体にそのようなメソッドがあると考えるほうが不自然とは思わんか?
そうは思わんが、なんで?
964 :
名無しさん@お腹いっぱい。:03/02/16 22:47
例えば、普通プログラムの中には多くの文字列があるだろう?
その1つ1つが。。。と考えるとキモイし不自然
今、目の前に「消しゴム」があるんだけど、こいつがメソッド
もってるのと同じ
>>964 じゃあさ、「メソッド持ってるのが自然なオブジェクト」と
「メソッド持ってたらキモくて不自然なオブジェクト」の境界を厳密に定義してみ。
966 :
名無しさん@お腹いっぱい。:03/02/16 23:03
よく考えてみたら、世の中のオブジェクトで自らメソッドもってるやつって
自動販売機ぐらいじゃないの?(ww
あなたのお名前なんてーの? って聞くのがそんなに不自然ですか
968 :
名無しさん@お腹いっぱい。:03/02/16 23:03
後幕?
>>966 考え方次第だろ。
消しゴムだっていろんなメソッドやインスタンス変数持ってるぞ。
matzの連載、良いよね。
アレだけのために雑誌買ってるよ。
そろそろ新スレですか?
テンプレよろ
思わず感心しちゃうネタも出ず、
笑えるネタにもとんと出会えず、
ただ、制御不能な厨房の出現に怯えながら続いたこのスレ、、、
いままでありがとう
今こそム板へ帰還するときです。さようなら。。。
マジモウイーヨ
1000取り埋め立てよろ
>>974 あんたの主観にマジレスしてもしょうがないかもしれんが、
この板の他のスレに比べてもそれなりに存在価値はあったと思うがなぁ。
ム板スレよりにぎわってるし。
いや、こっちでも立てようぜ。
多様は善。
ちぇっ。
>>980 立てたきゃ立てりゃいいじゃん。
漏れは構わんと思うけどな。
982 :
名無しさん@お腹いっぱい。:03/02/19 00:19
おお、3擦れ目に突入ですか〜
983 :
学園天国グル−プ:03/02/19 00:22
いいよと言われなきゃ立てれんのならよせぶぁ〜?
立てたい派に「なるへそ立てるべや」と思わせる
カキコのできる香具師はいなさそうだし…
>>543 とりあえず Future とか作ってみた〜〜 あんまりスレッドと違わないけど。
Ada風ランデブーはちょっと考えてみたがめんどくさそうだ。
>985
おお! tar+gzip+base64 してここに晴れないデスカ?