東方算程譚

Oriental Code Talk ── επιστημηが与太をこく、弾幕とは無縁のシロモノ。

目次

Blog 利用状況

ニュース

著作とお薦めの品々は

著作とお薦めの品々は
東方熱帯林へ。

あわせて読みたい

わんくま

  1. 東京勉強会#2
    C++/CLI カクテル・レシピ
  2. 東京勉強会#3
    template vs. generics
  3. 大阪勉強会#6
    C++むかしばなし
  4. 東京勉強会#7
    C++むかしばなし
  5. 東京勉強会#8
    STL/CLRによるGeneric Programming
  6. TechEd 2007 @YOKOHAMA
    C++・C++/CLI・C# 適材適所
  7. 東京勉強会#14
    Making of BOF
  8. 東京勉強会#15
    状態遷移
  9. 名古屋勉強会#2
    WinUnit - お気楽お手軽UnitTest

CodeZine

  1. Cで実現する「ぷちオブジェクト指向」
  2. CUnitによるテスト駆動開発
  3. SQLiteで組み込みDB体験(2007年版)
  4. C++/CLIによるCライブラリの.NET化
  5. C# 1.1からC# 3.0まで~言語仕様の進化
  6. BoostでC++0xのライブラリ「TR1」を先取りしよう (1)
  7. BoostでC++0xのライブラリ「TR1」を先取りしよう (2)
  8. BoostでC++0xのライブラリ「TR1」を先取りしよう (3)
  9. BoostでC++0xのライブラリ「TR1」を先取りしよう (4)
  10. BoostでC++0xのライブラリ「TR1」を先取りしよう (5)
  11. C/C++に対応した、もうひとつのUnitTestFramework ─ WinUnit
  12. SQLiteで"おこづかいちょう"
  13. STL/CLRツアーガイド
  14. マージ・ソート : 巨大データのソート法
  15. ヒープソートのアルゴリズム
  16. C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す
  17. .NETでマンデルブロ集合を描く
  18. .NETでマンデルブロ集合を描く(後日談)
  19. C++/CLI : とある文字列の相互変換(コンバージョン)
  20. インテルTBBによる選択ソートの高速化
  21. インテルTBB3.0 によるパイプライン処理
  22. Visual C++ 2010に追加されたSTLアルゴリズム
  23. Visual C++ 2010に追加されたSTLコンテナ「forward_list」
  24. shared_ptrによるObserverパターンの実装
  25. .NETでマンデルブロ集合を描く(番外編) ── OpenCLで超並列コンピューティング
  26. StateパターンでCSVを読む
  27. 状態遷移表からStateパターンを自動生成する
  28. 「ソートも、サーチも、あるんだよ」~標準C++ライブラリにみるアルゴリズムの面白さ
  29. インテルTBBの同期メカニズム
  30. なぜsetを使っちゃいけないの?
  31. WPFアプリケーションで腕試し ~C++でもWPFアプリを
  32. C++11 : スレッド・ライブラリひとめぐり
  33. Google製のC++ Unit Test Framework「Google Test」を使ってみる
  34. メールでデータベースを更新するココロミ
  35. Visitorパターンで遊んでみたよ
  36. Collection 2題:「WPFにバインドできる辞書」と「重複を許す検索set」
  37. Visual C++ 2012:stateless-lambdaとSQLiteのぷち拡張
  38. 「Visual C++ Compiler November 2012 CTP」で追加された6つの新機能

@IT

  1. Vista時代のVisual C++の流儀(前編)Vista到来。既存C/C++資産の.NET化を始めよう!
  2. Vista時代のVisual C++の流儀(中編)MFCから.NETへの実践的移行計画
  3. Vista時代のVisual C++の流儀(後編) STL/CLRによるDocument/Viewアーキテクチャ
  4. C++開発者のための単体テスト入門 第1回 C++開発者の皆さん。テスト、ちゃんとしていますか?
  5. C++開発者のための単体テスト入門 第2回 C++アプリケーションの効率的なテスト手法(CppUnit編)
  6. C++開発者のための単体テスト入門 第3回 C++アプリケーションの効率的なテスト手法(NUnit編)

AWARDS


Microsoft MVP
for Visual Developer - Visual C++


Wankuma MVP
for いぢわる C++


Nyantora MVP
for こくまろ中国茶

Xbox

Links

記事カテゴリ

書庫

日記カテゴリ

C++屋はプロパティ慣れしてません(つづき)

C++屋はプロパティ慣れしてませんの続き:

  プロパティを使ったことがないのですが、
  a = b;
  が可能ならば
  a == b
  も成り立ってほしいです。

わかります。スゴークわかります。
ではソレの成り立つへんなプロパティ。

using System;
using System.Collections.Generic;

namespace おためし {

  enum 色 { 赤, 白, 青, 緑, 黄 };

  class ペッツ {
    private Stack<色> 容器 = new Stack<色>();
    public 色 { set { 容器.Push(value); }?
                  get { return 容器.Peek(); } }
    public bool 空 { get { return 容器.Count == 0; } }
    public 色 取り出す() { return 容器.Pop(); }

    static void Main() {
      ペッツ おやつ = new ペッツ();
      おやつ. = 色.赤;
      おやつ. = 色.白;
      おやつ. = 色.緑;
      おやつ. = 色.青;
      while ( !おやつ.空 ) {
        Console.Write("{0} ", おやつ.);
        おやつ.取り出す();
      }
    }
  }
}

