Mengapa perangkat lunak menggunakan nama Win32?

31

Jika suatu perangkat lunak / perpustakaan memiliki beberapa dukungan untuk platform Windows mereka hampir selalu menamai direktori dan variabel mereka sebagai win32. Ini paling lazim dalam proyek C / C ++. Bahkan target triple project MinGW menggunakan win32. Apakah ada alasan untuk ini? Mengapa tidak menggunakan nama yang tepat seperti Windows atau Microsoft Windows? Apakah ada hambatan hukum di sekitar pilihan penamaan?

Pertanyaan ini bukan tentang API, tetapi konvensi penamaan yang digunakan. Ketika perpustakaan mendukung sistem operasi lain, mereka sering menggunakan nama yang tepat seperti linux, freebsdatau apa pun dukungan khusus yang diperlukan. Tetapi ketika datang ke Windows, sering disingkat menjadi win32yang agak aneh dibandingkan dengan yang lain.

Pemain tak berawak
sumber
11
Karena aplikasi 32bit berbeda dari aplikasi 64bit?
Oded
52
Win32 adalah nama Windows API , mirip dengan peran POSIX pada sistem Unix / Linux. Nama itu mungkin berasal dari prosesor 32-bit, tetapi itu harus dilihat sebagai artefak bersejarah.
amon
4
Mengapa bin secara tradisional digunakan untuk menunjukkan direktori dengan executable biner? Itu hanya sebuah konvensi. win32 hanya singkatan untuk program yang berjalan di windows dengan 32 bit. Jika Anda lebih suka menyebutnya flimflam, Anda dapat melakukannya, meskipun mungkin tidak terlalu jelas dalam proyek Anda.
Neil
37
Banyak informasi yang salah dalam komentar di sini ... Win32 tidak menyiratkan kode 32-bit sejak awal 90-an, ketika itu membedakan antara versi 16-bit Windows 3 dan 32-bit kemudian. Versi 64-bit Windows modern menerapkan API 64-bit asli, dan itu disebut "Win32". Itu menyimpan nama yang sama karena kompatibel dengan API 32-bit, tetapi ini adalah implementasi asli 64-bit, dan akan sangat masuk akal jika pustaka 64-bit menyebut dirinya "Win32". "Win64" sebenarnya akan berarti arsitektur Itanium, bukan x86-64 / AMD64.
Cody Grey
6
@Oded: win32 adalah peninggalan dari ketika Windows beralih dari 16 ke 32 bit.
whatsisname

Jawaban:

61

Win32 adalah nama adat untuk API Windows. API ini menentukan bagaimana aplikasi dapat berinteraksi dengan sistem operasi. Ini kira-kira sebanding dengan standar POSIX di Unix, tetapi Win32 juga mencakup GUI dan banyak fitur lainnya.

Win32 API tidak terbatas pada instalasi Windows 32-bit.

Dari Windows Dev Center :

Antarmuka pemrograman aplikasi Windows (API) memungkinkan Anda mengembangkan aplikasi desktop dan server yang berjalan dengan sukses di semua versi Windows sambil memanfaatkan fitur dan kemampuan yang unik untuk setiap versi.

Windows API dapat digunakan di semua aplikasi desktop berbasis Windows, dan fungsi yang sama umumnya didukung pada Windows 32-bit dan 64-bit. Perbedaan dalam implementasi elemen pemrograman tergantung pada kemampuan sistem operasi yang mendasarinya. Perbedaan-perbedaan ini dicatat dalam dokumentasi API.

Catatan Ini sebelumnya disebut Win32 API. Nama Windows API lebih akurat mencerminkan akarnya di Windows 16-bit dan dukungannya pada Windows 64-bit.

Anda tidak harus menggunakan API Win32 untuk mengembangkan untuk Windows. Alternatif adalah kelas .NET atau antarmuka Windows RT.

Secara teknis ada varian Win64. Tetapi berbeda dari Win32 sebagian besar dalam model data (ukuran pointer). Ini bukan kumpulan API yang berbeda:

Lingkungan API Win64 hampir sama dengan lingkungan API Win32 — tidak seperti perubahan besar dari Win16 ke Win32. Win32 dan Win64 API sekarang digabungkan dan disebut Windows API. Menggunakan Windows API, Anda dapat mengkompilasi kode sumber yang sama untuk berjalan secara native di Windows 32-bit atau Windows 64-bit. Untuk mem-port aplikasi ke Windows 64-bit, cukup kompilasi ulang kodenya.

File header Windows dimodifikasi sehingga Anda dapat menggunakannya untuk kode 32-bit dan 64-bit. ( sumber )

