Oyun programlaması için C ++ ile rekabet etmek


21

Neden C ++ 'ın diğer dillerde değil oyunların gelişimi için bu kadar popüler olduğunu merak ediyorum. Onunla çok hızlı bir kod oluşturabileceğinizi biliyorum, ama onu popüler yapan tam olarak nedir?

Sadece hızlı olduğu için mi? Dilde, OO paradigması veya taşınabilirlik gibi başka bir özellik var mı? Zaman içinde yaratılmış bütün kütüphaneler yüzünden mi? Ya da tüm bu (ve diğer) nedenlerin bir kombinasyonu?

Biri beni bununla doldursa, çok mutlu olurum. :-)


7
Hız, benim için yeterli bir neden, özellikle de herkesin dille ilgili şikayetleri benim için hiçbir şey ifade etmiyor.
Benjamin Lindley

Hızlı bir tahmin: Çoğu oyun Windows için yazılmıştır. C ve C ++ dilleri Microsoft tarafından yoğun olarak desteklenmektedir. Sonunda O ++ ve şablon metaprogramlaması nedeniyle C ++ tercih edilir.

@ Matt Teşekkürler, var olduğunu bilmiyordum. Konuyu oraya taşıyabilir miyim, yoksa onu silmeli ve orada yeniden yaratmalı mıyım?

Bu zaten birkaç kez istendi.
Zan Lynx

1
@Benjamin: O zaman C ++ 'da yeterince yazmamışsınızdır ya da Python (ya da LINQ ile C #) gibi daha etkileyici bir dil kullanmamışsınızdır. Bununla birlikte, çılgınca bir nedenden ötürü, diğer birçok dilin yapabilecekleri için 20 satır kod yazmayı tercih etseniz bile , C ++ 'ın aşırı zayıf dilbilgisi , programların derlemeleri gerekenden daha uzun sürdüğü ve uygun IDE araçları (yeniden düzenleme vb.) Anlamına gelir. imkansız değilse de yaratması daha zordur.
BlueRaja - Danny Pflughoeft,

Yanıtlar:


29

Sayısız nedenler:

  • Kaçırdığınız kadar büyük: Taşınabilir, oyun motorunuzu iOS, XBOX, PS3'e bağlayan bağlantı noktaları basitleştiriyor
  • Hızlı
  • Tüm SDK'lar yerel olarak destekliyor
  • Çok sayıda kütüphane mevcut
  • Oyun yazan herkes bunu bilir, bu yüzden ekibiniz için deneyimli oyun geliştiricileri kiralamak kolaydır.
  • Lua gibi bir oyun motoru komut dosyası dili yerleştirmek önemsizdir

Pekala, cevaplarınız için herkese teşekkürler, bence ihtiyacım olan her şeyi üstlendiniz. :-)
KasMA1990

14

@Graham’ın getirdiklerine ek olarak bahsetmek istediğim birkaç neden var.

  • Eski Kod - birçok stüdyoda birçok C ++ kodu vardır, bu kütüphanelerden bahseder.
  • C ++ gerçekten üst seviye bir montajcıdır ve donanıma doğrudan erişime sahiptir (en azından bir İşletim Sisteminin en üstünde çalıştığınız gibi) ve oldukça hızlıdır. İsterseniz, C ++ 'da talimat seviyesi kontrolü için doğrudan assembly diline bırakabilirsiniz (her zaman akıllıca olduğundan değil, Java, C #, Python, vb. İle mümkün değildir).
  • DirectX ve OpenGL yerel olarak C ++ 'ı desteklemektedir, diğer birçok dilde altta yatan kitaplıklara orta katmanlardan "ciltleme" uygulanmaktadır, yani hızlı olmadıklarını veya aynı şeylerin çoğunu yapamadıklarını, ancak aralarına bir yazılım katmanı eklediklerini senin oyun ve donanım.
  • @Graham'ın da belirttiği gibi, birçok programcı bunu bilir, bu nedenle deneyimli geliştiricileri bulmak kolaydır ve .NET Framework'te (CIO da var) genellikle Microsoft'un uygulamasının gerisinde kalmaktadır. .)

Düşük seviye demek istemiyor musun?
atıyorlar

5
C ++ bir low-leveldildir; ancak bir high-levelmontajcı, IMO.
Nate,

3
Katılmıyorum. C ++ yüksek seviye bir dildir ve yerleşik olarak C'ye (düşük seviye bir dildir) düşme olanağına sahiptir.
foo