最後にペッツ食べたのいつだろう(遠い目...

投稿日時 : 2008年7月25日 11:55

コメントを追加

# re: C++屋はプロパティ慣れしてません(つづき) 2008/07/25 13:09 ネタ好き未記入

なんとなく思ったのですが、C++屋さんがプロパティに慣れていないのは「プロパティも関数呼び出しだよね!」という意識があるからかもしれません。
でも、リフレクションを考えるとプロパティとメソッドの区別は重要なんですよね。
だって、get_○○とset_○○をリフレクションでチェックするの面倒くさいもの。

# re: C++屋はプロパティ慣れしてません(つづき) 2008/07/25 13:19 ネタ好き未記入

ちょっと気になったのですが、言語抜きの話しでオブジェクト指向の観点から見て、プロパティはどうなんでしょうか?
オブジェクト指向は、対象オブジェクトにメッセージを送信したら動作するデータと構造の一体型を目指しているという説がありますが、その考えから言えば、プロパティはメッセージを受けとったプロパティの上体を表し、メソッドは動作をしていするものという理屈が成り立ちますので、実のところプロパティに重要な意味があるのかもしれません。
でもメッセージを対象に送り返すだけと考えたらメソッドでも十分なような気もします。

皆さんは、オブジェクト指向的観点から言ってプロパティをどのように捉えていますか?
是非お聞きしたいです。

# re: C++屋はプロパティ慣れしてません(つづき) 2008/07/25 13:33 とっちゃん

個人的には、
プロパティ=オブジェクトの属性に対する操作
メソッド=オブジェクトになにかしらをさせる処理
という感じかな。

おいらは個人的なレベルでは
プロパティはあくまでもフィールドと同義
という扱いをしています。

実装としてそれでは効率が...
という場合は、考慮しますが設計時点では
基本的に考慮しません。

でも、C++屋さんなのであまりプロパティ構文は好みませんがwww

# re: C++屋はプロパティ慣れしてません(つづき) 2008/07/25 13:38 ネタ好き未記入

>でも、C++屋さんなのであまりプロパティ構文は好みませんがwww

よくそういう話を聞きます。
もしかしてパフォーマンス上の問題ですか?
プロパティがインライン化されるというのをあまり信じていないとか・・・

# re: C++屋はプロパティ慣れしてません(つづき) 2008/07/25 13:42 ryo

ペッツをお菓子ではなく、犬とか猫とかのペットの複数形だと思い込んで読んでました。
# コード的には明らかにおかしいのにw

その流れで読むと
>最後にペッツ食べたのいつのだろう(遠い目...
で大爆笑させていただきましたw

# re: C++屋はプロパティ慣れしてません(つづき) 2008/07/25 13:55 επιστημη

επιστημη的には"派生属性"扱いすねー
オブジェクトに対し何らかの影響を与えるならメソッドにします。
書き込むことでオブジェクトに対し何の影響も与えないのであれば、そんな属性に意味ねぇし。
なので原則的に"getに限りたい"です > ぷろぱてー

# キレーゴトは言えないけどね ^^;
# 少なくとも濫用は禁物と考えちょります

その流れでレスすると
鶏をペットとしてた頃もありました。
縁日で釣ったヒヨコが大きくなっちゃいまして。
しばらくして田舎のばーちゃんちに引き取られていきました。
群れに入れるといぢめられるので個室をもらってましたね♪

# re: C++屋はプロパティ慣れしてません(つづき) 2008/07/25 14:48 とっちゃん

>もしかしてパフォーマンス上の問題ですか?
>プロパティがインライン化されるというのをあまり信じていないとか・・・

パフォーマンス的な問題じゃなくて
そもそも C++ にはプロパティ構文がないんです。
#現在の話

VC++ だと、__declspec(property(get=,put=))でできますが
実際はメソッドとして定義されてるし、そもそもVC++ローカルだしw

なので、結果としてそれがどういう形になっているか?
に限らず、プロパティ構文(.NET や Java のそれ)が
C++の文化としてはいま一つ...なのが本当の所じゃないかな。

プロパティ「風」なメソッドの書き方はありますけどねw

# re: C++屋はプロパティ慣れしてません(つづき) 2008/07/25 16:27 アキラ

> C++屋さんがプロパティに慣れていないのは

参照とコピーの問題があるからでしょう。
それと C++ 標準でプロパティがないから。

VC++ とか BC++ には言語拡張でプロパティ構文がありますが
C++屋さんは環境依存というものを嫌う傾向があります。

ライブラリでプロパティを実装することもできますが
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1615.pdf

やっぱり言語のサポートがほしいところ

# re: C++屋はプロパティ慣れしてません(つづき) 2008/07/25 17:35 ネタ好き未記入

とっちゃん さん、アキラさん、お二人とも有難う。
成るほど、色々な問題がありそうですね。
特にコピーは頭が痛そう。コピーコンストラクタとか演算子オーバーライドとか絡みそうですね・・・
環境依存も怖いし・・・
こうやって冷静に問題点を見ると、プロパティがC++屋達に流行って居ない訳が分かります。
これで流行る方が無理がありますね。

タイトル
名前
URL
コメント