Mengapa perusahaan masih menggunakan Visual Studio versi lama?


9

Saya mengerti mengapa C ++ digunakan. Bukan itu pertanyaannya.

Ketika saya menginstal game, biasanya Steam (saya hanya menggunakan Steam hari ini) akan menginstal C ++ 2005 Runtime yang dapat didistribusikan.

Pertanyaan saya adalah mengapa demikian? Apa alasan runtime yang dirilis lebih dari 8 tahun yang lalu masih lazim? Beberapa game yang saya instal baru-baru ini sedikit lebih tua, jadi dengan asumsi beberapa tahun waktu dev Anda dapat membuat case itu adalah standar yang dicoba dan diuji pada saat itu.

Mengapa perusahaan game tidak menggunakan runtime VC ++ versi yang lebih baru?


1
Ini tidak terasa seperti masalah dalam mencari jawaban. Mengapa Anda mengandaikan bahwa itu "disukai"?
Tetrad

Saya kira pertanyaan Anda benar-benar "Mengapa perusahaan masih menggunakan Visual Studio versi lama?" Lihat di sini untuk apa sebenarnya paket yang dapat didistribusikan kembali.
bobobobo

Jawaban:


20

Perusahaan tidak mau memperbarui VS mau tak mau. Kami menggunakan 2010SP1 misalnya pada proyek yang tidak berencana untuk dikirim selama beberapa tahun. Menggunakan versi yang lebih baru akan berarti membeli lisensi baru untuk IDE, kemungkinan membeli lisensi baru untuk plugin yang kami gunakan, dan tentu saja mempertaruhkan beberapa bug penghenti acara yang belum berhasil. Kami sudah membayar untuk 2010 dan tahu 2010 akan bekerja untuk kebutuhan kita.

Saya akui itu kadang mengganggu saya; Saya benar-benar ingin dukungan C ++ 11/14 terbaru, dukungan AMP, dan peningkatan optimasi, tetapi mentalitas "upgrade ke yang baru mengkilap" tidak cocok dengan proyek yang lebih besar dan lebih serius.

Sebagian besar entitas perusahaan sangat, sangat konservatif dalam memperbarui perangkat lunak apa pun, baik itu Visual Studio, Office, Windows, Perforce, apa pun. Sementara penggunaan Visual Studio 2005 cukup langka untuk gim saat ini, 2008 masih cukup umum. Sangat sedikit yang menggunakan 2012. Sangat mungkin bahwa serapan tahun 2012 tidak akan pernah terjadi secara massal dan bahwa versi populer berikutnya dari Visual Studio adalah 2013 atau 2014.

Lihat misalnya seberapa cepat distro Linux berorientasi antusias yang umum memperbarui versi dibandingkan dengan irama rilis Redhat Enterprise atau Ubuntu LTS. Pengguna rumahan dan hobbiest dapat lebih mudah membenarkan peningkatan dan penggemar sering menuntut mereka, tetapi bisnis biasanya ingin perubahan sesedikit mungkin.

Faktor lain hari ini adalah kompatibilitas XBox 360. Adalah konyol untuk membeli dan menginstal dua versi IDE / kompiler jika Anda memerlukannya secara khusus untuk kompatibilitas XBox. Versi VS berikutnya yang menjadi populer untuk gim akan sangat tergantung pada kompiler mana yang direkomendasikan oleh XBox One untuk versi rilis para devkitsnya (2012 digunakan untuk para devkits beta yang digunakan untuk meluncurkan gim-gim, tetapi 2013 mungkin akan direkomendasikan untuk post-the road) judul peluncuran).

Dalam hal runtime yang digunakan oleh kompiler, ini harus cocok persis dengan kompiler yang digunakan. Bagian dari ini adalah karena cara kerja C dan C ++. Antarmuka didefinisikan oleh file header, yang sebenarnya hanya cara mewah untuk melakukan cut-n-paste. Pertimbangkan pameran A:

