Perché il software utilizza il nome Win32?


31

Se un software / libreria ha un supporto per la piattaforma Windows, quasi sempre nominano le loro directory e variabili come win32. Questo è prevalente nei progetti C / C ++. Anche gli usi tripli target del progetto MinGWwin32 . C'è una ragione per questo? Perché non usare un nome proprio come Windows o Microsoft Windows? C'è un problema legale nella scelta del nome?

Questa domanda non riguarda l'API, ma la convenzione di denominazione in uso. Quando una libreria supporta altri sistemi operativi, spesso usano nomi propri come linux, freebsdo qualsiasi supporto speciale necessario. Ma quando si tratta di Windows, è spesso abbreviato in quanto win32sembra un po 'strano rispetto al resto.


11
Perché le applicazioni a 32 bit sono diverse dalle applicazioni a 64 bit?
Oded,

52
Win32 è il nome dell'API di Windows , simile al ruolo di POSIX su sistemi Unix / Linux. Il nome potrebbe aver avuto origine da processori a 32 bit, ma questo dovrebbe essere visto come un artefatto storico.
amon,

4
Perché bin viene usato tradizionalmente per indicare una directory con eseguibili binari? È solo una convention. win32 è solo una scorciatoia per un programma in esecuzione su Windows a 32 bit. Se preferisci chiamarlo flimflam, sei invitato a farlo, anche se potrebbe non essere molto chiaro nel tuo progetto.
Neil,

37
Molta disinformazione nei commenti qui ... Win32 non ha implicato il codice a 32 bit dai primi anni '90, quando ha fatto una distinzione tra Windows 3 a 16 bit e versioni successive a 32 bit. Le moderne versioni a 64 bit di Windows implementano un'API nativa a 64 bit e si chiama "Win32". Mantiene lo stesso nome perché è compatibile con l'API a 32 bit, ma è un'implementazione nativa a 64 bit e avrebbe perfettamente senso che una libreria a 64 bit si autodefinisse "Win32". "Win64" significherebbe in realtà l'architettura Itanium, non x86-64 / AMD64.
Cody Grey,

6
@Oded: win32 è un holdover da quando Windows è passato da 16 a 32 bit.
whatsisname

Risposte:


61

Win32 è il nome abituale per l'API di Windows. Questa API specifica come le applicazioni possono interfacciarsi con il sistema operativo. È approssimativamente paragonabile allo standard POSIX su Unix, ma Win32 copre anche le GUI e molte altre funzionalità.

L'API Win32 non è limitata alle installazioni di Windows a 32 bit.

Da Windows Dev Center :

L'API (Application Programming Interface) di Windows consente di sviluppare applicazioni desktop e server che funzionano correttamente su tutte le versioni di Windows sfruttando le funzionalità e le funzionalità esclusive di ciascuna versione.

L'API di Windows può essere utilizzata in tutte le applicazioni desktop basate su Windows e le stesse funzioni sono generalmente supportate su Windows a 32 e 64 bit. Le differenze nell'implementazione degli elementi di programmazione dipendono dalle capacità del sistema operativo sottostante. Queste differenze sono riportate nella documentazione dell'API.

Nota Questa era precedentemente chiamata API Win32. Il nome API di Windows riflette in modo più preciso le sue radici in Windows a 16 bit e il suo supporto su Windows a 64 bit.

Non è necessario utilizzare l'API Win32 per sviluppare per Windows. Le alternative sono le classi .NET o l'interfaccia di Windows RT.

Tecnicamente esiste una variante Win64. Ma differisce da Win32 principalmente nel modello di dati (la dimensione dei puntatori). Non è un insieme distinto di API:

L'ambiente dell'API Win64 è quasi uguale all'ambiente dell'API Win32, a differenza del passaggio principale da Win16 a Win32. Le API Win32 e Win64 sono ora combinate e chiamate API di Windows. Utilizzando l'API di Windows, è possibile compilare lo stesso codice sorgente per l'esecuzione nativa su Windows a 32 bit o Windows a 64 bit. Per eseguire il porting dell'applicazione su Windows a 64 bit, è sufficiente ricompilare il codice.

I file di intestazione di Windows vengono modificati in modo da poterli utilizzare sia per il codice a 32 che a 64 bit. ( fonte )

