Почему программное обеспечение использует имя Win32?

31

Если у программного обеспечения / библиотеки есть некоторая поддержка для платформы Windows, они почти всегда называют свои каталоги и переменные как win32. Это наиболее распространено в проектах C / C ++. Даже целевое тройное использование проекта MinGWwin32 . Есть причина для этого? Почему бы не использовать собственное имя, например, Windows или Microsoft Windows? Есть ли законная проблема с выбором имен?

Этот вопрос не об API, а об используемом соглашении об именах. Когда библиотека поддерживает другие операционные системы, они часто используют собственные имена, например linux, freebsdили какую-либо специальную поддержку, необходимую. Но когда дело доходит до Windows, его часто сокращают, win32что кажется немного странным по сравнению с остальными.

Беспилотный игрок
источник
11
Потому что 32-битные приложения отличаются от 64-битных приложений?
Одед
52
Win32 - это имя Windows API , похожее на роль POSIX в системах Unix / Linux. Название, возможно, произошло от 32-битных процессоров, но это следует рассматривать как исторический артефакт.
Амон
4
Почему bin традиционно используется для указания каталога с двоичными исполняемыми файлами? Это просто соглашение. win32 - это просто сокращение для программы, работающей в Windows с 32 битами. Если вы предпочитаете называть это flimflam, вы можете сделать это, хотя это может быть не совсем понятно в вашем проекте.
Нил
37
Много неверной информации в комментариях здесь ... Win32 не подразумевал 32-битный код с начала 90-х, когда он проводил различие между 16-битной Windows 3 и 32-битными более поздними версиями. В современных 64-разрядных версиях Windows реализован собственный 64-разрядный API, который называется «Win32». Он сохраняет то же имя, потому что он совместим с 32-битным API, но это родная 64-битная реализация, и для 64-битной библиотеки было бы разумно называть себя «Win32». «Win64» будет означать архитектуру Itanium, а не x86-64 / AMD64.
Коди Грэй,
6
@Oded: win32 является задержкой, когда Windows перешла с 16 на 32 бит.
whatsisname

Ответы:

61

Win32 - это обычное имя для Windows API. Этот API указывает, как приложения могут взаимодействовать с операционной системой. Это примерно сопоставимо со стандартом POSIX в Unix, но 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.

Вам не нужно использовать Win32 API для разработки под Windows. Альтернативами являются классы .NET или интерфейс Windows RT.

Там технически есть вариант Win64. Но он отличается от Win32 в основном моделью данных (размером указателей). Это не отдельный набор API:

Среда Win64 API почти такая же, как среда Win32 API, в отличие от основного перехода с Win16 на Win32. Win32 и Win64 API теперь объединены и называются Windows API. Используя Windows API, вы можете скомпилировать один и тот же исходный код для собственной работы в 32-битной или 64-битной Windows. Чтобы перенести приложение на 64-битную Windows, просто перекомпилируйте код.

Заголовочные файлы Windows изменены так, что вы можете использовать их как для 32-битного, так и для 64-битного кода. ( источник )

Поскольку Win64 существенно не отличается, вы почти никогда не увидите проекты, ориентированные win64на уровень исходного кода, хотя новые проекты могут предназначаться winapiвместо традиционных win32. Но для всех практических целей все эти имена относятся к одному и тому же API.

Амон
источник
5
Кроме того, Win32 API поддерживается / поддерживается в других операционных системах, например OS / 2, ReactOS, а также есть Wine, которая также является реализацией Win32 API.
Йорг Миттаг,
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-битные немного. Да, есть обходные пути, но нет ничего проще, чем просто использовать одно и то же хранилище.
суперкат
29

Поскольку Windows API более 30 лет, он существовал, когда ПК был 16-разрядным, затем появился 32-разрядный, затем Win32, затем win64. Существует зависимость от платформы при разработке Windows, и вам нужно, чтобы ваш код соответствовал библиотекам ОС (dll) в архитектуре.

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

Приложение Windows, созданное на основе Win32, будет работать на 32-разрядных архитектурах и работать на 64-разрядных системах благодаря операционной системе Windows, обеспечивающей подсистему win32, так что приложения win32 будут работать на современной 64-разрядной ОС Windows.

Хотя со временем сборок win32 становится все меньше и меньше, win32, вероятно, не скоро исчезнет полностью. Когда сборки win32 прекратят работу, вероятно, будет win128, а win64 станет новым win32.

Томас Карлайл
источник
3
Новый Windows API называется WinRT. Он имеет много общего с Win32, но также сильно отличается - так же, как Win32 сделал с Win16 (?).
user253751
10
@immibis WinRT - это среда выполнения, которую Microsoft, вероятно, хотела бы назвать «новой». Это среда выполнения для приложений Windows Store, работающих на 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-разрядной.
Томас Карлайл