Ruby 初心者スレッド ..
[2ch|▼Menu]
369:デフォルトの名無しさん
08/05/02 00:03:40
"([^"]*?\\.)*.*?"
とかよく書くけど、どうかな

370:デフォルトの名無しさん
08/05/02 00:12:20
/"([^"\\]|\\.)+"/
こんな感じ?

371:デフォルトの名無しさん
08/05/02 00:28:07
>>369 >>370
どちらでもいけました、ありがとうございます!
なんでこれでいいのかまだ良くわからないので頑張って解読します

372:デフォルトの名無しさん
08/05/02 02:12:18
>>371
/"[^\\"]*(\\.[^\\"]*)*"/

こっちのほうが早いかな。

詳説 正規表現を読むのをオススメするよ

373:デフォルトの名無しさん
08/05/02 02:15:20
db等の外部リソースを使った時は
Rubyの終了時にメモリは自動的に解放されているのでしょうか?
明示的に解放しないとだめですか?

374:デフォルトの名無しさん
08/05/02 03:21:27
ここでいいのか不明なのですが…もし良ければおしえてください

やりたいことは
CarbonEmacs上にて起動したirbで
require 'rubygems'
を行いたい。です。

環境は
OSX10.4にてCarbonEmacs2008春版を使用しています。
rubyはMacPortsからインストールしたものを使用し、
rubygemsもMacPortsからインストールしました。

375:374
08/05/02 03:23:56
以下Terminal.appから実行した結果です
/Users/hoge% uname -a
Darwin hoge.local 8.11.1 Darwin Kernel Version 8.11.1: Wed Oct 10 18:23:28 PDT 2007; root:xnu-792.25.20~1/RELEASE_I386 i386 i386
/Users/hoge% ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i686-darwin8.11.1]
/Users/hoge% which ruby
/opt/local/bin/ruby
/Users/hoge% gem -v
1.1.1
/Users/hoge% which gem
/opt/local/bin/gem
/Users/hoge% echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
/Users/hoge% irb
irb(main):001:0> puts $:
/opt/local/lib/ruby/site_ruby/1.8
/opt/local/lib/ruby/site_ruby/1.8/i686-darwin8.11.1
/opt/local/lib/ruby/site_ruby
/opt/local/lib/ruby/vendor_ruby/1.8
/opt/local/lib/ruby/vendor_ruby/1.8/i686-darwin8.11.1
/opt/local/lib/ruby/vendor_ruby
/opt/local/lib/ruby/1.8
/opt/local/lib/ruby/1.8/i686-darwin8.11.1
.
=> nil
irb(main):002:0> require 'rubygems'
=> false
--------
rubygemsをrequireしてもエラーになりません。
(.irbrcにてrequire済なので再読み込みはしませんが)


376:374
08/05/02 03:25:02
対してCarbonEmacs上のrun-rubyにて起動したirbでの実行結果です
irb(main):001:0> puts $:
/usr/lib/ruby/site_ruby/1.8
/usr/lib/ruby/site_ruby/1.8/powerpc-darwin8.0
/usr/lib/ruby/site_ruby/1.8/universal-darwin8.0
/usr/lib/ruby/site_ruby
/usr/lib/ruby/1.8
/usr/lib/ruby/1.8/powerpc-darwin8.0
/usr/lib/ruby/1.8/universal-darwin8.0
.
nil
irb(main):002:0> requrie 'rubygems'
NoMethodError: undefined method `requrie' for main:Object
from (irb):2
--------
実行時のパスが異なるようです
どのようにしたら、この問題を解消できるでしょうか。

377:デフォルトの名無しさん
08/05/02 03:33:48
うん、そのtypoは俺もよくやるよ

378:374
08/05/02 03:52:32
>>377
まちがえました…ご指摘ありがとうございます
typoしなくても以下の通りです

irb(main):001:0>
No such file to load -- rubygems
from (irb):1:in `require'
from (irb):1


379:デフォルトの名無しさん
08/05/02 05:40:38
>>366
オブジェクトが参照なのと、引数の参照渡しを一緒にスンナ
何が「すべて参照渡しと言ってもいいくらい」だ

380:デフォルトの名無しさん
08/05/02 12:10:57
「参照の値渡し」とか「オブジェクト渡し」とか言われる形態だな

381:デフォルトの名無しさん
08/05/02 14:35:21
>>378
FinderからではなくTerminal上で open -a Emacs とする、
もしくは .emacsに irb の位置をフルパスで指定する、のどちらか。

後者なら、~/.emacsなどに
(setq ruby-program-name "/opt/local/bin/irb")
と書けばいいと思う。たぶん。


382:デフォルトの名無しさん
08/05/02 15:43:21
TechCrunch Japanese アーカイブ ? Twitter、Ruby on Railsを放棄か
URLリンク(b.hatena.ne.jp)

383:デフォルトの名無しさん
08/05/02 18:21:49
Emacs から info で Ruby のマニュアルを調べたいと考えているのですが、
現在、配布されているドキュメントは html 形式のみですよね

Ruby 1.4 の時に配布されていた info
ruby-texi-1.4.tar.gz
も、ネット上のどこにも落ちていない…

384:374
08/05/03 00:25:29
>>378
感謝です。おっしゃるとおりでした。
後者も有効です。

385:デフォルトの名無しさん
08/05/03 17:38:08
Rubyに抽象メソッドって無いの?

386:デフォルトの名無しさん
08/05/03 18:14:12
>>385
実行前に実装を強制させる仕組みはない。

定義してなければ呼んだときにmethod_missingが呼ばれる。
あとは
スーパークラスで抽象メソッドにしたいメソッドを定義して
raise NotImplementedError
するとか
inheritedフックを使って、継承した時点でチェックするとか。


387:デフォルトの名無しさん
08/05/03 18:31:01
>>386
Class#inheritedがよさげです
ありがとうござました

388:デフォルトの名無しさん
08/05/03 18:45:07
inheritedって class Hoge < Moge の中を実行する前に呼ばれてるような。


389:デフォルトの名無しさん
08/05/03 22:45:28
どうしてruby使ってるの?
pythonでなくてrubyを使う理由って何でしょう?
日本人が作ったのが誇らしいとかですか????

390:デフォルトの名無しさん
08/05/03 22:50:50
?が2個以上連続しているレスは釣り

391:デフォルトの名無しさん
08/05/03 23:15:38
Ruby 初心者スレッド Part 18
スレリンク(tech板:623番)

623 名前:デフォルトの名無しさん[sage] 投稿日:2008/03/24(月) 14:34:59
どうしてrubyなの?
実績も何も無い言語ですよね
pythonじゃなくてrubyを使う理由を一つでもいいから教えてください
開発者が日本人なのが誇らしいとか??????

392:デフォルトの名無しさん
08/05/03 23:18:17
>>389
どうして日本語使ってるの?
英語でなく日本語使う理由って何でしょう?
日本人が作ったのが誇らしいからですか????

393:デフォルトの名無しさん
08/05/04 01:11:30
イエス!ジャパニーズ!
ノー!フューチャー!

394:デフォルトの名無しさん
08/05/04 02:41:51
pythonはopen classじゃないとかいろいろめんどい

openclassはちゃんとしたアプリがつくれない、って言われてるけど
その通りだと思う。でもスクリプト(笑)言語でちゃんとしたアプリは
作らないから問題ない。

395:デフォルトの名無しさん
08/05/04 07:31:41
式と文や、メソッドと属性なんかが分かれてるのが気に入らない。

396:デフォルトの名無しさん
08/05/04 11:46:23
クラス内部でしか使わないサブルーチンのようなメソッド定義ってできますか?
たとえば、
class Hoge
def a(int1, int2)
return int1+int2*int2
end

def self.b(int)
p a(3, int)
end
end

Hoge.b(5)

の様には書けないんでしょうか。
classとselfとHogeを外すと正常に動作するんですが。

397:デフォルトの名無しさん
08/05/04 11:55:54
Pythonは「メソッド=メソッドオブジェクトが入った属性」な感じ?
メソッド側に属性を統一するのがRuby流で
属性側にメソッドを統一するのがPythonって思ってる。

俺の場合はlambdaの使い難さで使わないけどな。>>Python
文が書けないし、構文自体が無茶になるから
結局、一時的な関数内関数を書きまくることに。

398:デフォルトの名無しさん
08/05/04 11:58:13
aをselfしてprivateに指定するんでしょうか?


399:デフォルトの名無しさん
08/05/04 12:03:11
>>396
クラスメソッドとインスタンスメソッドと特異メソッドの勉強が必要

400:デフォルトの名無しさん
08/05/04 12:06:21
観念的なのは10冊くらい読んだのですが、結局、よくわからんのです。
実際の挙動というか、メモリ上の状態を記述しているような
説明がないので。
一応、インスタンスはコピーという感じで良いんでしょうか。
クラスと特異の実際の状態が掴めないのでよく解りません。


401:デフォルトの名無しさん
08/05/04 12:17:25
>>400
中田育男先生の
コンパイラの構成と最適化 お勧め

402:デフォルトの名無しさん
08/05/04 12:20:51
つprivate_class_method

403:デフォルトの名無しさん
08/05/04 12:34:20
>>396
self.bの定義の中ではselfは(挿入されている特異クラスはさておき)
Hogeというクラスそのものなわけだが、このとき(レシーバを
省略した)aの呼び出しでも、当然レシーバはself(=Hogeクラス)
になる。



404:デフォルトの名無しさん
08/05/04 13:04:58
>>400
この辺はじっそうによるからなあ。
コード書いてみて、実験したりして挙動を確かめる方が身につくよ。
本も大事だけどさ
コード書かないで理解は無理だべさ

405:デフォルトの名無しさん
08/05/04 13:18:59
>>396
まずどういう目的で、何をするためのスクリプトを書いてて詰まったのか
そこを書いた方が回答しやすい

学習目的なら、特異メソッド(Hoge.b)の理解は後回しで良い
それよりも、まずクラスとインスタンスの概念を理解することが先

406:デフォルトの名無しさん
08/05/04 14:10:12
>>405
目的はある処理をするクラスを作っていて、
クラス内部の処理を解りやすくするために、関数で処理を
まとめようとしていました。
色々と処理の分岐があるので、その方が解りやすく書けるからです。
新たにクラスを作るほどは大きくなく、下手に複数のクラスにして
データのやりとりで悩まなくていいし、1ファイルに納めるのに
都合が良いからです。

しかし、メソッドを定義してやると、クラス外からも呼び出せるし、
何か気持ち悪いので良い方法はないのかと思って聞いてみました。

そもそも、クラスの使い方が間違ってるような気もしていたので。

クラスから自身を呼んでインスタンス化するというのも、
自身の、呼び出した部分のコードがメモリに読まれるので、無駄な気がするし。


407:デフォルトの名無しさん
08/05/04 14:57:18
>>401
読んでみます。

>>402
やはりプライベートにして、アクセスを禁止してしまえば良いんでしょうか。

>>403
なるほど。再帰的に呼び出してるわけですよね。
クラスを呼ぶのでクラス指定しないとダメなんですかね。
クラス内だから関数的に呼べるのかなとも思ったんですが。

なんとなくあやふやな感じで理解してましたが。
selfを付けるのと付けないのでどういう違いが
発生するのかいまいちよくわからないのですよね。
selfを付けると、スクリプトの実行時に既に実行可能になってるのか
それとも、クラスが呼ばれたときに実行可能になるのかとか。


>>404
そうですか。あはは。
オブジェクト指向って奥が深いですね。

何か図形的なモデルがあると理解し易いんですが。
きっと複雑な状態遷移があると思うので、
言葉だけではすぐに理解するのは難しいのかなと。


408:デフォルトの名無しさん
08/05/04 15:55:51
説明が漠然としててよく分からんが
Hogeのインスタンスを作っており、なおかつ外部から呼ばれたくないメソッドなら
普通にプライベートメソッドでOK

あとself.bは、クラスメソッドの定義なので
クラスの外でもHoge.bと書けば呼べてしまう
詳しくはリファレンスマニュアル内、「クラスメソッド」の項を参照
URLリンク(www.ruby-lang.org)

409:デフォルトの名無しさん
08/05/04 20:13:44
>>407
すごい大雑把に説明すると、

クラスは鯛焼きプレートでインスタンスは鯛焼き。

def self.foo と定義したものはクラスメソッド。
def bar と定義したものはインスタンスメソッド。

インスタンスメソッドはインスタンスがないと (Hoge.new しないと) 実行できない。
クラスメソッドはクラスが定義されていれば実行できる。インスタンスは不要。

インスタンスメソッドからクラスメソッドを呼ぶのは可能。
def bar
self.class.foo
end

クラスメソッドからインスタンスメソッドを呼ぶには new しないとだめ。

あちこちに self が出てきて分からなくなってきたら p self として確認すればいいんじゃね。

410:デフォルトの名無しさん
08/05/05 15:02:25
PHPのGDに相当するRubyライブラリって何でしょうか?
円や直線など基本的な描画に加えて日本語の出力を行いたいです

URLリンク(d.hatena.ne.jp)
2年前の記事なのですが、現在は何か決定版があるのでしょうか?

411:デフォルトの名無しさん
08/05/05 15:10:40
GDが使いたいならRuby/GD

412:デフォルトの名無しさん
08/05/05 22:40:56
>>408
プライベートで良いんですね。
ありがとうございます。

>>409
なるほど。
selfで呼べば良い訳ですね。

インスタンスメソッドは関数の型宣言みたいなもので、
クラスメソッドは関数みたいな物ですね。

ありがとうございます。

413:デフォルトの名無しさん
08/05/05 23:02:25
あ。違いますね。

インスタンスメソッドは実行時に一つ起動しているオブジェクトで、
スコープの範囲で何時でもどこからでも呼べる。
クラスメソッドは宣言してからようやく使えるメソッドですね。

オブジェクトの起動タイミングが違うという理解でしょうか。


414:デフォルトの名無しさん
08/05/05 23:33:54
>>413
かなり致命的に理解を間違っているようなので
このスレで聞くよりも、身近なプログラマに直接質問してみることを薦める
もしくはGoogleで、オブジェクト指向について基礎から解説してるページを探すとか

415:デフォルトの名無しさん
08/05/05 23:43:24
>>413
1.私は万年筆が好きだ
2.私はこの万年筆が好きだ

この二つのうち、1は万年筆というもの、2は具体的な品を指してるだろ
オブジェクト指向では1がクラス 2がインスタンス
ここで.色関数を考えると、
(2の意味の万年筆).色 ってのは、具体的な品だからちゃんと色が決まってる
これがインスタンスメソッド
(1の意味の万年筆).色 だと、色が決まらないから、クラスに対してインスタンスメソッドは
呼び出せない

同様に、そのものの種類を返す関数 .kind があったとする
このときは、(1の意味の万年筆).kind で、"万年筆"って文字が返ってくるし
(2の意味の万年筆).kind でも、同じように"万年筆"って返ってくる
これがクラスメソッド

416:デフォルトの名無しさん
08/05/06 01:09:00
>>415

> (2の意味の万年筆).kind でも、同じように"万年筆"って返ってくる
> これがクラスメソッド

これは違うんじゃ...

417:デフォルトの名無しさん
08/05/06 01:11:19
比喩でクラスとメソッドの関係を説明しようとするのがそもそも間違いだな

418:デフォルトの名無しさん
08/05/06 12:06:22
つまり、既に初期化されている(スクリプトを読んだ時点で)のがクラスメソッドで、
インスタンスメソッドはnewなどして、その時点にならないと
初期化されないメソッドという事じゃないんですか?


419:デフォルトの名無しさん
08/05/06 12:35:38
Rubyではクラスもオブジェクト。
Rubyではオブジェクト毎にメソッドを定義できる。
クラスオブジェクト(Classクラスのインスタンス)にメソッドを定義したのがクラスメソッド。
そのクラスのインスタンスとは直接は関係しないから、クラスメソッドを定義しても、インスタンスメソッドには影響しない。


420:デフォルトの名無しさん
08/05/06 12:47:26
irb> class C ;def C.clsmtd; p self.object_id; end ;end
irb> C.clsmtd
537963320
irb> p C.object_id
537963320
irb> p C.new.object_id
537887540


421:デフォルトの名無しさん
08/05/06 13:09:22
>>418
どうもインスタンスメソッドに関して、誤解があるように思えるな

foo_instance = Foo.new # オブジェクトの生成
foo_instance.a(1, 2) # foo_instanceのメソッドaを実行し、結果を返す
a(1, 2) # エラー

このスクリプトでなぜエラーが出るのかは理解できる?

422:デフォルトの名無しさん
08/05/06 14:41:55
では、クラスは何処にあるんですかね?
インスタンス化されたクラスは?
場所の定義は無いんですか?


423:デフォルトの名無しさん
08/05/06 15:13:18
Rubyがどうかは知らんが、よく用いられるモデルで説明してみる
class A
@a
@b
@c
end

instance = A.new は、C言語でいえば、void *instance = malloc(3);
この3はAに変数が三つあることに対応してて、このケースならinstance[0] が @a ,instance[2] は@cに対応してる

例えばここにインスタンスメソッドとして
def set_a(new_a)
@a = new_a
end
があったとする。
instance.set_a("test")のように呼び出すと、内部ではset_a(instance,"test")と変換される
実際に呼ばれる関数は、C言語で書けば
void set_a(instance , new_a)
{
instance[0] = new_a;
}

こんな風に、@aなりを使ってると、listのアドレスを確定させなきゃならんから
具体的なインスタンスに対してしか使えない

クラスメソッドは、Cでいうところのグローバル変数のみを使ってる関数で
イメージ的には
int num = 10;
int class_num() { return num; }
に対応する。
この場合は変数instanceをメソッド内で使ってないので、A.class_method でもいいし instance.class_method
でもおk

424:デフォルトの名無しさん
08/05/06 15:16:52
訂正
>line23 listのアドレスを→instanceのアドレスを
>line29 int class_num() ⇒ int class_method()

425:デフォルトの名無しさん
08/05/06 18:26:27
>>422
定義されたクラスは、定数として存在している

class Foo
 (ここにメソッドとかの定義)
end

print Foo.name # "Foo"が出力される
print Foo.class.name # "Class"が出力される

426:デフォルトの名無しさん
08/05/06 18:46:53
Rubyではクラスもインスタンスもオブジェクトで、実体はオブジェクトスペースに存在してるよ。
それらに名前をつけたのが変数や定数。
変数や定数は実体がオブジェクトスペース内のどこにあるのかの情報を持ってる。

427:デフォルトの名無しさん
08/05/06 19:45:36
『プログラミングRuby』にもそんな感じの章があるよ
構造体、メモリ、ポインタで説明してほしい人は
読んでみると何かしら得るものがあると思うんだ

URLリンク(www.ruby-doc.org)

ここの図が良いんだけどFigure not availableになってるのが残念

428:デフォルトの名無しさん
08/05/06 22:05:52
rubyでオブジェクト指向理解しようなんて無理でしょ
遠回りだけどjavaをしっかり勉強した方がいいじゃないの?

429:デフォルトの名無しさん
08/05/06 22:10:44
Javaのオブジェクト指向はオブジェクト指向なJavaでしかないと思うんだ

430:デフォルトの名無しさん
08/05/06 23:32:46
オブジェクト指向を理解するという文脈でJavaを第一に持ってくる
ってことは理解してないってことだよな。


431:デフォルトの名無しさん
08/05/07 00:09:23
ていうか
Rubyのクラスとインスタンスとメソッドを理解したいのか
オブジェクト指向プログラミングのクラスやインスタンスを理解したいのか
どっちかにして欲しい
後者ならスレ違いだ

432:デフォルトの名無しさん
08/05/07 00:55:34
>>430
オブジェクト指向を学ぶ上でJavaより勉強する価値のある言語って何?
批判するだけで自分の考えは何も無いの?

433:デフォルトの名無しさん
08/05/07 00:57:09
Smalltalkあたりじゃないかな。

434:デフォルトの名無しさん
08/05/07 00:57:26
smalltalkじゃね?

435:デフォルトの名無しさん
08/05/07 00:57:55
有名なのはSmalltalkかな

436:デフォルトの名無しさん
08/05/07 00:59:01
Smalltalkだろ。


437:デフォルトの名無しさん
08/05/07 00:59:26
Smalltalkだな

438:デフォルトの名無しさん
08/05/07 01:00:25
smalltalkがjavaより勝ってるものって何?

439:デフォルトの名無しさん
08/05/07 01:05:34
純粋さ

440:デフォルトの名無しさん
08/05/07 01:06:56
おっと無能の数はjavaには敵いませんな

441:デフォルトの名無しさん
08/05/07 01:06:57
2chは知ったかばかり

442:デフォルトの名無しさん
08/05/07 01:11:16
オブジェクト指向の学習用として考えるなら、だいたいどれも大差ない
C++でもRubyでもPythonでもJavaでも
(smalltalkは使ったことないから知らないが)

443:デフォルトの名無しさん
08/05/07 01:11:46
>>438
というかJavaは、意図的に完全なオブジェクト指向にしてない
実用面ではどうかってなるとまた別の話になるんだが、
少なくともオブジェクト指向って観点から見ると美しくない

逆にSmalltalkは文字通り全部がオブジェクト
制御構造すらオブジェクトのメッセージ扱いになる
RubyもSmalltalkからメタクラスとかの概念をもらってるはず

444:デフォルトの名無しさん
08/05/07 01:12:09
smalltalkがjavaより勝ってるものって何ですか〜?

445:デフォルトの名無しさん
08/05/07 01:15:03
じゃあどうしてデザインパターンの書籍の多く(専門書も含めて)はJavaを元に書かれてるんだ?

446:デフォルトの名無しさん
08/05/07 01:16:28
JavaはOO貫徹をあきらめてAlgol系並の実用性を手に入れたようなもんだからな。


447:デフォルトの名無しさん
08/05/07 01:17:39
>>445
最初のGoFはSmalltalkだったぞ。
のちにJava優勢になったのは普及度の違い。


448:デフォルトの名無しさん
08/05/07 01:18:33
>>445
オブジェクト指向をよりよく体現してる=言語として人気がある とはならないだろ
どっちにしろJavaで上手い設計してる奴はSmalltalkから来てるよ

449:デフォルトの名無しさん
08/05/07 01:20:16
Javaスレッドで前にも見たような流れだな
少なくとも実用的な言語を元に学ぶのが良し、という考え方の元ではJavaだろう
Smalltalkでオブジェクト指向を学べってのは大げさ過ぎる

450:デフォルトの名無しさん
08/05/07 01:20:46
>>445
実用を兼ねてるんだろう
Java使ってる人は多いだろうし、JavaはC++やC#とかとも文法が似てる

・・・・・と言いつつ、GoFのデザパタ本はSmalltalkも使ってたような

451:デフォルトの名無しさん
08/05/07 01:21:40
smalltalkってそんなに完成された言語だったの??

452:デフォルトの名無しさん
08/05/07 01:22:22
つかなんでいきなりデザインパターンみたいな応用が出てくるんだ
もともとの問題を摩り替えないほうがよい

453:デフォルトの名無しさん
08/05/07 01:25:46
Javaで学べっていっても初心者的には構文覚えて精一杯じゃないか
自分でいい設計してるソース探してきて読むとこまで勉強するよりは
Smalltalkのライブラリでも読んでりゃいいとは思う

454:デフォルトの名無しさん
08/05/07 01:26:16
GoF本は最初のバージョンはSmalltalkとC++でサンプルが書かれてる。
もともとSmalltalkで得られた知見だしな。

新しい版はJavaコードも使ってる。


455:デフォルトの名無しさん
08/05/07 01:27:35
>もともとの問題を摩り替えないほうがよい
Smalltalkに噛み付く奴はスレ逸らしだろうな

456:デフォルトの名無しさん
08/05/07 01:27:46
OOを覚えるためにはやはりEiffelしかないだろ

457:デフォルトの名無しさん
08/05/07 02:00:12
Eiffelもやっとくべきだと思いつつまだ入門もしてないだよなー。



458:デフォルトの名無しさん
08/05/07 06:09:55
なんというか>>400読んで、
ちょっと前に本スレにいた京大君を思い出すんだよな(本人だと言うわけではなく)。
んで、実際のところ質問者はCとかでは、コードをすらすら書けるんだが、
「オブジェクト指向」(または、Rubyのモデル)の概念でつまづいてコードが書けないのか。
それとも計算機の理論を一通り座学して、これからコードを書くに当たって、
(Cではなく)楽ちんそうなオブジェクト指向スクリプト言語を選んだのか。
前者と後者で、かなりすべき対応が変わると思うんだが。

459:デフォルトの名無しさん
08/05/07 07:26:35
Javaは非オブジェクトな型をあえて残した言語だからな
OOPLとしては、普及してるが純粋でない。

460:デフォルトの名無しさん
08/05/07 10:24:48
Smalltalk が Java や Ruby より圧倒的に勝っているところをひとつ挙げるとすれば
リフレクションとかに代表されるイントロスペクション機能でしょうね。
分かりやすいところでは、IDE やデバッガなどの機能充実度や、それらの
作りこみやすさに出てくる特徴です。もとは LISP 譲りの機能ですが、Smalltalk での
充実度は LISP をも凌駕しています。これは Smalltalk 処理系が Smalltalk 自身で
記述されている(記述可能…とかではなく、実際にそれで運用されている)ことに
由来します。

Ruby 実装では Rubinius や今度の RailsConf でデモされる予定の MagLev が、
現在の制約を克服して Smalltalk に近づこうと努めているみたいです。
これらは Smalltalk と同じく、Ruby 処理系をできるだけ Ruby で記述しようとする
ものたちです。

あと余談ですが Java は、Ruby や Smalltalk などの「メッセージングのOO」という
パラダイムに則していないだけで、C++ や Eiffel などの「ユーザー定義型のOO」と
いうパラダイム的にはかなり純粋なほうですよ。念のため、後者は“ユーザー定義型”を
クラスで実現しようとする考え方で、メッセージのやりとりとかとは無関係です。

裏を返せば、Ruby や Smalltalk は、Java の土俵である「ユーザー定義型のOO」的な
切り口で見たときに、足りないところが多々あるということになり、実際にそうなっています。

461:デフォルトの名無しさん
08/05/07 10:54:06
Smalltalk まで読んだ

>>458
ぶちゃけた話、オブジェクト指向を完全理解しなくてもRubyのクラスやメソッドは使えるよな
継承や委譲もなんとかなると思う

462:デフォルトの名無しさん
08/05/07 12:36:37
>>458
オブジェクト指向が分からないのか、
Rubyでのオブジェクト指向を実現する技法が分からないのかでも話が変わってくるのでは
オブジェクト指向って思考法そのものは言語に依存しないと言われているし

463:デフォルトの名無しさん
08/05/07 13:02:54
関数は (関数 引数 引数) 見たいな記述でもキモいって言われないのに
オブジェクトは メソッド(オブジェクト 引数 引数) だとキモいって言われるのはどうして?

464:デフォルトの名無しさん
08/05/07 13:16:56
どのくらい言われてるかはわからないけど、あるとしたら、多重定義の関係じゃない?
「呼び出し先の決定権を持っている奴」が、端っこではない場所に居て、やや目立ちにくい
・・・という、ビジュアル的な違和感ではないかと思う。

結局のところ、慣れればそれまでって気がするけどね。

465:デフォルトの名無しさん
08/05/07 13:18:40
第1引数を太字でシンタックスハイライトすれば解決
いやわりとマジ

466:デフォルトの名無しさん
08/05/07 15:18:42
すごく初歩的な質問なんですが、

puts "あなたの名前は?"

name = gets.chomp

puts "あなたの名前は#{name}です"

これを実行しても

dan(←入力数値)
あなたの名前は?
あなたの名前はdanです

となって文字列の出力するタイミングが意図したものにならないんです^^;
どうすればいいのでしょうか?
ちなみに開発環境はRDEを使っています。

467:デフォルトの名無しさん
08/05/07 15:27:17
$stdout.sync = true

puts "あなたの名前は?"
name = gets.chomp
puts "あなたの名前は#{name}です"


468:デフォルトの名無しさん
08/05/07 15:44:27
smalltalkerって名前の割によく喋るね

469:デフォルトの名無しさん
08/05/07 15:47:15
>>467さんありがとう!できました^^

470:デフォルトの名無しさん
08/05/07 20:38:45
>>464
関数に見えるというのが。フラットな名前空間にとっちらかる感じで。
名前空間を導入すると今度は対象がわかってるのに名前空間を書かないといけないのがあれで。
……まあ結局は気分なんだが。CLOS がやっていけてるんだからやっていけるんだろう。

471:デフォルトの名無しさん
08/05/07 21:55:06
>>463
> オブジェクトは メソッド(オブジェクト 引数 引数) だとキモいって言われるのはどうして?

C言語でオブジェクト指向で書くとそんな感じだから、別にキモいとは思わない。

472:デフォルトの名無しさん
08/05/07 21:56:37
>>463
メソッドチェーンができないから

473:デフォルトの名無しさん
08/05/07 22:51:46
smalltalkとオブジェクト指向の話面白そうだなぁ
誰かスレッド作ってくれんかなぁ

474:デフォルトの名無しさん
08/05/09 09:36:58
cgi で画像を並べたいんだけどどんなふうに書けばいいの?
つまりはこういうソース吐きたいんだけど

<div>1 2 3 4 5</div>
<div>6 7 8 9 10</div>

or

1 2 3 4 5<br>
6 7 8 9 10<br>

or

<div>1 6</div>
<div>2 7</div>
<div>3 8</div>
<div>4 9</div>
<div>5 10</div>

あとオプション1つでテーブルタグも吐けたりするとうれしいな

475:デフォルトの名無しさん
08/05/09 11:06:53
まあとりあえずは自力で配列内容を表示させる勉強しろ
手を抜くより先に覚えることはたくさんある

「自分で作れるけどもうめんどいから他のことに時間かけるために手を抜く」
というのが正しいプログラミング

メソッドを作ることはできるかな
できないのなら作り方おぼえるといい

476:デフォルトの名無しさん
08/05/09 11:22:11
引っかかる点は何だろう
「カウント○ごとに何かをする」という専用の処理が何かあると思うことかな
ありそうだけど無いよね
each_with_index で回して index + 1 の 剰余5 が 0 のとき何かする、という記述しかない?

477:デフォルトの名無しさん
08/05/09 13:13:18
each_sliceともちょっと違う?


478:デフォルトの名無しさん
08/05/09 18:07:17
def group_by
  hash = {}
  each do |item|
    key = yield(item)
    (hash[key] ||= []) << item
  end
  hash.collect {|key, arr| arr }
end
こんなメソッドって標準になかったっけ?

479:デフォルトの名無しさん
08/05/09 20:01:55
Enumerable#group_byは1.9と1.8.7だけかな?
もっとも、Hashのままで返すけど。
というか>>478のだと、どのグループかわからなくなるんじゃないか?

480:デフォルトの名無しさん
08/05/09 20:03:15
> hash.collect {|key, arr| arr }
hash.values


481:デフォルトの名無しさん
08/05/09 21:16:18
>>479,480
さんくす
そうだよな、Hash#values があるじゃん
なんて間抜けなんだ

482:デフォルトの名無しさん
08/05/10 14:38:43
rubyを最近習い始めたのですが、
1からキーボードで入力した数までの和をもとめる
プログラムの作り方がいまいちわからないのですが
教えていただけませんでしょうか?


483:デフォルトの名無しさん
08/05/10 14:40:53
すいません、スレ違いでした。
スルーしてください

484:デフォルトの名無しさん
08/05/10 14:54:50
>>482
def sum(n);n*(n+1)/2;end

485:デフォルトの名無しさん
08/05/10 15:58:44
>>484 が良い解だと思うけど、Ruby的には
def sum(n); (1..n).inject{|a,b|a+b}; end
という風にできることを知っていると後で役に立つかも。
立たないかも。


486:デフォルトの名無しさん
08/05/10 18:37:59
似たような演算を多数作るなら、以下のように。
ただし>485の5倍程度の時間がかかる。(毎回evalのため)

def fn_maker(fn,lst);lst.inject{|r,i|eval("r"+fn+"i")};end

def summerise(x);fn_maker("+",x);end
def multiple(x);fn_maker("*",x);end
def divide(x);fn_maker("/",x);end
def subtract(x);fn_maker("-",x);end

def sum_1_to_n(n);summerise(1..n);end

p sum_1_to_n(10)

a=[3.0,5,2]
p summerise(a)
p multiple(a)
p divide(a)
p subtract(a)

487:デフォルトの名無しさん
08/05/10 18:54:07
send使えよ

488:デフォルトの名無しさん
08/05/10 19:15:48
つか初心者スレっぽいな

489:デフォルトの名無しさん
08/05/10 19:43:59
>>482に対して>>484-486を持ち込むあたりいかにも初心者だな
微笑ましい…のか?

490:デフォルトの名無しさん
08/05/10 19:50:19
入力をどう扱うかも示さないと回答として片手落ちだしな

491:デフォルトの名無しさん
08/05/10 20:05:25
というか初心者スレとしては普通に回答するか解説つきで説明すべきなんだがね
自分の知識の結果をただ披露して悦に入ってどうするよ

492:デフォルトの名無しさん
08/05/10 20:07:48
YARVで、あるベンチマークが
* 「100%速くなった」というのは、時間が半分になったということ?
* 「200%速くなった」というのは、時間が1/3になったということ?
* 「25%速くなった」というのは、時間が20%減ったということ? ( 1 / (1-0.20) = 1.25 )
教えてえらいひと。


493:デフォルトの名無しさん
08/05/10 20:17:30
自己嫌悪はそこまでにして、次w

494:デフォルトの名無しさん
08/05/10 20:23:19
>>482

数値から数値までを足すときはガウスが少年時代に行った
計算方法を利用してプログラムを作った記憶が有るなあ
1~aを計算するとして
aが偶数なら(1+a)*(a/2)
aが奇数なら最初にa+1に対して上と同じ計算をして最後にa+1を引くように
すれば簡単に計算できた記憶が有る
例えば
a=10(偶数)ならば
(1+10)*(10/2)
a=11 (奇数)ならば
i=a+1
(1+i)*(i/2)-i
と場合分けすると式が短くて簡単


495:デフォルトの名無しさん
08/05/10 20:44:11
>>494
なるほどね。
他の方法で暗算だとa,a+1のうち、偶数になる方を2で割ってから掛け合わせたりする。
例:
1~100の場合、100*101/2 = (100/2)*101
1~123の場合、123*124/2 = (124/2)*123

以上は経験的に「奇数の1/2 * 偶数」よりも「偶数の2/1 * 奇数」の方が
暗算しやすいからだけど、プログラムにも活かせると面白いかも。
例えば、少量データで早い実装、大量データで早い実装のように複数の関数を
用意しておいて、稼働状況に応じて使う関数を自動的に切り替える。

496:デフォルトの名無しさん
08/05/11 11:38:08
str0 = "bar"
の時、マニュアルによると
p str0[3, 1] #=> nil
らしいですが、自分の環境(1.8.6 mswin32)では""が返ってきます
何が悪いのでしょうか

497:デフォルトの名無しさん
08/05/11 11:54:30
'bar'[2, 1] #=> 'r'
'bar'[3, 1] #=> ''
'bar'[4, 1] #=> nil

本当だ。なんかバグっぽい挙動だな

498:デフォルトの名無しさん
08/05/11 16:47:40
fw(findwordの略)というプログラムを作ろうとしています。

fw -fp '/usr/include/**/*.h' '~/**/*.h' -wp 'define\s+\w+' -pp '%1 %2 %3'という感じで
-fp の後ろに複数のファイルパターンを
-wp の後ろに複数の単語パターンを
-pp の後ろに表示用のフォーマットを指定できるようにしたいのですが、optparseをうまく操れません

上記の実行例だと
["/usr/include/**/*.h", "~/**/*.h"]
["define\\s+\\w+"]
と表示されて欲しいのですが、実際は
["/usr/include/**/*.h", "~/**/*.h"]
["define\\s+\\w+", "%1 %2 %3"]
と表示されてしまいます

printpattern = "%1:%2:%3" # filename:linnum:line
print = proc {|filename,linenum,line|
 STDOUT << (printpattern %filename %linenum %line) << "\n"
}
filepatterns = []
wordpatterns = []
ARGV.options {|opt|
 dest = wordpatterns
 opt.on('-fp' , '--filepattern')       { dest = filepatterns  }
 opt.on('-wp' , '--wordpattern')       { dest = wordpatterns  }
 opt.on('-pp S' , '--printpattern S' , String) {|s| printpattern = s  }
 opt.order! {|s| dest << s }
 p filepatterns
 p wordpatterns
}


499:デフォルトの名無しさん
08/05/11 18:00:07
正規表現に完全にはマッチしてないのだけど、あと数文字付け加えてくれたら
完全にマッチするみたいのを検出したいのですが、いい方法はないでしょうか?

500:デフォルトの名無しさん
08/05/11 18:05:01
>>498
ショートオプションはアルファベット一文字のみ
あと質問にはないが、(printpattern %filename %linenum %line) はRubyでは動かない

501:デフォルトの名無しさん
08/05/11 18:31:50
>>499
そのあと数文字を付け加えてない状態を正規表現で表せばいいんじゃない?
もっと具体的にやりたいことの例を出してみれ
解決策が出てくるかもしれないよ

502:498
08/05/11 19:53:16
>>500
ありがとうございます。 一文字にしたらうまくいきました。
フォーマットは"%1$s:%2$s:%3$s" %[filename, linenum, line]でいけました

>>501
499も実は私なのですが、498のプログラムのwordpatternに複数行にも
マッチする正規表現を指定できるようにして、それでいて表示にファイル名と行番号も表示できるようにしたいです
re = /なんか正規表現/
linenum=1
curtext=nil
IO.foreach(path) {|line|
 if nil==curtext
  curtext=line
 else
  curtext+="\n"+line
 end

 if 途中までまっち
  linenum+=1
  next
 else if 完全まっち
  print.call(path,linenum,curtext)
 else
  curtext=nil
 end
 linenum+=1
}

503:498
08/05/12 00:17:51
できたー とりあえず動いてるっぽいです
#!/usr/bin/env ruby
require 'optparse'
if $0 == __FILE__
 printpattern = "%1$s:%2$s:%3$s" # filename:linnum:line
 print = proc { |filename,linenum,line| STDOUT << (printpattern %[filename, linenum, line]) << "\n" }
 filepatterns = wordpatterns = []
 ARGV.options { |opt|
  dest = wordpatterns
  opt.on('-f'  , '--filepattern')  { dest = filepatterns }
  opt.on('-w'  , '--wordpattern')  { dest = wordpatterns }
  opt.on('-p S' , '--printpattern S') {|s| printpattern = s }
  opt.order! { |v|
   if wordpatterns.__id__ == dest.__id__ v = eval(v) end; dest << v
  }
 }
 wordpatterns << /\n/
 re = Regexp.union(*wordpatterns)
 text = ''
 filepatterns.each { |filepattern|
  Dir.glob(filepattern) {|filepath|
   next if !File.file?(filepath)
   linenum = 1
   text = IO.read(filepath)
   text.scan(re) {|m|
    linenum += $~[0].count("\n")
    print.call(filepath, linenum, m) if "\n" != $~[-1]
   }
  }
 }
end

504:デフォルトの名無しさん
08/05/12 02:46:36
>>503
>  filepatterns = wordpatterns = []
>    if wordpatterns.__id__ == dest.__id__ v = eval(v) end; dest << v

filepatterns も wordpatterns も同じだろ、これ。


505:498
08/05/12 07:55:20
filepatterns = []; wordpatterns = [] にしますた

506:デフォルトの名無しさん
08/05/12 19:23:13
perlの基礎的なスクリプトをたくさん公開しているサイト(KENT WEBみたいな)はいくつかありますが、
rubyのこのようなサイトはないのでしょうか?

今までperlで改造を行っていたのですが、
研究室でrubyを使うことになったので勉強ついでに乗り換えようと思ったんですが…

507:デフォルトの名無しさん
08/05/12 19:24:38
python使った方がいいと思うよ。

508:デフォルトの名無しさん
08/05/12 19:45:57
…そーいえば無いな
あれは日本のperl(というかCGI)の黎明期に乗ったサイトだから仕方ないか
PHPにも無いわけだし問題ないかもしれん

>>506
研究室で必要な部分だけ習うだけにしておいたほうがいいぞ

509:デフォルトの名無しさん
08/05/12 19:48:34
>>506
今まで見た事はないな
そもそも「rubyでCGI」自体がかなりマイナーだから
CGI前提のスクリプトも数えるほどしかない

Web上の解説記事や書籍を頼りに、自力で何とかするのがいいと思うよ
もしくはCGIスクリプトに関してはperlに頼るか

510:デフォルトの名無しさん
08/05/12 20:36:12
ありがとうございます。やはり無いですかー…
CGIに関しては今まで通りperlで作ることにします。

511:デフォルトの名無しさん
08/05/12 20:43:02
何かの言語でCGIが作れるようになったらあとは言語問わずに作れるはずだけどね。


512:デフォルトの名無しさん
08/05/12 21:03:26
CGI作るなんてネットワーク技術者か?それともHTTPD製作者かよ?

>>506
本ならたくさんあるよ。Ruby CGIでググれ。
ただ、ほとんどPerlと一緒だから面白みはないけどね。
動いてるruby-webアプリなら、tdiaryとかbitclustのソース読むとかしてみれ。

513:デフォルトの名無しさん
08/05/12 21:55:35
>>512
tdiaryのソースはおすすめせん。bitclustなら許す。

514:デフォルトの名無しさん
08/05/12 22:22:38
鯖管としてはRuby CGIは止めて欲しい。

515:デフォルトの名無しさん
08/05/12 22:34:28
>>514
何故に

516:デフォルトの名無しさん
08/05/12 22:34:34
まあRubyに限った話じゃないだろうけどね
自作CGIなんて動かして欲しくはないわな

517:デフォルトの名無しさん
08/05/12 23:05:41
日本ならtd/hiki動かしてる人はたくさんいるだろう。まあ、railsでtypoをとか
言われたら断りたくなる気持ちはおいらも分かるけど。
その辺はruby1.9/rails3あたりで解決してるといいなあ。

518:デフォルトの名無しさん
08/05/12 23:47:59
class Object
 def tac
  yield(self)
 end
end

[[1,2],%w[sys cpu]].tac{|src|src[0].zip(src[1])}.tac{|src|Hash[*src.flatten]}
=> {1=>"sys", 2=>"cpu"}

このtacに相当する標準のメソッドってありますか?教えてください

519:デフォルトの名無しさん
08/05/13 00:14:59
同じではないがtap
Ruby1.9のメソッドだったがプレビュー版1.8.7にも入ってる
おそらく次の安定版Rubyでは標準で使えるだろう

520:デフォルトの名無しさん
08/05/13 00:23:45
配列の配列をハッシュに変換する方法、という意味かもしれない

そういえば、なんで標準で「一気にハッシュに変換・登録」ができないの?

521:518
08/05/13 00:30:14
>>519
一時変数を使わずにlispみたいにゴリゴリ書ける方法は無いかなぁと思って
tapを参考に作ったんですが…
標準には無いってことですか

522:デフォルトの名無しさん
08/05/13 00:35:47
>>520
キーにまつわる標準的な例外考えるのめんどくさいんだと思う
[[1,'one'], [1,'いち']] が {1 => 'いち'} になったらやっぱ例外出すべきだよな、とか

523:デフォルトの名無しさん
08/05/13 01:05:51
Hash[*[[1,2],%w[sys cpu]].transpose.flatten]

524:デフォルトの名無しさん
08/05/13 01:27:19
WxRuby2についての質問です。

RubyGemsを使って、wxruby-1.9.6-x86-mswin32-60をインストールしたのですが
付属のサンプルを実行しようとすると、wxruby2.soの読み込みで
「lib/wxruby2.so: 126: 指定されたモジュールが見つかりません。」
と言われてしまいます。何か他に、インストールが必要なものがあるのでしょうか?
(WxWidget2.8.7をインストールしてみても、やはり同じエラーが出ました)

OS: Windows XP
ruby: 1.8.6 [i386-mswin32]

525:デフォルトの名無しさん
08/05/13 10:32:09
>>524
> (WxWidget2.8.7をインストールしてみても、やはり同じエラーが出ました)
PATH通してある?

526:デフォルトの名無しさん
08/05/13 12:34:47
1.9.7が出てるようだから試してみるといいかもしれない
ただVC8でコンパイルされてるからまずそうな気もする
wxruby-1.9.6-x86-mingw32.gemをダウンロードして入れる方が楽かも

527:524
08/05/13 17:54:03
mingw版をインストールしたら普通に起動できました(WxWidget無しで)。
助言ありがとうございました!

ちなみに1.9.7は、次のようなエラーでgemのインストールすらできませんでした。

rake (RUBYLIB等の位置を指定するオプション) extension
rake aborted!
Don't know how to build task 'extension'

528:デフォルトの名無しさん
08/05/13 18:27:40
Rubyの初心者にたいして「これは読むべき」だと思うコードを教えてください。
URLリンク(q.hatena.ne.jp)

定番回答らしい回答が即っと無いのが現状をよく表しておるのう

529:デフォルトの名無しさん
08/05/13 18:56:41
たった6時間前に登録された質問じゃん。
青木さんのコードとか、Pickaxeのコードとかいくらでもあるでしょ。

530:デフォルトの名無しさん
08/05/13 20:04:07
真面目に答えようとすると難しそうだな
それにしてもRubyに限らず定番回答なんて存在するのか?
知ったか的なのならいくらでも挙がりそうだが

531:デフォルトの名無しさん
08/05/13 20:19:10
net/pop.rbとかはどうだろう。
POPはプロトコル自体も小さいし。

初心者に800行近いのは無理か・・・

mailread.rbはたしかに短いけど、initializeにいっぱい詰めるのは好きじゃないんだよなあ
完全に漏れの好みの問題なんだけどさ。

532:デフォルトの名無しさん
08/05/13 20:39:39
ここにぁるRubyのコードゎ
とっても勉強になるょ><
初心者なら全部読んでこんなコードを書くくせをつけたほうがいいょ><

URLリンク(golf.shinh.org)

533:デフォルトの名無しさん
08/05/13 21:49:26
コードなんて動けばいいんだよ
こういうコードを書くべき、なんてどんだけ
上から目線なんだよ

534:デフォルトの名無しさん
08/05/13 21:50:56
まったくプログラムできないんだけど、Rubyを始めてみようかと思ってる。
理由は名前がかっこいいのと日本の方が作ったということで分かりやすいのかなぁと思ったことから。
ただ理由がこんな感じだから、勉強しててもただやり方を覚えるだけの作業のような気がしてならない。
何か作りたい物があれば、そのために勉強していけると思うんだが。

みなさんがRuby(プログラム)を始めたきっかけってなんですか?

535:デフォルトの名無しさん
08/05/13 21:51:00
今から餌撒きかー
頑張れよー

536:デフォルトの名無しさん
08/05/13 21:52:51
Rubyを止めたきっかけはPythonでいいと思ったから。

537:デフォルトの名無しさん
08/05/13 22:01:35
>>534
CGI書くときにPerlが嫌で、他の言語を探してたらRubyに当たった

とりあえず、書籍読むなり誰かが書いたコード読むなりして
自分に合いそうだと思ったら始めてみたらいい
目的が欲しいなら、CGIスクリプトか自分用のファイル処理スクリプトでも書いとけ
ゲームが作りたいならそれを目標にしても良い

538:デフォルトの名無しさん
08/05/13 22:06:35
>>534
プログラムを始めたきっかけ: 情報工学部に入ったから
Rubyを始めたきっかけ: Perlになんとなく嫌気がさしてたときに、研究室の先生にRubyをすすめられたから


539:デフォルトの名無しさん
08/05/13 23:27:38
Rubyを始めたきっかけ: 昔いた会社の社長が気まぐれでMatz本買ってきてRubyおもろいと言いだした
Rubyを使うようになったきっかけ: 256本邪道編読んでOfficeだのをいぢりだしてから

540:デフォルトの名無しさん
08/05/14 00:22:41
>>519
>>518 を見てそれ tap じゃんて思ったんだけど、
tap って self を返すんだっけか?

541:デフォルトの名無しさん
08/05/14 01:08:17
selfを返す。
途中に挟んで(ワイヤタップして)、何事もなかったようにメソッドチェーンが進む。


542:デフォルトの名無しさん
08/05/14 01:55:51
>>534
Perlでの「もっと普通にプログラムかかせろ!」という不満から。
ベターPerlから入ったが、今はPerlとは全然違うものと感じている

543:デフォルトの名無しさん
08/05/14 12:33:33
Rubyだけしか知らないつまらない人間にならないために必要な言語ってなんですかね

544:デフォルトの名無しさん
08/05/14 12:41:12
>>543
Python
Scheme(かGauche、なんでもいいからLisp処理系)
Haskell

この3つ
あと基礎素養としてのCな

Perl5とPHP5は身近に使う機会があるならそっち憶えてもいいかと
JavaやVisualCやC++や.net関連は仕事で必要なら勉強させられるし
仕事で使わないのなら自分から憶える必要は全くないのでスルーでOK

日本語とか英語とかそういう自然言語のレスがあると予想

545:デフォルトの名無しさん
08/05/14 12:52:41
SchemeというかGaucheは今ちょっと勉強してる
let を元にして let* と fluid-let と letrec というのを作った奴はどうかしてる
もう少しわかりやすい説明的名称にするか全く新しい名前を付けるべき

546:デフォルトの名無しさん
08/05/14 13:19:45
>>543
Rubyをきちんと学んでればそうそう変なことにはならないはず
再帰とか継承とか本当にきちんと理解した?
Rubyで憶えられないのに他の言語に手を出したって無駄だぞ?

547:デフォルトの名無しさん
08/05/14 14:02:07
C系記法の言語を1個覚えると応用が利く。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4699日前に更新/261 KB
担当:undef