Rubyについて Part 7

このエントリーをはてなブックマークに追加
RPGツクールXPへの採用おめでとうございます
Rubyがまさかゲームに組み込まれるとはね
でわノシ
ツクール厨がなだれ込む悪寒
ツクラーにしかわからないようなネタで雑談始めたりするから注意しる
へー。
Ruby 側に何かしら還元されると嬉しいな。
メニューでCTRLを押しながらセーブを選ぶとゲーム進行スイッチの状態を確認することができるぞ。
ツクール厨には使いこなせません
ってかRubyそのものは組み込まれないのでココには来ないっしょ
>>730
あ、どこかのページで詳細見れる?
URL 教えて。
513 名前:名無しさんの野望[sage] 投稿日:04/03/06 22:25 ID:lpR5p0jL
ttp://halfway.parfait.ne.jp/tokuure01.jpg
ttp://halfway.parfait.ne.jp/tokuure02.jpg
デマじゃなかったどー。
オープンソースコミュニティーの成果を
たかだか一私企業の金儲けに使うなんてあってはならないことだ。
新言語 RGSS……Ruby と呼ばれる構造化プログラミング言語を元に…
これって構文が似てるだけの別物じゃない?
>>737
金儲け大いに結構だと思うけど。
採用事例が増えればコミュニティの層も厚くなるわけだし。
>>737
はいはい。

>>738
マルチゲームスクリプターとか、そう言うの好きな会社だから。
>>740
>マルチゲームスクリプターとか、そう言うの好きな会社だから。
詳細キボン
>>737
ライセンスについて勉強しなおして来い
作者誰?MLにはいるのかな。
「似た」ってのが微妙だな。ASCIIなんだから完全にパクれ!
# っていまはenterbrainか…
少なからず影響がないと呼ぶ理由がないなぁ。
RPGツクラーが後日、
ちらほらやってくるかもしれませんので適切な対応をお願いします。
質問厨が、発売日後に来るんじゃない?
Q. Rubyってなんですか?
A. 変な宝石です。
>変な宝石です
あ、いいかもw
750デフォルトの名無しさん:04/03/07 02:27
>>738

別物っぽい。
ツクール作者はやはり処理系大好き言語オタクなのか。

(Ruby のコード自体は使ってくれないわけやね・・・ 何が障害だったのだろうか。
やはり、自分で言語作ること自体に熱意がある人なんだろうね。
Ruby コミュニティや利用者には、いい話じゃないと思うぞ。
似たもの作ってもらってもな。せめて今あるものよりはマシなもの作らないと。)
ツクールってWindowsだろ?
スレッド周りの実装がネックになったという可能性もなくはない。
Ruby始めました
これからCGI作って遊びます。(出回ってるの改変するだけだけど)
家にあるCD・DVDの一覧表でも作ろっと。
Welcome to Ruby
>>751
RPGツクールのスクリプト言語ごときにスレッドまでサポートする必要ないだろう。
>>729
thx. oniguruma も net/http もアツそうだしと snapshot 使ってみたら、
nmake install 中の rdoc 生成で落ちた。痛い。
E:/usr/ruby/lib/yaml.rb:193:in `end_object': method `write'
called on terminated object (0x2ab6aa0) (NotImplementedError)

ruby 1.9.0 (2004-03-06) [i386-mswin32]
756デフォルトの名無しさん:04/03/07 17:13
興味があり、irbの中を覗いてウヒウヒ遊びはじめました。
で、いきなりツマッテしまいました。

http://kansai.anesth.or.jp/gijutu/ruby/man-z1/refm0322.html
上記サイトにて、「irbはReadlineモジュールにも対応しています。
Readlineモジュールがインストールされている時には、
それを使うのが標準になります。」との記述があります。
実際にirb/completion.rb:10 にて require "readline"
としているみたいなんですが、
どのディレクトリを見に行ってるんだろうか。

このReadlineモジュールとは、GNUのReadlineのことを
言っているのだろうか。

>>755
それは気にせずにもう一度nmake installすれば通るかも。
たぶんsyckのGC絡みのバグ。
>>756
そのサイトの説明は言葉がごちゃごちゃになってるんだけど、

(1) GNU Readline(またはそれと互換)ライブラリがインストールされていて、
(2) それに対応したRuby拡張ライブラリ(readline.so)がインストールされていれば、
(3) require "readline"でその拡張ライブラリがロードされてGNU Readlineの機能が
利用できる。

ということでよいかな。
requireが探しにいくディレクトリは、変数 $: に入っている。
>>758
readlineってbashのアレだっけ?
760756:04/03/07 20:34
>>758
早速の解答、ありがとうございます。助かります。

PATHに関しては自作スクリプトと同じだから、
当然と言えば当然ですね。

当方、2つ環境がありまして、
1つ目の環境にはreadline.soがありました。
2つ目の環境ではreadline.soはありませんでした。

2つ目の環境でreadline.soを作成したいと思い、
ソースをおっことしてきたのですが、
readlineのMakefileが無い。
Buildの途中で誰かに作られるんですね。
もう少しウヒウヒ追ってみます。
ツクール祭りは一日で収束かよつまらん
>>761
ゲ製作技術にスレたったので続きはそちらで