Poiché Win64 non è sostanzialmente diverso, non vedrai quasi mai progetti mirati win64a livello di codice sorgente, anche se i progetti più recenti potrebbero essere mirati winapianziché quelli tradizionali win32. Ma per tutti gli scopi pratici tutti questi nomi si riferiscono alla stessa API.


5
Inoltre, l'API Win32 è / è stata supportata su altri sistemi operativi, ad esempio OS / 2, ReactOS, e poi c'è Wine, che è anche un'implementazione dell'API Win32.
Jörg W Mittag,

6
@UnmannedPlayer, Beh, Win32 è il nome della piattaforma presa di mira. Win32 è Windows come lo conosciamo. Come la citazione sopra spiega al giorno d'oggi il nome proprio è "API di Windows", ma descrive la stessa cosa.
amon,

8
"Per eseguire il porting dell'applicazione su Windows a 64 bit, basta ricompilare il codice." ... riiiiiiiiiiiiiiiiiiiiiight.
Daniel Kamil Kozar,

7
@DanielKamilKozar Questo è meno folle di quanto sembri: è la stessa API. Certo, quello potrebbe essere stato il reparto marketing. A proposito di. Ma con un po 'di disciplina e prove sufficienti, non è fondamentalmente difficile scrivere codice portatile. La differenza importante è che in Win32, int, long e tipi di puntatore sono grandi a 32 bit. Tale presupposto non è più valido in Win64, che rompe il codice che ha cercato di essere intelligente. Ma una volta che il codice è stato reso portatile, la differenza tra Win32 e Win64 finisce per essere poco più che un'opzione di compilatore.
amon,

4
@amon: Sfortunatamente, Microsoft ha deciso, per qualche bizzarro motivo, di fare in modo che le app a 32 e 64 bit utilizzino aree diverse del registro, rendendo inutilmente difficile per un gruppo di applicazioni correlate condividere le impostazioni a meno che non siano tutte a 32 bit o tutte a 64 po. Sì, ci sono soluzioni alternative, ma nessuna è così semplice come usare semplicemente la stessa memoria.
supercat

29

Poiché l'API di Windows ha più di 30 anni ed è esistita quando i PC erano a 16 bit, quindi sono arrivati ​​a 32 bit, quindi Win32s, quindi win64. Esiste una dipendenza dalla piattaforma nello sviluppo di Windows ed è necessario che il codice corrisponda alle librerie del sistema operativo (DLL) nell'architettura.

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

Un'applicazione Windows costruita su win32 verrà eseguita su architetture a 32 bit e verrà eseguita su 64 bit in virtù del sistema operativo Windows che fornisce un sottosistema win32 in modo che le app win32 vengano eseguite su un moderno sistema operativo Windows a 64 bit.

Mentre le build di win32 stanno diventando sempre meno col passare del tempo, probabilmente win32 non svanirà completamente in qualunque momento presto. Quando le build di Win32 terminano, probabilmente ci sarà una win128 e win64 arriverà la nuova win32.


3
La nuova API di Windows si chiama WinRT. Ha molto in comune con Win32 ma anche molto diverso - proprio come ha fatto Win32 con Win16 (?).
user253751

10
@immibis WinRT è il runtime che probabilmente Microsoft voleva essere il "nuovo". È il runtime per le app di Windows Store, in esecuzione su Windows 8+, Windows RT e Windows Phone 8+. Sai, per quelle app non piace a nessuno.
Metallkiller,

Grazie ad entrambi per aver aggiunto l'API WinRT a questa risposta. Immagino di rientrare nel gruppo di persone che non amano le app non desktop di Win 8+. Ma sembra che Microsoft abbia rinominato Win32 come "API di Windows": msdn.microsoft.com/en-us/library/windows/desktop/… Ho risposto alla domanda nel contesto del motivo per cui vedi riferimenti "win32" nel software esistente ecc.
Thomas Carlisle,

Alcuni voti negativi del mese scorso senza commenti per suggerire come migliorare questa risposta. La risposta accettata sostanzialmente risponde alla domanda "perché si chiama win32" dicendo "perché si chiama win32". Sono dietro la mia risposta perché il punto principale è che ai tempi in cui i 16 bit erano ancora la maggioranza, le persone che acquistavano computer con capacità a 32 bit non volevano vedere o ascoltare "16" ovunque nell'architettura hardware o software . Quindi l'API è stata nominata di conseguenza, probabilmente non pensando a questo decennio quando 32 bit è diventato il nuovo 16 bit.
Thomas Carlisle,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.