- 1 名前:730 [2008/09/15(月) 17:25:21 ]
- プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
【Ruby1.9 は不安定な開発版であり初心者には全く向きません】 【最新安定版の Ruby1.8.7 の使用をお勧めします】 ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。 1.9 の新機能の一部が利用可能なので初学者にお勧めです。 ※ただし十分安定しているとは言えないので プロダクション環境での利用にはお勧めしません。 関連スレやURLは>>2-8あたりを見てください。Ruby on Railsの質問はRailsスレへ。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・モジュール名やエラーメッセージでググる ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/ ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(自力で訳さずなるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
- 228 名前:50 mailto:sage [2008/09/24(水) 14:12:41 ]
- すみません。大変遅くなりました。都合でネットにアクセスできなかったもの
で。もう少しここで話をさせてください。 >>71 > local visibilityとかいう新機能とは違うのかな。 ちょっと調べてみたのですが、2006年ごろで話は止まっているのではないでしょ うか? >>74-76 すみませんが、私が問題視しているのはevalではないのです。evalを持つ言語、 オープンクラスを持つ言語に共通する点ではなく、Ruby固有のクラス実装を私 は問題視しています。 具体的には、以下のようなことです。 ・あるクラスを継承するときに、親クラス名.methods などを頻繁に実行して、 存在するすべてのメソッドやインスタンス変数の名前を確認して、衝突を避け なければならない。 ・あるクラス内だけで使う、公開しないツールのようなメソッドを作れるよう な名前空間がどこにもない。 これらを解決する方法が、コーディング規約によるプレフィックスのみという のは、ずいぶん原始的で、JavaやC++に慣れた人なら不自由を感じると思うの ですが。しかもRuby の大クラス主義で、既存のプロパティの数は膨大です。 そこで、皆さんがどのように感じておられるのか、お聞きしてみたいと思いま したが、このスレの反応を見てもやはりあまり問題視されていないようで、こ れはやはり意外でした。
- 229 名前:50 mailto:sage [2008/09/24(水) 14:13:55 ]
- >>76-78
私が言及していた、継承を必要とするフレームワークとは Rails のことです。 継承が危険だとはよく言われますが、、継承を多用しなければ Railsの簡潔さ はかなり損なわれたことでしょう。 継承そのものが悪という視点には、あまり賛同できません。例えばプロトタイ プベースの言語なら、委譲でも同様の問題が起こるからです。継承にせよ委譲 にせよ、他のオブジェクトへのプロパティの探索が自動的に行われる仕組みが ある限り、この問題は必ず起こるでしょう。それは簡潔さとのトレードオフです。 しかしここでは、継承の善悪にはこれ以上踏み入りたくないのです。私は、 Rubyにおいては継承がいっそう危険になっているという点に、話を絞りたいです。 そもそも、継承の良し悪しや好き嫌いにかかわらず、私たちは業務でRailsを使 わざるを得ません。 >>76 トップレベルにメソッド定義というのは、フレームワークが強制するという話 ではなく、初心者プログラマが知らずに作ってしまう危険性を言っています。 トップレベルの関数がObjectクラスのprivateメソッドだというのは確かにう まい仕組みだと思いますが、これを知っている人は、Ruby利用者の半数以下だ と思います。これは直感的に予想しづらい、危険な仕様ではないでしょうか? 何も知らないでトップレベルに def object_id; 0 end などと書けば、すべて のオブジェクトインスタンスのidが0になってしまうのです。そしてこれを書 くことは、プロジェクトに関わるどの人間にも可能なのです。
- 230 名前:50 mailto:sage [2008/09/24(水) 14:15:25 ]
- 最後に、自分の印象ですが、
C++ ... アクセス、改変してはいけないものには、ユーザがアクセスする方法 が決して存在しない。 Python, Java ... アクセス、改変してはいけないものは、ユーザが意図しな ければアクセス、改変されないが、意図すれば誰もが自由にアクセス、改変できる。 Ruby ... アクセス、改変してはいけないものを保護する方法が乏しく、ユー ザが意図せずにアクセス、改変してしまうことがある。 つまり、私が問題にしているのは、アクセス、改変が可能かどうかではなく、 それを意図していないのに誤ってアクセス、改変してしまう危険についてなの です。 この二者は、Rubyはフレキシブルな言語だという主張によって、しばしば混同 されがちだと思います。フレキシブルなのは結構ですが、自分の足を撃ちたく はないのです。 以上です。長々と失礼しました。
|

|