iostream実装について考察

SubaruG先生、Cryolite先生、kikairoya 先生の夢の狂(?)宴
11
普通のC++使い、銀天すばる @SubaruG

狂った設計のライブラリが標準になる程不幸なことはない。某IOStreamとか。

2010-04-15 12:35:16
普通のC++使い、銀天すばる @SubaruG

まぁ某IOStreamも、某MFCとかと比べたら、よくできたデザインだけど。

2010-04-15 12:39:10
普通のC++使い、銀天すばる @SubaruG

むしろ某IOStreamは、よく考えられすぎているせいで狂った感じだし。

2010-04-15 12:39:57
普通のC++使い、銀天すばる @SubaruG

お願いだから仮想継承とか勘弁してください。

2010-04-15 12:40:32
普通のC++使い、銀天すばる @SubaruG

ostream はまだマシだけど(ゼロオーバーヘッドに真っ向から対立している以外)、 istream の微妙さは泣きたくなる。

2010-04-15 12:41:44
普通のC++使い、銀天すばる @SubaruG

某IOStreamは狂ったライブラリだけど、資源に余裕があるならそこまで不便じゃない(少なくとも <cstdio> よりはマシ)ので、別に嫌いじゃないです。Boost.Formatさんが居ればマシだし。

2010-04-15 12:51:13
Akso de la Malbono @Cryolite

@SubaruG kwsk>某IOStreamは狂ったライブラリ

2010-04-15 12:52:33
普通のC++使い、銀天すばる @SubaruG

@Cryolite 主に operator >> と仮想継承が。というかそれだけですが。

2010-04-15 12:54:38
Akso de la Malbono @Cryolite

@SubaruG (実装の継承を伴う) 仮装継承に関して言えば,例えば std::iostream で言えば,入出力双方のエラー状態とフォーマットフラグの状態を共通化するために,当時の C++ プログラミング技法を踏まえて,他にどういうあり方が例えば考えられたのでしょうか?

2010-04-15 13:01:27
zak @zakkas783

pre-template時代の設計、「互換性」という名の絶対神、のコラボだからにゃー。 >Iostream

2010-04-15 13:06:50
普通のC++使い、銀天すばる @SubaruG

@Cryolite 当時の技法、と言われると、何も言えなくなってしまいますねー。C++とiostreamは足並みを揃えて進化したと僕は認識してますし。ただ、現状としてオーバースペックではないか、と感じるのは間違ってない筈です(上手い設計なのは分かってますが)。

2010-04-15 13:07:33
Akira Takahashi @cpp_akira

Boost.IOStateServerは標準で入ってくれないと

2010-04-15 13:08:46
zak @zakkas783

ものすごい同意。RT @cpp_akira: Boost.IOStateServerは標準で入ってくれないと

2010-04-15 13:09:12
Akso de la Malbono @Cryolite

@SubaruG kwsk>現状としてオーバースペックではないか

2010-04-15 13:09:18
zak @zakkas783

extendしなければ自作する事も可能だが…あのあたりにiwordとpwordがささってるのをのければ… >StateSaver

2010-04-15 13:14:30
普通のC++使い、銀天すばる @SubaruG

@Cryolite 単純に「殆どの場合だと ostream か istream だけで済むのに、仮想継承をしている」ってのが気にくわないだけなんですよねー。それに対する具体的な対処法とかは思いつけなかったのですが。そもそも仮想継承したところで多分コストはあんまり変わらないんでしょ

2010-04-15 13:21:16
zak @zakkas783

@graighle だいたいあってます。# 想像の一段上をいくはずですが…。

2010-04-15 13:21:45
普通のC++使い、銀天すばる @SubaruG

文句は言えても具体的な対処法は分からないクラスタ。

2010-04-15 13:22:44
普通のC++使い、銀天すばる @SubaruG

@myun2 C++の文法は歴史由来の不恰好な点があるので、そこを改善してくれるなら僕はかなり助かるわけですが。

2010-04-15 13:31:53
普通のC++使い、銀天すばる @SubaruG

C++には歴史由来の不恰好な点があって、それが教える側にも教わる側にも障害になってるから、そこをどうにかしてほしい、という要望があるが…よく考えると、C++って敷居が低くなったらダメなんですよね。だからキモいくらいで十分なのかも。

2010-04-15 13:37:05
普通のC++使い、銀天すばる @SubaruG

C++には歴史由来の不恰好な点があって、それが教える側にも教わる側にも障害になってるから、そこをどうにかしてほしい、という要望があるが…よく考えると、C++って敷居が低くなったらダメなんですよね。だからキモいくらいで十分なのかも。

2010-04-15 13:37:05
めるぽん.c @melponn

server?saver? RT @zakkas783: ものすごい同意。RT @cpp_akira: Boost.IOStateServerは標準で入ってくれないと

2010-04-15 14:33:06
Akira Takahashi @cpp_akira

あれ!?Saverだ・・・(Boost.勉強会の資料にServerって書いちゃったよ) RT @melponn: server?saver? RT @zakkas783: ものすごい同意。RT @cpp_akira: Boost.IOStateServerは標準で入ってくれないと

2010-04-15 14:35:23
Akso de la Malbono @Cryolite

ふむ, std::istream と std::ostream の双方の役割を果たすものが1つのクラスとして表現されるべき理由はいくつか見つかったけれどより強い理由が欲しいにぇ,状態.

2010-04-15 14:44:00