RPGツクールXP
http://pc2.2ch.net/test/read.cgi/gamedev/1078652137/
>>761
情報がないのにどうやって騒げと。
作った人でも降臨させてくれ。
>>757
thx. 三回目でやっと通ってくれた。
けど syck のバグだとちょっと致命的。関連情報どこかありますか?
>>764
ない。デバッグしといて。
shim-ruby16_18 ってもうメンテされないですか?
最近、無道編を見ながらraccをいじり始めたんですが、
あれって、例文集(っていうかクックブック)に相当する物や
わかりやすい利用例みたいなものありませんか。

やっぱり、yacc関係の本を読むのが近道?
>>767
Racc の sample/*.y じゃ少なすぎる?
769767:04/03/09 07:30
ん。どちらかというと、こういう対象のときにはこうするんだよっていうのが欲しいですね。

Q 重なった余分な括弧をとりたい。
A
block : '{' inner '}'
| '{' block '}'

とか(簡単過ぎるけど)。実はあんまり無いのかな。
770767:04/03/09 07:32
あとは、エラー回復の有効な使い方ですね。
sampleではちょっとわからなかった...
Racc クックブック
楽々Racc
そういう事例集が作られるほど racc が使われているわけでもないような。
青木さんの wiki に作ってみたら?
http://www.enterbrain.co.jp/digifami/products/rpgxp/capt10.png
本当にツクールにRubyが組み込まれてるっぽいけど、こんなもん遅いだけじゃないのか?
>>774
いや、だから、「Rubyに(見た目が)似た言語」であって、Rubyじゃないんだってば。
>>775
えっ、そうなの?てっきりツクールの作者がRubyの亜種を作ったのかと思ってた
ttp://www.enterbrain.co.jp/digifami/products/rpgxp/shinkinou.html

>■新機能『RGSS』
>
>『RPGツクールXP』では、『Ruby』という既存のプログラミング言語を利用し
>て、ツクールの機能を自由に編集することのできるシステム、『Ruby Game
>Scripting System(以下、『RGSS』)』が採用されており、その中のスクリプ
>トを編集することで、ツクールの機能を自由に変更・追加することができるの
>です。

亜種ではなくRubyがそのまま入ってるっぽい?
Ruby で実装した Ruby に似た言語、ってこと?
Ruby embedded ってことじゃねーの?<Rubyを利用したシステム
いまどきXPとかいってるのかよ
ソースコード公開汁
>>777
雑誌の記事とはニュアンスが違うな。
組み込みサポートが弱い今のrubyを、よく使う気になったねえ
諸々の問題点はどうやってクリアしてるんだろ
ライブラリを作成しているのですが、ファイルがでかくなってしまい読込が重くなってしまいました。

そのライブラリはクラスがいっぱい定義してあるのですが、
使用方法によっては、まったく利用しないクラスもあるため、
クラスごとにソースを分割し、クラスが利用されない場合は読み込まず、
利用される場合は自動で読み込むようにしたいと思っています。

そこで同じようなことをしている、またはやった方はいませんか?ノウハウを教えていただきたいです。
784783:04/03/10 11:57
続きです。
今は最初にmethod_missingのみ定義した実体のないクラスを定義し、
method_missingが発生したら実体が記述されたソースをrequireするようにしています。

ただこの方法だと継承された時や、ちょっと複雑なことをやってしまうとうまくいかないのですが。

#---------------------------------------------------------------
# Raiburari.rb。単にmethod_missingを定義したスケルトン
class Raiburari
  class A
    def method_missing(args)
      require "Raiburari.A.rb" # アクセスされたときに class A の実体が書かれたソースをrequire
      self.method(args[0]).call
    end
  end
  class B; 同上; end
  class C; 同上; end
end
単位がクラスでいいならautoloadかな。
787783:04/03/10 17:35
>>785-786
( ´∀`)うおおおお!それだぁぁぁぁぁ!
それなら変なことしなくてもきれいに実現できる。
ありがとうございまする。
試してみます
Hash#default= ってなんで self を返さないのかな?

aHash = {
1=>2,
3=>4,
}.defalut = 0

とかできて便利だと思うんだけど。
いや、待てよ、

aHash = {1=>2,3=>4}.default = 0

とかだと紛らわしいか。
>>788
字面が a = b = 0 と同じだから、0 を返す方が自然に見えるなあ。
Xxx#yyy= で self を返すものってあるっけ。

デフォルト値といえば、個人的には
* Hash#inspect でデフォルト値が表示されない
* Hash#default_proc= がない
とかが気になる。
>>788
1. (実装時に)あまり考えてなかった
2. 気づいてなかった
あたりかな。体系の不一致を見つけたら ruby-list or ruby-dev に投稿しる!
>>790
いつのころからだったか、代入系のメソッド(=が最後に付くメソッド)は、
メソッドの返り値に関係なく、引数(右辺)を返すことになりました。

ただし、__send__ を使えば、メソッドの返り値が使われるようです。

最近の ruby-talk にもそんな話がありましたな。
まぁ

h1 = {1 => 2, 3 => 4};
h2 = {5 => 6, 7 => 8};

h1.default= h2.default= 0;

これでh1のdefaultがh2になったら鬱だろ
>>720
使ってますが、何か。
>>794
最新の refe 使おう。
796795:04/03/11 13:37
あ、 FreeBSD ports の refe を最新のにして欲すぃ。
each の返り値に決まりはありますか?
selfが返ってくるんじゃない?>each
Enumerable を include するのに必要な条件ってこと?
特に決まってないと思うけど、selfを返すのが定石かも。
>>798,799
self が返ってくるんですね。ずっと前にマニュアルを見たときに
は書いてなかったんだけど、今ArrayやHashのところを見たら書い
てありました。
refeとriってどう違うのよ
ri
* PragmaticProgrammers
* rdoc

refe
* aamine
* RD

あってる?
rdoc に RD ?
しょうもな。 おまけに、何で同じようなのが2つもあるんだ?
Perl なら pdoc ? Python なら pydoc ?
はぁ、ばかばかしい。まぁ、 Ruby 村でひっそりやっててくれ。
>>803
えーと、何しに Ruby村に来られたのですか?
ここが Ruby村だってこと、分かってないのですか?

釣りでしたら、他の村のほうがもっと釣れるかもしれませんよ。
ここじゃ、私くらいしかかからんですわ。
どこかに RDoc と RD の違いとか歴史とかまとまってないかな
Ruby村とDash村って関係ありますか?
>>806
関係ないけど。なんで?
>>803
俺も思うんだがなんで複数あるの?
Rubyはそういうのが多い気がする
"There's more than one way to do it." -- Larry Wall
ユーザが選べるという意味で選択肢が多いのは結構だけど、
両者に余り違いが無ければ、混乱するだけだと思うけど?
>>810
それはそうかも、とLinuxの各ディストリビューションを見ながら思う。
いや、それとこれとは...
>>795
現状の環境云々ではなく、望ましい仕様について議論しているのが分かりませんか。
814795:04/03/12 21:08
>>690-696>>696>>720>>794
の流れを踏まえてのレスということが分かりませんか?

# たまたま rdoc <-> RD の議論とタイミングがかち合ってごっちゃになってるが。
815795:04/03/12 21:11
あ、勘違いした。漏れのレスから rdoc <-> RD の話が始まったのか。
だとして、ますます >>813 の意図がわからなくなってきた。

何が言いたいのですか?
816newbe:04/03/12 21:14
古くからいる人は定番ライブラリとかわかるのかもしらんけど、
なんだか同じようなライブラリがいっぱいでわけ判らないんだよ。
もう、RAAなんてやめて全部CVSかなんかに放り込んで
できる奴がよってたかって作り込むとかって選択肢はないの?
>>816
ライセンスが問題ないものに関してはやりたい人が勝手にやってください。
818813==696:04/03/12 22:11
>>815
別の話題が盛り上がってる中、自分もあいまいな言い方してすまんかった。
696で書いたとおり、「Math.abs()欲しい(他の人はどう思う?)」って話です。
>>810
perlとrubyも同じだな
>>819
perlにもローカルなドキュメント規格もどきが複数あるの?
>>820
それは誤読だろ。
Ruby と Perl の関係を、rdoc と RD の関係にたとえてるんじゃないの?
(そのたとえが適切かどうかは別だけど)
Ruby/SDLとRUDLとかな。
かたやWin32版バイナリがRuby1.6、mingw用だったり、
かたや日本語が使えなかったりと、使うには面倒な事が多いけど。
すごい勢いで投稿を続ける ocean たんは何者ですか?
ちょっと落ち着いて欲しいよね。変数名の話とかわけわかんねえし。
春先に出没する珍走団みたいな感じかな。
>>824
同感。でも前も書いたが、
静か過ぎるよりはよりは今のほうがいいんじゃないでしょうか。
ただ、思いついたら即投稿っていうのはやめて、もっと熟慮を重ねてメール一通あたりの情報量を増やして欲しい。
>>826
そうなのよ!
一つのスレッドを同じ投稿者がしめているのはいかがなものかと。

他人から反応があったときのキャッチボールがもうちょっとうまくいってもいいのではないかと。
>>805

RdocとRDって違うからなぁ。
プレーンなテキストファイルで構造的な文章を書かなきゃいけないときに、(blog や wikiの構文とか)
それの一つのいい形としてRDがあって。

RdocはまんまJavaDocの移植って感じ。
漏れはソースにドキュメント埋め込むならRDocがいいと思う。
(さらにいうなら、ドキュメント書くまでもない意図が明確なソース書くべき)
829デフォルトの名無しさん:04/03/13 21:44
result=`command`
として、標準出力を得るのはできましたが、エラー出力を得るにはどうすればよいですか
830829:04/03/13 21:47
解決しますた Process::Statusが帰ってくるのですね
>>829
open3
832830:04/03/13 21:55
ありゃ、$? に Process::Statusになんかエラー出力の文字列が格納されていると勘違いしてた・・・
やっぱエラー出力とれないや

>>831

やってみます
833デフォルトの名無しさん:04/03/13 22:19
>>831
The fork() function is unimplemented on this machine
といわれますた
834デフォルトの名無しさん:04/03/13 23:40
`#{cmd} 2>&1`

でstderrをstdout にやることができますた
興味あるんだけど、forkがないプラットフォームって何?
>>835
mswin32
% time ruby -ne '' FILE
とかやって気付いたんだけど、
この時の速度って、
File.open(file){|f|
while line = f.gets
end
}
とか
IO.foreach(file){|line|}
に比べてずいぶん速くない?
デファクトスタンダードの存在しない多様性は単なる混沌に過ぎない。
各々好き勝手に類似の機能を撒き散らしているようではRubyコミュニティは早晩崩壊するだろう。
UNIX も Linux も崩壊と。
プログラミング言語も崩壊と。
OSはWindowsが、言語はC#とVBScriptがデファクトだから実際崩壊してない。
ふむ。
Ruby はそれらのデファクトから外れたところにあるのだから余計なお世話だな。
>>840
なんか最近は普通のWindowsアプリでもJava製品をよく見かけるよ。
C#のはまだはっきりみたことない。あるんだろうけどさ。

タブ移動ができない(キーボードでコントロール間移動できない)
アプリは大抵Javaランタイム要求するやつ。
マウスなんか使わせるなよ。
ちゃんと作れよ。
WindowsUIデザインに従ってくれよ・・。
>>837
当然だろ。-nは純粋にC言語で実装されてるからな。
>>840

そういうUIへのこだわりがないっていうのは、大抵コンピュータに関心のないプログラマが作るものだねぇ
うちでは大差ないぞ。
% time ruby -ne' ' /usr/share/dict/words
0.560u 0.010s 0:00.57 100.0% 0+0k 0+0io 0pf+0w
% time ruby -e'IO.foreach(ARGV[0]){}' /usr/share/dict/words
0.540u 0.030s 0:00.61 93.4% 0+0k 0+0io 0pf+0w
>>838

Eclipse対FreeRIDEのオープンソースIDE対決もあったり、
それで、いったいどっちがいいんだと迷う人もいるかもしれん。

Eclipseのクソ長い冗長コードよりはFreeRIDEのほうがコードの質は高そうな感じするけど、
Eclipseのほうがカネかけてるだけあってそれなりに多機能。

オープンソース同士何争ってるんだって思う人もいるかもしれんけど、
こういう競争がないとね。


個人的にはJavaは無駄が多いし(1.5の言語仕様拡張でいよいよポリシー失いつつ
ある感じしてる)Eclipse陣営がRubyでIDE書くのが一番効率よいと思うのだが。
>842
最近はVBより多いかもね>Java製
開発側からしてみればいいことなんだろうけど、
UIに関してはガイドライン無視ってのが本当に多い。
この辺の状況はVB全盛の頃からあんま変わってないな(w
意識の問題かなあ。
Winロゴ取得とかすれば変わるんだろうけど。
RubyスレにWindowz至上主義者がわんさかいるってのも不思議な感じだな。
>>848
郷に入らば郷に従え、windowsのアプリケーションを書くのであれば
windowsの作法に従えという話でしかないように思うのだが。
wxWindow や FOX 使えばそれなりに Windows っぽいのが作れるんじゃない。
>>549

過去ログに車輪の再発明とかでてるけど、
Strutsやらなにやらは古タイヤの再利用くらいだとおもう。

ほしい物に似てるけどちょっと違うんだなあ。
だから車体を古タイヤに合わせて設計してみました、みたいな。

似たようなもの毎回作っちゃってもいいんじゃないの?
設計の再利用ってもう流行ってないのかな。
実装なんて再利用しようとても毎回しっくりこないんじゃない?

これ、JBossというかEJBのときにも思った。
既存の道具生かすためになんか本体側で無駄な苦労してるなあと。
「怒りを感じ」てるらしいね。「同種」っていうのも意味不明だけど。
>>805
これからはソースのドキュメントはRDocが標準なんだっけ?
RDとの関係とか、もっと資料があってもいいよね。

ところでRDocのパーサ、時々おかしくないですか。
コメントを自動抽出してくれるのはありがたいが、違うところのコメントが出てきたりとか。
ドキュメント書きが仕事なのに、ツールのデバッグなんかしたくないよー。
リファレンスマニュアルが落ちてる……
てか、www.ruby-lang.orgのwebサーバ自体が落ちてる
annonymous CVS につながらないと思ったらWebも落ちてたのね
>>846
> 個人的にはJavaは無駄が多いし(1.5の言語仕様拡張でいよいよポリシー失いつつ
> ある感じしてる)Eclipse陣営がRubyでIDE書くのが一番効率よいと思うのだが。

無駄が多いってか。あれは大規模プログラミング磨る上では重要なことだよ。

>ポリシーを失いつつあると感じている
相変わらずそうでもなさげだよ。J2SE1.5(Tiger)スレなどを見て見るべし
>>857

> 個人的にはJavaは無駄が多いし

Rubyでの短く書くことができるのに対して
Javaは長いのが売りだと思うんだけど、
その長さも今後の言語拡張で中途半端になる
のが漏れは好まない。
859デフォルトの名無しさん:04/03/16 21:48
>>857

Javaが大規模に向いてるって理屈いつまでたってもわかんない漏れ
>>859
電波発してる本人以外
誰もわかんない
>>860
そう思いこみたいんだろ。
>>859
型制約が厳しい言語は開発人数が増えても比較的安全にプログラミング
できる、といわれている。ほんとか?とは思うな。大体、コンパイル時
型チェックに引っかかってコンパイルエラーを吐きまくるような馬鹿
プログラマ使ってたら、どんな言語だろうと「安全にシステム構築」な
んかできるはずがないと思うよねえ。

インスタンスの実行時型やライフサイクル把握しなきゃまともなシステム
にはならんわけで、そこまでわかっているマトモなプログラマなら静的型
チェック機構なんかどーでもよい、というのはスクリプト系Guruが書く
コードが証明しているよね。
>>862
その通り、欲しいのは成果物。

目的が達成されれば手段を選ぶ必要もなければ性格の悪い陰湿な言語オタを
使う必要もない。
>>862
後者の方が実行時のバグを持ち込みやすい。

バカ+厳格 神+ルーズってのは変数が二つになるわけで比較対象としてはどうかと思われ、
(そんなにスパゲティが好きなのなら止めはしないが。デバッグは自分でやってくれ。)

どちらかの変数を固定して1変数で比べてはどうか?

バカ+厳格
バカ+ルーズ

神+厳格
神+ルーズ

一般人+厳格
一般人+ルーズ

そうすると俺の1行目の結論がしっくり来ると思われ。

>>864

そこは、マネージャが厳しくテストを書けとプログラマに言い聞かせればよい
>>864
型制約の有無とスパゲティコードは関係ないでしょ。
>>865
そんな余計な手間をかけるなら・・・

と言う手を指してみようと思う。王手。
>>866
問題を複雑なまま考えようとしている様をスパゲッティと呼んだ。後のは洒落だよ。
>>867

テストしないコードなら書かないほうがよい、と逃げる
>>867
型付けをするのが手間でしようがねぇです。
>>868 の脳内では

型制約なし=問題を複雑にする

なのか?おれと逆だ。
言語の性格はそんなに関係ないと思われ。
型のよしあしは慣習に依存する部分が大きい。

つーか、100万locを超えるようなものは
楽しくない部分もたくさんあるからビジネスじゃないと無理。

商用の処理系を導けるような伝統的な形式の仕様文書か、
Zendみたいなサポート会社かどっちかないとね。
>>871
変数が複数=問題を複雑にする
と言っていると思われ。
わけわかんなくなってきた。
>>864
俺の1行目の結論というのはどれのこと?
>>871
日本語からやり直せ。
Cとか型の制約が厳しいものを長年扱ってきて、Rubyを使い始めた当初は
不安で不安で、メソッド定義の最初にかならず、raise unless foo.is_a?(String)
式の型チェックをいれてた。

えーと、Cの型の制約が厳しいというのは、Pascalみたいに処理系が厳密に
律してくれるという意味じゃなくて、間違った型でも平気でプログラムできて、
しかも往々にしてそれが致命的かつ見つけづらいバグになるって意味ね。
char *を容易にint *として扱えたり(まずやらんけど)。

たしかruby-listでだったと思うけどRubyのような言語の場合重要なのは型じゃなくて、
そのオブジェクトがどんなメソッドを持っているかだけが重要だ、というのを読んでから
視界が晴れた気分になったよ。型チェックみたいなことはほとんどしなくなった。

なるほど、オブジェクト指向で最も重要な機能は多態だといわれてるのが、
やっと理解できた気がしたよ。
>>859
デザインパターンをJavaでやるのとRubyやPerlでやるのとで
比べてみるとわかるかも。

>>862
コンパイルエラーが出るからこそ、バグを早期に発見することができるようになり
堅牢性が高まるわけだよ。
コンパイルエラーが出るべきところででなければ
自分の責任でバグを探さないといけない。

人間と機械はどちらが信用できるかというと機械のほう。
人間はしばしば間違いを犯す生物。いくら信頼と実績があっても
歳や病気、寝不足にはかなわなかったりする。機械の場合は動力源さえあれば
言うことを確実に聞いてくれる。

ようするに型チェックは人間より機械に任せた方が信用できるということ。
そこらへんがvery strongly typed(強く型付けされた)言語のメリット。

しかしRubyやPerlでもツールなどで補えば同じことができるんではないかと。

RubyがJavaに勝っている点はMixJuiceのようなモジュール分割が
容易なことでないかな。

そりゃ100%安全は無理。けれども無いよりは少し安全になるというところか。
荷物を運ぶのに滑車(型チェック)を使おうが使わないが仕事量は同じでも
滑車は使われている。なぜかって、便利だから。小さい荷物を運ぶには不向きだけれども。
>>876
考え方が型に最もうるさい言語Smalltalkを作ったアランC系みたいだ。
すべての型は皆Objectであって型の違いは無いみたいな。
>>846
J2SE1.5でも相変わらずポリシーは失ってないよ。
みんなJavaがC#みたいになってポリシーを失うと勘違いしているけど
よくみるとそうでもない。あたかもC#からパクったように見える機能は
J2SE1.5でもそのまま実装されているわけでもない。
まるでC#を反面教師としてうまい具合に実装しているかのようだ。
JCPの観察能力恐るべしというか。

それとGenericsがでたのはかなり大きいと思われ。
GenericsがでたからといってC++のtemplateのような
とんでもないスパゲティコードをかきやすくなるわけでもないみたいだ。

ああ、すれ違い須磨祖
>>878
オブジェクトの型と変数の型を混用するな
オブジェクト指向言語って変数名とかメソッド名が長くなりがちでイヤン。
それに加えて型情報までソースコードに入れるとタイプ量が増えて超鬱陶しい。
趣味でRubyを4年ほど使ってるんだけど、いったいいつに
なったら仕事で使える日が来るんだろう。
デファクトでいいからデプロイのツールが標準化されるだけで
随分違うんじゃないかな。
Javaのいいところというか退屈なところは言語自体がどうこうより
とにかく大量にコードが書けるようオートメーションが進んでいるところと
デプロイ自体とそのあとで他の実行環境にあまり依存しないように
がんばってるところにあると思うよ。
>>882
転職するしか。使ってるところもいっぱいある。
>>881
自動生成ツールとかIDEとかでどうにかなるもんさ
>>882
ここ3年ほど、入ってくる案件の7割くらいはRubyで作って納めてる。
残りはPerlとCが半々くらいかな。
>>881
名前に使う必要のある情報を同じにして比較してる?オブジェクト
指向言語の方が、オブジェクト自体が情報を持つ分だけ短くなる傾
向があると思うけどな。

/* C */
GuiWidget* w = gui_entry_new();
gui_entry_set_editable(w.TRUE);

