เหตุใด บริษัท ต่างๆจึงยังคงใช้ Visual Studio เวอร์ชันเก่าจริงๆ


9

ฉันเข้าใจว่าทำไมใช้ C ++ นั่นไม่ใช่สิ่งที่คำถามนี้เกี่ยวกับ

เมื่อฉันติดตั้งเกมโดยทั่วไป Steam (ฉันใช้ Steam ในวันนี้เท่านั้น) จะติดตั้ง C ++ 2005 Runtime ที่สามารถแจกจ่ายได้

คำถามของฉันคือทำไมในกรณีนี้ อะไรคือสาเหตุที่ runtime ที่วางจำหน่ายในช่วง 8 ปีที่ผ่านมายังคงแพร่หลายอยู่? เกมบางเกมที่ฉันติดตั้งเมื่อเร็ว ๆ นี้มีอายุมากกว่าเล็กน้อยดังนั้นหากคุณใช้เวลาสักสองสามปีในการพัฒนาเกมให้เป็นมาตรฐานและทดสอบในขณะนั้น

เหตุใด บริษัท เกมถึงไม่ใช้ VC ++ เวอร์ชันใหม่กว่า


1
สิ่งนี้ไม่รู้สึกเหมือนมีปัญหาในการค้นหาคำตอบ ทำไมคุณคิดว่ามันเป็น "ที่ต้องการ"?
Tetrad

ฉันเดาคำถามของคุณว่า "ทำไม บริษัท ยังคงใช้ Visual Studio เวอร์ชันเก่าจริง ๆ " ดูที่นี่สำหรับสิ่งที่เป็นแพ็คเกจที่แจกจ่ายซ้ำได้จริง ๆ
bobobobo

คำตอบ:


20

บริษัท ต่าง ๆ ไม่อัพเกรด VS โดยจำใจ เราใช้ 2010SP1 เป็นตัวอย่างในโครงการที่ไม่ได้วางแผนที่จะจัดส่งเป็นเวลาหลายปี การใช้เวอร์ชันที่ใหม่กว่านั้นหมายถึงการซื้อใบอนุญาตใหม่ให้กับ IDE ความเป็นไปได้ในการซื้อใบอนุญาตใหม่สำหรับปลั๊กอินที่เราใช้ เราจ่ายเงินไปแล้วสำหรับปี 2010 และรู้ว่า 2010 จะทำงานได้ตามความต้องการของเรา

ฉันยอมรับว่ามันทำให้ฉันรำคาญเวลา; ฉันต้องการการสนับสนุน C ++ 11/14 ใหม่ล่าสุดการสนับสนุน AMP และการเพิ่มประสิทธิภาพที่ปรับปรุง แต่ความคิดแบบ"อัพเกรดเป็นเงาใหม่"นั้นไม่สอดคล้องกับโครงการขนาดใหญ่และจริงจังมากขึ้น

องค์กรส่วนใหญ่มีความระมัดระวังในการอัพเดทซอฟต์แวร์ใด ๆ ไม่ว่าจะเป็น Visual Studio, Office, Windows, Perforce หรืออะไรก็ตาม ในขณะที่การใช้งาน Visual Studio 2005 ค่อนข้างหายากสำหรับเกมวันนี้ 2008 ยังคงเป็นเรื่องปกติ มีน้อยมากที่กำลังใช้งานปี 2012 เป็นไปได้ค่อนข้างมากที่การรับปี 2012 จะไม่เกิดขึ้นมากมายและ Visual Studio รุ่นยอดนิยมรุ่นต่อไปจะเป็น 2013 หรือ 2014

ดูตัวอย่างว่าลินุกซ์ distro ที่มุ่งเน้นผู้ที่สนใจทั่วไปจะทำการอัพเดตเวอร์ชันอย่างไรเมื่อเทียบกับจังหวะการเปิดตัวของ Redhat Enterprise หรือ Ubuntu LTS ผู้ใช้ตามบ้านและผู้ที่มีความเอนเอียงสามารถปรับการอัพเกรดและผู้ที่ชื่นชอบได้อย่างง่ายดายมักจะโห่ร้องสำหรับพวกเขา แต่โดยทั่วไปธุรกิจต้องการการเปลี่ยนแปลงเล็กน้อยที่สุดเท่าที่จะทำได้

ปัจจัยอื่นในวันนี้คือความเข้ากันได้ของ XBox 360 เป็นเรื่องโง่ที่จะซื้อและติดตั้ง IDE / คอมไพเลอร์สองรุ่นหากคุณต้องการหนึ่งสำหรับ XBox ที่เข้ากันได้ VS รุ่นต่อไปใดที่เป็นที่นิยมสำหรับเกมส่วนใหญ่ขึ้นอยู่กับคอมไพเลอร์ที่ XBox One แนะนำสำหรับรุ่นที่วางจำหน่ายของ devkits (2012 ใช้สำหรับ devkits รุ่นเบต้าที่ใช้สำหรับเกมเปิดตัว เปิดตัวชื่อเรื่อง)

ในแง่ของ runtimes ที่คอมไพเลอร์ใช้ต้องตรงกับคอมไพเลอร์ที่ใช้งานอยู่ ส่วนหนึ่งเป็นเพราะการทำงานของ C และ C ++ อินเทอร์เฟซถูกกำหนดโดยไฟล์ส่วนหัวซึ่งเป็นเพียงวิธีแฟนซีในการทำ cut-n-paste พิจารณาการจัดแสดง A:

void foo(char* name, int length);

และตอนนี้ให้พิจารณาการจัดแสดง B:

void foo(int length, char* name);

