c**でインターフェースを作るのは難しいか、で

Writer: admin Type: spinning Date: 2019-01-30 00:00
c**でインターフェースを作るのは難しいか、できたとしてもC#のものよりも機能が劣るのですか?補足guiのことでしたopengl使いたいのですが、C#だと向いていないみたいなので共感した0###もともとC++は、インターフェイスの作成が得意です。しかし、インターネットの普及に伴い、Javaに王座をうばわれました。よって、新しい技術開発では、C++は蚊帳の外に外されていました。しかし、Microsoft とヒューレッドパーカードで作った標準技術により、C++が、最前線に復帰する見込みが付きました。よって、またC++が、「インターフェイスの作成が得意なプログラミング言語」に戻れそうです。詳しくは、以下に説明します。[C++のインターフェイス作成について]C++ですよね。C言語と、C言語を機能拡張したC++は、インターフェイスの作成が、もっとも得意でした。よく、C言語、又はC++で、異なるOSの間のインターフェイス(仲介用プログラム)を作成しました。また、異なるプログラミング言語の間のインターフェイス(仲介用プログラム)を作成しました。C言語、又はC++は、ハード側の制御が行えるので、この手のこと(インターフェイスの作成)が得意です。また、C言語やC++は、ハード側の制御が行えるので、OSからアプリケーションソフトまで作れます。すなわち、ソフトなら何でも作れるのが、C言語とC++です。[Javaのインターフェイス作成について]しかし、「C言語とC++ならば、なんでも作れる」と言う時代は、終わりました。インターネットとJavaが普及したからです。インターネット関係のプログラムの多くが、ガーベージコレクションと言うメモリ管理用のプログラムを使っているからです。すなわち、階層的に、ハードとアプリケーションソフトの間に、ガーベージコレクションと言うメモリ管理用プログラムが挟まっている。ハード側の位置にいるC言語やC++は、ガーベージコレクションが壁になって、アプリケーションソフト側の制御が行えない。よって、ガベージコレクションが関わっている場合は、C言語とC++の出番がなくなりました。その代わりに、Javaが活躍するよになりました。Javaは、ガベージコレクションを取り入れているので、ガベージコレクション上で動作するアプリケーションソフトを制御することが可能です。すなわち、ガベージコレクションが関わっている場合、様々な環境の間のインターフェイス作成は、Javaの役目になりました。インターネットが広く普及したので、ガベージコレクションが関わっている場合が、かなり多くなりました。すなわち、C言語とC++の王座は、すっかりJavaに奪われてしまいました。[Microsoft が、C++をインターネットで活用した結果について]Microsoft がインターネット市場に参入した時に、「Javaでなく、C++を使っても構わないだろう」と判断しました。ちなみに、当時のMicrosoft の中心となるテクノロジーは、COMと言うテクノロジーです。COMは、C++を中心としたMicrosoft テクノロジーです。Microsoft は、このCOMをインターネット上で扱えるようにしました。すなわち、インターネット関係は、Javaが中心だが、C++も活躍可能にしました。しかし、世間は、「インターネットの世界に、Microsoft の固有技術を持ち込むな」と批判をしました。Javaによるインターネットの世界と、C++によるハード制御の世界では、真逆な考え方なので、拒絶されました。インターネットでは、個々のハード仕様に依存させない。また、個々のOS仕様に依存させない。これに対して、C言語とC++は、真逆な考えです。C言語とC++は、個々のハード仕様に依存させて、ハードの性能を十分に活かします。また、C言語とC++は、個々のOS仕様に依存させて、OSの性能を十分に活かします。C言語とC++は、インターネットと真逆な立場なので、インターネットの世界から拒絶されました。Java を作ったSunと言う会社に、Microsoft は、裁判で訴えられました。結局、C++は、今でもインターネットで使えないままです。しかし、今後は、C++がインターネットで活躍する見込みが出て来ました。それについては、もう少し後に説明します。[C#について]Microsoft は、インターネット関係で世間から批判され、かつ、Sunから裁判で訴えられました。よって、Microsoft 系開発環境では、Javaを使うのはやめて、C# を使うことにしました。C# は、Microsoft が作ったプログラミング言語です。C# は、Javaと同じようにガーベージコレクションを使っているので、インターネット系が得意です。また、C# は、Java だけではなく、Python、Visual Basic、Delphi 等を参考にして作られたので、Javaよりも優秀になっています。[Microsoft が作った標準技術について]前述の通り、Microsoft は、インターネット関係で世間から批判されました。よって、名誉挽回のため、標準化団体に協力して、様々な標準技術を作成しています。< 1 > 共通言語基盤(略称: CLI)コンパイル後のプログラム自身(すなわち、完成後のプログラム自身)の標準化を行ないました。すなわち、様々な開発環境で作られた各種のプログラムが、自由にリンク(結合)することが可能です。プログラムが同じ規格で標準化されているので、連携し合えると言うことです。共通言語基盤(略称: CLI)と言います。共通言語基盤(CLI)は、Microsoft とヒューレットパッカード(Hewlett-Packard Company)と幾つかの企業が協力し合って作られました。< 2 > SOAPとWebサービスインターネット上で動作するプログラムの標準化を行ないました。すなわち、各種のサーバーの機能が、インターネット経由で連携し合えます。その標準仕様は、プロトコル(通信の規約)のSOAPです。また、そのSOAPを使ったサーバーシステムを作る技術のWebサービスです。SOAPとWebサービスは、Microsoft とIBM とOracle とヒューレットパッカード(HP)と幾つかの企業が協力し合って作られました。[Microsoft が作った標準技術は、長い間普及しなかったことについて]Microsoft が中心になって作られた標準技術は、長い間普及しませんでした。SOAPとWebサービスとC# は、2002年からスタートしましたが、長い間人気が悪い状況でした。共通言語基盤(CLI)は、2005年からスタートしましたが、同じく人気がない状態が続きました。世間の各種企業達は、「標準化団体に採択されているとは言え、実質上は、Microsoft の技術のようなものだ」と警戒していたからです。[C# 及び、SOAPとWebサービスの人気が急上昇したことについて]2010年にOracleが、Sunを買収したことによって、C#、及び、SOAPとWebサービスの人気が上がって行きました。Oracleは、SOAP(Webサービス)の作成で、Microsoft と協力し合った会社です。また、Sunは、インターネット関係(Java)で、Microsoft を裁判で訴えた会社です。Oracleが、Sunを買収したことを切っ掛けに、C#、及び、SOAPとWebサービスの人気が上がって行きました。[共通言語基盤(CLI)の普及が開始したことについて]2016年11月に、Microsoft が、Linux Foundationにプラチナメンバーとして加入しました。Linux は、かつては、Microsoft のOSのWindowsとライバル関係であったOSです。そして、Linuxは、オープン系では高く評価されています。Microsoft は、Linux Foundationからの御墨付きを得たので、Microsoft を警戒していた企業達は、共通言語基盤(CLI)等を使い始めています。[Windowsランタイム (略称: WinRT)について]Microsoft は、共通言語基盤(CLI)を使って、COM(C++を中心にしたテクノロジー)をインターネット上で活用することになりました。「標準仕様を使っているのであるから、文句は、言わせないよ」と言うものです。その改良された新COMは、Windowsランタイム (略称: WinRT)と言います。もしも順調に普及するのであれば、C++が、新規開発での最前線に復帰します。Microsoft 以外では、Linux軍勢で、共通言語基盤(CLI)の普及の見込があります。[難易度の件]C++でのインターフェイスの作成は、かなり難しいです。ちなみに、私は、Microsoft 系を中心にインターフェイスを作成しています。Microsoft 系の固有仕様をいったん覚えてしまえば、その後は、それ程大変ではありません。しかし、その「いったん覚える」が、かなり大変です。[まとめ]もともとC++は、インターフェイスの作成が得意です。ただし、インターネットの普及に伴い、Javaの陰に埋もれてしまいました。しかし、共通言語基盤(CLI)の普及により、C++が、新規開発の最前線に普及して行く見込みです。すなわち、C++が、インターフェイスの作成で活躍する見込みです。ナイス0
###[質問者さんが言われているインターフェーイスについて]質問では、「C++で作るインターフェイス」と、「C#で作るインターフェイス」を比較しているので、当然、広い意味での全般的なインターフェイスを指しているのですよね。すなわち、ある環境と、別の環境を繋ぐインターフェイス(仲介プログラム)のこと。例えば、ある開発環境と、別の環境を繋ぐインターフェイス(仲介プログラム)とか。また、あるOSと、別のOSと、別の環境を繋ぐインターフェイス(仲介プログラム)とか。
###何のインターフェースですか?てっきり抽象化した型のInterface かと思いましたが、他の人の回答をみるとAPI的なインターフェースのようですね。インターフェースは何かと何かのあいだを橋渡しする抽象的な言葉なので、何のインターフェースかを明らかにした方が正確な回答が得られると思いますよ。ナイス0
###どんなプログラミング言語でも使い手次第です。プログラミング言語に優越をつけること自体間違っています。どのようなインターフェイスをお作りになられるかは、わかりませんがC#ならVisialStudio一つである程度のインターフェイスを作ることが可能なのでおすすめです。ナイス0
###c**とはなんのこと?ナイス0
ico_check不適切な投稿でないことを報告

 

TAG