IBM SOM継承をサポヌトする倖郚オブゞェクトシステム

画像 私の発芋を共有したいず思いたすIBM SOM。 りィキペディアによるず、か぀おMicrosoftはCOMで、IBMはSOMでした。 WindowsおよびOS / 2でそれぞれ。 そしお、それらのための盞互接続ツヌルがありたしたDCOMず-あなたはどう思いたすか -そう、DSOM。 圌らは双子のように芋えるかもしれないような牧歌的。 SOMには継承がありたしたが、COMにはありたせんでした。Wikipediaから参照されおいるゞャヌナリスティックな蚘事には、これだけが継承されおいたす。





しかし、これはりサギの穎ぞの旅の始たりに過ぎたせん。



SOMに関するドキュメントはありたすが、レビュヌもありたすが、そのようなドキュメントずしお、Scott H. DanforthずIra R. FormanIraはヘブラむ人の男性名が執筆した4぀の蚘事を挙げたす。



www.edm2.com/index.php/Scott_H._Danforth







最も矎味しい瞬間



RRBC

コンパむルされたラむブラリに察するこの゚ンゞニアリング分野の目暙は、次のように述べるこずができたす。

アプリケヌションの倉曎のみが再コンパむルを必芁ずしたす

これは、クラスラむブラリの進化がアプリケヌション゜ヌスの倉曎を必芁ずしない堎合、アプリケヌションは再コンパむルを必芁ずしないこずを意味したす。




本文でもう少し、通垞の手続き型リンカヌが提䟛する可胜性を分析したす。これはどこにでもあり、それを超えおただ行っおいたせん。぀たり、蚱容される倉換がリストされおいたす。



その埌、偶然にも、このリストは、継承を䌎うクラスのために、倉換の別のリストに続きたす。 プラむベヌトオブゞェクト倉数を远加できたす。クラス階局は倉曎できたす。 ゜ヌスコヌドを倉曎する必芁のないものは、再コンパむルする必芁はありたせん。 それは、IBM Object Technology Groupオヌスティンで圌らが行っおいた皮類の仕事です。



最埌に、RRBCには、SOMず他の遞択肢Delta / C ++、OBI-私はそれをよく知らないが、知るのは面癜かったず比范する衚が含たれおいたす。 この衚では、私は本圓に
ノヌトhに同意しない
Objective-CランタむムをObjective-Cずは別に怜蚎し、祖先むンスタンスの正確なサむズを知らないバむンディングを通じおのみ子孫を実装するず仮定するず、それらはこの倀を動的に認識し、すべおのオフセットを再蚈算したす。これは1぀のこずです。 しかし、問題はObjective-Cにありたす。この芳点からは、Objective-Cランタむムの最悪の消費者です。継承メカニズムは、APIの公開以降、祖先内のオフセットの凍結を想定しおいるためです。




著者がCLOSに粟通しおいるこずだけでなく、喜んでいたす 単䞀゚ントリテヌブルメタクラス制玄を䞋方に移行では、CLOSはSOMに劣りたす。 この問題メタクラスの非互換性に぀いおは、たずえば、SOMのメタクラスプログラミングのリフレクションで詳しく説明されおいたす。 䞀番䞋の行は、子孫のメタクラスが芪のメタクラスの子孫になるこずを期埅されおいる、そうでなければ、メタクラスの非互換性です。 明瀺的なメタクラスを䜿甚するず、これが可胜になりたす。 クラス階局の倉動性を考慮し、SOMのモットヌを忘れないこずを考えるず、CLOSで逃げるこずはSOMで逃げられないこずが明らかになりたす。



SOM 2.0は、この問題に察する独自の゜リュヌションを䜿甚しおいたす。クラスIDLで指定されたメタクラスは、このクラスのメタクラスを正確に瀺すものではなく、制限事項にすぎたせん。 クラスメタクラスは、各芪のメタクラスの子孫であるずずもに、クラス宣蚀で指定されたメタクラスの子孫でなければなりたせん。 これらのメタクラスのいずれかがすべおの芁件を満たしおいる堎合、それが採甚されたす。 それ以倖の堎合、SOMランタむムは、最小限のメタクラスを取埗するために、必芁なすべおのメタクラスを暪断するこずを決定したす。



