C ++ standartları komitesi tasarım fikirlerini nasıl test ediyor?


29

C ++ komitesi yeni bir standart çıkarmadan önce yeni tasarım özelliklerini bir çeşit prototip derleyici ile test ediyor mu? Yoksa, sadece büyük derleyiciler uygulayana kadar sadece teorik olan bir standart mı yayınlıyorlar?



4
Boost, çok sayıda kütüphane iyileştirmesi için prototip görevi görür. Örneğin boost::shared_ptr=> std::shared_ptr.
MSalters,

6
Sanırım basit bir "yapmıyorlar" bekliyordum.
Sebb

@ MSalters: Boost, aynı zamanda çok sayıda ana dil gelişimi için prototip olarak da görev yaptı (örneğin, boost.lambda=> C ++ 11 lambda ifadeleri).
Jerry Coffin,

Yanıtlar:


26

C ++ Standart Komitesi , nasıl, teklifler, oylama teslim standardını yayınlayarak, vb ve çok değil standart kendisi veya nasıl teknik detaylar üzerinde etmek tüzük ve kuralları vardır, ancak bunlar çoğu organizasyon yapısı çevresinde toplanmaktadır test edilebilir.

Bildiğim kadarıyla bir özelliği veya tasarımını "test etmek" için resmi bir gereklilik yoktur. C ++ ayrıca referans veya "birincil" bir uygulama bulunmaması nedeniyle de benzersizdir (örn. Microsoft CLR, Oracle JDK, Zend PHP). Ancak, komite üyeleri, dil ve derleyici uygulaması hakkında derin bilgiye sahip birçok kuruluştan oluşur. Örneğin, önceki bağlantıyı izlerseniz, her ikisine de saygın C ++ derleyicileri olan Microsoft ve Intel temsilcileri göreceksiniz. Red Hat ve GCC'ye katkıda bulunan birkaç başka şirket de buna dahildir.

Yeni bir özellik önerirken, komite üyeleri zaten uygulanabilir olup olmadığı, diğer özelliklerle çelişebilir veya dilbilgisinin gereksiz yere ayrıştırmayı zorlaştıracak bir şekilde belirsiz olmasına neden olduğu konusunda oldukça iyi bir fikre sahiptir . ( işte C ++ 'ın dilbilgisi hakkında güzel bir soru )

Kısa cevap "hayır, komite prototip kullanarak tasarımlarını test etmek zorunda değildir." Bununla birlikte, çok fazla bir ihtiyaç yoktur, çünkü komite üyeleri C ++ 'da uzmanların tüm ayrıntı ayrıntılarını, programcıların büyük çoğunluğunun bilmediği bir düzeyde anladıkları konusunda uzmandır. Unutmayın, bu insanlar dil teorisi ve derleyici tasarımı konusunda uzman olan dil mimarlarıdır .

Derleyici satıcılarının sürece dahil olmaları göz önüne alındığında, bunlardan bir veya daha fazlasının yeni bir özelliği prototip edebileceği kabul edilebilir , ancak yine de, bunun için resmi bir gereklilik yoktur. C ++ Komitesi.

Ayrıca , çok muhafazakar olma eğilimindedirler ve riskli olabilecek büyük miktarlarda yeni özellikler belirtmeden, gerçek dünyada talep gören yeni özellikleri artımlı olarak eklerler. Aslında son yıllarda, zaten gerçek dünyada çalışan tescilli uzantıları veya açık kaynaklı kütüphaneler olarak varolan yeni özellikler eklediler. Örneğin, C ++ 11 ve C ++ 14 , gerçek dünyada birden fazla derleyicide ve uygulama ortamında test edilmiş olan Boost parçalarını içerir . Zaten test edilmiş bir şeyi test etmeye gerek yoktur.


5
ConceptGCC ve ConceptClang , açıkça prototip oluşturmak ve karmaşık bir dil özelliği ile gerçek bir deneyim kazanmak için oluşturulan iki derleyici örneğidir (veya derleyici çatallarıdır). Kavramlar ayrıca C ++ 'da tam dil özelliklerinin nasıl tasarlandığına bir örnektir: 1998'den beri kavramlar, ilk önce C ++ Şablonları hakkında konuşmak için resmi olmayan bir fikir olarak, daha sonra 2006'da Bjarne tarafından önerilen bir dil özelliği olarak ve ayrıca ConceptGCC'de uygulandı. o zamandan beri. Onlar may ...
Jörg W Mittag

3
… C ++ 17 ile sona erecek, bu da bir uygulama olarak yaklaşık 10 yıl ve bir fikir olarak 20 yıl olgunlaşacakları anlamına geliyor.
Jörg W Mittag

2
Bu çoğunlukla yanlış, bence. Yeni özellikler genellikle önce bir uygulama gerektirir . Bir kez bu olmadı, ihracat yaptık.
isanae

5
Son paragraf (hafifçe söylemek gerekirse) saçmalıktır. C komitesi çok muhafazakar, ancak C ++, ne tür bir karmaşa yarattığı ya da insanların çözmek istediği sorunları çözüp çözmediği konusunda çok az şey düşünerek her zaman yeni şeyler ekliyor.
R. ..

1
@R .. Ben katılmıyorum. C ++ 11 bir anormallikti, fakat zaten var olan birçok şeyi içeriyordu (örneğin Boost yorumuma bakın). C ++ 'ın yaşamı boyunca, çok yavaş gelişmiştir ; bu, birçok geliştiricinin dil hakkında sahip olduğu büyük bir şikayettir.
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.