Apakah komite C ++ menguji spesifikasi desain baru mereka dengan semacam kompiler prototipe sebelum merilis standar baru? Atau apakah mereka merilis standar yang, pada dasarnya, hanya teoretis sampai kompiler besar mengimplementasikannya?
c++
language-design
standards
Matthew James Briggs
sumber
sumber
boost::shared_ptr
=>std::shared_ptr
.boost.lambda
=> C ++ 11 ekspresi lambda).Jawaban:
The C Komite Standar ++ memiliki peraturan dan aturan, tetapi sebagian besar yang berpusat di sekitar struktur organisasi, cara mengajukan proposal, suara, penerbitan standar, dll dan tidak begitu banyak pada rincian teknis dari standar sendiri atau bagaimana dapat diuji.
Tidak ada persyaratan formal untuk "menguji" fitur atau desainnya sejauh yang saya tahu. C ++ juga agak unik karena tidak ada referensi atau implementasi "primer" (mis. Microsoft CLR, Oracle JDK, Zend PHP). Namun, anggota komite terdiri dari banyak organisasi dengan pengetahuan mendalam tentang bahasa dan implementasi kompiler. Misalnya, jika Anda mengikuti tautan sebelumnya, Anda akan melihat perwakilan dari Microsoft dan Intel yang keduanya memiliki kompiler C ++ yang sangat dihormati. Red Hat dan beberapa perusahaan lain yang berkontribusi pada GCC juga terlibat.
Saat mengusulkan fitur baru, anggota komite sudah memiliki ide yang cukup bagus, apakah itu layak, apakah mungkin bertentangan dengan fitur lain, atau menyebabkan tata bahasa menjadi ambigu dengan cara yang menyulitkan penguraian yang tidak perlu. ( ini adalah pertanyaan bagus tentang tata bahasa C ++ )
Jawaban singkatnya adalah "tidak, panitia tidak perlu menguji desain mereka menggunakan prototyping." Namun, tidak banyak yang perlu karena anggota komite adalah ahli dalam C ++ yang memahami semua detail halus pada tingkat yang tidak dimiliki oleh sebagian besar programmer. Ingat, orang-orang ini adalah arsitek bahasa yang ahli dalam teori bahasa dan desain kompiler.
Mengingat keterlibatan vendor kompiler dalam proses, adalah layak bahwa satu atau lebih dari mereka dapat membuat prototipe fitur baru, tetapi sekali lagi, tidak ada persyaratan formal untuk ini juga tidak ada sesuatu yang telah saya baca di dokumen yang tersedia untuk umum dari Komite C ++.
Mereka juga cenderung sangat konservatif, secara bertahap menambahkan fitur baru yang memiliki permintaan di dunia nyata tanpa menentukan sejumlah besar fitur baru yang mungkin terbukti berisiko. Bahkan dalam beberapa tahun terakhir mereka telah menambahkan fitur baru yang ada sebagai ekstensi berpemilik atau perpustakaan open-source yang sudah berfungsi di dunia nyata. Sebagai contoh, C ++ 11 dan C ++ 14 menggabungkan bagian-bagian Boost , yang telah diuji di dunia nyata dalam berbagai kompiler dan lingkungan eksekusi. Tidak perlu menguji sesuatu yang sudah diuji.
sumber