7
C ++, C düzeyindeki gibi yüksek düzeyde bir dildir. Assembly düşük düzeydedir. Şimdi, C ++ C'den daha yüksek, tıpkı C # C ++ 'dan yüksek ve Ruby / Python C #' dan daha yüksek.
AA Grapsas

4
Neden eski kodun kullanımdan kaldırılması gerekiyor? "Eski kod" sadece eski demek, kötü değil.

8

Ham hız birincil nedeni, ama aslında ya bir karar değil ya da çok fazla oyun şirketi oyunun bölümleri için başka dilleri kullanmaya başlıyor. Bazı görevler bilgisayarın olabildiğince hızlı çalışmasını gerektirir (örneğin, çekirdek oluşturma yordamları) ancak oyun kodundaki birçok işin o kadar hızlı çalışması gerekmez (örneğin, oyuncu tıkladığında kapıyı açmak). bu parçalar için çok daha basit (ve böylece programları yazmak için daha hızlı) bir dil kullanmak akıllıdır. Bu nedenle birçok oyun motorunun C ++ dilinde yazılması ancak oyun kodu yazmak için Lua gibi bir betik dili yerleştirilmesi.

Anlaşılması zor olan şey, programlama dillerini seçerken, bilgisayar verimliliği ile programcı için verimlilik arasında genel bir değişimin olmamasıdır. Bu sizin için daha önemli olan şey, bilgisayarın kodu ne kadar hızlı çalıştırdığı veya programcının kodu ne kadar hızlı yazdığıdır.


3

C ++ 'da, fonksiyon sona erdikten sonra kaybolan yerel değişkenleri tahsis edebilirsiniz. Genellikle, bunlar bir yığında tahsis edilir.

Yığın değişkenleri, parçalanma ve ek yüklerin dinamik bellek ayırma sorunlarına katkıda bulunmaz. Yığında oda tahsis hızlı ve kolaydır (sadece bir işaretçiyi ayarlamak). Dinamik bellek ayırma, genellikle yeterli miktarda bellek bloğu için bir konteyner aramayı, belleği işaretlemeyi ve ardından meşgul olarak etiketlemeyi içerir. Ayrılma, bellek bloğunu bir kaba eklemeyi ve muhtemelen mevcut bloklarla birleştirmeyi içerir. Bir işaretçiyi değiştirmekten çok daha fazla ek yük.

Java ve C #, ilkel türler dışında belleği dinamik olarak ayırır. Bu diller silinecek bir değişkeni işaretleyen bir çalışma zamanı ortamına dayanır, daha sonra belleği geri kazanmak için çöp toplayıcıyı rasgele (programlanmamış) aralıklarla çalıştırır. Genel olarak, programcının ne zaman değişkenin silinmek üzere etiketleneceği veya ne zaman geri kazanılacağı konusunda hiçbir kontrolü yoktur (kullanılmış belleğin geri kazanılması çoğu C ++ ve Java programcısının deneyimlemediği ileri bir konudur).

C ++ 'nın hızı esas olarak çalıştırılabilir koda doğrudan çevrilmesi nedeniyledir. Java ve C #, daha sonra sanal bir makine tarafından yorumlanan bir ara koda derlenir. Genel olarak, yorumlayıcı diller doğrudan çevrilmiş dillerden daha yavaş performans sergiler.


1
-1 (eğer yapabilseydim) - yerel ilkeller hem Java hem de C # 'da yığında tahsis edilir ve C #' da yığında tahsis edilmiş oluşturabilirsiniz structs. Dahası, bu ağları hızlandıran son derece küçük bir artış, bir dili diğerine yaslamak için neredeyse yeterli değildir . Asıl sebep @ Graham Perks tarafından belirtilmiş: oyun geliştiricilerin bilmesi beklenen şey, bu yüzden yeni oyun geliştiricilerinin öğrendiği ve hangi yeni SDK'ların hedeflendiği. Dil gibi hızlı veya daha hızlı ve değil (ex. Git) bol vardır neredeyse sakıncalı olarak için yazmak için.
BlueRaja - Danny Pflughoeft

C ++ yığın tahsisinde çok iyi değil; Aslında, STL uyumlu nesneleri yığına yerleştirmek çok zordur. Örneğin, çalıştığım son büyük motor C'deydi ve yığında bazı sabit boyutlarda (genellikle 1K) başlayabileceğiniz bir ipimiz vardı. Geçti, şeffaf bir şekilde yığına taşındı. Std :: string custom allocators ile benzerleri C ++ ile yapabilirsiniz, ancak kod doğru olması için çok daha zor.

