Warum verwendet Software den Win32-Namen?

31

Wenn eine Software / Bibliothek Unterstützung für die Windows-Plattform bietet, benennen sie ihre Verzeichnisse und Variablen fast immer als win32. Dies ist am häufigsten in C / C ++ - Projekten der Fall. Auch das MinGW- Projekt zielt auf eine Dreifachnutzung ab win32. Gibt es einen Grund dafür? Warum nicht einen richtigen Namen wie Windows oder Microsoft Windows verwenden? Gibt es einen rechtlichen Haken bei der Namensauswahl?

Diese Frage bezieht sich nicht auf die API, sondern auf die verwendete Namenskonvention. Wenn eine Bibliothek unterstützt andere Betriebssysteme verwenden sie oft die richtigen Namen wie linux, freebsdoder was auch immer besondere Unterstützung benötigt. Aber wenn es um Windows geht, wird es oft als win32etwas merkwürdig abgekürzt .

Unbemannter Spieler
quelle
11
Weil sich 32-Bit-Anwendungen von 64-Bit-Anwendungen unterscheiden?
Oded
52
Win32 ist der Name der Windows-API , ähnlich der Rolle von POSIX auf Unix / Linux-Systemen. Der Name stammt möglicherweise von 32-Bit-Prozessoren, dies sollte jedoch als historisches Artefakt angesehen werden.
amon
4
Warum wird bin traditionell verwendet, um ein Verzeichnis mit binären ausführbaren Dateien anzugeben? Es ist nur eine Konvention. win32 ist nur eine Abkürzung für ein Programm, das unter Windows mit 32 Bit ausgeführt wird. Wenn Sie es lieber als Flimflam bezeichnen möchten, können Sie dies gerne tun, auch wenn dies in Ihrem Projekt möglicherweise nicht klar ist.
Neil
37
Viele Fehlinformationen in den Kommentaren hier ... Win32 impliziert seit Anfang der 90er Jahre keinen 32-Bit-Code mehr, als zwischen 16-Bit-Versionen von Windows 3 und 32-Bit-Versionen später unterschieden wurde. Die modernen 64-Bit-Versionen von Windows implementieren eine native 64-Bit-API mit dem Namen "Win32". Es behält den gleichen Namen bei, da es mit der 32-Bit-API kompatibel ist, es ist jedoch eine native 64-Bit-Implementierung, und es wäre durchaus sinnvoll, wenn sich eine 64-Bit-Bibliothek "Win32" nennt. "Win64" würde eigentlich die Itanium-Architektur bedeuten, nicht x86-64 / AMD64.
Cody Grey
6
@Oded: win32 ist ein Überbleibsel von der Umstellung von Windows von 16 auf 32 Bit.
Whatsisname

Antworten:

61

Win32 ist der übliche Name für die Windows-API. Diese API gibt an, wie Anwendungen mit dem Betriebssystem kommunizieren können. Es ist in etwa mit dem POSIX-Standard unter Unix vergleichbar, aber Win32 deckt auch GUIs und viele andere Funktionen ab.

Die Win32-API ist nicht auf 32-Bit-Windows-Installationen beschränkt.

Aus dem Windows Dev Center :

Mit der Windows-Anwendungsprogrammierschnittstelle (API) können Sie Desktop- und Serveranwendungen entwickeln, die unter allen Windows-Versionen erfolgreich ausgeführt werden, und dabei die für jede Version spezifischen Funktionen und Möglichkeiten nutzen.

Die Windows-API kann in allen Windows-basierten Desktopanwendungen verwendet werden. Dieselben Funktionen werden im Allgemeinen unter 32-Bit- und 64-Bit-Windows unterstützt. Unterschiede in der Implementierung der Programmierelemente hängen von den Fähigkeiten des zugrunde liegenden Betriebssystems ab. Diese Unterschiede sind in der API-Dokumentation aufgeführt.

Hinweis: Dies wurde früher als Win32-API bezeichnet. Der Name Windows API spiegelt seine Wurzeln in 16-Bit-Windows und seine Unterstützung in 64-Bit-Windows genauer wider.

Sie müssen die Win32-API nicht verwenden, um für Windows zu entwickeln. Alternativen sind die .NET-Klassen oder die Windows RT-Schnittstelle.

Es gibt technisch eine Win64-Variante. Aber es unterscheidet sich von Win32 hauptsächlich im Datenmodell (der Größe der Zeiger). Es ist kein eindeutiger Satz von APIs:

Die Win64-API-Umgebung ist fast identisch mit der Win32-API-Umgebung - im Gegensatz zu der großen Umstellung von Win16 auf Win32. Die Win32- und Win64-APIs werden jetzt kombiniert und als Windows-API bezeichnet. Mit der Windows-API können Sie denselben Quellcode kompilieren, um ihn nativ unter 32-Bit-Windows oder 64-Bit-Windows auszuführen. Kompilieren Sie den Code einfach neu, um die Anwendung auf 64-Bit-Windows zu portieren.

Die Windows-Headerdateien werden so geändert, dass Sie sie sowohl für 32-Bit- als auch für 64-Bit-Code verwenden können. ( Quelle )

