Ruby 初心者スレッド Part 55
■ このスレッドは過去ログ倉庫に格納されています
0178デフォルトの名無しさん
2014/07/30(水) 23:43:44.39ID:ucnjA6/+Ruby => CLOS や Smalltalk と同様な動的型付け/動的メソッド束縛方式の
オブジェクト指向言語として設計されたRubyのクラス定義スタイルは、
最初から(少なくとも Ruby 1.4 の時代から)変更がありません
Python に関しては、もともと手続き型言語として設計されたものに後から
オブジェクト指向を付け足す際、開発チームの「オブジェクト指向への理解不足」によって
静的型付け/静的メソッド束縛言語のオブジェクト指向を導入したという「過ち」がありました
結果として、リフレクションを多用する最近のメタプログラミング・スタイルに追従できず、
旧スタイルを排除して新スタイルに「改めざるをえなかった」のだと思われます
・コンストラクタ(と思われるもの)が2つある
Ruby => 最初からオブジェクト指向言語として設計された Ruby では、
コンストラクタは Class.new、イニシャライザは Object#initialize と
明確に区別されていますから、「可読性に劣る Python 」のような混乱はありません
・PrivateやProtectedがない
Ruby => Ruby にはメソッドの可視性を指定する private や protected があります
(ただし、個人的にはこれら可視性を宣言するよりも、public メソッドの名前の
前(または前後に) '_' あるいは '__' を付けるスタイルを好みます )
また Ruby には名前の先頭に付ける '_' や '__' について、言語としての「強制」は無く、
命名スタイルはプログラマの判断に委ねられています
・メソッドの第一引数が予約されている
Ruby ==> 最初からオブジェクト指向言語としている Ruby では、(コードが self だらけに
なってしまう)「Python のような冗長で可読性に劣る規約の強制」はありません
Smalltalk と同様に、メソッド呼び出し先として自身を「明示したい時にだけ」
疑似変数 self を、親クラスを「明示したい時にだけ」疑似変数 super を書くだけです
(まだ続くが、次で終わる予定)
■ このスレッドは過去ログ倉庫に格納されています