¿Por qué el software usa el nombre Win32?

31

Si un software / biblioteca tiene algún soporte para la plataforma Windows, casi siempre nombran sus directorios y variables como win32. Esto es más frecuente en proyectos C / C ++. Incluso el triple objetivo del proyecto MinGW utiliza win32. ¿Hay alguna razón para esto? ¿Por qué no usar un nombre propio como Windows o Microsoft Windows? ¿Existe un inconveniente legal en torno a la elección del nombre?

Esta pregunta no se trata de la API, sino de la convención de nomenclatura en uso. Cuando una biblioteca es compatible con otros sistemas operativos, a menudo usan los nombres adecuados linux, freebsdo cualquier soporte especial que se necesite. Pero cuando se trata de Windows, a menudo se abrevia como lo win32que parece un poco extraño en comparación con el resto.

Jugador no tripulado
fuente
11
¿Porque las aplicaciones de 32 bits son diferentes de las aplicaciones de 64 bits?
Finalizado el
52
Win32 es el nombre de la API de Windows , similar al rol de POSIX en sistemas Unix / Linux. El nombre puede haberse originado en procesadores de 32 bits, pero eso debería ser visto como un artefacto histórico.
amon
44
¿Por qué bin se usa tradicionalmente para indicar un directorio con ejecutables binarios? Es solo una convención. win32 es solo una abreviatura de un programa que se ejecuta en Windows con 32 bits. Si prefiere llamarlo flimflam, puede hacerlo, aunque puede que no sea muy claro en su proyecto.
Neil
37
Mucha información errónea en los comentarios aquí ... Win32 no ha implicado código de 32 bits desde principios de los 90, cuando distinguió entre Windows 3 de 16 bits y versiones posteriores de 32 bits. Las versiones modernas de 64 bits de Windows implementan una API nativa de 64 bits, y se llama "Win32". Mantiene el mismo nombre porque es compatible con la API de 32 bits, pero es una implementación nativa de 64 bits, y tendría mucho sentido que una biblioteca de 64 bits se llame a sí misma "Win32". "Win64" en realidad significaría la arquitectura Itanium, no x86-64 / AMD64.
Cody Gray
66
@Oded: win32 es un remanente de cuando Windows hizo la transición de 16 a 32 bits.
cuál es el

Respuestas:

61

Win32 es el nombre habitual para la API de Windows. Esta API especifica cómo las aplicaciones pueden interactuar con el sistema operativo. Es más o menos comparable con el estándar POSIX en Unix, pero Win32 también cubre GUI y muchas otras características.

La API Win32 no se limita a las instalaciones de Windows de 32 bits.

Desde el Centro de desarrollo de Windows :

La interfaz de programación de aplicaciones (API) de Windows le permite desarrollar aplicaciones de escritorio y servidor que se ejecutan con éxito en todas las versiones de Windows mientras aprovecha las características y capacidades únicas de cada versión.

La API de Windows se puede usar en todas las aplicaciones de escritorio basadas en Windows, y las mismas funciones generalmente son compatibles con Windows de 32 bits y 64 bits. Las diferencias en la implementación de los elementos de programación dependen de las capacidades del sistema operativo subyacente. Estas diferencias se observan en la documentación de la API.

Nota: Esto anteriormente se llamaba la API Win32. El nombre API de Windows refleja con mayor precisión sus raíces en Windows de 16 bits y su soporte en Windows de 64 bits.

No tiene que usar la API Win32 para desarrollar para Windows. Las alternativas son las clases .NET o la interfaz de Windows RT.

Técnicamente hay una variante Win64. Pero difiere de Win32 principalmente en el modelo de datos (el tamaño de los punteros). No es un conjunto distinto de API:

El entorno de la API Win64 es casi el mismo que el entorno de la API Win32, a diferencia del cambio principal de Win16 a Win32. Las API Win32 y Win64 ahora se combinan y se llaman API de Windows. Con la API de Windows, puede compilar el mismo código fuente para que se ejecute de forma nativa en Windows de 32 bits o Windows de 64 bits. Para portar la aplicación a Windows de 64 bits, simplemente vuelva a compilar el código.

Los archivos de encabezado de Windows se modifican para que pueda usarlos tanto para el código de 32 bits como para el de 64 bits. ( fuente )