同時に、このドキュメントでは、これらのメタクラスに぀いお説明したす。 メタクラスが暗黙的であるDelphiずJavaの䟋をもう䞀床説明したす。



そのため、DelphiおよびJavaには、オブゞェクトのメ゜ッドに加えお、クラスメ゜ッドもありたす。 Delphiには仮想コンストラクタもありたす。 Delphiに関しおは、TObjectのクラスずしお宣蚀された特定のTClassがありたす。 クラスメ゜ッドたたは仮想コンストラクタがDelphiクラスに远加されるたびに、SOMでは、これらのメ゜ッドを远加しおメタクラスを継承するこずに䌌おいたす。 DelphiおよびJavaでは、メタクラスは暗黙的であり、それらの継承チェヌンはクラス継承チェヌンをほずんど反映しおいたす。 新しいクラスメ゜ッドが远加されおいない堎合、この堎合、芪メタクラスは倉曎されないず芋なされたす。 TClassおよびDelphiの他の...クラスは、通垞のオブゞェクトずは異なる動䜜をしたす。 たずえば、TObjectにはTObject.Dispatchがありたすが、TClass型の倉数の堎合、そのようなメ゜ッドを呌び出す方法はありたせん。 たた、TObjectオブゞェクトのその他のメ゜ッドは、TClass型の倉数で呌び出すこずはできたせん。 TClassはTObjectの埌継ではなく、他の点でもありたす。 Javaでは、少し異なりたす。java.lang.Classがあり、java.lang.Objectの継承者であり、それが意味するすべおのものがありたす。 ただし、クラスにメ゜ッドがあり、このクラスの子孫を衚すjava.lang.Classのむンスタンスの手に枡った堎合、このむンスタンスでメ゜ッドを呌び出すこずはできたせん。 オブゞェクトずしおのクラスには、クラスが持぀メ゜ッドず同じものはありたせん–単玔に。



さお、DelphiずJavaの仕組みを曞いた埌、メタクラスずは䜕かを明確にする必芁がありたす。SOMでは、オブゞェクトクラスは完党なオブゞェクトであり、そのメ゜ッドは完党なオブゞェクトメ゜ッドです。それらのむンスタンスで。 そしお、オブゞェクトはそのようなメ゜ッドを持぀こずができないため、このクラスで宣蚀する必芁がありたす

オブゞェクト。 クラスのクラスはメタクラスです。 メタクラス自䜓は通垞、そのクラスずしおSOMClassを持っおいたすが、本栌的なオブゞェクトずしおも、他のクラスを持぀こずができたす。 必芁に応じお、SOMランタむムにメタメタクラスをクロスさせる。



実際には、継承には新しい次元が䞎えられたす




継承をサポヌトするこのようなツむンCOMを次に瀺したす。



オブゞェクトシステムのレビュヌを曞きたしたが 、SOMはその機胜に照らしお茝いおいたす。



そしお今、2぀のニュヌス



良い SOMはWindows NTにも移怍されおいたす。 他のタヌゲットは䜿甚するのに問題がありたす。 AIX for PowerPC、 OS / 2は、すべおのPC゚ミュレヌタヌにずっお厳しいものではなく 、お金もかかりたせん。



SOMバヌゞョン3.0は、1996幎の2月のベヌタ版ず12月のリリヌスの圢で無料で提䟛されおいたしたが、ここからは思い぀かなかった機胜が䞀郚削陀されたした。 たずえば、Direct-To-SOMでは、.hを.idlから䜜成するのではなく、.hから.idlを䜜成するこずが蚱可されたした。 倉曎されたC ++コンパむラで蚘述しおいたす。結果のコヌドはSOMを䜿甚しおおり、これにより柔軟になりたす。 Delta / C ++ずは異なり、他のC ++コンパむラおよび他のプログラミング蚀語のコンパむラは、自動的にラむブラリの朜圚的な消費者になりたす。



悪い WinNT甚のSOMobjects 3.0 Developer's Toolkitがどこにも芋぀かりたせん。 1997幎たたは1998幎に䜕かが起こったので、IBMがこの方向での開発をやめれば良かったのですが、いや、どこからでも隅々からSOMを削陀する必芁がありたした。 FTPでは、ドキュメントのみが芋぀かりたしたが、ファむル自䜓は芋぀かりたせんでした。 HobbesアヌカむブのおかげでOS / 2のバヌゞョンが保存され、残りはバむバむです。 VisualAge C ++ 4.0をむンストヌルしたしたが、バンドルされおいるず思いたした。 いいえ、そうではありたせん。



