Pourquoi le logiciel utilise-t-il le nom Win32?

31

Si un logiciel / bibliothèque prend en charge la plate-forme Windows, il nomme presque toujours ses répertoires et variables comme win32. Ceci est plus répandu dans les projets C / C ++. Même la triple utilisation du projet MinGWwin32 . Y a-t-il une raison à cela? Pourquoi ne pas utiliser un nom propre comme Windows ou Microsoft Windows? Y a-t-il un accroc juridique autour du choix de la dénomination?

Cette question ne concerne pas l'API, mais la convention de dénomination utilisée. Lorsqu'un supports bibliothèque d' autres systèmes d'exploitation, ils utilisent souvent les noms propres comme linux, freebsdou tout le soutien nécessaire spécial. Mais quand il s'agit de Windows, il est souvent abrégé, win32ce qui semble un peu étrange par rapport au reste.

Joueur sans pilote
la source
11
Parce que les applications 32 bits sont différentes des applications 64 bits?
Oded
52
Win32 est le nom de l' API Windows , similaire au rôle de POSIX sur les systèmes Unix / Linux. Le nom peut provenir de processeurs 32 bits, mais cela devrait être considéré comme un artefact historique.
amon
4
Pourquoi bin est-il traditionnellement utilisé pour indiquer un répertoire avec des exécutables binaires? C'est juste une convention. win32 est juste un raccourci pour un programme fonctionnant sur Windows avec 32 bits. Si vous préférez l'appeler flimflam, vous pouvez le faire, bien que cela ne soit pas très clair dans votre projet.
Neil
37
Beaucoup de désinformation dans les commentaires ici ... Win32 n'a pas impliqué de code 32 bits depuis le début des années 90, quand il a fait une distinction entre Windows 3 16 bits et les versions ultérieures 32 bits. Les versions 64 bits modernes de Windows implémentent une API 64 bits native, et elle est appelée "Win32". Il conserve le même nom car il est compatible avec l'API 32 bits, mais c'est une implémentation 64 bits native, et il serait parfaitement logique qu'une bibliothèque 64 bits s'appelle "Win32". "Win64" signifierait en fait l'architecture Itanium, pas x86-64 / AMD64.
Cody Gray
6
@Oded: win32 est une conservation de lorsque Windows est passé de 16 à 32 bits.
whatsisname

Réponses:

61

Win32 est le nom habituel de l'API Windows. Cette API spécifie comment les applications peuvent s'interfacer avec le système d'exploitation. Il est à peu près comparable au standard POSIX sur Unix, mais Win32 couvre également les interfaces graphiques et de nombreuses autres fonctionnalités.

L'API Win32 n'est pas limitée aux installations Windows 32 bits.

Depuis le Centre de développement Windows :

L'interface de programmation d'applications (API) Windows vous permet de développer des applications de bureau et de serveur qui s'exécutent avec succès sur toutes les versions de Windows tout en tirant parti des fonctionnalités et des capacités propres à chaque version.

L'API Windows peut être utilisée dans toutes les applications de bureau Windows et les mêmes fonctions sont généralement prises en charge sur Windows 32 bits et 64 bits. Les différences dans la mise en œuvre des éléments de programmation dépendent des capacités du système d'exploitation sous-jacent. Ces différences sont notées dans la documentation de l'API.

Remarque Cela s'appelait auparavant l'API Win32. Le nom de l'API Windows reflète plus précisément ses racines dans Windows 16 bits et sa prise en charge sur Windows 64 bits.

Vous n'avez pas besoin d'utiliser l'API Win32 pour développer pour Windows. Les alternatives sont les classes .NET ou l'interface Windows RT.

Il existe techniquement une variante Win64. Mais il diffère de Win32 principalement dans le modèle de données (la taille des pointeurs). Ce n'est pas un ensemble distinct d'API:

L'environnement de l'API Win64 est presque le même que l'environnement de l'API Win32, contrairement au passage majeur de Win16 à Win32. Les API Win32 et Win64 sont désormais combinées et appelées API Windows. À l'aide de l'API Windows, vous pouvez compiler le même code source pour qu'il s'exécute en mode natif sous Windows 32 bits ou Windows 64 bits. Pour porter l'application sur Windows 64 bits, recompilez simplement le code.

Les fichiers d'en-tête Windows sont modifiés afin que vous puissiez les utiliser pour le code 32 bits et 64 bits. ( source )