1
@Joe Wreschnig: C ++ yığın tahsisinde mükemmel, sadece bir meclis dili listesi ver. Ancak, çoğu derleyici satıcısı yığına büyük miktarda bellek ayırmaz. Deneyimli C ++ programcılarının ortak bir anlayışı, Büyük nesnelerin yerel depolamaya (yığın) değil dinamik olarak tahsis edilmiş (yığın) olmasıdır. Yığın üzerindeki büyük nesneler, yığın ve yığın birbirine doğru büyüdükçe bazı platformlardaki yığının içine taşabilir.
Thomas Matthews,

1
Daha tecrübeli C ++ programcılarının, özellikle oyun konsolundakilerin ortak bir anlayışı, yığının taşmayacağı her şeyin, yığın tahsis edilmiş veya önceden tahsis edilmiş olmasıdır. C bunu kolaylaştırır çünkü tahsis edici nesnenin yapısal tipinin bir parçası değildir. Bu aynı zamanda yanlış bir şeyi serbest bırakmayı da mümkün kılıyor, ancak benim tecrübeme göre bu stdlib uyumlu tahsisatçı uygulamalarını / uyumluluğunu berbat eden birine kıyasla nadir bir problem. Yeni yerleştirme ile ilgili bazı püf noktaları da var, ancak yine, bu C'deki eşdeğerden daha karmaşık.

2
Hayır. C ++ 'nın hız avantajı, kendi özel yazılı bellek yöneticinizi yığın tahsisi için kullanma yeteneğinden kaynaklanmaktadır . Her akıllı dil, yerlileri yığına tahsis eder.
Nevermind

3

Oyunlar bir zamanlar makine dilinde yazılmıştı çünkü derleyici bulunmayan egzotik bir donanıma sahiplerdi. Donanım, C programcılarının verimli 16 bit tamsayılı matematik gibi izin verdiği özelliklerden de yoksundu.

Bir zamanlar bilinen bir donanıma yerleştiğinde, C derleyicileri kullanılabilir hale geldi ve kısa sürede tüm oyunlar C'ye yazıldı

C ++ bir zamanlar iyi bir fikir gibiydi ve bugün çoğu oyun C ++, ancak mühendisler artık C'ye dönüş hakkında mırıldanıyor ve bu gerçekten olabilir. C'deki bir oyun üzerinde çalışmayı çok isterdim ve birçok iş arkadaşı da olur. C ++ 'a oyunları geliştirdiğini düşündüğüm yeni bir özellik yok.

Görünüşe göre, bilgisayarlar birkaç yıl öncesine göre 1000 kat daha hızlı, yüksek seviyeli bir dil geliştirme süresini ($) azaltıyor, bu da C'yi eski hale getiriyor.

Bu gerçekleşmedi, çünkü oyun alıcıları donanımın 1000 kat daha iyi olduğunu biliyor ve 1000 kat daha iyi görünen ve kulağa iyi gelen bir oyun için paralarını takas etmek istiyorlar. Bu, yüksek seviyeli bir dilin kullanacağı boşluğu sistemden kaldırır.

Oyunlarda performans gereksinimleri acımasız. Yeni bir grafik çerçevesi, 33ms (veya 16ms!) Altında hatasız olarak oluşturulmalıdır. Donanımın yaptığı her şey hesaba katılmalı, böylece bu bütçe karşılanabilsin. Programcının anlayamadığı veya beklemeyeceği donanıma sahip bir şey yapan ve dil bilen herhangi bir dil bu bütçeyi karşılamayı çok zorlaştıracaktır. Bu yüksek seviyeli herhangi bir şeye karşı otomatik bir eksidir.

Oyun programcıları yalnızca düşük seviyeli bir dilde çalışmakla kalmaz, aynı zamanda üst düzey veri yapılarını ve algoritmaları da kapatır. Oyunların tipik olarak bağlantılı listeleri yoktur ve nadiren ağaç vardır. Mümkün olduğunda işaretçilerden kaçınmaya yönelik bir hareket var *. O (N) veya O (1) boşluktan daha fazla olan herhangi bir algoritma, geniş kullanım bulmama eğilimindedir.

* Bir işaretçi önbelleğin kaybolmasına neden olmazsa, neden saklamak için 32 bit harcıyorsunuz? Bir işaretçi bir önbellek özledim neden olursa, bu önbellek özledim kurtulmak en iyisi.


