Project

General

Profile

Feature #3065

[TypedData] という名前について

Added by tad (Tadashi Saito) over 9 years ago. Updated over 8 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Target version:
-

Description

=begin
斎藤と申します。

1.9.2に取り込まれないであろうことは百二十くらい承知で、TypedDataに
付いての疑問点をいくつか書かせていただきます。

trunkには、RDataの代わりに(なりそうな)RTypedDataが導入されましたが、
これは良くない名前ではないでしょうか。

まず、新しい構造体には「Type」という単語が追加されたわけですが、これは
struct RTypedDataのメンバーであるtypeから察するに、rb_data_type_tの
事を指し、それによって型をまとめてチェックできる(rb_typeddata_is_kind_of)
という意味になると思います。

しかしささださんと先日Twitter上で話したところ、これを作った主な動機は
メモリ使用状況の正確な把握にある、つまりrb_data_type_tとして追加で
dsize関数ができたことにあるようでした。(間違っていたらすみません)

つまり「自分でメモリ使用量を知っているRData」を作りたかったのに、
名前から伝わる印象はそれと異なり、「型の把握が簡単なRData」になって
しまっています。

# 「Typed」にもし「自分の資源消費量を知っている」という意味があれば、
# 問題ないと思います。その場合、単に自分の知識不足ので、Closeして
# ください。ごめんなさい。

自分の今までのコンピュータの知識では、「型」という言葉には、その
オブジェクトが現実のコンピュータでどれほど資源を食っているか、という
意味では使われないと思います。もしそうならば、名が体を表していないの
で、良くない名前だと思います。

メモリサイズが測れるということを伝えるのならば、シンプルに「RSizedData」
とかの方が、分かりやすくて良いと思います。

という、API変更の提案でした。誤解がたくさんあるかもしれませんが、どうぞ
よろしくお願いします。
=end

History

#1

Updated by mame (Yusuke Endoh) over 9 years ago

=begin
遠藤です。

2010年4月1日0:30 Tadashi Saito redmine@ruby-lang.org:

まず、新しい構造体には「Type」という単語が追加されたわけですが、これは
struct RTypedDataのメンバーであるtypeから察するに、rb_data_type_tの
事を指し、それによって型をまとめてチェックできる(rb_typeddata_is_kind_of)
という意味になると思います。

しかしささださんと先日Twitter上で話したところ、これを作った主な動機は
メモリ使用状況の正確な把握にある、つまりrb_data_type_tとして追加で
dsize関数ができたことにあるようでした。(間違っていたらすみません)

つまり「自分でメモリ使用量を知っているRData」を作りたかったのに、
名前から伝わる印象はそれと異なり、「型の把握が簡単なRData」になって
しまっています。

twitter 上の議論は読んでいませんが、最初の動機がなんであろうと、
rb_data_type_t を「Data の型情報」と考えるのは不自然ではないと
思いました。
従来は dfree のポインタを比較するという dirty hack で型チェック
していたところが、rb_data_type_t の比較になったのは TypedData の
重要な功績だと思います。

また、rb_data_type_t は将来的に拡張できるようにもなっているため、
RSizedData みたいな限定はしない方がいいと思います。

--
Yusuke ENDOH mame@tsg.ne.jp

=end

#2

Updated by ko1 (Koichi Sasada) over 9 years ago

=begin
 ささだです.

(2010/04/01 2:16), Tadashi Saito wrote::

つまり「自分でメモリ使用量を知っているRData」を作りたかったのに、
名前から伝わる印象はそれと異なり、「型の把握が簡単なRData」になって
しまっています。

(snip)
従来は dfree のポインタを比較するという dirty hack で型チェック
していたところが、rb_data_type_t の比較になったのは TypedData の
重要な功績だと思います。

これは同意します。しかし、それを主眼に新しい構造体やAPIを作ったとは、自分は
思えなかったのです。つまり、良い副作用があるとは思いますが、その副作用自身を
名前にするべきではないと思います。あくまで名前は、作った目的に合わせて付けた
方が良いでしょう。

 残念ながら,それが主眼です.

 メモリ関係が副作用です.

--
// SASADA Koichi at atdot dot net

=end

#3

Updated by nobu (Nobuyoshi Nakada) over 9 years ago

=begin
なかだです。

At Thu, 1 Apr 2010 02:16:19 +0900,
Tadashi Saito wrote in [ruby-dev:40891]:

ところで自分の拡張ライブラリでは、CLASS_OF(obj) == cMyClassで

見ちゃっていますが、これだと何かまずい、んですよねぇ。理解が足りなくて

申し訳ないです。

一切サブクラスを許さないならそれもアリかもしれません。

--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦

=end

#4

Updated by naruse (Yui NARUSE) over 9 years ago

  • Status changed from Open to Rejected

=begin

=end

Also available in: Atom PDF