Da sich Win64 nicht wesentlich unterscheidet, werden Sie fast nie Projekte sehen, die win64auf Quellcodeebene abzielen , obwohl neuere Projekte möglicherweise auf winapitraditionelle Projekte abzielen win32. Aus praktischen Gründen beziehen sich alle diese Namen auf dieselbe API.

amon
quelle
5
Die Win32-API wurde / wird auch von anderen Betriebssystemen unterstützt, z. B. OS / 2, ReactOS und Wine, das auch eine Implementierung der Win32-API ist.
Jörg W Mittag
6
@ UnmannedPlayer, Nun, Win32 ist der Name der Plattform, auf die abgezielt wird. Win32 ist Windows wie wir es kennen. Wie das obige Zitat erklärt, lautet der eigentliche Name heutzutage „Windows API“, beschreibt aber dasselbe.
amon
8
"Um die Anwendung auf 64-Bit-Windows zu portieren, kompilieren Sie den Code einfach neu." ... riiiiiiiiiiiiiiiiiiight.
Daniel Kamil Kozar
7
@DanielKamilKozar Das ist weniger verrückt als es klingt - es ist die gleiche API. Sicher, das könnte die Marketingabteilung gewesen sein. Sprechen. Mit ein wenig Disziplin und ausreichenden Tests ist es jedoch nicht grundsätzlich schwierig, portablen Code zu schreiben. Der wichtige Unterschied besteht darin, dass in Win32 die Typen int, long und pointer 32 Bit groß sind. Diese Annahme gilt nicht mehr unter Win64, das Code bricht, der versucht hat, klug zu sein. Aber sobald der Code portierbar gemacht wurde, ist der Unterschied zwischen Win32 und Win64 nicht mehr als eine Compileroption.
amon
4
@amon: Leider hat sich Microsoft aus irgendeinem bizarren Grund entschieden, 32-Bit- und 64-Bit-Apps dazu zu bringen, unterschiedliche Bereiche der Registrierung zu verwenden. Dies macht es für eine Gruppe verwandter Anwendungen unnötig schwierig, Einstellungen gemeinsam zu nutzen, es sei denn, alle sind 32-Bit- oder alle 64-Bit-Anwendungen Bit. Ja, es gibt Workarounds, aber keine ist so einfach wie die Verwendung des gleichen Speichers.
Supercat
29

Da die Windows-API über 30 Jahre alt ist und es schon gab, als es 16-Bit-PCs gab, kamen 32-Bit-PCs, dann Win32s und dann win64. Die Windows-Entwicklung ist plattformabhängig, und Sie benötigen Ihren Code, damit er mit den Betriebssystembibliotheken (DLLs) in der Architektur übereinstimmt.

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

Eine Windows-Anwendung, die gegen Win32 erstellt wurde, wird auf 32-Bit-Architekturen und auf 64-Bit-Architekturen ausgeführt, da das Windows-Betriebssystem ein Win32-Subsystem bereitstellt, sodass Win32-Apps auf einem modernen 64-Bit-Windows-Betriebssystem ausgeführt werden können.

Während Win32-Builds mit der Zeit immer kürzer werden, wird Win32 wahrscheinlich nicht so schnell vollständig ausgeblendet. Wenn Win32-Builds auslaufen, wird es wahrscheinlich einen Win128 geben, und Win64 wird der neue Win32 sein.

Thomas Carlisle
quelle
3
Die neue Windows-API heißt WinRT. Es hat viel mit Win32 gemeinsam, ist aber auch anders - genau wie Win32 mit Win16 (?).
user253751
10
@immibis WinRT ist die Laufzeitumgebung, die Microsoft wahrscheinlich als "neue" Version haben wollte. Es ist die Laufzeit für Windows Store-Apps, die unter Windows 8+, Windows RT und Windows Phone 8+ ausgeführt werden. Sie wissen, für diese Apps mag niemand.
Metallkiller
Vielen Dank für das Hinzufügen der WinRT-API zu dieser Antwort. Ich schätze, ich gehöre zu der Gruppe von Leuten, die Win 8+ -Anwendungen, die keine Desktops sind, nicht mögen. Offenbar hat Microsoft Win32 jedoch in "Windows-API" umbenannt: msdn.microsoft.com/en-us/library/windows/desktop/… Ich habe die Frage im Zusammenhang mit der Anzeige von "win32" -Verweisen in vorhandener Software beantwortet etc.
Thomas Carlisle
Ein paar Abwertungen im letzten Monat ohne Kommentare, die darauf hinweisen, wie diese Antwort verbessert werden kann. Die akzeptierte Antwort beantwortet im Wesentlichen die Frage "Warum heißt es win32" mit "Weil es win32 heißt". Ich stehe hinter meiner Antwort, weil das Wichtigste ist, dass damals, als 16-Bit noch die Mehrheit war, Leute, die 32-Bit-fähige Computer gekauft haben, nirgendwo in Ihrer Hardware- oder Softwarearchitektur "16" sehen oder hören wollten . Die API wurde dementsprechend benannt und dachte wahrscheinlich nicht an dieses Jahrzehnt, als aus 32-Bit das neue 16-Bit wurde.
Thomas Carlisle