ソフトウェアがWin32名を使用するのはなぜですか?


31

ソフトウェア/ライブラリがWindowsプラットフォームをサポートしている場合、ほとんどの場合、ディレクトリと変数の名前はwin32。これは、C / C ++プロジェクトで最も一般的です。MinGWプロジェクトのターゲットトリプルでさえ使用しwin32ます。これには理由がありますか?WindowsやMicrosoft Windowsのような適切な名前を使用しないのはなぜですか?命名の選択に法的な障害がありますか?

この質問はAPIに関するものではなく、使用中の命名規則に関するものです。ライブラリが他のオペレーティングシステムをサポートする場合、多くの場合、のような固有の名前linuxfreebsdまたは必要な特別なサポートを使用します。しかし、Windowsの場合、それは多くの場合省略されてwin32います。


11
32ビットアプリケーションは64ビットアプリケーションとは異なるためですか?
-Oded

52
Win32はWindows APIの名前で、Unix / LinuxシステムでのPOSIXの役割に似ています。この名前は32ビットプロセッサに由来している可能性がありますが、これは歴史的な工芸品と見なされるべきです。
アモン

4
binが従来、バイナリ実行可能ファイルを含むディレクトリを示すために使用されているのはなぜですか?それは単なる慣習です。win32は、32ビットのWindowsで実行されるプログラムの略記です。それをflimflamと呼ぶことを好むなら、あなたはそうすることを歓迎しますが、それはあなたのプロジェクトではあまり明確ではないかもしれません。
ニール

37
ここのコメントには多くの誤った情報があります... Win32は90年代初期から16ビットWindows 3と32ビット以降のバージョンを区別して以来、32ビットコードを暗示していません。Windowsの最新の64ビットバージョンは、ネイティブの64ビットAPIを実装し、「Win32」と呼ばれます。32ビットAPI と互換性があるため同じ名前を保持しますが、ネイティブの64ビット実装であり、64ビットライブラリがそれ自身を「Win32」と呼ぶのに最適です。「Win64」は、実際にはx86-64 / AMD64ではなくItaniumアーキテクチャを意味します。
コーディグレー

6
@Oded:win32は、Windowsが16ビットから32ビットに移行したときのホールドオーバーです。
whatsisname

回答:


61

Win32は、Windows APIの慣習的な名前です。このAPIは、アプリケーションがオペレーティングシステムとインターフェイスする方法を指定します。UnixのPOSIX標準にほぼ匹敵しますが、Win32はGUIや他の多くの機能もカバーしています。

Win32 APIは、32ビットWindowsインストールに限定されません。

以下からのWindowsデベロッパーセンター

Windowsアプリケーションプログラミングインターフェイス(API)を使用すると、各バージョンに固有の機能を利用しながら、Windowsのすべてのバージョンで正常に動作するデスクトップおよびサーバーアプリケーションを開発できます。

Windows APIは、すべてのWindowsベースのデスクトップアプリケーションで使用でき、一般的に32ビットおよび64ビットWindowsで同じ機能がサポートされています。プログラミング要素の実装の違いは、基盤となるオペレーティングシステムの機能に依存します。これらの違いは、APIドキュメントに記載されています。

これは、以前はWin32 APIと呼ばれていました。Windows APIという名前は、16ビットWindowsのルーツと64ビットWindowsでのサポートをより正確に反映しています。

Windows用の開発にWin32 APIを使用する必要はありません。代替手段は、.NETクラスまたはWindows RTインターフェイスです。

技術的にはWin64バリアントがあります。ただし、Win32とは主にデータモデル(ポインターのサイズ)が異なります。APIの明確なセットではありません。

Win64 API環境は、Win16からWin32への大きな移行とは異なり、Win32 API環境とほぼ同じです。Win32 APIとWin64 APIが結合され、Windows APIと呼ばれるようになりました。Windows APIを使用すると、同じソースコードをコンパイルして、32ビットWindowsまたは64ビットWindowsでネイティブに実行できます。アプリケーションを64ビットWindowsに移植するには、コードを再コンパイルするだけです。

