Linux'un babasından sonra, bağımsız geliştirici Jonathan Blow C ++ 'yı yeniden bombaladı, korkunç

Jonathan Blow, ünlü bağımsız şifre çözme oyunları "Braid" ve "The Witness" ın yazarıdır. Son zamanlarda, C ++ 'nın gerçekten korkunç bir dil olduğunu söyledi, o kadar korkunç ki, programcıları geliştirmek için işini durdurmak ve yeni bir dil icat etmek istiyor Yaşam kaliteleri. C ++ için, oyun geliştirme sürecinde aşırı karmaşık katmanlı ekosistemin farklı sorunları çözme karmaşıklığını artırdığına inanıyor. Sonuç olarak, bu sorunu çözmek için Jai adında bir dil geliştirdi.Jai şu anda geliştirme aşamasındadır ve halka açıklanmamıştır.

2014'te bir noktada, Jonathan Blow "The Witness" oyununu geliştiriyordu ve aniden kod yazmanın trajik bir deneyim olabileceğini hissetti.

Neden? Blow'dan söz etmek gerekirse, "Bunun nedeni C ++ 'nın" çok kötü ve berbat bir dil "olmasıdır. "

Gamelab Barcelona'da yakın zamanda yaptığı bir konuşmada, yaygın olarak kullanılan programlama dillerine inandığı sorunları ve kendi geliştirdiği bir alternatif Jai aracılığıyla beklenen geliştirme hedeflerine ulaşma umudunu açıkladı.

Blow, C ++ 'nın ana kusurunun, çok karmaşık ve katmanlı bir ekosistem olduğuna ve farklı problemleri çözme sürecinde gittikçe daha karmaşık hale geldiğine inanıyor; ne kadar fazla katman, yığın o kadar yüksek olur ve aynı zamanda Ne kadar istikrarsızsa, anlamak o kadar zor.

Jonathan Blow

Blow, "İnsanlar programlama dillerinin karmaşık bir ekosistem olması gerektiğini düşünüyor" dedi. "Ekosistemi bir yıl boyunca incelemek ve oraya bir 3B grafik koymak istemiyorum."

Jai'nin geliştirilmesinin nedeni, Blow üç şeye ulaşmayı umuyor:

  • Programcıların yaşam kalitesini iyileştirin, çünkü "çoğumuz kadar mutsuz olmamalıyız";
  • Sistemi basitleştirin;
  • Programcıların az miktarda kodla çok sayıda işlev oluşturmasına izin vererek ifade gücünü artırın.

Şu anda Jainin üretkenliği yaklaşık% 15 arttı, ancak Blow zamanla bunun% 50 -% 80e çıkabileceğine inanıyor.

Dile ilişkin tahmini doğruysa, bağımsız ve 3A düzeyinde oyun geliştirmeyi yeniden şekillendirmek hemen köşede.

The Witness oyununun ekran görüntüsü

C ++ kafa karışıklığı

C ++ 1970'lerde doğmuştur ve C diline dayanmaktadır. Onlarca yıllık geliştirmeden sonra, C ++ muazzam değişikliklere uğradı. "Tarihsel kalıntılar ve tuhaf" tanımların katmanları, gelişimini engelliyor ve C ++ giderek daha kaotik hale geldi.

Blow, "C ++ öğrenmeye yeni başladıysanız, belki de öğrendiğiniz şeylerin çoğu parçalanmıştır. C ++ bir dereceye kadar güçlü bir dildir, çünkü bizim oyun yapmak için anahtar dildir. Ama şimdi sürecimizi daha da zorlaştırıyor. "

Projeler büyüdükçe ve büyüdükçe, değişiklikleri düzeltmek daha uzun sürüyor ve programlamanın doğası gereği "hantal işler" için çok zaman ayrılıyor.

Böylece Blow, herhangi birinin bunu değiştirip değiştirmeyeceğini düşünmeye başladı. Ama kısa süre sonra, bu saçma fikri reddetti, sonuçta herkesin birçok farklı seçeneği var. Bir oyun geliştiricisi olarak Blow, oyun geliştirmek için yalnızca C ++ dilini kullanırken, diğer geliştiriciler diğer programlama dillerini seçebilir.

Pek çok insan dil gelişiminin de değiştirilebileceğini söyleyebilir. Ancak gerçek şu ki, şirketin çok büyük bir oyun motoru var ve değiştirme maliyeti çok yüksek. Birkaç yıl önce, "Assassin's Creed" gibi bir oyunun 10 milyon satırlık kaynak kodu vardı ve şimdi daha büyük olabilir.

Ve endüstride atalet yaratan da bu tür bir "statüko önyargısı". Geliştiriciler, süreç ne kadar zahmetli olursa olsun, eksiksiz bir görev setine sahip olduktan sonra tüm sistemleri yeniden yazmayacaklar. Pek çok insan artık yenilgici bir tavra sahip. "Aslında biliyorum ve bu küçük gerçekçi ses bana bunu değiştiremeyeceğimi söylüyor." Blow dedi. Ama bazı nedenlerden dolayı şu soruyu sormaya karar verdi: Değiştirmek gerçekten imkansız mı?

