Чому в програмному забезпеченні використовується ім'я 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
Чому бін традиційно використовується для позначення каталогу з бінарними виконуваними файлами? Це просто умовність. 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 також охоплює графічні інтерфейси та багато інших функцій.

API Win32 не обмежується 32-розрядними установками Windows.

З Центру розробки Windows :

Інтерфейс програмування додатків Windows (API) дозволяє розробляти настільні та серверні програми, які успішно працюють у всіх версіях Windows, використовуючи переваги функцій та можливостей, унікальних для кожної версії.

API Windows може використовуватися у всіх настільних додатках на базі Windows, і ті ж функції, як правило, підтримуються в 32-бітних та 64-бітних Windows. Відмінності в реалізації елементів програмування залежать від можливостей базової операційної системи. Ці відмінності відзначаються в документації API.

Примітка. Раніше він називався API Win32. Ім'я Windows API точніше відображає його коріння в 16-бітній Windows та підтримку в 64-бітних Windows.

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

Технічно є варіант Win64. Але він відрізняється від Win32 переважно в моделі даних (розмір покажчиків). Це не окремий набір API:

Навколишнє середовище Win64 API майже те саме, що і середовище API Win32 - на відміну від головного переходу від Win16 до Win32. API Win32 та Win64 тепер поєднуються і називаються API API. Використовуючи API Windows, ви можете зібрати один і той же вихідний код для початкового запуску або в 32-розрядної Windows, або в 64-бітної Windows. Щоб перенести додаток у 64-бітну Windows, просто перекопіюйте код.

Файли заголовків Windows змінені так, що ви можете використовувати їх як для 32-бітного, так і для 64-бітного коду. ( джерело )

Оскільки Win64 істотно не відрізняється, ви майже ніколи не побачите проектів, орієнтованих win64на рівень вихідного коду, хоча нові проекти можуть націлюватись winapiзамість традиційних win32. Але з усіх практичних цілей усі ці назви відносяться до одного API.


5
Також API Win32 є / підтримувався в інших операційних системах, наприклад, OS / 2, ReactOS, а потім є Wine, що також є реалізацією API Win32.
Йорг W Міттаг

6
@UnmannedPlayer, ну, Win32 - це назва платформи, на яку спрямовано. Win32 - це Windows, як ми його знаємо. Як пояснюється вищенаведена цитата, власне ім'я нині - "API API", але воно описує те саме.
amon

8
"Щоб перенести додаток у 64-розрядну Windows, просто перекопіюйте код." ... riiiiiiiiiiiiiiiiiiiiiight.
Даніель Каміль Козар

7
@DanielKamilKozar Це менш божевільний, ніж це звучить - це той самий API. Звичайно, це могло бути відділ маркетингу. говорячи. Але, маючи трохи дисципліни та достатнього тестування, писати портативний код не принципово складно. Важлива відмінність полягає в тому, що в Win32 типи int, long та pointer мають 32 біт. Це припущення більше не відповідає Win64, який порушує код, який намагався бути розумним. Але як тільки код стане переносним, різниця між Win32 та Win64 в кінцевому підсумку виявляється трохи більшою, ніж компілятор.
амон

4
@amon: На жаль, Microsoft вирішила з химерної причини змусити 32-розрядні та 64-розрядні програми використовувати різні області реєстру, що ускладнює групу пов’язаних програм для спільного використання налаштувань, якщо всі 32-бітні або всі 64 біт. Так, є обхідні шляхи, але жоден не простий, як просто використання одного і того ж сховища.
supercat

29

Оскільки API-інтерфейсу Windows більше 30 років і він існував, коли комп'ютери були 16-бітними, потім з'явилися 32-розрядні, потім Win32s, потім win64. Існує залежність від платформи в розробці Windows, і вам потрібен ваш код, щоб відповідати бібліотекам ОС (dll's) в архітектурі.

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

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

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


3
Новий API Windows називається WinRT. Він має багато спільного з Win32, але також багато іншого - як і Win32 з Win16 (?).
користувач253751

10
@immibis WinRT - це час виконання, який, напевно, хотів стати мікрософт "новим". Це час виконання програм для зберігання в Windows, які працюють у Windows 8+, Windows RT та Windows Phone 8+. Знаєте, за ці додатки ніхто не любить.
Metallkiller

Дякуємо вам обом за те, що додали API WinRT до цієї відповіді. Я думаю, я потрапляю до групи людей, які не люблять додатки Win 8+, які не є настільними. Але, схоже, Microsoft перейменувала Win32 на "API API": msdn.microsoft.com/en-us/library/windows/desktop/… Я відповів на питання в контексті того, чому ви бачите посилання "win32" у існуючому програмному забезпеченні пр.
Томас Карлайл

Кілька коротких відгуків за останній місяць без коментарів, що дозволяють запропонувати, як цю відповідь можна покращити. Прийнята відповідь в основному відповідає на питання "чому її називають win32", сказавши "тому, що вона названа win32". Я стою за своєю відповіддю, тому що головне в тому, що ще в той час, коли 16-розрядна досі була більшість, люди, які придбали 32-розрядні комп’ютери, не хотіли бачити чи чути "16" де-небудь у вашій апаратній чи програмній архітектурі. . Тож API був названий відповідно, ймовірно, не замислюючись про це десятиліття, коли 32-розрядний став новим 16-бітним.
Томас Карлайл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.