เหตุใดซอฟต์แวร์จึงใช้ชื่อ Win32


31

หากซอฟต์แวร์ / ห้องสมุดมีการสนับสนุนบางอย่างสำหรับแพลตฟอร์ม Windows win32พวกเขามักจะตั้งชื่อไดเรกทอรีและตัวแปรของพวกเขาเป็น นี่เป็นที่แพร่หลายมากที่สุดในโครงการ C / C ++ แม้MinGWwin32โครงการเป้าหมายการใช้สาม มีเหตุผลสำหรับสิ่งนี้หรือไม่? ทำไมไม่ใช้ชื่อที่เหมาะสมเช่น Windows หรือ Microsoft Windows มีอุปสรรค์ทางกฎหมายรอบตัวเลือกการตั้งชื่อหรือไม่

คำถามนี้ไม่เกี่ยวกับ API แต่ใช้หลักการตั้งชื่อ เมื่อห้องสมุดสนับสนุนระบบปฏิบัติการอื่น ๆ ที่พวกเขามักจะใช้ชื่อที่เหมาะสมเช่นlinux, freebsdหรืออะไรก็ตามที่สนับสนุนพิเศษที่จำเป็น แต่เมื่อพูดถึง Windows มักจะมีคำย่อwin32ที่ดูแปลก ๆ เมื่อเทียบกับที่เหลือ


11
เพราะแอพพลิเคชั่น 32 บิตนั้นแตกต่างจากแอพพลิเคชั่น 64 บิตใช่ไหม
Oded

52
Win32 เป็นชื่อของWindows APIคล้ายกับบทบาทของ POSIX ในระบบ Unix / Linux ชื่ออาจมีต้นกำเนิดมาจากโปรเซสเซอร์ 32- บิต แต่ควรถูกมองว่าเป็นสิ่งประดิษฐ์ทางประวัติศาสตร์
amon

4
เหตุใด bin จึงถูกใช้แบบดั้งเดิมเพื่อระบุไดเรกทอรีด้วยไบนารีที่ปฏิบัติการได้? มันเป็นเพียงแค่การประชุม win32 เป็นเพียงชวเลขสำหรับโปรแกรมที่ทำงานบน windows ที่มี 32 บิต หากคุณต้องการเรียกว่า flimflam คุณสามารถทำเช่นนั้นได้แม้ว่ามันอาจจะไม่ชัดเจนในโครงการของคุณ
Neil

37
ข้อมูลที่ผิดในความคิดเห็นที่นี่มากมาย ... Win32 ไม่ได้บอกเป็นนัย ๆ ว่าเป็นรหัส 32- บิตตั้งแต่ต้นยุค 90 เมื่อมันดึงความแตกต่างระหว่าง 16- บิตวินโดวส์ 3 และ 32- บิตรุ่นต่อมา Windows รุ่น 64 บิตที่ทันสมัยใช้ API แบบ 64 บิตดั้งเดิมและเรียกว่า "Win32" มันคงชื่อเดิมไว้เพราะมันเข้ากันได้กับ API 32- บิต แต่มันเป็นการนำ 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 ไม่ จำกัด เฉพาะการติดตั้ง Windows แบบ 32 บิต

จากWindows Dev Center :

อินเทอร์เฟซการเขียนโปรแกรมประยุกต์ Windows API (API) ช่วยให้คุณพัฒนาโปรแกรมประยุกต์เดสก์ท็อปและเซิร์ฟเวอร์ที่ทำงานบน Windows ทุกรุ่นได้อย่างประสบความสำเร็จในขณะที่ใช้ประโยชน์จากคุณสมบัติและความสามารถเฉพาะของแต่ละรุ่น

