Saya melakukan pemrograman dalam lingkungan akademik saat ini, sehingga saya dapat menggunakan apa pun yang saya inginkan. Saya menggunakan pustaka grafik boost untuk beberapa hal, dan saya bertanya-tanya apakah upaya investasi dalam memahami GP lebih dalam sepadan.
Saya ingin tahu - apakah pemrograman generik (GP) banyak digunakan dalam industri? Dugaan saya adalah bahwa kebanyakan programmer jauh lebih nyaman dengan OOP atau menggunakan bahasa yang tidak menekankan atau mendukung GP, sehingga di luar memanggil STL struktur data / fungsi di C ++, kesan saya adalah bahwa GP tidak sering digunakan. dalam praktek. Tetapi, karena berada di luar industri saat ini, akan menyenangkan mendengar dari para praktisi mengenai hal ini.
(Saat saya menulis ini, saya melihat pemrograman generik bahkan bukan tag yang valid!)
Jawaban:
Ini benar-benar sangat tergantung pada konteks tim dan proyek.
Misalnya, dalam permainan video, seringkali kodenya "paling sederhana" yang mungkin (dan bahkan kadang-kadang terlalu sederhana) tetapi dalam arsitektur besar. Itu karena pengembang game memiliki banyak masalah untuk diperbaiki dan tidak ingin repot dengan pemrograman meta (itu adalah bahasa yang terpisah sangat abstrak dan sulit dipahami di dalam C ++).
Pada saat yang sama, penggunaan dasar templat sudah umum bahkan di toko-toko itu dan Anda dapat melihat beberapa optimasi berbasis templat di beberapa fungsi yang sangat spesifik dari beberapa engine.
Tetapi dalam game dev, kebanyakan orang hanya akan menghindari metaprogramming.
Sekarang, di sisi lain yang ekstrim, beberapa aplikasi pemrosesan yang sangat kompleks atau berat, yang tidak umum, memerlukan beberapa jenis pemrograman yang berat karena kinerja dan fleksibilitas (pada waktu kompilasi) persyaratan yang tidak umum. Saya sedang mengerjakan satu sekarang.
Ini tidak umum tetapi ada dan beberapa domain niche (dalam beberapa konteks tertanam ilmiah atau angka-angka) memang membutuhkan orang yang tahu banyak tentang metaprogramming atau ingin belajar.
Di tengah, kebanyakan orang hanya akan menggunakan program-meta sebagai "klien", bukan sebagai "desainer". Sebagian besar kode meta-pemrograman dibundel dalam pustaka karena pustaka adalah alat untuk kode dan apa yang lebih baik dari pustaka yang dapat beradaptasi dengan tipe khusus yang telah Anda kerjakan sampai sekarang?
Boost (http://boost.org) adalah seperangkat perpustakaan, beberapa terbuat dari metaprogramming black magic yang berat, dan digunakan di banyak toko C ++ sebagai "STL ++", perpanjangan dari STL (dan memang demikian). Tidak setiap toko menggunakannya karena beberapa alasan, seperti kompatibilitas kompiler (beberapa dorongan perpustakaan dapat membuat kompiler Anda memaafkan untuk setiap kali dia menyakiti perasaan Anda ...) dan lebih sering karena beberapa pengembang tidak suka tidak dapat memahami bagaimana alat bekerja di dalam (cobalah untuk memahami Boost.Spirit ...)
Apa pun perusahaan tempat Anda akan bekerja, sebagian akan menggunakan paradigma ini, sebagian akan sedikit atau tidak sama sekali atau bahkan melarangnya.
Tidak ada konsensus karena tidak ada yang memiliki kebutuhan, konteks atau tim yang sama.
Tapi tetap, jelas, itu digunakan. Mungkin bertanya siapa yang menggunakan dorongan pada milis mereka untuk memiliki lebih banyak contoh di dunia nyata?
sumber
Pemrograman generik, secara akademis disebut polimorfisme parametrik , sangat sering digunakan di lapangan. Di perusahaan saya, kami menggunakannya sebagian besar untuk membangun tipe editor independen untuk data, apa pun jenisnya. Anda hanya tidak membutuhkannya sesering fitur lainnya, tetapi ini jelas merupakan fitur yang tidak ingin saya lewatkan. Anda menggunakannya saat suatu perilaku cocok dengan sejumlah besar tipe. Ini pertanda jelas bahwa Anda memerlukan obat generik ketika Anda menemukan diri Anda menulis kode yang sama beberapa kali untuk jenis yang berbeda.
Setidaknya dari pengalaman saya, sudut pandang Anda salah. OOP dan pemrograman generik tidak saling eksklusif. Bahkan, Anda harus menggunakan efek sinergi menggabungkan mereka. Seperti yang saya katakan sebelumnya, alasan Anda tidak melihatnya sesering teknik lainnya adalah karena Anda tidak terlalu membutuhkannya. Tetapi ini adalah fitur yang kuat untuk dimiliki dan sangat membantu Anda menjaga kode Anda KERING . Bahasa mana yang tidak benar-benar menekankan dukungan GP dalam pemrograman tingkat tinggi? 3 dari 5 bahasa dari Tiobe Top 5 mendukung generik / templat. Dan PHP diketik secara dinamis sehingga tidak benar-benar membutuhkannya. Terus?
sumber
Templat C ++ digunakan secara luas untuk barang-barang yang berbeda dari wadah - setidaknya dalam domain masalah saya (keuangan kuantitatif). Saya bahkan berani mengatakan bahwa itu kadang-kadang digunakan terlalu sering, untuk tujuan di mana fungsi virtual biasa sudah cukup (dan tidak akan menambah waktu kompilasi begitu banyak).
Orang-orang menggunakannya untuk menghindari duplikasi kode dan untuk mencapai polimorfisme kompilasi-waktu (tanpa pengiriman virtual).
sumber