// C++
Gui::Widget* w = new Gui::Entry();
w->set_editable(TRUE);

// Java
Gui.Widget w = new Gui.Entry;
w.set_editable(true);

/* Objective-C */
id w = [[GuiEntry alloc] init];
[w editable: YES];

# Python
w = GuiEntry()
w.set_editable(TRUE)

# Ruby
w = Gui::Entry.new
w.editable = true
というか変数名がながくていやっていっても
名前はほとんど自分できめるものだし。
クラス名とかメソッド名は長くても
オブジェクト名や変数名、自作クラス、メソッド名は
自分できめられるし。

とはいってもJavaとかの場合コーディング規約で
なるべくクラス名やオブジェクト名は名詞、
メソッド名は動詞にすることが推奨されている。

やっぱりそのほうが読みやすいんですわ。
自分でクラスとかつくるのが面倒くさいと思う人は嫌がるかもしれないけど
そこで型推論ですよ、とか言ってみる。今風の関数型言語とかじゃたいてい
ついてるけど他じゃあんまりないのはどうしてだろうか。
>>889
明示的な指定はしないけども型違いによるコンパイルエラーを出すってもの?
と推論してみる。


ふと思ったんだけど、ruby において型無しで困ることの大半は、うっかり
nil をやりとりしてしてしまい NoMethodError になることじゃない?
デバッグのときだけでよいから、特定の変数に nil が代入された時点で
エラーを出せるようになるとありがたいかも。
>>890
っ[set_trace_func][trace_var]
っ[ソースコード]
>>890
unittest すれ
>>888
>とはいってもJavaとかの場合コーディング規約で
>なるべくクラス名やオブジェクト名は名詞、
>メソッド名は動詞にすることが推奨されている。