Parce que Win64 n'est pas très différent, vous ne verrez presque jamais de projets ciblés win64au niveau du code source, bien que des projets plus récents puissent cibler winapiau lieu du traditionnel win32. Mais à toutes fins pratiques, tous ces noms se réfèrent à la même API.

Amon
la source
5
De plus, l'API Win32 est / était prise en charge sur d'autres systèmes d'exploitation, par exemple OS / 2, ReactOS, puis Wine, qui est également une implémentation de l'API Win32.
Jörg W Mittag
6
@UnmannedPlayer, Eh bien, Win32 est le nom de la plate-forme ciblée. Win32 est Windows tel que nous le connaissons. Comme l'explique la citation ci-dessus, le nom propre de nos jours est «API Windows», mais il décrit la même chose.
amon
8
"Pour porter l'application sur Windows 64 bits, recompilez simplement le code." ... riiiiiiiiiiiiiiiiiiiiiight.
Daniel Kamil Kozar
7
@DanielKamilKozar C'est moins fou qu'il n'y paraît - c'est la même API. Bien sûr, cela aurait pu être le département marketing. Parlant. Mais avec un peu de discipline et des tests suffisants, il n'est pas fondamentalement difficile d'écrire du code portable. La différence importante est que dans Win32, les types int, long et pointer sont de 32 bits. Cette hypothèse ne tient plus sous Win64 qui casse le code qui a essayé d'être intelligent. Mais une fois le code rendu portable, la différence entre Win32 et Win64 finit par être un peu plus qu'une option de compilation.
amon
4
@amon: Malheureusement, Microsoft a décidé, pour une raison bizarre, de faire en sorte que les applications 32 bits et 64 bits utilisent différentes zones du registre, ce qui complique inutilement le partage des paramètres par un groupe d'applications connexes, à moins qu'elles ne soient toutes 32 bits ou 64. bit. Oui, il existe des solutions de contournement, mais aucune n'est aussi simple que d'utiliser simplement le même stockage.
supercat
29

Parce que l'API Windows a plus de 30 ans et existe depuis que les PC étaient en 16 bits, puis 32 bits, puis Win32, puis Win64. Il y a une dépendance à la plate-forme dans le développement de Windows, et vous avez besoin que votre code corresponde aux bibliothèques du système d'exploitation (DLL) dans l'architecture.

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

Une application Windows construite sur Win32 s'exécutera sur des architectures 32 bits et s'exécutera sur 64 bits grâce au système d'exploitation Windows fournissant un sous-système win32 afin que les applications win32 s'exécutent sur un système d'exploitation Windows 64 bits moderne.

Alors que les versions de win32 deviennent de moins en moins au fil du temps, win32 ne disparaîtra probablement pas de sitôt. Lorsque les versions de win32 seront supprimées, il y aura probablement un win128, et win64 deviendra le nouveau win32.

Thomas Carlisle
la source
3
La nouvelle API Windows s'appelle WinRT. Il a beaucoup en commun avec Win32 mais aussi beaucoup différent - tout comme Win32 l'a fait avec Win16 (?).
user253751
10
@immibis WinRT est le runtime que Microsoft voulait probablement être le "nouveau". C'est le runtime pour les applications Windows Store, fonctionnant sur Windows 8+, Windows RT et Windows Phone 8+. Vous savez, pour ces applications que personne n'aime.
Metallkiller
Merci à vous deux d'avoir ajouté l'API WinRT à cette réponse. Je suppose que je fais partie du groupe de personnes qui n'aiment pas les applications Win 8+ sans bureau. Mais il semble que Microsoft ait renommé Win32 en "API Windows": msdn.microsoft.com/en-us/library/windows/desktop/… J'ai répondu à la question dans le contexte de la raison pour laquelle vous voyez des références "win32" dans les logiciels existants etc.
Thomas Carlisle
Quelques votes négatifs le mois dernier sans commentaires pour suggérer comment cette réponse peut être améliorée. La réponse acceptée répond essentiellement à la question "pourquoi est-il appelé win32" en disant "parce qu'il est nommé win32". Je soutiens ma réponse parce que l'essentiel est qu'à l'époque où le 16 bits était encore majoritaire, les personnes qui achetaient des ordinateurs compatibles 32 bits ne voulaient ni voir ni entendre "16" nulle part dans votre architecture matérielle ou logicielle . L'API a donc été nommée en conséquence, sans penser à cette décennie où le 32 bits est devenu le nouveau 16 bits.
Thomas Carlisle