Windows API สามารถใช้งานได้ในแอพพลิเคชั่นเดสก์ท็อปที่ใช้ Windows ทั้งหมดและโดยทั่วไปฟังก์ชั่นเดียวกันนั้นรองรับบน Windows แบบ 32 บิตและ 64 บิต ความแตกต่างในการใช้งานองค์ประกอบการเขียนโปรแกรมขึ้นอยู่กับความสามารถของระบบปฏิบัติการพื้นฐาน ความแตกต่างเหล่านี้ถูกบันทึกไว้ในเอกสาร API

หมายเหตุ ซึ่งก่อนหน้านี้เรียกว่า Win32 API ชื่อ Windows API นั้นสะท้อนถึงรากของมันอย่างแม่นยำมากขึ้นใน Windows 16 บิตและรองรับบน Windows 64 บิต

คุณไม่จำเป็นต้องใช้ Win32 API เพื่อพัฒนาสำหรับ Windows ทางเลือกคือคลาส. NET หรืออินเทอร์เฟซ Windows RT

ในทางเทคนิคมีตัวแปร Win64 แต่แตกต่างจาก Win32 ส่วนใหญ่อยู่ในตัวแบบข้อมูล (ขนาดของพอยน์เตอร์) ไม่ใช่ชุด API ที่แตกต่าง:

สภาพแวดล้อม Win64 API เกือบจะเหมือนกับสภาพแวดล้อม Win32 API ซึ่งแตกต่างจากการเปลี่ยนแปลงครั้งใหญ่จาก Win16 เป็น Win32 Win32 และ Win64 APIs รวมกันแล้วและเรียกว่า Windows API การใช้ Windows API คุณสามารถรวบรวมซอร์สโค้ดเดียวกันเพื่อเรียกใช้บน Windows แบบ 32 บิตหรือ Windows 64 บิต ในการพอร์ตแอปพลิเคชันไปยัง Windows 64 บิตเพียงแค่คอมไพล์โค้ดใหม่

ไฟล์ส่วนหัวของ Windows ได้รับการแก้ไขเพื่อให้คุณสามารถใช้กับทั้งรหัส 32 บิตและ 64 บิต (ที่มา )

เพราะ Win64 ไม่แตกต่างกันอย่างมีนัยสำคัญที่คุณเกือบจะไม่เคยเห็นโครงการที่กำหนดเป้าหมายwin64ในระดับซอร์สโค้ดแม้ว่าโครงการใหม่อาจกำหนดเป้าหมายแทนที่จะเป็นแบบดั้งเดิมwinapi win32แต่สำหรับการใช้งานจริงทั้งหมดชื่อเหล่านี้อ้างถึง API เดียวกัน


5
นอกจากนี้ Win32 API รองรับ / ได้รับการสนับสนุนในระบบปฏิบัติการอื่นเช่น OS / 2, ReactOS และจากนั้นก็มีไวน์ซึ่งเป็นการนำไปใช้ของ Win32 API
Jörg W Mittag

6
@UnmannedPlayer, Well, Win32 เป็นชื่อของแพลตฟอร์มที่ถูกกำหนดเป้าหมาย Win32 เป็น Windows ที่เรารู้จัก เนื่องจากคำพูดข้างต้นอธิบายชื่อที่เหมาะสมในปัจจุบันคือ“ Windows API” แต่มันอธิบายในสิ่งเดียวกัน
amon

8
"ในการย้ายแอปพลิเคชันไปยัง Windows 64 บิตให้คอมไพล์รหัสใหม่" ... riiiiiiiiiiiiiiiiiiiiiiiight
Daniel Kamil Kozar

7
@DanielKamilKozar นี่มันบ้าไปกว่านี้ - มันเป็น API เดียวกัน แน่นอนว่านั่นอาจเป็นฝ่ายการตลาด การพูด แต่ด้วยวินัยเล็กน้อยและการทดสอบที่เพียงพอจึงไม่ยากที่จะเขียนโค้ดแบบพกพา ความแตกต่างที่สำคัญคือใน Win32, int, long และ pointer types มีขนาดใหญ่ 32 บิต สมมติฐานนั้นไม่ได้อยู่ภายใต้ Win64 อีกต่อไปซึ่งจะทำลายรหัสที่พยายามฉลาด แต่เมื่อโค้ดถูกทำให้เป็นแบบพกพาความแตกต่างระหว่าง Win32 และ Win64 นั้นจะกลายเป็นมากกว่าตัวเลือกคอมไพเลอร์
amon