void foo(char* name, int length);

Dan sekarang pertimbangkan pameran B:

void foo(int length, char* name);

Jika fungsi-fungsi C ini dimasukkan dalam dua versi runtimes yang berbeda, keduanya merupakan simbol _footetapi kode yang dikompilasi untuk menggunakan salah satu jelas tidak akan bekerja untuk yang lain. Sementara masalah kompatibilitas umumnya sedikit lebih terlibat dan halus, hasil akhirnya masih sama: kode yang dikompilasi dengan VS2005 akan memiliki header dari VS2005 yang hanya menggambarkan cara kerja runtime VS2005. VS2012 dikirimkan dengan tajuk yang sama sekali berbeda menargetkan runtime yang sama sekali berbeda.

Microsoft tidak mendukung penargetan versi lama karena itu akan sangat merepotkan. Mereka harus mengirim dan kemudian melanjutkan mempertahankan header lama selain runtime. Ada sedikit alasan untuk itu karena praktik penggunaan DLL yang baik di Windows memungkinkan pengembang untuk mencampur perpustakaan menggunakan runtimes yang berbeda. Jika Anda memiliki VS2012 Anda masih dapat menautkan ke perpustakaan yang dibuat dengan VS2005, selama Anda dan perpustakaan mengikuti beberapa aturan mudah.

Platform seperti GNU / Linux mengalami beberapa upaya untuk menghindari masalah ini, tetapi telah melewatinya, kadang-kadang pada tingkat yang jauh lebih dalam. Saya masih ingat transisi libc5 ke glibc, atau seringnya libstdc ++ istirahat (ini adalah salah satu alasan mengapa pengembang Linux / UNIX tetap relatif dingin pada topik C ++ selama bertahun-tahun).

Windows tidak disertakan dengan runtime C "generik" tingkat rendah yang dipanggil MSVCR.DLL, meskipun setiap versi kompiler menyertakan penggantinya sendiri misalnya MSVCRR110.DLL. Anda dapat berupaya menggunakan hanya versi generik tetapi tidak memiliki banyak fungsi, termasuk sebagian besar rutinitas dukungan C ++ yang berubah dengan setiap versi Visual Studio (dan dukungannya yang terus berkembang dari C ++). Biasanya tidak sepadan dengan usaha dan fungsionalitas yang hilang kecuali Anda benar-benar mencoba untuk membuat aplikasi tanpa ketergantungan (alat pemulihan, alat OS, alat keamanan, dan sebagainya kadang-kadang termasuk dalam kelas ini).

Singkatnya, setiap Visual Studio memiliki pustaka runtime sendiri, dan aplikasi yang dikompilasi dengan versi itu harus digunakan. Game biasanya akan ditulis menggunakan kompiler yang paling canggih dan karenanya membutuhkan runtime yang lebih lama.


Beberapa alasan lagi: kompiler baru merusak kompatibilitas dengan platform lama (mis. Pra-pembaruan 1 VS2012 tidak mendukung XP ); kompiler lama memiliki bug yang dimengerti sementara kompiler baru memiliki bug yang tidak diketahui (jika Anda masih di bawah khayalan kompiler menjadi bebas bug, bangun dan cium kopi! )
congusbongus

1

Sejauh yang saya tahu visual studio 2008 adalah versi terakhir yang mampu membangun aplikasi Windows Mobile dan Windows CE.

Saya perlu mendukung aplikasi yang berjalan pada perangkat CE sehingga VS2008 masih apa yang saya gunakan.

Untuk aplikasi Windows Desktop saya, saya menggunakan VS2010 Pro karena alasan sederhana daripada saya memiliki lisensi. Berhasil. Saya suka itu. dan saya tidak mengerti mengapa saya harus mengeluarkan lebih banyak uang untuk versi yang lebih baru yang sebenarnya tidak membuat aplikasi saya lebih baik.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.