1
“C ++ 'a oyunları geliştirdiğini düşündüğüm yeni bir özellik yok.” LOL? OOP? humanTürevleri olan bir sınıf playerve enemy?
orlp

2
@ nightcracker: Temel bir miras C'de iyi çalışıyor; Tanımladığınız ilişki zaten performans ve temizlik nedenleriyle has-a kullanarak daha iyi bir şekilde uygulandı.

3
C ++ 'nın OOP özelliklerinin oyunlar için uygun olmadığı konusunda artan bir fikir birliği var, çünkü bu özellikler önbellek performansına düşman olan varsayımlar üzerinde çalışıyor.
bmcnett

C ++ 'ın C'ye göre hiçbir avantaj sağlamadığını düşünseniz bile, kesinlikle C'ye geri dönmenin C ++' a göre hiçbir avantaj getirmediğini de kabul etmelisiniz.
Dan Olson 19

@Dan C'ye dönüş, şablon kullanmama veya OOP kullanmama gibi "en iyi uygulamaların" küçük programcıları bir çubukla kovalamak yerine derleme zamanı hatalarıyla zorlanma avantajı sunar. Ayrıca dil daha basit olduğu için muhtemelen derleyici ve hata ayıklayıcı bakımı da daha ucuz.
bmcnett

3

Her programlama dili, çeşitli faktörlerde güçlü ve zayıf yönlere sahiptir. Bu faktörlerin örnekleri:

  • Belirli bir platformda hız
  • Belirli bir platformda bellek kullanımı
  • Hangi işlevselliği daha kolay ortaya çıkarır
  • Hangi platformlarda var?
  • Bir programcının uçağa alması gerekenler

Bir oyun programcısının önem verdiği en önemli faktörlerden biri performanstır. Etkileşimli bir deneyim üretmek istiyorlar, bu da reaktif olması ve mümkün olduğunca faydalı (veya ilginç) veriler üretebilmesi anlamına geliyor. İstediğiniz zaman ne kadar sağlığınız olduğunu bilmek istiyorsunuz ve bunu beklemek istemiyorsunuz. Ve bir düğmeyi tıklarsanız, silahın ateş etmesini veya söylerken karakterinizin zıplamasını beklersiniz. Küçük bir gecikme bu etkileşime engel olabilir, bu nedenle performansa ihtiyacınız var.

Bir diğer önemli faktör, uygulamanın dili yerine, problemin dilinde programlamayı tercih etmektir. Bir oyun programcısı, ED0 hafızasında değil, insanlarla, orklarla ve yarış arabalarıyla uğraşmak istiyor. Performansa ihtiyaç duyarlarsa uygulama detaylarına dalma seçeneğini hala istiyorlar, ancak çoğu zaman oyun dünyasındaki varlıkların seviyesi ile ilgilenebilirlerse harika olurdu. Bağlantılı bir listenin nasıl çalıştığını her zaman önemsemeden oyun dünyasını simüle etmekten endişe edecek kadar çokları var.