4
@ มอน: โชคไม่ดีที่ไมโครซอฟท์ตัดสินใจด้วยเหตุผลที่แปลกประหลาดบางประการที่ทำให้แอพ 32- บิตและ 64- บิตใช้พื้นที่ต่าง ๆ ของรีจีสทรีทำให้มันยากสำหรับกลุ่มของแอพพลิเคชั่นที่เกี่ยวข้องเพื่อแบ่งปันการตั้งค่า บิต. ใช่มีวิธีแก้ไขปัญหา แต่ก็ไม่มีวิธีง่าย ๆ เพียงแค่ใช้ที่เก็บข้อมูลเดียวกัน
supercat

29

เนื่องจาก Windows API มีอายุ 30+ ขึ้นไปและมีการใช้งานเมื่อพีซีมีขนาด 16 บิตจากนั้น 32- บิตก็มาพร้อมกับ Win32s และ win64 มีการพึ่งพาแพลตฟอร์มในการพัฒนา windows และคุณต้องการรหัสของคุณเพื่อให้ตรงกับไลบรารี OS (dll's) ในสถาปัตยกรรม

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

แอปพลิเคชัน windows ที่สร้างขึ้นกับ win32 จะทำงานบนสถาปัตยกรรม 32 บิตและจะทำงานบน 64 บิตโดยอาศัยระบบปฏิบัติการ Windows ที่ให้ระบบย่อย win32 เพื่อให้แอป win32 ทำงานบนระบบปฏิบัติการ Windows 64 บิตที่ทันสมัย

ในขณะที่การสร้าง win32 กำลังลดลงเรื่อย ๆ เมื่อเวลาผ่านไป win32 อาจจะไม่หายไปในเวลาอันรวดเร็ว เมื่อ win32 builds สิ้นสุดลงอาจมี win128 และ win64 จะมาเป็น win32 ใหม่


3
API หน้าต่างใหม่นี้เรียกว่า WinRT มันมีหลายอย่างที่เหมือนกันกับ Win32 แต่ก็แตกต่างกันมากเช่นเดียวกับ Win32 ที่ทำกับ Win16 (?)
user253751

10
@immibis WinRT เป็นรันไทม์ที่ Microsoft อาจต้องการเป็น "ใหม่" มันเป็นรันไทม์สำหรับ windows store apps รันบน 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" ในซอฟต์แวร์ที่มีอยู่ ฯลฯ
โทมัสคาร์ไลเซิล

downvotes ไม่กี่เดือนที่ผ่านมาโดยไม่มีความคิดเห็นเพื่อแนะนำวิธีการปรับปรุงคำตอบนี้ คำตอบที่ได้รับการยอมรับนั้นตอบคำถามว่า "ทำไมจึงเรียกว่า win32" โดยการพูดว่า "เพราะชื่อ win32" ฉันยืนอยู่ข้างหลังคำตอบของฉันเพราะประเด็นหลักคือในวันที่ 16- บิตยังเป็นส่วนใหญ่ผู้ที่ซื้อคอมพิวเตอร์ที่มีความสามารถ 32- บิตไม่ต้องการเห็นหรือได้ยิน "16" ที่ใดก็ได้ในสถาปัตยกรรมฮาร์ดแวร์หรือซอฟต์แวร์ของคุณ . ดังนั้นชื่อ API จึงอาจไม่ได้คิดเกี่ยวกับทศวรรษนี้เมื่อ 32 บิตกลายเป็น 16 บิตใหม่
Thomas Carlisle
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.