หากฟังก์ชั่น C เหล่านี้รวมอยู่ใน runtimes ที่ต่างกันสองเวอร์ชั่นพวกเขาทั้งคู่จะเป็นสัญลักษณ์ _fooแต่โค้ดที่คอมไพล์แล้วเพื่อใช้อันใดอันหนึ่งจะไม่ทำงานกับอีกอันอย่างชัดเจน ในขณะที่ปัญหาความเข้ากันได้โดยทั่วไปจะมีความเกี่ยวข้องและลึกซึ้งขึ้นเล็กน้อยผลลัพธ์ที่ได้ยังคงเหมือนเดิม: โค้ดที่คอมไพล์ด้วย VS2005 จะมีส่วนหัวจาก VS2005 ซึ่งอธิบายการทำงานของ VS2005 รันไทม์เท่านั้น VS2012 มาพร้อมกับส่วนหัวที่แตกต่างกันอย่างสิ้นเชิงโดยกำหนดเป้าหมายรันไทม์ที่แตกต่างกันอย่างสิ้นเชิง

Microsoft ไม่สนับสนุนการกำหนดเป้าหมายเวอร์ชั่นเก่าเนื่องจากอาจเป็นเรื่องเจ็บปวด พวกเขาต้องการจัดส่งแล้วดำเนินการบำรุงรักษาส่วนหัวเก่าเพิ่มเติมจาก runtimes มีเหตุผลค่อนข้างน้อยเนื่องจากวิธีปฏิบัติการใช้ DLL ที่ดีใน Windows ช่วยให้นักพัฒนาสามารถผสมไลบรารีโดยใช้ runtimes ที่แตกต่างกัน หากคุณมี VS2012 คุณยังคงสามารถเชื่อมโยงกับไลบรารีที่ทำกับ VS2005 ได้ตราบใดที่คุณและห้องสมุดปฏิบัติตามกฎง่ายๆ

แพลตฟอร์มอย่าง GNU / Linux ต้องผ่านความพยายามบางอย่างเพื่อหลีกเลี่ยงปัญหาเหล่านี้ แต่ผ่านบางครั้งในระดับที่ลึกกว่ามาก ฉันยังคงจำ libc5 เป็นการเปลี่ยน glibc หรือการหยุด libstdc ++ บ่อยครั้ง (นี่คือเหตุผลหนึ่งที่นักพัฒนา Linux / UNIX ยังคงค่อนข้างเย็นในหัวข้อของ C ++ ในช่วงหลายปีที่ผ่านมา)

Windows จัดส่งด้วยรันไทม์ C "ระดับทั่วไป" ในระดับต่ำที่เรียกว่าMSVCR.DLLแม้ว่าคอมไพเลอร์แต่ละเวอร์ชันจะมีการแทนที่ของตัวเองเช่นMSVCRR110.DLLแม้ว่ารุ่นของคอมไพเลอร์แต่ละรวมเช่นการเปลี่ยนของตัวเองคุณสามารถใช้ความพยายามเฉพาะรุ่นทั่วไป แต่ไม่มีฟังก์ชันการทำงานมากมายรวมถึงส่วนสนับสนุน C ++ ส่วนใหญ่ที่เปลี่ยนแปลงกับ Visual Studio แต่ละเวอร์ชัน (และการสนับสนุนที่พัฒนาอย่างต่อเนื่องของ C ++) โดยทั่วไปแล้วจะไม่คุ้มค่ากับความพยายามและการสูญเสียฟังก์ชันการทำงานเว้นแต่คุณจะพยายามสร้างแอปพลิเคชันแบบไม่ต้องพึ่งพาศูนย์ (เครื่องมือการกู้คืนเครื่องมือระบบปฏิบัติการเครื่องมือรักษาความปลอดภัยและอื่น ๆ บางครั้งก็ตกอยู่ในคลาสนี้)

กล่าวโดยย่อ Visual Studio แต่ละรายการมีไลบรารีรันไทม์ของตัวเองและแอปพลิเคชันที่คอมไพล์ด้วยเวอร์ชันนั้นต้องใช้ โดยทั่วไปแล้วเกมจะเขียนโดยใช้คอมไพเลอร์ที่ทันสมัยที่สุดและจะต้องใช้รันไทม์รุ่นเก่ากว่า


อีกสองสามเหตุผล: คอมไพเลอร์รุ่นใหม่จะทำลายความเข้ากันได้กับแพลตฟอร์มเก่า (เช่นการอัปเดตล่วงหน้า 1 VS2012 ไม่รองรับ XP ) คอมไพเลอร์เก่าได้ดีเข้าใจข้อบกพร่องในขณะที่คอมไพเลอร์ใหม่มีข้อบกพร่องที่ไม่รู้จัก (ถ้าคุณยังคงอยู่ภายใต้ความเข้าใจผิดของคอมไพเลอร์เป็นข้อผิดพลาดฟรีที่ตื่นขึ้นมาและกลิ่นกาแฟ! )
congusbongus

1

เท่าที่ฉันรู้ visual studio 2008 เป็นเวอร์ชั่นสุดท้ายที่สามารถสร้างแอพพลิเคชั่น Windows Mobile และ Windows CE

ฉันต้องการสนับสนุนแอพที่ทำงานบนอุปกรณ์ CE ดังนั้น VS2008 ยังคงเป็นสิ่งที่ฉันใช้

สำหรับแอพ Windows Desktop ของฉันฉันใช้ VS2010 Pro ด้วยเหตุผลง่ายกว่าที่ฉันเป็นเจ้าของใบอนุญาต มันได้ผล. ฉันชอบมัน. และฉันไม่เห็นว่าทำไมฉันควรแยกเงินเพิ่มเติมสำหรับรุ่นใหม่ที่ไม่ได้ทำให้แอปของฉันดีขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.