"Ne kadar çok sorguladıysam, o kadar çok 'aslında bu değişebilir. Sanırım burada yaptığımız belirli şeyleri gördüm' dedim. Bunu değiştirmenin bir yolu olduğunu anladığımda, aniden günlük işimle ilgilenmeye başladım. Çok mutlu hissediyorum çünkü birdenbire bir çıkış yolu oluyor. "

Şimdiye kadar, Blow ve ekibi "The Witness" oyununu derinden geliştiriyorlar, bu yüzden Jai hala bir yardımcı proje ve hala bir geliştirici. Ancak önümüzdeki yıllarda Blow ve ekibinin Thekla'daki ana odak noktası bu olacak. Şu anda, "gerçeklikle ilgili fikirleri test etmek" için Jai kullanılarak inşa edildiğini söylediği habersiz bir oyun projesi var.

Jai gerçek mi yoksa rüya mı?

Birçok yönden, Blow'un yeni programlama dilleri geliştirmede benzersiz avantajları vardır. Büyük stüdyolardan ve yayıncılardan bağımsızdır, çok uzun projelere katılmıştır (Şahit yaklaşık yedi yıl sürmüştür) ve deneyimli bir programcıdır.

Blow, bir tasarımcı olarak deneyimin oyun oluşturmak için kullanılabilecek bir dil geliştirmek için de çok önemli olduğunu söyledi ve Jai'nin C ++ 'nın birçok tuzağından kaçınabileceğini umduğunu söyledi. Blow aynı zamanda Jai'nin de "moloz yığını" olma tehlikesiyle karşı karşıya olduğunu fark etti.

"Tüm bu zamanı daha iyi olduğunu düşündüğünüz şeyi tasarlamak için harcayabilir ve sonunda aynı veya daha kötüsü olabilir. Bu olabilir. Ama bir tasarımcı olarak benim deneyimim de budur.

Tasarladığım oyun büyük ve karmaşık, aynı programlama dilini, estetiğe odaklanarak tasarlayabilirsiniz. "Önce basit tutmaya çalışın, ancak ikinci olarak karmaşıklığı artırdığınızda (çünkü her zaman daha karmaşık gereksinimler olacaktır), bu karmaşıklığın ne kadar fayda sağladığını düşünmelisiniz? Anlaması ne kadar kolay (oyuncular için) her zaman sahip olduğumuz Oyun tasarımında ele alınan konular. Birisi bu odaya girerse ... ne olduğunu anlayacaklar mı, anlamalarına nasıl yardımcı olabiliriz?

"Aynı beceriler programlama dili tasarımına dönüştürülebilir. Bunun çok tartışmalı olduğunu düşünmüyorum. Çoğu zaman, programlama dilleri tasarlanırken tasarımcılarımız tarafından tasarlanmazlar. Teknik sorunları çözmeye çalışanlar tarafından yaratılırlar. Programcılar için tasarlandı. "

Sonunda, Blow, Jai'nin en büyük AAA oyunlarını güçlü bir şekilde programlayabileceğini umuyor, ancak şimdi yeni oyunuyla "ara köprü" konumunda.

"Bu gerçek bir oyun, biz sadece yapması daha kolay bir tasarım seçtik. Bittiğinde ve çalıştığında, grafik motorunu genişletebiliriz ve benzeri."

Jai henüz açık kaynaklı olmasa da, Blow kapalı testi bu yılın sonundan önce tamamlamayı umuyor. Potansiyelini gerçekleştirebilsin ya da kişisel umutlarını gerçekleştirebilsin, daha gidecek çok yol var.

C ++ gerçekten "korkunç bir programlama dili" midir?

