Bersaing dengan C ++ untuk pemrograman game

21

Saya ingin tahu mengapa C ++ sangat populer untuk pengembangan game, dan bukan bahasa lain. Saya tahu Anda dapat membuat kode yang sangat cepat dengannya, tetapi apa sebenarnya yang membuatnya populer?

Apakah hanya karena cepat? Apakah ini fitur lain dalam bahasa ini, seperti paradigma OO atau portabilitas? Apakah karena semua perpustakaan yang telah dibuat dari waktu ke waktu? Atau kombinasi dari semua alasan ini (dan lainnya)?

Jika seseorang bisa mengisyaratkan saya tentang hal ini, saya akan sangat senang. :-)

KasMA1990
sumber
7
Kecepatan adalah alasan yang cukup bagi saya, terutama karena keluhan setiap orang tentang bahasa tidak benar-benar masuk akal bagi saya.
Benjamin Lindley
Tebakan cepat: Sebagian besar game ditulis untuk Windows. Bahasa C dan C ++ telah sangat didukung oleh Microsoft. Dan akhirnya C ++ lebih disukai karena OOP dan template metaprogramming.
@ Matt Terima kasih, tidak tahu itu ada. Bisakah saya memindahkan topik di sana, atau haruskah saya menghapus yang ini dan membuatnya kembali di sana?
Ini sudah ditanyakan beberapa kali.
Zan Lynx
1
@Benjamin: Kalau begitu saya berani mengatakan Anda belum cukup menulis dalam C ++, atau Anda belum pernah menggunakan bahasa yang lebih ekspresif seperti Python (atau bahkan C # dengan LINQ). Namun, bahkan jika karena alasan gila Anda lebih suka menulis kode 20 baris untuk apa yang bisa dilakukan oleh banyak bahasa lain dalam 1, tata bahasa C ++ yang sangat buruk berarti bahwa program membutuhkan waktu lebih lama untuk dikompilasi daripada yang seharusnya, dan alat IDE yang tepat (refactoring, dll.) lebih sulit, jika bukan tidak mungkin, untuk dibuat.
BlueRaja - Danny Pflughoeft

Jawaban:

29

Berbagai alasan:

  • Besar yang Anda lewatkan: Ini portabel, menyederhanakan port mesin game Anda ke iOS, XBOX, PS3, apa pun
  • Itu cepat
  • Semua SDK mendukungnya secara asli
  • Banyak perpustakaan tersedia
  • Semua orang yang menulis game mengetahuinya, jadi mudah untuk menyewa pengembang game berpengalaman untuk tim Anda
  • Sangat mudah untuk menanamkan bahasa skrip mesin game seperti Lua

sumber
Baiklah, terima kasih atas jawaban Anda semuanya, Anda sudah membahas semua yang saya butuhkan. :-)
KasMA1990
14

