Saya kurang memiliki latar belakang dalam ilmu komputer teoretis tetapi saya ingin memahami seperti apa objek teoritis yang sesuai dengan konsep C ++ . Pada dasarnya, konsep C ++ memungkinkan untuk mendefinisikan sekumpulan tipe yang memenuhi daftar kendala. Jadi, dari sudut pandang teoretis, sesuai dengan konsep C ++, atau kira-kira sesuai (dan dalam hal apa perbedaannya)?
8
Jawaban:
Dari perspektif teori bahasa pemrograman, yang bertentangan dengan perspektif komputabilitas jawaban dan komentar lain yang ditawarkan, template C ++ dikombinasikan dengan konsep yang sesuai dengan polimorfisme terbatas atau kemanjuran terbatas . Konsep itu sendiri sesuai dengan batasan atau batasan yang ditempatkan pada suatu tipe.
Templat adalah fungsi tipe-level, parameterised menurut jenis yang dibatasi oleh konsep untuk mengimplementasikan antarmuka tertentu. Ketika templat diterapkan ke jenis yang memuaskan konsep itu, jenis baru hasil.
Konsep + templat analog dengan generik di Jawa, Scala atau Eiffel. Mereka berbeda dari templat di C ++ sebelumnya karena mereka mengizinkan batasan pada parameter tipe untuk ditentukan dan diperiksa, sedangkan templat C ++ tidak mengizinkan itu. Keuntungannya adalah pengecekan statis yang lebih baik bahwa program setelah menerapkan templat akan diketik dengan baik.
Referensi yang baik adalah Pierce, Benjamin C. (2002). Jenis dan Bahasa Pemrograman . MIT Press, Bab 26: Kuantifikasi terbatas.
sumber
C ++ concept memetakan ke bahasa yang berulang secara berulang. Karena sistem tipe C ++ adalah Turing selesai, properti apa pun dari tipe yang dapat diinterogasi selama template instan (ukuran, parameter, dll.) Dapat dijalankan melalui program acak yang disimulasikan dalam sistem tipe.
sumber