Ikhtisar terbaik untuk paradigma C ++ modern? [Tutup]

16

Saya biasa menulis C ++ secara luas antara 8 dan 10 tahun yang lalu. Sejak itu saya pindah ke C # untuk alasan profesional. Namun, dari waktu ke waktu saya melihat pernyataan suka

"Jika Anda masih melacak referensi pointer secara manual, Anda salah melakukannya"

atau

"C ++ benar-benar aman selama Anda menggunakan konsep modern seperti RAII dan tidak mengalokasikan memori secara manual seperti pengembang C yang pulih."

Keduanya adalah prosedur standar satu dekade lalu. Saya telah melihat bahwa C ++ telah meningkat pesat belakangan ini; C ++ 0x khususnya sepertinya memiliki beberapa kemampuan baru. Apa sumber daya terbaik untuk seorang programmer "C / old C ++" untuk terperangkap dalam pola dan praktik C ++ "modern"?

GWLlosa
sumber
3
Mereka adalah prosedur standar satu dekade lalu. Sayangnya, masih ada porsi yang sangat signifikan dari C ++ devs menggunakan prosedur standar dari tiga dekade lalu.
DeadMG
7
Saya tidak tahu satu sumber daya, tetapi C ++ modern pada dasarnya bermuara pada: (1) penggunaan luas STL bila memungkinkan alih-alih algoritma linting tangan, (2) penggunaan pointer pintar dan wadah STL melalui alokasi / deallokasi manual , (3) gaya pemrograman fungsional-esque menggunakan functors / lambdas bersama dengan fungsi tingkat tinggi, dan (4) preferensi untuk polimorfisme statis berbasis-template daripada runtime fungsi virtual kapan pun memungkinkan
Charles Salvia
Efektif C ++ oleh Scott Meyers
Gyan aka Gary Buyn

Jawaban:

5

Ini mungkin lebih berkaitan dengan materi pengajaran daripada kebanyakan hal lain, tetapi 8-10 tahun yang lalu bagi saya tampaknya cara bahasa yang digunakan sangat berbeda hingga saat ini. Fokus hari ini lebih pada pengungkitan templat, tipe keselamatan, dan pemrograman generik di mana sebelumnya ada lebih banyak ketakutan akan semua itu dan orang-orang berfokus hampir secara eksklusif pada C dengan aspek objek.

Bahan ajar juga berubah. Sementara sebelum buku standar C ++ awal akan membawa Anda melalui printf, scanf, dll ... Anda bahkan tidak melihatnya di buku-buku dengan pendekatan modern.

Beberapa buku bagus adalah salah satu buku merah. C ++ Luar Biasa, C ++ Lebih Luar Biasa, Metaprogramming Template C ++, Desain C ++ Modern, C ++ Dipercepat ...

Saya pikir melihat di mana saya saat ini bekerja mungkin merupakan contoh yang baik. Saya datang ke sini menggunakan C ++ dengan cara modern dan tampaknya sebagian besar pengembang bahkan tidak tahu apa yang saya lakukan atau mengapa. Membuat objek dengan operator () di dalamnya misalnya ... Harus mengomentari setiap kemunculan bind () dan akhirnya disuruh menghapus semua kode itu. Tidak tahu apa yang dilakukan inisialisasi ... Ini benar-benar aneh dan sulit bagi saya sebenarnya.

Edward Strange
sumber
5

Untuk mendapatkan pengawasan cepat terhadap fitur modern yang disajikan dengan cukup baik, Anda tidak akan salah melihat presentasi Herb Sutter baru - baru ini , "Menulis kode C ++ modern: bagaimana C ++ telah berkembang selama bertahun-tahun" dari fitur C ++ di // build /.

Dia berbicara tentang mengapa itu adalah bahasa yang lebih baik daripada C # (tentu saja - Microsoft mengganti celana panjangnya secara teratur, dan hari ini mereka mengenakan busana C ++ sehingga mereka akan mengacaukannya, hanya saja mereka menggembar-gemborkan C # sebagai jawaban untuk kelaparan dunia satu dekade lalu) tetapi dengan melakukan itu dia menggambarkan semua bit yang bagus (seperti manajemen memori 'otomatis' dan kelas STL) dan kemudian berbicara tentang bit baru dari standar C ++ 0x.

gbjbaanb
sumber