面倒なのはこっちです。Smalltalk 風の命名規則は、Smalltalk が IDE が組み込みの
環境だから許容出来ると思います。
その他にも、同じ様な単語を何回も書かされるのは辛いです。

compiledCode := Compiler compile: aCode.

関数型言語は比較的記述がすっきりしている様な気がします。
>>893
JavaだったらEclipseとかJDE(Emacs)とかIDEっぽい環境あるじゃないか。
確かに補完なしでプログラムするのはつらいけどね。

そーいや、変数に型のない言語だと補完が中途半端になっちゃうね。
変数が指してるオブジェクトがなんだかわからないから、
メソッドの補完ができないもの。これはRubyの弱みかなw
>>891
trace_var はグローバル変数だけにしか使えないようだし、set_trace_func
は代入を検知できないみたいなのでムリぽい。

set_trace_func lambda {|*arg| p arg}
foo = Object.new
bar = nil

["line", "tracetest.rb", 2, nil, #<Binding:0x2ac7600>, false]
["c-call", "tracetest.rb", 2, :new, #<Binding:0x2ac75b8>, Class]
["c-call", "tracetest.rb", 2, :initialize, #<Binding:0x2ac7360>, Object]
["c-return", "tracetest.rb", 2, :initialize, #<Binding:0x2ac7318>, Object]
["c-return", "tracetest.rb", 2, :new, #<Binding:0x2ac71e0>, Class]
["line", "tracetest.rb", 3, nil, #<Binding:0x2ac70c0>, false]

>>892
きっちり作るならいいけど、起こりうる状況をちゃんと想定しないといけない
のがおっくう。
手元のデータが処理できればいいとかその程度だと、対処療法に走りたいのです。

あと他人のプログラムを使っていて起きたエラーを追跡する時も unittest は
書いてられない。
補完があるっていっても、名前が長すぎると読みにくい
よ。極端な例だと、mainWindowUpperSubmitButton と
mainWindowUpperCancelButton じゃあ、一目見ただけ
では違いがわからない。

ちなみに >>893 の Compiler.compile みたいのは、
オブジェクト指向言語の例として出すにはちょっと
例外すぎるだろう。strategy のクラスメソッドじゃ
なあ。基本はインスタンスメソッドでしょ。

それに Compiler の例であっても、new してパラメータ
をいろいろセットして compile、ていうのだったらオブ
ジェクト指向言語のほうが短いと思う。
>例外すぎるだろう。
C#だと
Font Font = new Font()
みたいなのばっかだけどな。
>>895
その場合、おそらくローカル変数では不足だろう。
メソッドの返り値をチェックしないとまずいと思う。
そうなるとチェックのためだけにいったん変数に
代入したり、チェックを指定するディレクティブを
入れたりしないといけないが、ソースコード変更を
許容できるのなら、そもそも手で assert を入れても
同じようなことができる。

また、うっかり nil にしてしまうのは例えば Java
で言えば NullPo(ry に相当するが、これは静的型付け
言語であっても防げない。
微妙に違う話かもしれないがとりあえずリンク
http://arton.no-ip.info/diary/20040318.html#p03
興味深いがlong l;だけはちょっと勘弁。
もちろんエディタは1lI|の見分けがつくフォントにしてるけど、
それでも単独の小文字のLはやめてくれ。
お願いします。お願いします(涙

# トラウマらしい
require と load ってぶっちゃけどう違うのかまだわかりません。
そもそも require が何をするものなのかもわかってません。#include みたいなもの?
だれかずばっ!と説明していただけますか?
load が #include だとするなら require は #import
>>901
requireは同じものを1度しか読まない。
loadは呼ばれたら必ず読む。
904デフォルトの名無しさん:04/03/19 10:05
インストールしたんですが、使い方がよく分かりません。
どのようにすればいいんですか?
>>904
それではまず、あなたがインストロールしたソフトウェアの名称を教えてください。
>>903
あと、requireは拡張ライブラリも読める、
$:を探すというのも。
>>905
>インストロール
釣りか? 釣りなのか? そんなエサにはひっかからないぞ!
908デフォルトの名無しさん:04/03/19 12:08
IDEはがんばって欲しいよ
そりゃ昔からやってる人はEmacsだろうけど、大多数はWindows組だしさ


xxx.

てな具合にドットをつけてしまっただけで、[ソースの最終行]syntax errorと表示されて
しまうのも不親切だと思う。ここを示してくれる構文チェッカーが欲しい
909デフォルトの名無しさん:04/03/19 12:23
909
>>908 コボラーの方ですか?
ftools.rb 、面倒見る気無いなら、ドキュメントで obsolete と宣言するなり、
require 時に warning 出すなりした方が良いと思うのだが。
>>906
load も $: 見るよ。
おれも最近知って驚いたんだけどね。
load で設定ファイルなんかを読むときは
横着せずに File.expand_path したほうがいいな。
>>911
CVS上ではとっくに「fileutils推奨」と書き込まれているわけだが。
914デフォルトの名無しさん:04/03/19 17:54
>>905
Ruby Entry Package for Win32をダウンロードして
インストールしたんですが、使い方がよく分かりません。
どのようにすればいいんですか?
Matz日記にアクセス拒否されてる気がするのは俺だけか?
はてなアンテナは更新取ってきてるのに自分はアクセスできない
>>913
ほほう。で、それで十分と。
rexmlってutf-8しかparseしないと言われているけど、
漏れが使ってる限り、そうでもないのだが

require 'rexml/document'
require 'kconv'
p Kconv::SJIS == Kconv.guess( REXML::Document.new('<a>あ</a>').to_s)

>true
>>918
確かに以前は UTF-8 だけしかダメだったけど、最近はそうでもないらしいよ。

るびきち だ け は 勘 弁 し て く だ さ い
>>916
どうしろと?
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=ftools.rb
ここを書き換えろってことなんじゃ
>>923
> 嵐を呼ぶイベントLightweight Language Saturday!
> あの興奮が今誌面によみがえります。

なんつーあおり文句だw
>>865
そんなマネージャ見たことない
>>912
そんな気もしたんだけど、出先だったんで確認できなかった。
うろ覚えスマソ。
>>882
仕事で使ってます。
「え、Perlにしろって?コードが2倍に、開発時間4倍になりますけどいいですか?」
と開き直る。確信犯だが、良いものは広めていかねば。
Perlは良いライブラリが充実してて初心者にやさしいからなぁ
ほしいライブラリを探して、無いことほとんどないし。
Rubyはライブラリという点で力を入れないと。
930882:04/03/20 15:20
>>884
どこの会社が使ってんのかさっぱりわからないよ。
転職するとき開発言語Rubyで探してたけど擦りもしないし。

>>886, 927
そんな立場だといいんだけど、下っぱの俺にはどうすることもできない。
あと5年ぐらい待ってみるか。
>>886
> ここ3年ほど、入ってくる案件の7割くらいはRubyで作って納めてる。
> 残りはPerlとCが半々くらいかな。
ちなみに会社はどのあたりにあるのでしょうか?
都道府県名で教えてもらえませんか?
>>917
正直、日本語処理で有利かといわれると、そんなことないしな。

933デフォルトの名無しさん:04/03/20 21:00
Ruby Entry Package for Win32をダウンロードして
インストールしたんですが、使い方がよく分かりません。
どのようにすればいいんですか?
そのままnyに放流するとか
>>931
東京っすよ。
>>933
DOSプロンプトを起動
ruby -v
937デフォルトの名無しさん:04/03/20 23:57
>>931

googleで検索してたらアドワーズで

「Rubyを活かす求人情報」なんて出て
findjobとかいう求人サイトへ飛んだぞ

なんかクリックして激しく後悔した
(別に活かしたいわけじゃないし。そんなにのフラフラと乗せられんなよ)
後悔したっていうのは。
Rubyユーザはプログラミング好きな香具師だから
そいつらを狙おうという、
要らない打算がありそうなのが気持ち悪い。
>>927
「確信犯」の使い方がおかしい。
>>939
いや、珍しく正しい使い方だろ。
>>940
正しい用法の場合は「確信犯だが」などためらってはいかんと思う。
確信犯は自分で自分の事を確信犯だとはいわない気がする。
1.6以前だと、sub(pettern, replace)の pettern が正規表現に変換されるのだけど、
これを防ぐ方法ってある?
正規表現に変換されると、上手く文字列が置換できないのだが……
>>943
sub(Regexp.quote(pattern), replace)
>>944
即レスありがとうっ!
# ちゃんと書かなきゃ駄目だったのか。
# ……単に''で括って駄目だったので諦めてた……阿呆だ漏れ
つか自動的に変換してんじゃねーよ、という気は確かにする。
>>946
変換しなかったらしなかったで怒る癖に。
948デフォルトの名無しさん:04/03/21 15:33
ハングマンを作りたいのですが何もてにつかない
初心者ですみません 誰か救いの手を・・・
>>948
1: 頭の中でルールを整理する
2: 思うがままに書く
3: 書いたとおりに動く
4: 思ってる通りに書けてないので goto 2;
てーかRubyで仕事って冗談でしょ。
簡単すぎだろ。仕事になるのか?
Rubyで仕事って一見馬鹿っぽいけど実は重要な意味があるんだよ。

Rubyで仕事->他人にはメンテ不可->自分の存在価値が高まる->クビになりにくい->(゚Д゚)ウマー

というわけさ。
>>951
それバカじゃん。
無職の春坊には分かるまいが自分の仕事を確保するのもまた重要な仕事なのだよ。
>>953
次から仕事が来ないのは明白ですな。
>>947
でもさ、文字列リテラルと正規表現リテラルの書き分けは出来るんだから、
勝手に変換するのは混乱の元だと思う。
だから、変換しないようになったじゃない
>>950
つまらん釣りだとは思うが。

仕事が簡単になるのは良いことだよ。

同じ仕様を実現するにも開発効率がよければより多くの仕事をこなせるでしょ。
おれの場合フリーだから開発効率は収入に直結してるよ。

Rubyで多くの仕事をこなすようになって収入は2倍とまではいかないものの、
少なくとも5割増くらいにはなったからね。工数を短めに見積もれるから、
合見積もりに強くなったしね。

んー、いかにも信者っぽい発言に見えるな、我ながらw
ただ実感としてそうだからねえ。他に開発効率のよいものがあれば喜んで移るつもりはある。
Lispなんかそうらしいんだけど、おれの頭じゃついていけんw

もちろんRubyじゃ仕様を満たせない要求も存在するんで、
そういうときは別のものを使って開発するしね。その辺は考えてますよ。
角度とか。
じーくじおんっ!
すいません、質問いいですか?

class V
def initialize(x, y, z)
@x = x
@y = y
@z = z
end
def *(n)
V.new(@x * n, @y * n, @z * n)
end
attr_accessor :x, :y, :z
end
と言う定義があって
a = V.new(1, 2, 3)
b = a * 5 #=> b.x = 5, b.y == 10, b.z == 15
c = 5 * a #(*)
と、したときに、(*)の行でcがbと同じになる様にしたいのですが、
どう書けばいいのでしょうか?

>>959
class Numeric
def *(x)
if x.is_a?(V)
x * self
else
super
end
end

かなあ。
>>960
あー、superじゃだめだ。alias使ってください。
>>957
そそ。まったく同意。

効率が良いだけじゃなくて、なんつうの、いい意味で頭を使う楽しさもあるよな。
綺麗に書けたときは嬉しいし、
# Perlで綺麗に書けてもあまり嬉しくない :-(
OOのせいで機能追加や汎用化に強いシステム作りやすいしな。
(どうせ完成してからも、アレ足せコレ変えろソレ出来ないかって言ってくるわけだから)

もっといいものがあれば移るけどね、いまんとこ満足してる。
ライブラリとかも、あと5年くらいすればなんとかなるでしょ。
インデント幅が4って、かなり違和感あるな。
ところで ruby-indent-level を 3にして
適当なコードを re-indentしてみたら悪くない。
でも他から浮いちゃうからなー……。
>>960
そういうときって coerce 使うんじゃないっけ?
>>963
tdiaryの開発者ですか?
Ruby以外の言語はインデント幅どうしてます?
ruby は 2
C/C++ は 4

タブでインデントする奴は死刑
まぁ死刑は冗談にしても、
Emacs使ってる人は indent-tabs-mode を nil にしておいてほしい。
じゃないと、インデントにタブとスペースが混じっちゃうから。