Windowsヘッダーファイルは、32ビットコードと64ビットコードの両方で使用できるように変更されています。(ソース

Win64には実質的な違いがないため、ソースコードレベルでプロジェクトをターゲットとすることはほとんどありませんが、従来のwin64プロジェクトではwinapiなく新しいプロジェクトをターゲットにする場合がありwin32ます。しかし、すべての実用的な目的のために、これらの名前はすべて同じAPIを指します。


5
また、Win32 APIは他のオペレーティングシステム(OS / 2、ReactOSなど)でサポートされています。Win32APIの実装でもあるWineがあります。
ヨルグWミットタグ

6
@UnmannedPlayer、まあ、Win32はターゲットとなるプラットフォームの名前です。私たちが知っているように、Win32 Windowsです。上記の引用で説明されているように、今日では適切な名前は「Windows API」ですが、同じことを説明しています。
アモン

8
「アプリケーションを64ビットWindowsに移植するには、コードを再コンパイルするだけです。」... riiiiiiiiiiiiiiiiiiiiiight。
ダニエルカミルコザー

7
@DanielKamilKozarこれは見た目ほどクレイジーではありません。同じAPIです。確かに、それはマーケティング部だったかもしれません。話し中。しかし、少しの規律と十分なテストにより、移植可能なコードを書くことは基本的に難しくありません。重要な違いは、Win32では、int、long、およびポインター型が32ビットの大きさであることです。この仮定は、賢くしようとしたコードを壊すWin64ではもはや成り立ちません。しかし、コードが移植可能になると、Win32とWin64の違いは、コンパイラオプションに過ぎません。
アモン

4
@amon:残念ながら、Microsoftは何らかの奇妙な理由で32ビットアプリと64ビットアプリがレジストリの異なる領域を使用するようにし、すべての32ビットまたはすべてが64でない限り、関連アプリケーションのグループが設定を共有することを不必要に難しくしましたビット。回避策はありますが、同じストレージを使用するだけの簡単な方法はありません。
-supercat

29

Windows APIは30年以上前のもので、PCが16ビットだった頃から、32ビット、Win32、Win64が登場したためです。Windows開発にはプラットフォーム依存があり、アーキテクチャのOSライブラリ(dll)に一致するコードが必要です。

https://en.wikipedia.org/wiki/Windows_API#Versions

win32に対して構築されたWindowsアプリケーションは32ビットアーキテクチャで実行され、win32サブシステムを提供するWindowsオペレーティングシステムによって64ビットで実行されるため、win32アプリは最新の64ビットWindows OSで実行されます。

時間が経つにつれてwin32ビルドはどんどん少なくなりますが、win32はおそらくすぐに完全に消えることはないでしょう。win32ビルドが段階的に廃止されると、おそらくwin128が存在し、win64が新しいwin32になります。


3
新しいWindows APIはWinRTと呼ばれます。Win32と共通点が多くありますが、Win32(?)でWin32が行ったように、かなり異なります。
user253751

10
@immibis WinRTは、Microsoftが「新しい」ものにしたいと考えていたランタイムです。Windowsストアアプリのランタイムであり、Windows 8以降、Windows RT、およびWindows Phone 8以降で実行されます。ご存知のように、これらのアプリでは誰も好きではありません。
Metallkiller

この回答にWinRT APIを追加していただきありがとうございます。私はWin 8+の非デスクトップアプリが好きではない人々のグループに分類されると思います。しかし、MicrosoftはWin32の名前を「Windows API」に変更したようです。msdn.microsoft.com / en-us / library / windows / desktop / …既存のソフトウェアに「win32」参照が表示される理由のコンテキストで質問に答えました。など
トーマスカーライル

この回答をどのように改善できるかを提案するコメントなしで、先月にいくつかの投票を行いました。受け入れられた答えは、基本的に「win32という名前のため」と言うことで、「なぜwin32と呼ばれるのか」という質問に答えます。主なポイントは、16ビットがまだ大半であった当時、32ビット対応コンピュータを購入した人は、ハードウェアまたはソフトウェアアーキテクチャのどこでも「16」を見たり聞いたりすることを望まなかったからです。 。したがって、APIはそれに応じて命名され、おそらく32ビットが新しい16ビットになったこの10年については考えていません。
トーマスカーライル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.