Karena Win64 tidak jauh berbeda, Anda hampir tidak akan pernah melihat proyek menargetkan win64pada tingkat kode sumber, meskipun proyek yang lebih baru mungkin menargetkan winapibukan tradisional win32. Tetapi untuk semua tujuan praktis semua nama ini merujuk ke API yang sama.

amon
sumber
5
Juga, Win32 API adalah / didukung pada Sistem Operasi lain, misalnya OS / 2, ReactOS, dan kemudian ada Wine, yang juga merupakan implementasi dari Win32 API.
Jörg W Mittag
6
@UnmannedPlayer, Yah, Win32 adalah nama platform yang ditargetkan. Win32 adalah Windows seperti yang kita kenal. Seperti kutipan di atas menjelaskan nama yang tepat saat ini adalah "Windows API", tetapi itu menggambarkan hal yang sama.
amon
8
"Untuk mem-port aplikasi ke Windows 64-bit, cukup kompilasi ulang kodenya." ... riiiiiiiiiiiiiiiiiiiiiight.
Daniel Kamil Kozar
7
@DanielKamilKozar Ini kurang gila daripada kedengarannya - itu adalah API yang sama. Tentu, itu mungkin departemen pemasaran. berbicara. Tetapi dengan sedikit disiplin dan pengujian yang cukup, pada dasarnya tidak sulit untuk menulis kode portabel. Perbedaan penting adalah bahwa di Win32, tipe int, panjang, dan pointer 32 bit besar. Asumsi itu tidak lagi berlaku di bawah Win64 yang memecah kode yang mencoba menjadi pintar. Tapi begitu kode telah dibuat portabel, perbedaan antara Win32 dan Win64 akhirnya menjadi sedikit lebih dari opsi kompiler.
amon
4
@amon: Sayangnya, Microsoft memutuskan untuk beberapa alasan aneh untuk membuat aplikasi 32-bit dan 64-bit menggunakan area registri yang berbeda, sehingga sulit bagi sekelompok aplikasi terkait untuk berbagi pengaturan kecuali semuanya 32 bit atau semuanya 64 sedikit. Ya, ada beberapa solusi, tetapi tidak ada yang semudah hanya menggunakan penyimpanan yang sama.
supercat
29

Karena Windows API berumur 30+ tahun dan telah ada ketika PC berusia 16-bit, kemudian 32-bit muncul, kemudian Win32s, kemudian win64. Ada ketergantungan platform dalam pengembangan windows, dan Anda perlu kode Anda untuk mencocokkan perpustakaan OS (dll) dalam arsitektur.

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

Aplikasi windows yang dibangun melawan win32 akan berjalan pada arsitektur 32-bit, dan akan berjalan pada 64-bit berdasarkan sistem operasi Windows yang menyediakan subsistem win32 sehingga aplikasi win32 berjalan pada OS windows 64-bit yang modern.

Sementara win32 build menjadi semakin berkurang seiring berjalannya waktu, win32 mungkin tidak akan pudar dalam waktu dekat. Ketika win32 build dilakukan secara bertahap, kemungkinan akan ada win128, dan win64 akan menjadi win32 baru.

Thomas Carlisle
sumber
3
API windows baru disebut WinRT. Ini memiliki banyak kesamaan dengan Win32 tetapi juga sangat berbeda - seperti halnya Win32 dengan Win16 (?).
user253751
10
@immibis WinRT adalah runtime yang microsoft mungkin ingin menjadi "baru". Ini adalah runtime untuk aplikasi windows store, berjalan pada Windows 8+, Windows RT dan Windows Phone 8+. Anda tahu, untuk aplikasi itu tidak ada yang suka.
Metallkiller
Terima kasih Anda berdua telah menambahkan API WinRT ke jawaban ini. Saya kira saya termasuk dalam kelompok orang yang tidak menyukai aplikasi non-desktop Win 8+. Tetapi tampaknya Microsoft telah mengubah nama Win32 sebagai "Windows API": msdn.microsoft.com/en-us/library/windows/desktop/... Saya menjawab pertanyaan dalam konteks mengapa Anda melihat referensi "win32" di perangkat lunak yang ada dll
Thomas Carlisle
Beberapa downvotes bulan lalu tanpa komentar untuk menyarankan bagaimana jawaban ini dapat ditingkatkan. Jawaban yang diterima pada dasarnya menjawab pertanyaan "mengapa disebut win32" dengan mengatakan "karena dinamai win32". Saya berdiri di belakang jawaban saya karena poin utamanya adalah ketika 16-bit masih menjadi mayoritas, orang yang membeli komputer berkemampuan 32-bit tidak ingin melihat atau mendengar "16" di mana pun dalam arsitektur perangkat keras atau perangkat lunak Anda . Jadi API dinamai demikian, mungkin tidak memikirkan dekade ini ketika 32-bit menjadi 16-bit baru.
Thomas Carlisle