Debido a que Win64 no es sustancialmente diferente, casi nunca verá proyectos dirigidos win64a nivel de código fuente, aunque los proyectos más nuevos podrían dirigirse en winapilugar de los tradicionales win32. Pero a todos los efectos prácticos, todos estos nombres se refieren a la misma API.

amon
fuente
55
Además, la API Win32 es / fue compatible con otros sistemas operativos, por ejemplo, OS / 2, ReactOS, y luego está Wine, que también es una implementación de la API Win32.
Jörg W Mittag
66
@UnmannedPlayer, Bueno, Win32 es el nombre de la plataforma a la que se dirige. Win32 es Windows tal como lo conocemos. Como la cita anterior explica que el nombre correcto hoy en día es "API de Windows", pero describe lo mismo.
amon
8
"Para portar la aplicación a Windows de 64 bits, simplemente vuelva a compilar el código" ... riiiiiiiiiiiiiiiiiiiiiight.
Daniel Kamil Kozar
77
@DanielKamilKozar Esto es menos loco de lo que parece: es la misma API. Claro, ese podría haber sido el departamento de marketing. Hablando. Pero con un poco de disciplina y pruebas suficientes, no es fundamentalmente difícil escribir código portátil. La diferencia importante es que en Win32, los tipos int, long y puntero son de 32 bits. Esa suposición ya no se cumple en Win64, que rompe el código que intentó ser inteligente. Pero una vez que el código se ha hecho portátil, la diferencia entre Win32 y Win64 termina siendo poco más que una opción de compilación.
amon
44
@amon: Desafortunadamente, Microsoft decidió por alguna extraña razón hacer que las aplicaciones de 32 y 64 bits utilicen diferentes áreas del registro, lo que hace innecesariamente difícil que un grupo de aplicaciones relacionadas comparta configuraciones a menos que todas sean de 32 bits o todas sean de 64 bits. poco. Sí, hay soluciones alternativas, pero ninguna tan fácil como simplemente usar el mismo almacenamiento.
supercat
29

Debido a que la API de Windows tiene más de 30 años y existía cuando las PC tenían 16 bits, luego aparecieron 32 bits, luego Win32s y luego win64. Existe una dependencia de la plataforma en el desarrollo de Windows, y necesita su código para que coincida con las bibliotecas del sistema operativo (dll) en la arquitectura.

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

Una aplicación de Windows que se compila contra win32 se ejecutará en arquitecturas de 32 bits y se ejecutará en 64 bits en virtud del sistema operativo Windows que proporciona un subsistema win32 para que las aplicaciones win32 se ejecuten en un sistema operativo Windows moderno de 64 bits.

Si bien las compilaciones de win32 se vuelven cada vez menos a medida que pasa el tiempo, win32 probablemente no se desvanecerá por completo en el corto plazo. Cuando las compilaciones de win32 desaparezcan, probablemente habrá un win128, y win64 vendrá como el nuevo win32.

Thomas Carlisle
fuente
3
La nueva API de Windows se llama WinRT. Tiene mucho en común con Win32 pero también muy diferente, al igual que Win32 hizo con Win16 (?).
user253751
10
@immibis WinRT es el tiempo de ejecución que Microsoft probablemente quería ser el "nuevo". Es el tiempo de ejecución para las aplicaciones de la tienda de Windows, que se ejecuta en Windows 8+, Windows RT y Windows Phone 8+. Ya sabes, para esas aplicaciones que a nadie le gustan.
Metallkiller
Gracias a ambos por agregar la API WinRT a esta respuesta. Supongo que pertenezco al grupo de personas a las que no les gustan las aplicaciones Win 8+ que no son de escritorio. Pero parece que Microsoft ha cambiado el nombre de Win32 como "API de Windows": msdn.microsoft.com/en-us/library/windows/desktop/… Respondí la pregunta en el contexto de por qué ves referencias "win32" en el software existente etc.
Thomas Carlisle
Unos pocos votos negativos el mes pasado sin comentarios para sugerir cómo se puede mejorar esta respuesta. La respuesta aceptada básicamente responde a la pregunta "por qué se llama win32" diciendo "porque se llama win32". Respaldo mi respuesta porque el punto principal es que en el día en que 16 bits todavía era la mayoría, las personas que compraron computadoras con capacidad de 32 bits no querían ver ni escuchar "16" en ninguna parte de su arquitectura de hardware o software. . Por lo tanto, la API fue nombrada en consecuencia, probablemente sin pensar en esta década cuando 32 bits se convirtió en el nuevo 16 bits.
Thomas Carlisle