Bunu sadece Jonathan Blow söylemedi.Linux'un babası Linus Torvalds, ilk yıllarda C ++ 'nın dehşet verici bir dil olduğunu ve hatta pek çok vasıfsız programcının kullanmasından daha da korkutucu olduğunu gösterdi. Öyleyse, işletmenin proje gereksinimlerini bir kenara bırakırsanız, C ++ gerçekten kendi başına bir "korkunç programlama dili" midir? Bu bağlamda, birçok netizen şunları söyledi:

  • Uzun yıllar C ++ kullandım. Özelliklerinin birçoğunu gözden kaçırdım çünkü hepsini kullanmam gerekmiyor. Kimse her parçasını kullanmanız gerektiğini söylemiyor. Çalışmada, sadece parçayı bilmeniz ve aletin işi nasıl tamamlayabileceğini tam olarak anlamanız gerekir ki bu iyidir. Günümüzde C ++ 'ya iftira etme eğilimi gibi görünüyor, ancak bir şeyi yapmakta iyi değilseniz, bununla ilgili kötü hisler ifade edeceksiniz. Bu yıla göre, her programlama dilinin artıları ve eksileri vardır ve şikayet edilecektir.
  • "Gerçekten korkutucu bir dil" yok, sadece "çok korkutucu programcı". C ++ 'ya ek olarak PHP, Javascript, APL, Ada ve BASIC vardır.
  • C ++, bazı önemli programlama görevlerini büyük ölçüde basitleştiren çok net bir sözdizimi ile başlar. İnsanlar bu dile daha aşina hale geldikçe, dilin iyi idare edemediği yeni programlama kalıplarını keşfederler, bu nedenle yeni sözdizimi veya işlevler eklenir ve bu da şişkinliğe yol açar. Şimdi C ++ bir süredir ortalıkta ve birçok yeni şey eklendi, olgun bir dil haline geldi. Bir noktada, birisi her zaman C ++ 'nın birçok avantajını tutarlı bir sözdizimi ile birleştiren ve yalnızca oyunların veya Web'in geliştirilmesi için değil, birçok kişi için yararlı olan yeni bir evrensel dil bulacaktır. Ancak bazı belirli işlevleri çözmek ve ardından tekrar tekrar yeni diller geliştirmek için ekoloji altüst olacaktır.
  • C ++ 11'den önce işlevsel seviyeyi koruduğunuz ve STL kullanmadığınız sürece C ++ iyidir.
  • C ++ korkunçtur. Polimorfizminden nefret ediyorum. Sorunları daha da kötüleştirmek için, birçok kişi polimorfizmin net, okunabilir kod oluşturmaya yardımcı olacak ideal bir özellik olduğunu düşünüyor. Genel veri türleri yerine sınıflar üzerinde çalışan işlevlerin oluşturulmasını teşvik eder.

Ne düşünüyorsun?

referans:

  • https://www.gamesindustry.biz/articles/2018-07-02-jonathan-blow-c-is-a-weird-mess
  • https://developers.slashdot.org/story/18/07/07/0342201/is-c-a-really-terrible-language

"Belgeler için çağrı"

CSDN kamu hesabı, "on milyonlarca teknik insanla büyüme" kavramını destekler. Teknik insanların ilk kez ilgilendiği endüstri odak olaylarını teknik insanların benzersiz bakış açılarından açıklamak için yalnızca "inek başlıkları" ve "konuşma" sütunlarını kullanmakla kalmaz, aynı zamanda "Teknik Başlıklar" sütunu, sektördeki popüler teknolojilerin ve uygulamaların derinlemesine bir yorumunu sunarak, tüm geliştiricilerin teknolojik trendlere ayak uydurmasına, uyanık bir teknolojik anlayışı sürdürmesine ve sektör eğilimleri ve teknolojileri hakkında daha kapsamlı bir anlayışa sahip olmasına olanak tanır.

Yüksek kaliteli makaleleriniz veya endüstrinin sıcak olayları, teknoloji trendleri hakkında içgörüler veya derinlemesine uygulama uygulamaları, senaryolar vb. Hakkında yeni içgörüleriniz varsa, lütfen gönderimler için CSDN ile iletişime geçin. İletişim: WeChat (guorui_1118, lütfen gönderim + ad + şirket pozisyonunu not edin), e-posta (guorui@csdn.net).

Karayolu üzerinde, bu şeridi rasgele çıkmayın, dikkatli olmazsanız 6 puan düşüleceksiniz!
önceki
Ayton, ilk çıkışında markayı kapsayan bir çift Kobe A.D giydi
Sonraki
React en popüler ön uç becerisi haline geldi, hızlı bir şekilde bir beceri haritası parçası edinin!
Komik: Klasik Google röportaj sorusu "yumurta fırlat", bakalım yapabilecek misin?
June Python Açık Kaynak Projesi İlk 10: Douyin'de güzel bayanı nasıl hızlıca bulabilirim?
Renkli grafik kartı Double 11'de şampiyonluğu kazandı! iGame RTX 2070 Vulcan satış öncesi ücretsiz avantajlar
Başarısızlık başarıdan daha büyüktür, Apple eski mi?
Bugünün stadyum botlarının takdiri: Maç yapacak Oublay
Temmuz programlama dili sıralaması: C, VB.NET tarafından geride bırakıldı ve Objective-C ilk ona geri döndü
2020 Toyota Tundra casus fotoğrafları ortaya çıktı, 10 vitesli şanzıman / küçük güç artışı tanıtıldı
Android mühendisleri parçalanma sorununu nasıl sona erdirir?
Bilgisayar korsanlarının benim için bilgisayarınızı ve cep telefonunuzu gizlice kullanmasını nasıl engelleyebilirim?
Skyworth kurucusu Huang Hongsheng: AIoT dönemi, Skyworth'un başka bir mucize yaratabileceğine inanıyor!
Yedi yıllık kaşıntı, Milan'ın eski oyuncusu Boateng model eşinden ayrıldı
To Top