Tại sao phần mềm sử dụng tên Win32?


31

Nếu một phần mềm / thư viện có một số hỗ trợ cho nền tảng Windows thì hầu như họ luôn đặt tên cho các thư mục và biến của mình là win32. Điều này là phổ biến nhất trong các dự án C / C ++. Ngay cả mục tiêu sử dụng ba mục tiêu của dự án MinGWwin32 . Có một lý do cho điều này? Tại sao không sử dụng một tên thích hợp như Windows hoặc Microsoft Windows? Có một trở ngại pháp lý xung quanh sự lựa chọn đặt tên?

Câu hỏi này không phải là về API, mà là quy ước đặt tên được sử dụng. Khi một thư viện hỗ trợ các hệ điều hành khác, họ thường sử dụng các tên thích hợp như linux, freebsdhoặc bất kỳ hỗ trợ đặc biệt nào cần thiết. Nhưng khi nói đến Windows, nó thường được viết tắt là win32có vẻ hơi kỳ lạ so với phần còn lại.


11
Vì ứng dụng 32 bit khác với ứng dụng 64 bit?
Oded

52
Win32 là tên của API Windows , tương tự như vai trò của POSIX trên các hệ thống Unix / Linux. Tên này có thể có nguồn gốc từ bộ xử lý 32 bit, nhưng đó nên được coi là một vật phẩm lịch sử.
amon

4
Tại sao bin thường được sử dụng để chỉ ra một thư mục có tệp thực thi nhị phân? Đó chỉ là một quy ước. win32 chỉ là viết tắt cho một chương trình chạy trên windows với 32 bit. Nếu bạn thích gọi nó là flimflam, bạn có thể làm như vậy, mặc dù nó có thể không rõ ràng trong dự án của bạn.
Neil

37
Rất nhiều thông tin sai lệch trong các nhận xét ở đây ... Win32 không ngụ ý mã 32 bit kể từ đầu những năm 90, khi nó thu hút sự khác biệt giữa các phiên bản Windows 3 16 bit và 32 bit sau này. Các phiên bản Windows 64 bit hiện đại triển khai API 64 bit gốc và được gọi là "Win32". Nó giữ cùng tên vì nó tương thích với API 32 bit, nhưng đó là cách triển khai 64 bit gốc và sẽ rất hợp lý khi thư viện 64 bit tự gọi mình là "Win32". "Win64" thực sự có nghĩa là kiến ​​trúc Itanium, không phải x86-64 / AMD64.
Cody Grey

6
@Oded: win32 là một sự nắm giữ từ khi Windows chuyển từ 16 sang 32 bit.
whatsisname

Câu trả lời:


61

Win32 là tên thông thường cho API Windows. API này chỉ định cách các ứng dụng có thể giao tiếp với hệ điều hành. Nó gần như tương đương với tiêu chuẩn POSIX trên Unix, nhưng Win32 cũng bao gồm GUI và nhiều tính năng khác.

API Win32 không giới hạn cài đặt Windows 32 bit.

Từ Trung tâm Dev Windows :

Giao diện lập trình ứng dụng Windows (API) cho phép bạn phát triển các ứng dụng máy tính để bàn và máy chủ chạy thành công trên tất cả các phiên bản Windows trong khi tận dụng các tính năng và khả năng duy nhất cho mỗi phiên bản.

API Windows có thể được sử dụng trong tất cả các ứng dụng máy tính để bàn dựa trên Windows và các chức năng tương tự thường được hỗ trợ trên Windows 32 bit và 64 bit. Sự khác biệt trong việc thực hiện các yếu tố lập trình phụ thuộc vào khả năng của hệ điều hành cơ bản. Những khác biệt này được ghi nhận trong tài liệu API.

Lưu ý Điều này trước đây được gọi là API Win32. Tên Windows API phản ánh chính xác hơn nguồn gốc của nó trong Windows 16 bit và hỗ trợ của nó trên Windows 64 bit.

Bạn không phải sử dụng API Win32 để phát triển cho Windows. Các lựa chọn thay thế là các lớp .NET hoặc giao diện Windows RT.

Về mặt kỹ thuật là một biến thể Win64. Nhưng nó khác với Win32 chủ yếu ở mô hình dữ liệu (kích thước của con trỏ). Nó không phải là một bộ API riêng biệt:

Môi trường API Win64 gần giống như môi trường API Win32, không giống như sự thay đổi lớn từ Win16 sang Win32. API Win32 và Win64 hiện được kết hợp và được gọi là API Windows. Sử dụng API Windows, bạn có thể biên dịch cùng một mã nguồn để chạy tự nhiên trên Windows 32 bit hoặc Windows 64 bit. Để chuyển ứng dụng sang Windows 64 bit, chỉ cần biên dịch lại mã.

Các tệp tiêu đề Windows được sửa đổi để bạn có thể sử dụng chúng cho cả mã 32 bit và 64 bit. ( nguồn )

