なぜUnix APIがないのですか?私は、Windows APIがあるからです。
私はUnixの世界の多くがモジュラーであり、一緒に集まって完全なシステムを作ることを知っています。これは素晴らしいようですが、ネイティブのUnixアプリケーションを作成しようとするといくつかの問題が発生します。
たとえば、美しいワードプロセッサを作成し、名前をWPとして指定したいとします。 WindowsバージョンのWPは、Windows APIを呼び出すことによって構築されます。 Cで直接コーディングするか、さまざまなラッパーライブラリを使用できます。しかし、プログラムは、プログラマーがWindowsアプリケーションを構築するために必要となる可能性がある基本的なシステム呼び出しから、GUI、3D、マルチメディア、または10年以上前のバージョンとの互換性を持つその他の機能まで、すべての機能を提供するwinapiを呼び出しますして構築する必要があります。 。そうでなければワインは不可能だったでしょう。
それでは、UnixバージョンのWPを作成したいと思います。標準CおよびC ++ライブラリとPOSIX APIは非常に信頼性が高く、すべてのUnixバリアントでうまくサポートされています。問題は、より多くをやろうとすると発生します。それでは、WP用のウィンドウを作成する必要がありますが、どうすればよいですか? X11がありますが、これが唯一のものではありません。 X11を交換する必要があると感じ、現在WaylandとMirという2つの互換性のない交換製品が製造されています。 X11の場合もXlibとxcbがあります。 xcbは彼らが「より良い」と主張し、ある意味ではそうです。しかし、文書はどこにありますか?作業を完了するには最終的にXlibを選択しますが、X11標準自体は非常に基本的な機能のみを定義します。 GUIアプリケーションが期待するアドイン(ウィンドウイベントやクリップボードのサポートなど)は、拡張機能を呼び出して処理する必要がありますXInternAtom
。これは私の個人的な意見ですが、XでAtomを使用することは非常に非直感的です。もう1つの問題は、すべてのXウィンドウマネージャがこれらの拡張機能を正しくサポートしていないことです。したがって、この汚れた作業は、新しいリリースが出るたびに、以前のバージョンとの互換性を破るGTK +およびQt開発者に任せましょう。 Linuxでポータブルドラッグアンドドロップサポートを提供できますか?
私の考えでは、Unixコミュニティがデスクトップの世界で自殺しているようだ。私が言及したことはBSDサーバーを設定するのに重要ではないことを知っていますが、移植可能な基本的なLinuxアプリケーションを構築したい場合は重要です。
このすべての混乱を引き起こすものは何ですか?これをクリーンアップし、最新のUnixデスクトップ環境を標準化するという実用的な努力はありますか?なぜUnix APIがないのですか?一つもありますか?
答え1
UNIXと呼ばれるには、何よりもPOSIX標準を実装する必要がある認証プロセスを経なければなりません。
したがって、あなたの質問は完全に無効です。 UNIX APIがありますが、POSIXと呼ばれます。
編集:要件のリストは次のとおりです。http://www.unix.org/version4/overview.html
答え2
私の考えでは、Unixコミュニティがデスクトップの世界で自殺しているようだ。
私はどんな形でもUnixが家庭用PC市場で競争するために存在するという誤解があると思います。これに焦点を当てたLinuxディストリビューションがいくつかあります。最初は実際にUbuntuでした。しかし、Ubuntuの元のビジョンのいくつかは、費用を支払うことなく世界中で利用可能なユーザーフレンドリーなオペレーティングシステムを開発することを考慮する価値があります。すべてのコンピュータのMicrosoftライセンスは、ローカルで使用するために数百ドルで購入できます。実行可能であり、コンピュータ(学校、政府など)があるものとないものの違いを意味できます。
私はこれがどれほど成功しているかを追跡していませんが、それにもかかわらず、それはAppleや他のものを追い越したいとは非常に異なる目標のようです。彼らが言ったようにリンゴとオレンジ。またはリンゴと土豚。1 この土豚はリンゴのように全く見えません!いいえ、そうではありません。なぜそんな感じですか?
それでは、UnixバージョンのWPを作成したいと思います。 [...] 最終的に作業としてXlibを選択することになります。
あなたが狂った人でなければ、大量消費の可能性があるワードプロセッサを作成できないようです。
ソフトウェアはさまざまな層に存在し、スタックに組み立てられます。 Xは、GUIスタックの一部としてさまざまなプラットフォームで使用されるレイヤです。これらのプラットフォームでは、X libを使用して実装します。より高いステップGtkやQtなどのライブラリには、両方持ち運べる アプリケーションプログラミングインターフェース;OSX と Windows で使用でき、どちらも X を使用しません。これらのプラットフォームでは、GtkとQtは異なる下位レベルのライブラリ/ APIを使用して実装されています。これは、GtkまたはQt用に作成されたエンドユーザーGUIアプリケーションなどの高レベルのプログラムを比較的マイナーな変更でどこでも使用できることを意味します。2
これは、POSIXシステムでGUIアプリケーションを実装するために直接使用されるライブラリです。したがって、ほとんどのこれらのアプリケーションは通常、「ほぼ互換性のある」POSIXシステムから他のシステムに移植することは難しくありません。
したがって、あなたが言及する「問題」は、実際にあなたが提示する方法では存在しません。 Unixコミュニティは自殺を試みるのではなく、自分が望むことをしています。
1.私が意味することをよりよく説明するために、GNU / LinuxとWindowsの進歩における自由市場の役割を考えてみましょう。後者は明らかに自由市場勢力の産物ですが、前者ははるかにあいまいです。もちろん、偉大な西洋人として私たちは最初に理論を考え、「明らかに自由市場が作った製品は、非自由市場が作った製品よりも優れています」と言います。しかし、これは完全に真実ではありません。これは実際に人々が傾向があることを意味します。よりよく売る。そういう意味では、なぜ製品をよりよく売るのにもっと努力しないのかを尋ねるようです。もちろん、答えはそうする動機が少ないということです。 GNU/Linuxの開発は(特に)開発者の主導で行われました。出て、思いっきり楽しんでください、他の人や公共市場ではありません。これがより良いシステムを生み出すかどうかは、あなたの視点がそれを作成した人の視点にどれだけ近いかによって異なります。 UNIXの歴史にはより多くの市場勢力が含まれていますが、非常に専門的な視聴者です。つまり、これは技術者のための技術的なオペレーティングシステムですが、一般大衆のためのウサギの洞窟もあります。
2. 逆に Windows API を使って何かを書く場合、大きな変更をしなくても使えるところは 1 つだけです。。
答え3
Unixには、POSIXという仕様/標準と実装方法があります。しかし、私たちのコードが多くのアーキテクチャ/プラットフォーム/システムで動作するかどうかを決定するのは開発者の役割ですが、次のことに従う必要があります。基準。最終的にほとんどの開発者が従うことを開発者に従うようにしなさい。
Windowsには、最高経営責任者の財務指針に基づいていわゆるAPIという機能ライブラリがあります。 (多くの人が議論しますが、マイクロソフトは最も安いAFAIKについてです... posixはうまくやろうとしています。)
POSIXはAPIと同じです。金銭的な考慮事項なしにコードのみを連携させるように努力することです。これはマイクロソフトの概念ではなく、道路や高速道路があります。
それは私の考えです;-}
編集する:::
私の投稿を読んだ後、私は少し偏見があるかもしれないことに気づきました。指が事実を持って実行したので、それは意図ではありませんでしたが、私が言うことを意味し、偏見が取り除かれます...それが可能であれば...