140 :
仕様書無しさん:03/10/28 12:12
COMおぼえるんだったら.NET覚えたほうがまだまし
COMを押し付ける奴は氏ね
COM位は教養で知ってたほうが良いぞ。
あんなもん教養で大学で必修で学生に押し付けるのは学生にたいして失礼だ。
おまえらMAMUCOぐらい知っとけ
145 :
仕様書無しさん:03/12/09 10:30
146 :
仕様書無しさん:04/01/23 19:07
COMって、オブジェクト指向みたいに現実世界とのメタファっとか、
ソフトウェア科学の成果とか背景にあるんですか?
それとも、M$がまったく何の脈絡もなく独自に作り出した物なんでしょうか。
とても分かりづらいんですけど。
>>146 どういう状態ならソフトウェア科学の成果で
どういう状態ならソフトウェア科学の成果にならないんだ?
普通に考えればコンピュータおよびコンピュータ上で動く
すべて物はソフトウェア科学の成果だと思うぞ。
>>147 確かにちと大げさすぎたが。
たとえばコンパイラなんかは、そのバックグラウンドに
形式言語論とかあるじゃないですか。
オブジェクト指向もいまいち定義がはっきりしないけど、
ソフトウェアを「物」として扱おうという流れじゃないですか。
でも、COMはM$の都合だけで作られたような感じがしたということです。
しかも、それがWindowの基礎となってる。
149 :
仕様書無しさん:04/01/23 21:11
>>148 > しかも、それがWindowの基礎となってる。
もう終わるよ。今から COM を覚えるならアセンブリを覚えておけ。これから
主流になる。COM はもうすぐ obsolete になるで。
150 :
仕様書無しさん:04/01/23 22:36
おまえら、COMCOM言うけどな。
昔のDOSの実行モジュールxxxx.com(非xxxx.exe)
を知らないでCOMCOM言うなよな。
64Kバイト以内という制限があったが、純粋に機械語
命令だけのちっちゃいプログラムになるんだぞ!
…という俺は今のCOMはよく知らんがな。
151 :
仕様書無しさん:04/01/23 22:42
>>150 ああ。PC9801VMとかで、MASMやらで
遊んでいた頃がなつかすぃ。
コマンドラインマンセー。
>>148 じゃあライブラリや動的ライブラリやオブジェクトファイルは
ソフトウェア科学の成果ではないということですね。
言っておくが、COMが出来た当時に
C言語などの手続き型言語を含めて、
どの言語からも使えるオブジェクト指向な
動的ライブラリは存在しないといっても過言じゃない。
>>152 それってM$が考えたの?知らなかった。
なにもWindows全てを否定しているわけではないよ。
COMが直感的に分かりづらいと言っているだけ。
たしかにCOMはMSが作った物だが、
必要な物(オブジェクト指向動的ライブラリ)が
無い状態なのにどうしろと。
Cだってベル研究所の都合だ。
JavaだってSUNの都合だ。
Linuxだってリーナスの都合だ。
必要な無い状態なんだからMSの都合で何も悪いことはない。
>>154 > それってM$が考えたの?知らなかった。
そんなこと誰も言って無い。
> COMが直感的に分かりづらいと言っているだけ。
そんなことお前は言っていない。
お前が聞いたのは動的ライブラリ形式(COMやDLLやUNIX系のSO等)が
ソフトウェア科学の成果かどうかだろ?
>>155,156
自分の言いたいことがあまり整理されていませんでした。スマソ
つまり、APIでプログラムを組んでいる分には
Windowsはそれほど難解ではないんだけど、
DirectXとか使おうとしたとたん、Windowsの裏に隠蔽されていた
COMという仕組みが顔を出してきて、
それを理解しないと手も足も出なくなる、と言うことがぼやきたかっただけです。
> DirectXとか使おうとしたとたん、Windowsの裏に隠蔽されていた
> COMという仕組みが顔を出してきて、
しかたないだろ。DLLファイルで提供されている
API(非オブジェクト指向ライブラリ)では限界があるんだから。
大規模な物を作ろうとしたらオブジェクト指向のほうが便利。
しかし時代的に出来た当時はC言語もまだまだ主流。
DLLにオブジェクト指向風に使える拡張をした物がCOM。
非オブジェクト指向言語からも使えるように考慮しているのだから
複雑になるのは当然。
これに対して非オブジェクト指向言語からの利用を(あまり)考慮していない
.NETでは.NETの動的ライブラリをもっと簡単に使える。
159 :
仕様書無しさん:04/01/24 00:06
>>155 > たしかにCOMはMSが作った物だが、
> 必要な物(オブジェクト指向動的ライブラリ)が
> 無い状態なのにどうしろと。
だから、早くアセンブリを覚えろ。
同じプロジェクトで作成したクラスとまったく変わらずに使えるぞ。
しかも、属性をつけてリフレクションとか便利だし。
もう、同じオペレーションをするクラスに継承は必要ない。
どんなかは、NUnit のテストの書き方を見てみれば分かる。
160 :
仕様書無しさん:04/01/24 00:08
>>150 よく、テキストでアセンブリ言語でソースを書いて、DEBUG または SYMDEB に
リダイレクトしてアセンブルしてたっけ。
>>157 DelphiやBCBやVBからだと特にCOMだからって難しいことは無いぞ。
普通のクラスライブラリって感じで使えるからな。
つーか、そもそもCOMのどこが難しいんだ?
162 :
仕様書無しさん:04/01/24 00:10
>>159 しかも、子 AppDomain で ShadowCopy を true にして使えば、DLL にロックが
かからないから、アセンブリを使っているプログラムの実行時に DLL が書き換えられるしな。
163 :
仕様書無しさん:04/01/24 00:17
>>161 BCB でも、マルチスレッドでマーシャリングしたり、COM の規則全部空で言える?
164 :
仕様書無しさん:04/01/24 00:19
>>161 VBはスレッドが使えないからいいとして、おまいは、DelphiやBCBでこれを全部理解しているのか?
165 :
仕様書無しさん:04/01/24 00:21
166 :
仕様書無しさん:04/01/24 00:22
.NET でアセンブリが一番楽だね。
C#、MS だけどこれだけはスキ。
167 :
仕様書無しさん:04/01/24 00:23
.NET でアセンブリが一番楽だね。
C#、MS だけどこれだけはスキ。
STA、MTA、インターフェース・アパートメントとか、マーシャリングなんか
考えなくてもいいだろ。
API使うときに考えているか?
169 :
仕様書無しさん:04/01/24 00:35
>>169 考えなくてもデフォルトで動く。
その証拠に理解しなくても使えることを示唆するセリフがある。
> おまいは、DelphiやBCBでこれを全部理解しているのか?
COMって難しいか?
漏れみたいな糞vb厨でも知ってるんだが。
172 :
仕様書無しさん:04/01/24 00:55
>>171 だってVBってスレッドもないし、別スレッドにあるCOM間でオブジェクトをやりとりすることも
ないじゃん。クラスのメソッドの呼び方さえ知っていれば住む世界だよ。
173 :
仕様書無しさん:04/01/24 00:58
マルチスレッドを使えない言語、使わない仕様なら難しいことはないだろうね、COM。
使うのと作るのでは大違いなんだよねぇ。
175 :
仕様書無しさん:04/01/24 11:30
>>172 別プロセスにあるCOM間でオブジェクトをやり取りすることはあるけどね。
さて、APIでスレッドを使う場合はSTAとかMTAとか面倒くさいことを
考慮しなくいいんだろ? 単純にAPIでスレッドを使った場合に
相当するのはCOMで言えばSTAとかMTAとかどういうモードに相当するんだ?
そもそもなぜ複数のモードが存在するんだ?
APIでスレッド使うのに相当するモードだけを使うことを
前提にしたら、COMはもっと簡単だと思うんだが。
あと、Javaとか.NETとかCORBAとかオブジェクト指向な言語・ライブラリで
スレッドを使ったときはSTAとかMTAとか(に相当すること)を考えなくていいのか?
COMだけに特別なことなのか?
遅レスだが、
>>146が言いたいのはCOMとかの難しい(?)概念、
STA、MTA、インターフェース・アパートメント、マーシャリング(に相当する概念)は
COMだけに存在する物なのか? ということだろ?
>>176 いえ、DirectXで挫折した者のただのぼやきです。
気にしないでください。
考えてみたら、COMがあるから今のタブブラウザブームとかがあるわけですね。
multithreadedなライブラリが孕むメンドクささと基本的には同じかと。
179 :
仕様書無しさん:04/02/02 08:02
>>157と同じような理由でCOMの勉強を始めている者です。
現在読んでいる入門書だと1999年の本なのに、MSがCOM
やVBを見捨てることはないと書いてあって、時代の流れの
速さを感じています。
自分の場合は、VC++6.0なんですが、それ付属のMSDNの
Platform SDKで Shell Reference を見たら、いきなり、
HRESULTを返すサンプルが載ってて、COMをやろうかと
思い立ったのですが、この辺りの知識は.NETでは完全に
無駄になってしまうのでしょうか? OLEVIEW.EXEで
利用できるコンポーネントを探すなんてこともなくなるんですか?
もしも、こういった知識がすぐに無駄になってしまって、
.NETで同じことがより簡単にできるようになっているのであれば
VC++6.0からVC++.NETに乗り換えるべきなのかなと思っている
のですが。
>>175 まずはEssential COMを読め。
181 :
仕様書無しさん:04/02/26 18:41
COMを始めたばかりのものです。
COMのメソッドって、クラスのオーバーロード関数みたいなことはできないのでしょうか?
例えばクラスのメンバ関数で
Func(int a);
Func(int a, DWORD b);
みたいなことをCOMのメソッドでやりたいのですが、だめなんでしょうか?
ヘンなこと言ってたらすいません
182 :
ブッシュ大統領:04/03/15 11:14
三大悪の枢軸国の紹介
C++帝國(北朝鮮) ← C++厨代表の正体は、何と! 金正日だった!
VB帝國(イラン) ← VB厨代表はイランに潜伏していいた!
Perl帝國(イラク) ← Perl厨代表フセインがついに逮捕された!
183 :
仕様書無しさん:04/03/15 15:02
EXEの方がいいよ
184 :
仕様書無しさん:04/03/16 21:33
185 :
仕様書無しさん:04/03/16 21:40
今、VBA(VB6.0相当)でスレッドを使って多量のExcelファイルを
処理しようとして苦労してるんだが、APIを使うってのは最早VBAじゃねぇのかなぁ。
まだCOMとかの基本的なことが分かってないので、一応動くが多々落ちる。
javaとかC#に移行してくれねぇかなぁ。
187 :
仕様書無しさん:04/03/16 21:48
Lisp!! (゜∀゜)カコイイ!!
ExcelのVBAで一日かけてプログラムを書き、保存してPCをとめた。
翌日Excelで開いてみたら、開いた時点でExcelが死にやがる。
VBAのコードはバイナリ化されててファイル覗いても拾うことすらできない。
結局は生のVBからExcelオブジェクトを操作する形に直して
また1から組みなおした。
VBAは怖い。