C ++ bu iki ana faktöre çok iyi uyuyor. Nesnelerin açıklığıyla montaj veya C kodunun performans avantajlarına sahip olabilirsiniz. Bunun neden oyunlara uygun olduğunu görmek için, diğer bazı dil seçenekleriyle karşılaştırın:

  • Montaj: Bu ham güç. Yazdıklarınız temel olarak CPU'nun yaptığıdır. Ancak, her aşamada kayıtlar ile neler olup bittiğini ve bunun etkisinin ne olduğunu bilmeniz gerekir ve asla oyun dünyanızdaki varlıklar gibi görünmez. Programcının, kodunda neler yaptığına oyunda olanlarla ilgili zihinsel yazışmalar yapması gerekir. Bu oldukça zihinsel bir yük olabilir.
  • C: Burada iyi bir performansa sahibiz, ancak standart işleri yapmak için guruların deneyimlerinden faydalanabiliriz (bellek ayırmak, dizgiler üzerinde çalışmak ve standart matematiksel işlevleri kullanmak gibi). Burada etkileyiciliğe yaklaşıyoruz, ancak dil sizi az ya da çok, uygulamaya odaklanmaya zorluyor çünkü gerçekten sadece normal veri türleri üzerinde çalışabilirsiniz. Her şey gerçekten bir karakter, bir int veya benzeri. yapılar, işaretçiler ve diziler bir şeyleri bir arada tutabilir, ancak yine de iç dünyalarını düşünmek zorundadır.
  • Java: C ++ 'dan sıçrar ve Java’ya gideriz. Java, uygulama detaylarından uzaklaşıyor. Aslında, çoğu zaman düşük seviyelere erişemezsiniz. Java, platformlar arası olmasını istediği için uygulama ayrıntılarının çoğunu (örneğin, hangi CPU ya da işletim sistemini kullandığınız) soyutlar. Ayrıntılara erişemezsin çünkü orada değiller. Bilgisayar için programlamıyorsunuz, platform için programlıyorsunuz (çoğu bilgisayarda var olan Java platformu). Dahası, Java, sorunun diliyle ilgilenmek için C ++ 'dan daha tartışmalı bir dile sahiptir. Takas, belirli bir bilgisayar için optimize edemezsiniz. Bunun pratik bir fark yaratıp yaratmadığı, programın ve bilgisayarın özelliklerine iner.
  • Oyun betik dili: Bununla UnrealScript ya da bir oyun motoruna bağlanmış özel betik dilleri gibi bir şey kastediyorum . Bunlarda altta yatan motora erişiminiz yok. Performansla ilgili konuları motora devrederek, oyun yapma konusunda endişelenmekte özgür olursunuz. Oyunu yazmak kolaydır, performansını kendiniz optimize etmek daha zordur.
  • Haskell (veya en sevdiğiniz belirsiz dili): Herhangi bir Turing-komple programlama dili, herhangi birine eşdeğerdir. Eğer süre Yani olabilir herhangi bir dilde herhangi bir programı yazmak istiyorsan, tradeoffs, bazı nesnel, bazı sübjektif olun. Haskell gibi bir dil daha matematiksel bir ruhta çalışmaya odaklanır. Yönlendirdiği problemler oyunlarda karşılaşılan problemlerden biraz farklı. Oyunlarda kullanılamayacağı ya da kullanılamayacağı anlamına gelmez, sadece onun için uygun değildir.

Son nokta, bunun bazılarının tarihsel ve politik olduğu. Farklı programlama dilleri arasında birçok alev savaşı yapıldı. Örneğin C #, oyunların geliştirilmesine uygun olabilir ancak C ++ 'dan sonra geldi. Veya insanlar bundan Microsoft’tan hoşlanmadı. Bazı insanlar C # 'ya taşındı, bazıları yapmadı. Bazı insanlar hala BASIC, Pascal ve C'de oyun programlıyorlar. Programcıların rahatı ne olursa olsun, buna bağlı kalacaklar. Oyun programcıları büyük olasılıkla C ++ ile rahat ediyorlardı, çünkü muhtemelen C ve C ++ ile büyüdüler ve onların ihtiyaçlarını karşıladı. Bilgisayar endüstrisi, Java'nın performansının ve alımının yeteri kadar insanı tatmin ettiği bir durumda ise, belki de Java fiili standart oyun geliştirme dili olabilir.


2

Miras ve momentum.

Bir zamanlar en iyi performans için assembler'da bir zaman kodu yazıldı. Bilgi işlem gücü arttıkça, derlenmiş diller daha uygun hale geldi ve C, güç ve üretkenlik arasında en iyi uzlaşmayı teklif etti, çok basit bir düzeyde bir makro birleştiriciden biraz daha fazla.

C ++ sadece C'nin doğal halefi idi. Eski bir kod veya bilgiyi yok etmediniz, ancak yeni metodolojilere genişleme potansiyeline sahipsiniz. C ++ nihayetinde çok esnektir ve henüz performans üzerinde neredeyse bütün kontrolü sağlayabilmem için en azından C ++ ile simüle edilemeyen bir tasarım paradigması görmedim.


2

Konsollar için geliştiriyorsanız, başka seçeneğiniz yok: Profesyonel SDK'lar sadece C ++ lezzetleri ile geliyor. Genellikle birçok şeye de C erişimi vardır.

Pek çok geliştirici Konsol + PC olduğundan, tüm bilgisayarlarının aynı dilde çalışmasını sağlamak ve doğrudan teknolojiyi paylaşmak mantıklıdır.

Profesyonel endüstrinin yaşadığı ve çoğu insan bunun bir parçası olmak istediğinden, çoğu oyun programcısı C ++ programcısı.

Tüm bunlar gerçekleştiğinden, çoğu motor geliştiricisi de C ++ geliştiricisidir, bu yüzden profesyonel sınıf motorları değerlendirirken neredeyse tüm seçimleriniz C ++ olacaktır.