Vì Win64 không khác biệt đáng kể nên bạn sẽ hầu như không bao giờ thấy các dự án nhắm mục tiêu win64ở cấp mã nguồn, mặc dù các dự án mới hơn có thể nhắm mục tiêu winapithay vì truyền thống win32. Nhưng đối với tất cả các mục đích thực tế, tất cả các tên này đều đề cập đến cùng một API.


5
Ngoài ra, API Win32 được / được hỗ trợ trên các Hệ điều hành khác, ví dụ: OS / 2, ReactOS, và sau đó có Wine, cũng là một triển khai của API Win32.
Jörg W Mittag

6
@UnmnedPlayer, Chà, Win32 là tên của nền tảng đang được nhắm mục tiêu. Win32 Windows như chúng ta biết. Như trích dẫn ở trên giải thích tên thích hợp hiện nay là Windows Windows API, nhưng nó mô tả điều tương tự.
amon

8
"Để chuyển ứng dụng sang Windows 64 bit, chỉ cần biên dịch lại mã." ... riiiiiiiiiiiiiiiiiiiiiii.
Daniel Kamil Kozar

7
@DanielKamilKozar Điều này ít điên rồ hơn âm thanh - đó là cùng một API. Chắc chắn, đó có thể là phòng tiếp thị. nói. Nhưng với một chút kỷ luật và kiểm tra đầy đủ, về cơ bản không khó để viết mã di động. Sự khác biệt quan trọng là trong các loại Win32, int, long và con trỏ lớn 32 bit. Giả định đó không còn tồn tại dưới Win64, phá vỡ mã đã cố tỏ ra thông minh. Nhưng một khi mã đã được tạo thành di động, sự khác biệt giữa Win32 và Win64 cuối cùng sẽ ít hơn một tùy chọn trình biên dịch.
amon

4
@amon: Thật không may, Microsoft đã quyết định một số lý do kỳ quái để làm cho các ứng dụng 32 bit và 64 bit sử dụng các khu vực khác nhau của sổ đăng ký, khiến cho một nhóm các ứng dụng liên quan khó có thể chia sẻ cài đặt trừ khi tất cả là 32 bit hoặc tất cả là 64 bit Vâng, có cách giải quyết, nhưng không dễ dàng như chỉ đơn giản là sử dụng cùng một bộ lưu trữ.
supercat

29

Bởi vì API Windows đã hơn 30 năm tuổi và đã xuất hiện khi PC là 16 bit, sau đó 32 bit xuất hiện, sau đó là Win32, sau đó là win64. Có sự phụ thuộc nền tảng trong phát triển windows và bạn cần mã của mình để khớp với các thư viện hệ điều hành (dll's) trong kiến ​​trúc.

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

Một ứng dụng windows được xây dựng dựa trên win32 sẽ chạy trên các kiến ​​trúc 32 bit và sẽ chạy trên 64 bit nhờ hệ điều hành Windows cung cấp hệ thống con win32 để các ứng dụng win32 chạy trên hệ điều hành windows 64 bit hiện đại.

Trong khi các bản dựng win32 đang ngày càng ít đi theo thời gian, win32 có thể sẽ không hoàn toàn biến mất bất cứ lúc nào. Khi các bản dựng win32 được thực hiện, có thể sẽ có một win128 và win64 sẽ xuất hiện win32 mới.


3
API windows mới được gọi là WinRT. Nó có nhiều điểm tương đồng với Win32 nhưng cũng có nhiều điểm khác biệt - giống như Win32 đã làm với Win16 (?).
user253751

10
@immibis WinRT là thời gian chạy mà microsoft có thể muốn trở thành "cái mới". Đó là thời gian chạy cho các ứng dụng lưu trữ windows, chạy trên Windows 8+, Windows RT và Windows Phone 8+. Bạn biết đấy, đối với những ứng dụng đó không ai thích.
Metallkiller

Cảm ơn cả hai bạn đã thêm API WinRT vào câu trả lời này. Tôi đoán rằng tôi rơi vào nhóm những người không thích ứng dụng Win 8+ không dành cho máy tính để bàn. Nhưng có vẻ như Microsoft đã đổi tên Win32 thành "API Windows": msdn.microsoft.com/en-us/l Library / windows /desktop /. Tôi đã trả lời câu hỏi trong bối cảnh tại sao bạn thấy các tham chiếu "win32" trong phần mềm hiện có v.v.
Thomas

Một vài lượt tải xuống trong tháng qua mà không có ý kiến ​​để đề xuất cách trả lời này có thể được cải thiện. Câu trả lời được chấp nhận về cơ bản trả lời câu hỏi "tại sao lại gọi là win32" bằng cách nói "bởi vì nó được đặt tên là win32". Tôi đứng sau câu trả lời của tôi bởi vì vấn đề chính là vào thời trước khi 16-bit vẫn chiếm đa số, những người đã mua máy tính có khả năng 32 bit không muốn thấy hoặc nghe thấy "16" ở bất cứ đâu trong kiến ​​trúc phần cứng hoặc phần mềm của bạn . Vì vậy, API được đặt tên tương ứng, có lẽ không nghĩ về thập kỷ này khi 32 bit trở thành 16 bit mới.
Thomas Carlisle
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.