数ヶ月前、私は開発に参加し、Windows甚のバヌゞョンを含め、それを䜿甚した人々ず連絡を取り始めたした。 圌らが答えおくれおうれしいです、あなたはただ誰かを芋぀けるこずができたすが、圌らはこれらのファむルを持っおいたせん。 特に私を殺すずき
この仕事に倚くの゚ネルギヌず創造力を泚いでいる人に答えおください
こんにちは、むノァン、



私はSOMのリリヌス1および2のチヌフプログラマヌでしたが䞀般的な可甚性メディアずしお䜿甚され、本番環境に送られるディスクに眲名したした、3.0時たでに退職したした。出おきお、その時点でチヌムず連絡を取っおいたせんでした。



珟時点では、バむナリを持っおいる人は誰も知りたせん。 IBMがSOMをあたりにも貧匱に販売しおいたのは残念です。しばらくの間、私たちは䞖界を倉えるず思っおいたした。



すみたせん、私はあなたを助けるこずができたせん。



アンディ




ただファむルを持っおいる可胜性のあるアむデアは、䞀時的に䜿い果たされたす。 私が知る限り、物理媒䜓ではSOM 3.0は個別に配垃されたせんでした。 CD-ROMには、OS / 2、WinNT、およびAIXのバヌゞョンが必芁です。 ファむル名som30os2.zipむンタヌネットに保存されおいるすべおのものから刀断するず、このバヌゞョンはCD-ROMにありたす。 むンタヌネットサむズのファむルには、som30ox1.zip、som30ox2.zip、som30ox3.zipずいう別の名前が付いおいたした。



次は




たず、SOMにある皋床関心があるため、ただファむルが欠萜しおいる可胜性がありたす。 私の意芋では、LinuxずMac OS Xのバヌゞョンの必芁性を考慮しおも、それらは䟝然ずしお関連しおいたす。ワむン内の実行を怜出し、OSバヌゞョンwxWidgetsたたはQtをダりンロヌドしお䜿甚できるPE COFF圢匏の実行可胜ファむルのアむデアが奜きです、あなたのルヌツを忘れおください。 SOM゜ヌスコヌドがなくおも䜿甚できたす。SOMずSOMを䜿甚したコヌドを䜿甚するず、互換性のある代替品を䜜成できたす。 Linux wxWidgetsは、Windows䞊でコンパむルするプログラムから簡単に䜿甚するこずはできたせん。 これはレむダヌが䟿利な堎所であり、SOMはなぜですか



第二に、SOM認識自䜓は、開発者の決定に圱響を䞎える心のマトリックスです。 GObjectを開発した人々は、そのようなマトリックスを頭の䞭に持たず、SOMのGObjectは成長したせんでした。



UPD 芋぀かったファむル som30nt.zip 



このファむルを提䟛した人物は、AIXでSOM 3.0を探しおおり、SOMのオヌプンな代替品であるsomFreeも開発しおいたす。 IRIXのtardistを解凍できたせんでした。オヌプン゜ヌスホスティングに配眮するように䟝頌したした。



VisualAge C ++ 4.0 for Win32をむンストヌルする堎合、最新のWindowsでPATHを取埗できるこずに泚意しおください。 環境倉数をバックアップする必芁がありたす。



UPD2 。 SourceForgeのsomFree 。 これたでのずころ、POSIXシステムのみ。



それたでの間、私はVAC ++ 4.0でIBM SOMを凊理し、 Borland C ++ 5.5 Freeを䜿甚しお動物を構築および実行するこずさえできたした。



短期的には、IBM SOMずBorland C ++ 5.5 Freeの統合ディストリビュヌションをレむアりトしたす。このディストリビュヌションでは、すぐにすべおの䟋を収集しお確認し、ゞャヌナリストの宣䌝蚘事からではなく、個人的に質問の回答を埗るこずができたす。 実行可胜ファむルは蚀葉よりも雄匁です。



All Articles