Hepsi büyük bir kendini sürdüren motor. Bunu bozmak, sadece teknik ilerlemeden daha fazlasını gerektirir.


2

FWIW: C # oyun geliştirme için popülerlik kazanıyor. Bkz Miguel de Icaza blog yazısı . Çok ilginç bir okuma, IMHO.


2
Her zamanki gibi, Miguel en sevdiği (genellikle marjinal) teknolojilerini zorlarken C # 'nın sektörde büyük bir oyuncu olmasının yollarını görmezden geliyor, örneğin XNA.

2

Oldukça şiddetli anti-C, C & C ++ olmasına rağmen, yaptıkları birkaç diğer dilde sahip oldukları tek şey, üzerinde çalıştığı platform üzerinde tam kontrol sağlamaktır. GC, sorun yok.

Bugünlerde bu kadar önemli değil, ama güçsüz platformlar için olabilir.

PC / Mac / Linux'ta muhtemelen bugünlerde karşılaşacağınız en az taşınabilir dil ve hız bonusu artık bu kadar fark yaratmıyor - Minecraft (Java) pürüzsüz ve oldukça az platformda (ve herhangi bir işletim sisteminde) çalışıyor. Tek bir çalıştırılabilir ile - Ben sadece üç platformda çalışmama rağmen, çok işlevli ve az sayıda hataya sahip düşük iş gücüne sahip indi C / C ++ uygulamasını görmedim.

Bu noktada, çoğu zaman atalet olduğunu ve gerçek oyunların her zaman C / C ++ 'da yapıldığı fikrini söyleyebilirim, ancak iPhone ve konsollara "bağlantı noktası" özelliği önemli olsa da (en çok emin olduğum halde oyunların kullanıcı arayüzü, Windows ve XBox dışındaki bağlantı noktalarına çok fazla çaba harcıyor).


1
Oh, bunun sadece "güçsüz" platformlar için önemli olduğunu bilmiyorum. Buna bakmanın başka bir yolu da, oyun oynamanın her platformda performansın her zaman ön saflarında yer almasıdır: herhangi bir yeni güç derhal kaybedilir. Profesyonel oyun geliştirmeden bahsediyorsak, performans hemen hemen en önemli meseledir: Unreal'ı, makinenin sunduğu her bir son döngüyü maksimize etmeden yazmazsınız. Her; tek; Çevrim. Her seviyede, grafik motorundan ve diskten UI döngünüze kadar.
Chris Subagio

@Chris: Bunu oyun dışı programcılara anlatmanın en iyi yolu, oyunların hızın rekabetçi bir avantaj olduğu bir alan olduğu. Kelime işlemciniz, MS Word'ün 10 aldığı 5 saniyede başlarsa veya Word'ün 0.2'yi aldığı 0.1 saniyede tekrar akarsa, bu işe yaramaz. Ancak, oyununuz% 10 daha fazla parça üretebilir veya daha ayrıntılı bir karakter gösterebilirse, bu büyük bir rekabet avantajı olabilir.

Öyleyse montaj dışında hiçbir şeyi kodlamak aptalca olmaz mıydı? Kesinlikle en az% 10 daha hızlı olurdu. Sürdürülebilirlik ve gelişim hızı için performans dengelemeye çağrı yaptığınız bir nokta var. Genellikle bugünlerde bu nokta C ++. Minecraft gibi platformlar arası geçme yeteneğinin daha fazla ağırlığı olsaydı iyi olurdu.
Bill K,

Ah, fakat montajda kodlamanın daha hızlı olması bir yanlışlıktır: mevcut yongalar, bir programcının derleyiciden tutarlı bir şekilde daha iyi performans göstermesi için yeterince karmaşıktır. Sadece PS3'teki SPU'lar gibi daha kısıtlı alanlarda, iç fizik döngüleri ve GPU'lardaki gölgelendiriciler hala belirgin avantajlar sağlıyor. C ++ şu anda gerçekten tatlı bir noktadır, OOP'un her zaman en iyi seçenek olmadığı uyarısına sahiptir: devam eden Diziler - Yapılar Dizisi tartışması tam olarak bir dil tartışması değildir, ancak C ++ doğal olarak AoS'a yönlendirir; Bazen ... gerçekten sadece
C.'yi

Assembler ve C / C ++ arasındaki programcı verimliliğindeki adım aynı zamanda C ve C ++ veya C ++ ve C # / Java arasındaki programcı verimliliğindeki adımdan daha büyüktür. Fred Brooks bunu 25 yıl önce işaret etti.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.