Ada beberapa alasan, yang ingin saya sebutkan di samping apa yang dibesarkan @Graham.

  • Legacy Code - banyak studio memiliki banyak kode C ++, mengacu pada pustaka Anda.
  • C ++ benar-benar assembler tingkat tinggi, dan memiliki akses langsung ke perangkat keras (setepat yang Anda bisa berjalan di atas Sistem Operasi setidaknya) dan cukup cepat. Jika Anda mau, di C ++ Anda bisa langsung turun ke bahasa assembly untuk kontrol level instruksi (bukan karena itu selalu bijaksana, tidak mungkin dengan Java, C #, Python, dll)
  • DirectX dan OpenGL secara asli mendukung C ++, sebagian besar bahasa lain memiliki "binding" ke pustaka yang mendasarinya melalui lapisan perantara, itu tidak berarti mereka tidak cepat atau tidak dapat melakukan banyak hal yang sama, tetapi menambahkan lapisan perangkat lunak antara gim dan perangkat keras Anda.
  • Seperti @Graham menyebutkan, banyak programmer tahu itu, sehingga mudah untuk menemukan pengembang yang berpengalaman, dan juga cukup portabel, dibandingkan dengan C # yang terjebak pada .NET Framework (ada Mono, tetapi umumnya tertinggal satu generasi di belakang implementasi Microsoft .)
Nate
sumber
Bukankah maksud Anda level rendah?
jhocking
5
C ++ adalah low-levelbahasa; tapi high-levelassembler, IMO.
Nate
3
Saya tidak setuju. C ++ adalah bahasa tingkat tinggi, dengan fasilitas bawaan untuk menggunakan bahasa C (yang merupakan bahasa tingkat rendah).
foo
7
C ++ adalah bahasa tingkat tinggi, seperti halnya C. Majelis tingkat rendah. Sekarang, C ++ lebih tinggi dari C, sama seperti C # lebih tinggi dari C ++ dan Ruby / Python lebih tinggi dari C #.
AA Grapsas
4
Mengapa kode lama harus ditinggalkan (tidak didepresiasi)? "Kode lama" hanya berarti sudah lama, bukan berarti buruk.
8

Kecepatan mentah adalah alasan utama, tetapi sebenarnya itu bukan keputusan baik-atau jadi banyak perusahaan game mulai menggunakan bahasa lain untuk bagian-bagian dari permainan. Tugas-tugas tertentu mengharuskan komputer untuk bekerja secepat mungkin (mis. Rutin rendering inti) tetapi banyak tugas dalam kode gameplay tidak harus menjalankan semua itu dengan cepat (mis. Membuat pintu terbuka ketika pemain mengkliknya) yang berarti pintar untuk menggunakan bahasa yang lebih sederhana (dan dengan demikian lebih cepat untuk menulis program) untuk bagian-bagian itu. Itulah sebabnya banyak mesin game ditulis dalam C ++ tetapi menanamkan bahasa scripting seperti Lua untuk menulis kode gameplay.

Hal yang sulit untuk dipahami adalah bahwa ketika memilih bahasa pemrograman ada tradeoff keseluruhan antara efisiensi untuk komputer dan efisiensi untuk programmer. Artinya, mana yang lebih penting bagi Anda, seberapa cepat komputer menjalankan kode atau seberapa cepat programmer menulis kode?

jhocking
sumber
3

Di C ++ Anda dapat mengalokasikan variabel lokal yang hilang setelah fungsi berakhir. Biasanya, ini dialokasikan pada tumpukan.

Variabel stack tidak berkontribusi pada masalah alokasi memori dinamis fragmentasi dan overhead. Mengalokasikan ruang pada tumpukan cepat dan mudah (hanya menyesuaikan pointer). Alokasi memori dinamis biasanya melibatkan pencarian wadah untuk blok memori yang memadai, menandai memori, lalu menandainya sebagai ditempati. Deallokasi melibatkan penambahan blok memori ke sebuah wadah, dan mungkin menggabungkannya dengan blok yang ada. Lebih banyak overhead daripada hanya mengubah pointer.

Java dan C # mengalokasikan memori secara dinamis, kecuali untuk tipe primitif. Bahasa-bahasa ini bergantung pada lingkungan run-time yang akan menandai variabel untuk dihapus, kemudian menjalankan pemulung secara berkala (tidak terjadwal) untuk mendapatkan kembali memori. Secara umum, programmer tidak memiliki kontrol kapan variabel akan ditandai untuk dihapus atau kapan akan direklamasi (reklamasi memori yang digunakan adalah topik lanjutan yang sebagian besar C + + dan programmer Java tidak mengalami).

Kecepatan C ++ terutama karena terjemahan langsung ke kode yang dapat dieksekusi. Java dan C # dikompilasi ke kode perantara yang kemudian ditafsirkan oleh mesin virtual. Secara umum, bahasa interpretatif lebih lambat kinerjanya daripada bahasa yang diterjemahkan secara langsung.

Thomas Matthews
sumber
1
-1 (jika saya bisa) - primitif lokal dialokasikan pada stack di Java dan C #, dan di C # Anda dapat membuat stack-dialokasikan structs. Lebih penting lagi, yang sangat sangat peningkatan kecil dalam kecepatan ini jaring Anda tidak hampir cukup untuk membenarkan satu bahasa atas yang lain. Alasan sebenarnya dikemukakan oleh @Graham Perks: itulah yang diharapkan diketahui oleh para pengembang game, jadi itulah yang dipelajari oleh para pengembang game baru, dan untuk apa SDK baru ditargetkan. Ada banyak bahasa (mis. Go) yang sama cepat atau lebih cepat, dan hampir tidak nyaman untuk menulis.
BlueRaja - Danny Pflughoeft
C ++ tidak terlalu bagus dalam alokasi stack; pada kenyataannya, sangat sulit untuk mengalokasikan objek yang kompatibel dengan STL pada stack. mis. Mesin besar terakhir yang saya kerjakan adalah di C, dan kami memiliki string yang dapat Anda mulai pada tumpukan pada ukuran tetap (biasanya 1K). Jika tumbuh melewati itu secara transparan dipindahkan ke tumpukan. Anda dapat melakukan beberapa hal yang serupa dengan std :: string pengalokasi khusus di C ++, tetapi kode ini jauh lebih sulit untuk diperbaiki.
1
@ Jo Wreschnig: C ++ sangat bagus dalam alokasi stack, cukup buang daftar bahasa assembly. Namun, sebagian besar vendor kompiler tidak mengalokasikan sejumlah besar memori ke stack. Pemahaman umum tentang pemrogram C ++ berpengalaman adalah bahwa objek besar dialokasikan secara dinamis (heap) bukan penyimpanan lokal (stack). Benda-benda besar pada tumpukan dapat menyerbu ke tumpukan di beberapa platform sebagai tumpukan dan tumpukan tumbuh satu sama lain.
Thomas Matthews
1
Pemahaman umum tentang programmer C ++ yang lebih berpengalaman, terutama yang ada di konsol game, adalah bahwa segala sesuatu yang tidak akan meluap stack adalah stack yang dialokasikan atau dialokasikan sebelumnya. C memudahkan ini karena pengalokasi bukan bagian dari tipe struktural objek. Ini juga memungkinkan untuk membebaskan sesuatu yang salah, tetapi dalam pengalaman saya itu adalah masalah yang jarang terjadi dibandingkan dengan seseorang yang mengacaukan implementasi / kompatibilitas pengalokasi stdlib-kompatibel. Ada juga beberapa trik dengan penempatan baru, tetapi sekali lagi, itu lebih rumit daripada yang setara dalam C.
2
Tidak. Manfaat kecepatan C ++ adalah karena kemampuannya untuk menggunakan manajer memori yang dibuat khusus untuk alokasi tumpukan . Setiap bahasa waras mengalokasikan penduduk lokal pada tumpukan.
Nevermind
3

Game pernah ditulis dalam bahasa mesin, karena mereka memiliki perangkat keras eksotis yang tidak ada kompilernya. Perangkat keras juga tidak memiliki fitur yang diterima oleh programmer C, seperti matematika integer 16-bit yang efisien.

Setelah game diselesaikan pada perangkat yang dikenal, kompiler C menjadi tersedia dan dalam waktu singkat semua game ditulis dalam C.

C ++ sepertinya ide yang bagus pada satu waktu, dan sebagian besar game adalah C ++ hari ini, tetapi insinyur sekarang bergumam tentang kembali ke C, dan itu mungkin benar-benar terjadi. Saya ingin sekali mengerjakan game di C, dan begitu juga banyak rekan kerja. Tidak ada fitur baru untuk C ++ yang saya pikir meningkatkan permainan.

Tampaknya sekarang bahwa komputer 1000x lebih cepat dari beberapa tahun yang lalu, bahasa tingkat tinggi akan mengurangi waktu pengembangan ($) membuat C usang.

Ini belum terjadi karena pembeli game tahu bahwa perangkat keras 1000x lebih baik, dan ingin menukar dolar mereka dengan game yang terlihat dan terdengar 1000x lebih baik. Ini menghilangkan slack dari sistem yang akan dikonsumsi oleh bahasa tingkat tinggi.

Persyaratan kinerja dalam gim ini brutal. Bingkai gambar baru harus dirender di bawah 33ms (atau 16ms!) Tanpa gagal. Segala yang dilakukan perangkat keras harus dipertanggungjawabkan, sehingga anggaran ini dapat dipenuhi. Bahasa apa pun yang berbunyi dan melakukan sesuatu dengan perangkat keras yang tidak dipahami atau diharapkan programmer akan membuatnya sangat sulit untuk memenuhi anggaran ini. Ini adalah minus otomatis terhadap tingkat tinggi apa pun.

Pemrogram game tidak hanya bekerja dalam bahasa tingkat rendah, tetapi mereka juga menghindari struktur data dan algoritma tingkat tinggi. Permainan biasanya tidak memiliki daftar yang ditautkan dan jarang memiliki pohon. Ada gerakan ke arah menghindari petunjuk bila memungkinkan *. Algoritma apa pun dengan lebih dari O (N) waktu atau O (1) ruang cenderung tidak menemukan penggunaan luas.

* Jika pointer tidak menyebabkan cache hilang, lalu mengapa menghabiskan 32 bit untuk menyimpannya? Jika sebuah pointer tidak menyebabkan cache hilang, sebaiknya singkirkan cache cache tersebut.

bmcnett
sumber
1
"Tidak ada fitur baru untuk C ++ yang saya pikir meningkatkan permainan." LOL? OOP? Kelas humandengan derivasi playerdan enemy?
orlp
2
@nightcracker: Basic is-a inheritance berfungsi dengan baik di C; hubungan yang Anda gambarkan lebih baik diimplementasikan menggunakan has-a untuk alasan kinerja dan kebersihan.
3
Ada konsensus yang berkembang bahwa fitur OOP C ++ tidak sesuai untuk gim, karena fitur ini beroperasi berdasarkan asumsi yang memusuhi kinerja cache.
bmcnett
Bahkan jika Anda percaya bahwa C ++ tidak menawarkan kelebihan dibandingkan C, Anda harus menyadari bahwa pengembalian ke C juga tidak menawarkan kelebihan dibandingkan C ++.
Dan Olson
@Dan A kembali ke C menawarkan keuntungan bahwa "praktik terbaik" seperti tidak menggunakan template atau OOP ditegakkan oleh kesalahan waktu kompilasi daripada mengejar programmer junior dengan tongkat. Juga karena bahasanya lebih sederhana, mungkin kompiler dan pemeliharaan debugger juga lebih murah.
bmcnett
3

Setiap bahasa pemrograman memiliki kekuatan dan kelemahan di berbagai faktor. Contoh dari faktor-faktor ini adalah:

  • Kecepatan pada platform tertentu
  • Penggunaan memori pada platform tertentu
  • Fungsi apa yang diekspos lebih mudah
  • Apa platform itu ada
  • Pertimbangan apa yang harus diambil oleh seorang programmer

Salah satu faktor terpenting yang diperhatikan oleh programmer game adalah kinerja. Mereka ingin menghasilkan pengalaman interaktif, yang berarti harus reaktif dan mampu menghasilkan sebanyak mungkin data yang berguna (atau menarik). Anda ingin tahu berapa banyak kesehatan yang Anda miliki setiap saat dan tidak ingin menunggu untuk itu. Dan jika Anda mengklik tombol, Anda mengharapkan senjata untuk menembak atau karakter Anda untuk melompat ketika Anda mengatakannya. Sedikit kelambatan dapat mengganggu interaktivitas ini sehingga Anda memerlukan kinerja.

Faktor penting lainnya adalah lebih suka program dalam bahasa masalah, bukan bahasa implementasi. Seorang programmer game ingin berurusan dengan manusia, orc dan mobil balap, bukan register memori ED0. Mereka masih menginginkan opsi untuk menyelami rincian implementasi jika mereka membutuhkan kinerja, tetapi akan lebih baik jika sebagian besar mereka dapat menangani level entitas di dunia game mereka. Mereka cukup khawatir tentang simulasi dunia game tanpa harus selalu peduli tentang cara kerja daftar tertaut.

C ++ sangat cocok dengan dua faktor utama ini. Anda dapat memiliki manfaat kinerja perakitan atau kode C dengan ekspresi objek. Untuk mengetahui mengapa ini cocok untuk game, bandingkan dengan beberapa opsi bahasa lainnya:

  • Majelis: Ini adalah kekuatan mentah. Apa yang Anda tulis pada dasarnya adalah apa yang CPU lakukan. Tetapi pada setiap tahap Anda perlu tahu apa yang terjadi dengan register dan efeknya, dan itu tidak pernah terlihat seperti entitas di dunia game Anda. Programmer harus membuat korespondensi mental dari apa yang kode mereka lakukan versus apa yang terjadi di dalam game. Ini bisa jadi overhead mental.
  • C: Di sini kita memiliki kinerja yang baik, tetapi kita dapat memanfaatkan pengalaman guru untuk menyelesaikan hal-hal standar (seperti mengalokasikan memori, beroperasi dengan string dan menggunakan fungsi matematika standar). Kami lebih dekat dengan ekspresif di sini, tetapi bahasa ini kurang lebih memaksa Anda untuk fokus pada implementasi karena Anda hanya dapat beroperasi pada tipe data normal. Semuanya benar-benar char, int atau sejenisnya. struct, pointer dan array dapat menyatukan semuanya, tetapi masih harus memikirkan internal.
  • Java: Kami melompati C ++ dan sampai ke Java. Java mendorong lebih jauh dari detail implementasi. Bahkan, sebagian besar waktu Anda tidak mendapatkan akses ke level yang lebih rendah. Java mengabstraksi sebagian besar detail implementasi (mis. CPU atau OS apa yang Anda gunakan) karena alasan itu ingin menjadi cross-platform. Anda tidak dapat mengakses detail karena tidak ada di sana. Anda tidak memprogram untuk komputer, Anda memprogram untuk platform (platform Java, yang kebetulan ada pada kebanyakan komputer). Selain itu, Java memiliki bahasa yang bisa dibilang lebih baik untuk berurusan dengan bahasa masalah daripada C ++. Imbalannya adalah Anda tidak dapat mengoptimalkan komputer tertentu. Apakah ini membuat perbedaan praktis atau tidak datang ke spesifikasi program dan komputer.
  • Bahasa scripting game: Maksud saya sesuatu seperti UnrealScript , atau bahasa scripting khusus yang diikat ke mesin game. Dalam hal ini Anda tidak memiliki akses ke mesin yang mendasarinya. Anda mendelegasikan pertimbangan kinerja ke engine, membuat diri Anda bebas untuk khawatir membuat game. Lebih mudah untuk menulis permainan, lebih sulit untuk mengoptimalkan kinerjanya sendiri.
  • Haskell (atau bahasa jelas favorit Anda): Setiap Turing-lengkap bahasa pemrograman setara dengan yang lain. Jadi, sementara Anda dapat menulis program apa pun dalam bahasa apa pun, Anda membuat pengorbanan, beberapa tujuan, beberapa subjektif. Bahasa seperti Haskell lebih fokus pada bekerja dalam semangat matematika. Masalah yang diarahkan agak berbeda dengan masalah yang dihadapi dalam permainan. Itu tidak berarti tidak bisa atau tidak boleh digunakan untuk game, hanya saja itu tidak mudah cocok untuk itu.

Poin terakhir adalah beberapa di antaranya bersifat historis dan politis. Banyak perang api telah terjadi antara berbagai bahasa pemrograman. C # misalnya mungkin hanya cocok untuk pengembangan game, tetapi itu muncul setelah C ++. Atau orang tidak suka itu dari Microsoft. Beberapa orang pindah ke C #, beberapa tidak. Beberapa orang masih memprogram permainan dalam BASIC, Pascal, dan C. Programmer mana pun yang nyaman, mereka akan tetap melakukannya. Pemrogram gim sebagian besar merasa nyaman dengan C ++, mungkin karena mereka tumbuh dengan C dan C ++, dan memenuhi kebutuhan mereka. Jika industri komputer dalam keadaan di mana kinerja dan penggunaan Java memuaskan cukup banyak orang, maka mungkin Jawa akan menjadi bahasa pengembangan game standar de facto.

BrettW
sumber
2

Warisan dan momentum.

Sekali waktu kode ditulis dalam assembler untuk kinerja terbaik. Ketika daya komputasi meningkat, bahasa yang dikompilasi menjadi lebih layak, dan C menawarkan kompromi terbaik antara daya dan produktivitas, pada tingkat yang sangat dasar menjadi sedikit lebih banyak daripada assembler makro.

C ++ hanyalah penerus alami untuk C. Anda tidak membuang kode atau pengetahuan sebelumnya, namun memiliki potensi untuk berkembang menjadi metodologi baru. C ++ pada akhirnya sangat fleksibel, dan saya belum melihat paradigma desain yang tidak bisa paling tidak disimulasikan dalam C ++, sementara mampu mempertahankan kontrol total dekat atas kinerja.

Simon Lacey
sumber
2

Jika Anda mengembangkan untuk konsol, Anda tidak punya pilihan: SDK profesional hanya datang dalam rasa C ++. Biasanya mereka juga memiliki akses C ke banyak hal.

Karena banyak pengembang adalah Konsol + PC, masuk akal untuk melakukan semua pekerjaan PC mereka dalam bahasa yang sama dan langsung berbagi teknologi.

Karena di situlah industri pro hidup, dan sebagian besar orang ingin menjadi bagian dari itu, sebagian besar programmer game adalah programmer C ++.

Karena semua itu terjadi, sebagian besar pengembang mesin adalah pengembang C ++ juga, jadi ketika mengevaluasi mesin kelas profesional hampir semua pilihan Anda adalah C ++.

Ini semua mesin mandiri yang besar. Mengganggu itu akan membutuhkan lebih dari sekadar kemajuan teknis.

Chris Subagio
sumber
2

FWIW: C # semakin populer untuk pengembangan game. Lihat posting blog Miguel de Icaza . Sangat menarik dibaca, IMHO.


sumber
2
Seperti biasa, Miguel mendorong teknologi favoritnya (biasanya marjinal) sambil mengabaikan cara-cara di mana C # telah benar-benar menjadi pemain besar di industri, misalnya XNA.
2

Meskipun saya cukup anti-C, C & C ++, satu-satunya hal yang mereka miliki dari beberapa bahasa lain adalah kontrol penuh atas platform yang sedang berjalan, Anda dapat yakin apa yang akan terjadi setiap saat, tidak GC, tidak ada gangguan.

Ini tidak sepenting hari ini, tetapi bisa untuk platform yang kurang bertenaga.

Pada PC / Mac / Linux, mungkin ini adalah bahasa yang paling portabel yang Anda temui hari ini, dan bonus kecepatan tidak lagi jauh berbeda - Minecraft (Java) halus dan bekerja pada platform yang sangat minim (dan OS apa pun) dengan satu executable - Saya belum melihat aplikasi indi C / C ++ tenaga kerja rendah dengan fungsionalitas sebanyak dan beberapa bug, apalagi bekerja pada tiga platform.

Jadi pada titik ini saya akan mengatakan bahwa sebagian besar adalah inersia dan konsepsi bahwa permainan nyata selalu dilakukan dalam C / C ++, meskipun kemampuan untuk "port" ke iPhone dan konsol adalah signifikan (Meskipun saya cukup yakin sebagian besar UI game membutuhkan BANYAK upaya untuk port kecuali antara Windows dan XBox).

Bill K
sumber
1
Oh, saya tidak tahu itu hanya penting untuk platform "kurang bertenaga". Cara lain untuk melihat ini adalah bahwa game selalu berada di garis depan kinerja pada platform apa pun: setiap kekuatan baru segera melahap. Jika kita berbicara tentang pengembangan game profesional, maka kinerja adalah perhatian utama: Anda tidak menulis Unreal tanpa memaksimalkan setiap siklus terakhir yang ditawarkan mesin. Setiap; tunggal; siklus. Di setiap level, mulai dari mesin grafis dan akses disk hingga loop UI Anda.
Chris Subagio
@ Chris: Cara terbaik yang saya temukan untuk menggambarkannya kepada pemrogram non-gim adalah bahwa gim adalah domain di mana kecepatan adalah keunggulan kompetitif. Jika pengolah kata Anda dimulai dalam 5 detik di mana MS Word memakan waktu 10, atau reflows dalam 0,1 detik di mana Word membutuhkan 0,2, itu tidak berharga. Tetapi jika game Anda dapat memompa fragmen 10% lebih banyak atau bahkan menunjukkan satu karakter yang lebih detail, itu bisa menjadi keunggulan kompetitif yang sangat besar.
Maka bukankah konyol untuk kode dalam apa pun selain perakitan? Tentunya akan setidaknya 10% lebih cepat. Ada titik di mana Anda melakukan panggilan untuk menukar kinerja untuk pemeliharaan dan kecepatan pengembangan. Umumnya titik itu adalah C ++ hari ini. Akan lebih baik jika kemampuan untuk pergi lintas platform seperti Minecraft memiliki bobot lebih.
Bill K
Ah, tapi itu salah bahwa pengkodean dalam perakitan lebih cepat: chip saat ini cukup kompleks sehingga sulit bagi programmer untuk mengungguli kompiler secara konsisten. Hanya di domain yang lebih terbatas seperti SPU pada PS3, loop fisika bagian dalam dan bayangan pada GPU masih ada keuntungan yang jelas. C ++ saat ini memang merupakan sweet spot, dengan peringatan bahwa OOP tidak selalu merupakan pilihan terbaik: Struct of Arays yang sedang berlangsung vs diskusi Aruct of Structs bukanlah diskusi bahasa, tetapi C ++ jelas membawa Anda ke AoS secara alami; Terkadang ... Anda benar-benar hanya ingin C.
Chris Subagio
Langkah efisiensi pemrogram antara assembler dan C / C ++ juga merupakan urutan besarnya lebih besar daripada langkah efisiensi pemrogram antara C dan C ++, atau C ++ dan C # / Java. Fred Brooks menunjukkan ini 25 tahun yang lalu.